@idlizer/core 2.1.10-arktscgen-9 → 2.1.10-arktscgen-10
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/IndentedPrinter.js +2 -2
- package/build/lib/src/Language.d.ts +1 -0
- package/build/lib/src/Language.js +8 -0
- package/build/lib/src/LanguageWriters/ArgConvertors.d.ts +47 -3
- package/build/lib/src/LanguageWriters/ArgConvertors.js +194 -20
- package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +5 -1
- package/build/lib/src/LanguageWriters/LanguageWriter.js +15 -0
- package/build/lib/src/LanguageWriters/convertors/CJConvertors.js +6 -2
- package/build/lib/src/LanguageWriters/convertors/CppConvertors.js +7 -1
- package/build/lib/src/LanguageWriters/convertors/ETSConvertors.js +3 -0
- package/build/lib/src/LanguageWriters/convertors/InteropConvertors.js +4 -0
- package/build/lib/src/LanguageWriters/convertors/KotlinConvertors.d.ts +10 -5
- package/build/lib/src/LanguageWriters/convertors/KotlinConvertors.js +138 -51
- package/build/lib/src/LanguageWriters/convertors/TSConvertors.js +5 -1
- package/build/lib/src/LanguageWriters/index.d.ts +1 -2
- package/build/lib/src/LanguageWriters/index.js +17 -3
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.d.ts +1 -1
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +5 -3
- package/build/lib/src/LanguageWriters/writers/CLikeLanguageWriter.d.ts +1 -1
- package/build/lib/src/LanguageWriters/writers/CLikeLanguageWriter.js +5 -3
- package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.d.ts +2 -1
- package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.js +8 -3
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +3 -9
- package/build/lib/src/LanguageWriters/writers/KotlinLanguageWriter.d.ts +5 -3
- package/build/lib/src/LanguageWriters/writers/KotlinLanguageWriter.js +52 -31
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.d.ts +1 -1
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +5 -3
- package/build/lib/src/LibraryInterface.d.ts +6 -0
- package/build/lib/src/LibraryInterface.js +22 -1
- package/build/lib/src/from-idl/DtsPrinter.d.ts +3 -2
- package/build/lib/src/from-idl/DtsPrinter.js +9 -6
- package/build/lib/src/idl/builders.d.ts +36 -1
- package/build/lib/src/idl/builders.js +62 -2
- package/build/lib/src/idl/dump.d.ts +3 -0
- package/build/lib/src/idl/dump.js +20 -3
- package/build/lib/src/idl/index.d.ts +0 -1
- package/build/lib/src/idl/index.js +0 -1
- package/build/lib/src/idl/node.d.ts +1 -0
- package/build/lib/src/idl/node.js +1 -0
- package/build/lib/src/idl/stdlib.d.ts +1 -0
- package/build/lib/src/idl/stdlib.js +1 -0
- package/build/lib/src/idl/utils.d.ts +4 -3
- package/build/lib/src/idl/utils.js +26 -13
- package/build/lib/src/idl/visitors.js +24 -104
- package/build/lib/src/index.d.ts +4 -1
- package/build/lib/src/index.js +4 -1
- package/build/lib/src/peer-generation/Extractors.d.ts +7 -0
- package/build/lib/src/peer-generation/Extractors.js +40 -0
- package/build/lib/src/peer-generation/Initializers.d.ts +5 -0
- package/build/lib/src/peer-generation/Initializers.js +28 -0
- package/build/lib/src/peer-generation/Materialized.d.ts +0 -4
- package/build/lib/src/peer-generation/Materialized.js +13 -24
- package/build/lib/src/peer-generation/PeerLibrary.d.ts +2 -2
- package/build/lib/src/peer-generation/PeerLibrary.js +55 -5
- package/build/lib/src/peer-generation/PeerMethod.d.ts +1 -0
- package/build/lib/src/peer-generation/PeerMethod.js +1 -0
- package/build/lib/src/peer-generation/idl/common.d.ts +0 -2
- package/build/lib/src/peer-generation/idl/common.js +3 -25
- package/build/lib/src/peer-generation/isMaterialized.d.ts +4 -0
- package/build/lib/src/peer-generation/isMaterialized.js +12 -0
- package/build/lib/src/peer-generation/unions.d.ts +1 -27
- package/build/lib/src/peer-generation/unions.js +1 -99
- package/build/lib/src/transformers/FqnTransformer.js +14 -0
- package/build/lib/src/transformers/GenericTransformer.d.ts +0 -2
- package/build/lib/src/transformers/GenericTransformer.js +19 -19
- package/build/lib/src/transformers/IdlTransformer.js +14 -0
- package/build/lib/src/transformers/NullTransformer.js +16 -3
- package/build/lib/src/transformers/OnSerializeTransformer.js +14 -0
- package/build/lib/src/transformers/ThrowsTransformer.d.ts +3 -0
- package/build/lib/src/transformers/ThrowsTransformer.js +51 -0
- package/build/lib/src/transformers/transformUtils.d.ts +7 -0
- package/build/lib/src/transformers/transformUtils.js +55 -0
- package/build/lib/src/util.d.ts +0 -16
- package/build/lib/src/util.js +2 -76
- package/package.json +10 -4
|
@@ -14,25 +14,6 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import * as idl from "../../idl";
|
|
16
16
|
import { Language } from "../../Language";
|
|
17
|
-
import { capitalize } from "../../util";
|
|
18
|
-
export function generateSyntheticIdlNodeName(type) {
|
|
19
|
-
if (idl.isPrimitiveType(type))
|
|
20
|
-
return capitalize(type.name);
|
|
21
|
-
if (idl.isContainerType(type)) {
|
|
22
|
-
const typeArgs = type.elementType.map(it => generateSyntheticIdlNodeName(it)).join("_").replaceAll(".", "_");
|
|
23
|
-
switch (type.containerKind) {
|
|
24
|
-
case "sequence": return "Array_" + typeArgs;
|
|
25
|
-
case "record": return "Map_" + typeArgs;
|
|
26
|
-
case "Promise": return "Promise_" + typeArgs;
|
|
27
|
-
default: throw new Error(`Unknown container type ${idl.DebugUtils.debugPrintType(type)}`);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
if (idl.isNamedNode(type))
|
|
31
|
-
return type.name.split('.').map(capitalize).join('_');
|
|
32
|
-
if (idl.isOptionalType(type))
|
|
33
|
-
return `Opt_${generateSyntheticIdlNodeName(type.type)}`;
|
|
34
|
-
throw `Can not compute type name of ${idl.IDLKind[type.kind]}`;
|
|
35
|
-
}
|
|
36
17
|
export function qualifiedName(decl, languageOrDelimiter, pattern) {
|
|
37
18
|
if (!idl.isNamedNode(decl))
|
|
38
19
|
throw new Error("internal error, name required for no-named node");
|
|
@@ -70,20 +51,17 @@ export function sanitizeGenerics(genericDeclarationString) {
|
|
|
70
51
|
}
|
|
71
52
|
return genericDeclarationString.trim();
|
|
72
53
|
}
|
|
73
|
-
export function generateSyntheticUnionName(types) {
|
|
74
|
-
return `Union_${types.map(it => generateSyntheticIdlNodeName(it)).join("_").replaceAll(".", "_")}`;
|
|
75
|
-
}
|
|
76
54
|
export function generateSyntheticFunctionParameterName(parameter) {
|
|
77
55
|
if (parameter.isOptional) {
|
|
78
|
-
return generateSyntheticIdlNodeName(idl.createOptionalType(parameter.type));
|
|
56
|
+
return idl.generateSyntheticIdlNodeName(idl.createOptionalType(parameter.type));
|
|
79
57
|
}
|
|
80
|
-
return generateSyntheticIdlNodeName(parameter.type);
|
|
58
|
+
return idl.generateSyntheticIdlNodeName(parameter.type);
|
|
81
59
|
}
|
|
82
60
|
export function generateSyntheticFunctionName(parameters, returnType, options) {
|
|
83
61
|
let prefix = (options === null || options === void 0 ? void 0 : options.isAsync) ? "AsyncCallback" : "Callback";
|
|
84
62
|
const names = (options === null || options === void 0 ? void 0 : options.nameConvertor) !== undefined
|
|
85
63
|
? parameters.map(it => options.nameConvertor.convert(it.type)).concat(options.nameConvertor.convert(returnType))
|
|
86
|
-
: parameters.map(generateSyntheticFunctionParameterName).concat(generateSyntheticIdlNodeName(returnType));
|
|
64
|
+
: parameters.map(generateSyntheticFunctionParameterName).concat(idl.generateSyntheticIdlNodeName(returnType));
|
|
87
65
|
return `${prefix}_${names.join("_").replaceAll(".", "_")}`;
|
|
88
66
|
}
|
|
89
67
|
export function isImportAttr(decl) {
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import * as idl from '../idl';
|
|
2
|
+
import { Language } from '../Language';
|
|
2
3
|
import { ReferenceResolver } from './ReferenceResolver';
|
|
3
4
|
export declare function isMaterialized(declaration: idl.IDLInterface, resolver: ReferenceResolver): boolean;
|
|
4
5
|
export declare function isStaticMaterialized(declaration: idl.IDLInterface, resolver: ReferenceResolver): boolean;
|
|
5
6
|
export declare function isMaterializedType(type: idl.IDLType, resolver: ReferenceResolver): boolean;
|
|
7
|
+
export declare function getInternalClassName(name: string): string;
|
|
8
|
+
export declare function getInternalClassQualifiedName(target: idl.IDLEntry, pattern?: idl.QNPattern, language?: Language): string;
|
|
9
|
+
export declare function getMaterializedFileName(name: string): string;
|
|
6
10
|
//# sourceMappingURL=isMaterialized.d.ts.map
|
|
@@ -14,7 +14,9 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import { generatorConfiguration } from '../config';
|
|
16
16
|
import * as idl from '../idl';
|
|
17
|
+
import { capitalize } from '../util';
|
|
17
18
|
import { getSuper } from './getSuperType';
|
|
19
|
+
import { qualifiedName } from './idl/common';
|
|
18
20
|
export function isMaterialized(declaration, resolver) {
|
|
19
21
|
var _a;
|
|
20
22
|
if (!idl.isInterfaceSubkind(declaration) && !idl.isClassSubkind(declaration))
|
|
@@ -96,4 +98,14 @@ export function isMaterializedType(type, resolver) {
|
|
|
96
98
|
return false;
|
|
97
99
|
return (idl.isInterface(decl) && isMaterialized(decl, resolver));
|
|
98
100
|
}
|
|
101
|
+
export function getInternalClassName(name) {
|
|
102
|
+
return `${name}Internal`;
|
|
103
|
+
}
|
|
104
|
+
export function getInternalClassQualifiedName(target, pattern = "package.namespace.name", language) {
|
|
105
|
+
return getInternalClassName(qualifiedName(target, language !== null && language !== void 0 ? language : ".", pattern));
|
|
106
|
+
}
|
|
107
|
+
export function getMaterializedFileName(name) {
|
|
108
|
+
const pascalCase = name.split('_').map(x => capitalize(x)).join('');
|
|
109
|
+
return `Ark${pascalCase}Materialized`;
|
|
110
|
+
}
|
|
99
111
|
//# sourceMappingURL=isMaterialized.js.map
|
|
@@ -1,28 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
import { IDLImport, IDLContainerType, IDLOptionalType, IDLPrimitiveType, IDLReferenceType, IDLType, IDLTypeParameterType, IDLUnionType } from '../idl';
|
|
3
|
-
import { LanguageExpression, LanguageWriter } from "../LanguageWriters/LanguageWriter";
|
|
4
|
-
import { ArgConvertor } from "../LanguageWriters/ArgConvertors";
|
|
5
|
-
import { LibraryInterface } from "../LibraryInterface";
|
|
6
|
-
import { ReferenceResolver } from "./ReferenceResolver";
|
|
7
|
-
export declare class UnionFlattener implements TypeConvertor<IDLType[]> {
|
|
8
|
-
private resolver;
|
|
9
|
-
constructor(resolver: ReferenceResolver);
|
|
10
|
-
convertImport(type: IDLImport): IDLType[];
|
|
11
|
-
convertUnion(type: IDLUnionType): IDLType[];
|
|
12
|
-
convertTypeReference(type: IDLReferenceType): IDLType[];
|
|
13
|
-
convertOptional(type: IDLOptionalType): IDLType[];
|
|
14
|
-
convertContainer(type: IDLContainerType): IDLType[];
|
|
15
|
-
convertTypeReferenceAsImport(type: IDLReferenceType, importClause: string): IDLType[];
|
|
16
|
-
convertPrimitiveType(type: IDLPrimitiveType): IDLType[];
|
|
17
|
-
convertTypeParameter(type: IDLTypeParameterType): IDLType[];
|
|
18
|
-
}
|
|
19
|
-
export declare class UnionRuntimeTypeChecker {
|
|
20
|
-
private convertors;
|
|
21
|
-
private conflictingConvertors;
|
|
22
|
-
private duplicateMembers;
|
|
23
|
-
constructor(convertors: ArgConvertor[]);
|
|
24
|
-
private checkConflicts;
|
|
25
|
-
makeDiscriminator(value: string, convertorIndex: number, writer: LanguageWriter, library: LibraryInterface, type?: IDLType): LanguageExpression;
|
|
26
|
-
}
|
|
27
|
-
export declare function flattenUnionType(library: LibraryInterface, type: IDLType): IDLType;
|
|
1
|
+
export {};
|
|
28
2
|
//# sourceMappingURL=unions.d.ts.map
|
|
@@ -12,103 +12,5 @@
|
|
|
12
12
|
* See the License for the specific language governing permissions and
|
|
13
13
|
* limitations under the License.
|
|
14
14
|
*/
|
|
15
|
-
|
|
16
|
-
import { convertType } from "../LanguageWriters";
|
|
17
|
-
import { IDLCustomObjectType, IDLUndefinedType, isType, isUnionType } from '../idl';
|
|
18
|
-
import { collapseTypes } from "./idl/common";
|
|
19
|
-
import { RuntimeType } from "../LanguageWriters/common";
|
|
20
|
-
import { Language } from "../Language";
|
|
21
|
-
export class UnionFlattener {
|
|
22
|
-
constructor(resolver) {
|
|
23
|
-
this.resolver = resolver;
|
|
24
|
-
}
|
|
25
|
-
convertImport(type) {
|
|
26
|
-
console.warn("Imports are not implemented yet");
|
|
27
|
-
return [];
|
|
28
|
-
}
|
|
29
|
-
convertUnion(type) {
|
|
30
|
-
return type.types.flatMap(it => convertType(this, it));
|
|
31
|
-
}
|
|
32
|
-
convertTypeReference(type) {
|
|
33
|
-
const decl = this.resolver.toDeclaration(type);
|
|
34
|
-
return isType(decl) && decl !== IDLCustomObjectType ? convertType(this, decl) : [type];
|
|
35
|
-
}
|
|
36
|
-
convertOptional(type) {
|
|
37
|
-
return [type.type, IDLUndefinedType];
|
|
38
|
-
}
|
|
39
|
-
convertContainer(type) {
|
|
40
|
-
return [type];
|
|
41
|
-
}
|
|
42
|
-
convertTypeReferenceAsImport(type, importClause) {
|
|
43
|
-
return [type];
|
|
44
|
-
}
|
|
45
|
-
convertPrimitiveType(type) {
|
|
46
|
-
return [type];
|
|
47
|
-
}
|
|
48
|
-
convertTypeParameter(type) {
|
|
49
|
-
return [type];
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
export class UnionRuntimeTypeChecker {
|
|
53
|
-
constructor(convertors) {
|
|
54
|
-
this.convertors = convertors;
|
|
55
|
-
this.conflictingConvertors = new Set();
|
|
56
|
-
this.duplicateMembers = new Set();
|
|
57
|
-
this.checkConflicts();
|
|
58
|
-
}
|
|
59
|
-
checkConflicts() {
|
|
60
|
-
const runtimeTypeConflicts = new Map();
|
|
61
|
-
this.convertors.forEach(conv => {
|
|
62
|
-
conv.runtimeTypes.forEach(rtType => {
|
|
63
|
-
const convertors = runtimeTypeConflicts.get(rtType);
|
|
64
|
-
if (convertors)
|
|
65
|
-
convertors.push(conv);
|
|
66
|
-
else
|
|
67
|
-
runtimeTypeConflicts.set(rtType, [conv]);
|
|
68
|
-
});
|
|
69
|
-
});
|
|
70
|
-
runtimeTypeConflicts.forEach((convertors, rtType) => {
|
|
71
|
-
if (convertors.length > 1) {
|
|
72
|
-
const allMembers = new Set();
|
|
73
|
-
if (rtType === RuntimeType.OBJECT) {
|
|
74
|
-
convertors.forEach(convertor => {
|
|
75
|
-
convertor.getMembers().forEach(member => {
|
|
76
|
-
if (allMembers.has(member))
|
|
77
|
-
this.duplicateMembers.add(member);
|
|
78
|
-
allMembers.add(member);
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
convertors.forEach(convertor => {
|
|
83
|
-
this.conflictingConvertors.add(convertor);
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
makeDiscriminator(value, convertorIndex, writer, library, type) {
|
|
89
|
-
let convertor = this.convertors[convertorIndex];
|
|
90
|
-
if (writer.language === Language.TS) {
|
|
91
|
-
const isArray = idl.IDLContainerUtils.isSequence(convertor.idlType);
|
|
92
|
-
if (isArray || this.conflictingConvertors.has(convertor)) {
|
|
93
|
-
// Check elements inside array
|
|
94
|
-
if (type && convertor.idlType != type) {
|
|
95
|
-
convertor = library.typeConvertor("", type);
|
|
96
|
-
}
|
|
97
|
-
const discriminator = convertor.unionDiscriminator(value, convertorIndex, writer, this.duplicateMembers);
|
|
98
|
-
if (discriminator)
|
|
99
|
-
return discriminator;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
return writer.makeString(writer.discriminate(value, convertorIndex, type !== null && type !== void 0 ? type : convertor.idlType, convertor.runtimeTypes));
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
export function flattenUnionType(library, type) {
|
|
106
|
-
if (isUnionType(type)) {
|
|
107
|
-
const unionFlattener = new UnionFlattener(library);
|
|
108
|
-
const allTypes = type.types.flatMap(it => convertType(unionFlattener, it));
|
|
109
|
-
const uniqueTypes = new Set(allTypes);
|
|
110
|
-
return uniqueTypes.size === allTypes.length ? type : collapseTypes(Array.from(uniqueTypes));
|
|
111
|
-
}
|
|
112
|
-
return type;
|
|
113
|
-
}
|
|
15
|
+
export {};
|
|
114
16
|
//# sourceMappingURL=unions.js.map
|
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
|
3
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License.
|
|
5
|
+
* You may obtain a copy of the License at
|
|
6
|
+
*
|
|
7
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
*
|
|
9
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
* See the License for the specific language governing permissions and
|
|
13
|
+
* limitations under the License.
|
|
14
|
+
*/
|
|
1
15
|
import * as idl from "../idl";
|
|
2
16
|
import { IdlTransformer } from "./IdlTransformer";
|
|
3
17
|
export function fqnTransformer(corpus, resolver) {
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import * as idl from "../idl";
|
|
2
|
-
import { ReferenceResolver } from "../peer-generation/ReferenceResolver";
|
|
3
2
|
export declare function genericsTransformer(files: idl.IDLFile[], options: {
|
|
4
3
|
ignore: ((node: idl.IDLNode) => boolean)[];
|
|
5
4
|
ignoreGenerics: string[];
|
|
6
5
|
}): idl.IDLFile[];
|
|
7
6
|
export declare function isInplacedGeneric(entry: idl.IDLEntry): boolean;
|
|
8
|
-
export declare function maybeRestoreGenerics(maybeTransformedGeneric: idl.IDLReferenceType | idl.IDLEntry, resolver: ReferenceResolver): idl.IDLReferenceType | undefined;
|
|
9
7
|
//# sourceMappingURL=GenericTransformer.d.ts.map
|
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
|
3
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License.
|
|
5
|
+
* You may obtain a copy of the License at
|
|
6
|
+
*
|
|
7
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
*
|
|
9
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
* See the License for the specific language governing permissions and
|
|
13
|
+
* limitations under the License.
|
|
14
|
+
*/
|
|
1
15
|
import { generatorConfiguration } from "../config";
|
|
2
16
|
import { toIdlType } from "../from-idl/deserialize";
|
|
3
17
|
import * as idl from "../idl";
|
|
@@ -5,8 +19,8 @@ import { Language } from "../Language";
|
|
|
5
19
|
import { StructureNameConvertor } from "../LanguageWriters/convertors/CppConvertors";
|
|
6
20
|
import { isMaterialized } from "../peer-generation/isMaterialized";
|
|
7
21
|
import { LayoutManager } from "../peer-generation/LayoutManager";
|
|
22
|
+
import { toDeclaration } from "../peer-generation/PeerLibrary";
|
|
8
23
|
import { createCachedReferenceResolver } from "../peer-generation/ReferenceResolver";
|
|
9
|
-
import { toDeclaration } from "../peer-generation/toDeclaration";
|
|
10
24
|
import { IdlTransformer } from "./IdlTransformer";
|
|
11
25
|
export function genericsTransformer(files, options) {
|
|
12
26
|
const optionsResolver = createCachedReferenceResolver(files);
|
|
@@ -80,7 +94,7 @@ class DefaultGenericsTransformer extends IdlTransformer {
|
|
|
80
94
|
this.resolver = resolver;
|
|
81
95
|
}
|
|
82
96
|
visit(node) {
|
|
83
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
97
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
84
98
|
if (idl.isReferenceType(node)) {
|
|
85
99
|
const decl = this.resolver.resolveTypeReference(node);
|
|
86
100
|
if (!decl) {
|
|
@@ -91,14 +105,14 @@ class DefaultGenericsTransformer extends IdlTransformer {
|
|
|
91
105
|
return this.visitEachChild(node);
|
|
92
106
|
}
|
|
93
107
|
if (((_c = (_b = decl.typeParameters) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0) > ((_e = (_d = node.typeArguments) === null || _d === void 0 ? void 0 : _d.length) !== null && _e !== void 0 ? _e : 0)) {
|
|
94
|
-
const defaults = (_j = (_h = (_g = (_f = decl.extendedAttributes) === null || _f === void 0 ? void 0 : _f.find(it => it.name === idl.IDLExtendedAttributes.TypeParametersDefaults)) === null || _g === void 0 ? void 0 : _g.typesValue) === null || _h === void 0 ? void 0 : _h.slice()) !== null &&
|
|
108
|
+
const defaults = (_k = (_j = (_h = (_g = (_f = decl.extendedAttributes) === null || _f === void 0 ? void 0 : _f.find(it => it.name === idl.IDLExtendedAttributes.TypeParametersDefaults)) === null || _g === void 0 ? void 0 : _g.typesValue) === null || _h === void 0 ? void 0 : _h.slice()) === null || _j === void 0 ? void 0 : _j.map(it => this.visit(it))) !== null && _k !== void 0 ? _k : [];
|
|
95
109
|
while (defaults.length < decl.typeParameters.length) {
|
|
96
110
|
defaults.unshift(undefined);
|
|
97
111
|
}
|
|
98
|
-
const typeArguments = Array.from((
|
|
112
|
+
const typeArguments = Array.from((_l = node.typeArguments) !== null && _l !== void 0 ? _l : []);
|
|
99
113
|
while (decl.typeParameters.length > typeArguments.length) {
|
|
100
114
|
if (defaults[typeArguments.length] === undefined) {
|
|
101
|
-
const declarationDetails = `${idl.getFQName(decl)}<${((
|
|
115
|
+
const declarationDetails = `${idl.getFQName(decl)}<${((_m = decl.typeParameters) !== null && _m !== void 0 ? _m : [])
|
|
102
116
|
.map((it, index) => `${it}${defaults[index] ? '=' + defaults[index] : ''}`)
|
|
103
117
|
.join(', ')}>`;
|
|
104
118
|
const referenceDetails = `${node.name}<${typeArguments.map(it => idl.printType(it)).join(", ")}>`;
|
|
@@ -247,20 +261,6 @@ class RemoveMeaninglessFieldsTransformer extends IdlTransformer {
|
|
|
247
261
|
export function isInplacedGeneric(entry) {
|
|
248
262
|
return idl.hasExtAttribute(entry, idl.IDLExtendedAttributes.OriginalGenericName);
|
|
249
263
|
}
|
|
250
|
-
export function maybeRestoreGenerics(maybeTransformedGeneric, resolver) {
|
|
251
|
-
if (idl.isReferenceType(maybeTransformedGeneric)) {
|
|
252
|
-
const resolved = resolver.resolveTypeReference(maybeTransformedGeneric);
|
|
253
|
-
return resolved ? maybeRestoreGenerics(resolved, resolver) : undefined;
|
|
254
|
-
}
|
|
255
|
-
if (maybeTransformedGeneric && idl.hasExtAttribute(maybeTransformedGeneric, idl.IDLExtendedAttributes.OriginalGenericName)) {
|
|
256
|
-
const originalName = idl.getExtAttribute(maybeTransformedGeneric, idl.IDLExtendedAttributes.OriginalGenericName);
|
|
257
|
-
const typeArguments = idl.getExtAttributeTypesValue(maybeTransformedGeneric, idl.IDLExtendedAttributes.OriginalGenericName);
|
|
258
|
-
if (!typeArguments)
|
|
259
|
-
throw new Error(`Can not restore original generic type arguments for ${originalName}: no type arguments`);
|
|
260
|
-
return idl.createReferenceType(originalName, typeArguments);
|
|
261
|
-
}
|
|
262
|
-
return undefined;
|
|
263
|
-
}
|
|
264
264
|
function ignoreConfigRule(ignoreGenerics) {
|
|
265
265
|
return (node) => {
|
|
266
266
|
return idl.isEntry(node) && ignoreGenerics.includes(idl.getFQName(node));
|
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
|
3
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License.
|
|
5
|
+
* You may obtain a copy of the License at
|
|
6
|
+
*
|
|
7
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
*
|
|
9
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
* See the License for the specific language governing permissions and
|
|
13
|
+
* limitations under the License.
|
|
14
|
+
*/
|
|
1
15
|
import * as idl from "../idl";
|
|
2
16
|
export class IdlTransformer {
|
|
3
17
|
visitEachChild(node) {
|
|
@@ -1,5 +1,18 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
|
3
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License.
|
|
5
|
+
* You may obtain a copy of the License at
|
|
6
|
+
*
|
|
7
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
*
|
|
9
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
* See the License for the specific language governing permissions and
|
|
13
|
+
* limitations under the License.
|
|
14
|
+
*/
|
|
1
15
|
import * as idl from "../idl";
|
|
2
|
-
import { generateSyntheticUnionName } from "../peer-generation/idl/common";
|
|
3
16
|
import { IdlTransformer } from "./IdlTransformer";
|
|
4
17
|
export function nullsTransformer(files) {
|
|
5
18
|
const transformer = new NullsTransformer();
|
|
@@ -11,7 +24,7 @@ class NullsTransformer extends IdlTransformer {
|
|
|
11
24
|
if (idl.isOptionalType(node)) {
|
|
12
25
|
if (idl.isUnionType(node.type) && node.type.types.some(isNullReference)) {
|
|
13
26
|
const unionTypes = node.type.types.filter(it => !isNullReference(it)).map(it => this.visit(it));
|
|
14
|
-
const unionName = generateSyntheticUnionName(unionTypes);
|
|
27
|
+
const unionName = idl.generateSyntheticUnionName(unionTypes);
|
|
15
28
|
const extendedAttributes = ((_a = node.extendedAttributes) !== null && _a !== void 0 ? _a : [])
|
|
16
29
|
.concat({ name: idl.IDLExtendedAttributes.UnionWithNull });
|
|
17
30
|
return idl.createOptionalType(unionTypes.length === 1
|
|
@@ -26,7 +39,7 @@ class NullsTransformer extends IdlTransformer {
|
|
|
26
39
|
else if (idl.isUnionType(node)) {
|
|
27
40
|
if (node.types.some(isNullReference)) {
|
|
28
41
|
const unionTypes = node.types.filter(it => !isNullReference(it)).map(it => this.visit(it));
|
|
29
|
-
const unionName = generateSyntheticUnionName(unionTypes);
|
|
42
|
+
const unionName = idl.generateSyntheticUnionName(unionTypes);
|
|
30
43
|
return idl.createOptionalType(unionTypes.length === 1 ? unionTypes[0] : idl.createUnionType(unionTypes, unionName, idl.cloneNodeInitializer(node)), { extendedAttributes: [{ name: idl.IDLExtendedAttributes.UnionOnlyNull }] });
|
|
31
44
|
}
|
|
32
45
|
}
|
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
|
3
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License.
|
|
5
|
+
* You may obtain a copy of the License at
|
|
6
|
+
*
|
|
7
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
*
|
|
9
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
* See the License for the specific language governing permissions and
|
|
13
|
+
* limitations under the License.
|
|
14
|
+
*/
|
|
1
15
|
import * as idl from "../idl";
|
|
2
16
|
import { IdlTransformer } from "./IdlTransformer";
|
|
3
17
|
export function transformOnSerializeTransformer(files, destinationGetter) {
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
|
3
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License.
|
|
5
|
+
* You may obtain a copy of the License at
|
|
6
|
+
*
|
|
7
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
*
|
|
9
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
* See the License for the specific language governing permissions and
|
|
13
|
+
* limitations under the License.
|
|
14
|
+
*/
|
|
15
|
+
import * as idl from "../idl";
|
|
16
|
+
import { IdlTransformer } from "./IdlTransformer";
|
|
17
|
+
export function throwsTransformer(files) {
|
|
18
|
+
assertNoThrowsReferences(files);
|
|
19
|
+
const transformer = new ThrowsTransformer();
|
|
20
|
+
return files.map(it => transformer.visit(it)).map(idl.linkParentBack);
|
|
21
|
+
}
|
|
22
|
+
function assertNoThrowsReferences(files) {
|
|
23
|
+
files.forEach(file => {
|
|
24
|
+
idl.forEachChild(file, node => {
|
|
25
|
+
if (idl.isReferenceType(node) && node.name === idl.IDLThrowsTypeName) {
|
|
26
|
+
throw new Error(`${idl.IDLThrowsTypeName} can be referenced only in throwsTransformer. If you want to make method throwable, please add 'Throws' extended attribute to the method.`);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
class ThrowsTransformer extends IdlTransformer {
|
|
32
|
+
visit(node) {
|
|
33
|
+
if (idl.isMethod(node)) {
|
|
34
|
+
if (!idl.hasExtAttribute(node, idl.IDLExtendedAttributes.Throws)) {
|
|
35
|
+
return this.visitEachChild(node);
|
|
36
|
+
}
|
|
37
|
+
if (idl.isContainerType(node.returnType) && node.returnType.containerKind === "Promise") {
|
|
38
|
+
// Promises are already includes `throws` by default and do not need to have additional generation
|
|
39
|
+
return this.visitEachChild(node);
|
|
40
|
+
}
|
|
41
|
+
return idl.createMethod(node.name, node.parameters, idl.createReferenceType(idl.IDLThrowsTypeName, [node.returnType]), {
|
|
42
|
+
isAsync: node.isAsync,
|
|
43
|
+
isFree: node.isFree,
|
|
44
|
+
isOptional: node.isOptional,
|
|
45
|
+
isStatic: node.isStatic,
|
|
46
|
+
}, idl.cloneNodeInitializer(node), node.typeParameters);
|
|
47
|
+
}
|
|
48
|
+
return this.visitEachChild(node);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=ThrowsTransformer.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as idl from "../idl";
|
|
2
|
+
import { ReferenceResolver } from "../peer-generation/ReferenceResolver";
|
|
3
|
+
export declare function maybeRestoreGenerics(maybeTransformedGeneric: idl.IDLReferenceType | idl.IDLEntry, resolver: ReferenceResolver): idl.IDLReferenceType | undefined;
|
|
4
|
+
export declare function isThrows(node: idl.IDLNode, resolver: ReferenceResolver): boolean;
|
|
5
|
+
export declare function maybeRestoreThrows(node: idl.IDLNode, resolver: ReferenceResolver): idl.IDLType | undefined;
|
|
6
|
+
export declare function maybeTransformManagedCallback(callback: idl.IDLCallback, library: ReferenceResolver): idl.IDLCallback | undefined;
|
|
7
|
+
//# sourceMappingURL=transformUtils.d.ts.map
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
|
3
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License.
|
|
5
|
+
* You may obtain a copy of the License at
|
|
6
|
+
*
|
|
7
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
*
|
|
9
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
* See the License for the specific language governing permissions and
|
|
13
|
+
* limitations under the License.
|
|
14
|
+
*/
|
|
15
|
+
import * as idl from "../idl";
|
|
16
|
+
export function maybeRestoreGenerics(maybeTransformedGeneric, resolver) {
|
|
17
|
+
if (idl.isReferenceType(maybeTransformedGeneric)) {
|
|
18
|
+
const resolved = resolver.resolveTypeReference(maybeTransformedGeneric);
|
|
19
|
+
return resolved ? maybeRestoreGenerics(resolved, resolver) : undefined;
|
|
20
|
+
}
|
|
21
|
+
if (maybeTransformedGeneric && idl.hasExtAttribute(maybeTransformedGeneric, idl.IDLExtendedAttributes.OriginalGenericName)) {
|
|
22
|
+
const originalName = idl.getExtAttribute(maybeTransformedGeneric, idl.IDLExtendedAttributes.OriginalGenericName);
|
|
23
|
+
const typeArguments = idl.getExtAttributeTypesValue(maybeTransformedGeneric, idl.IDLExtendedAttributes.OriginalGenericName);
|
|
24
|
+
if (!typeArguments)
|
|
25
|
+
throw new Error(`Can not restore original generic type arguments for ${originalName}: no type arguments`);
|
|
26
|
+
return idl.createReferenceType(originalName, typeArguments);
|
|
27
|
+
}
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
export function isThrows(node, resolver) {
|
|
31
|
+
if (idl.isReferenceType(node)) {
|
|
32
|
+
const resolved = resolver.resolveTypeReference(node);
|
|
33
|
+
return resolved ? isThrows(resolved, resolver) : false;
|
|
34
|
+
}
|
|
35
|
+
return !!maybeRestoreThrows(node, resolver) ||
|
|
36
|
+
idl.isEntry(node) && idl.getFQName(node) === idl.IDLThrowsTypeName;
|
|
37
|
+
}
|
|
38
|
+
export function maybeRestoreThrows(node, resolver) {
|
|
39
|
+
if (idl.isReferenceType(node)) {
|
|
40
|
+
const resolved = resolver.resolveTypeReference(node);
|
|
41
|
+
return resolved ? maybeRestoreThrows(resolved, resolver) : undefined;
|
|
42
|
+
}
|
|
43
|
+
if (idl.isEntry(node)) {
|
|
44
|
+
const restored = maybeRestoreGenerics(node, resolver);
|
|
45
|
+
if (restored && restored.name === idl.IDLThrowsTypeName)
|
|
46
|
+
return restored.typeArguments[0];
|
|
47
|
+
}
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
export function maybeTransformManagedCallback(callback, library) {
|
|
51
|
+
if (callback.name === "CustomBuilder")
|
|
52
|
+
return library.resolveTypeReference(idl.createReferenceType("arkui.component.idlize.CustomNodeBuilder"));
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=transformUtils.js.map
|
package/build/lib/src/util.d.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import * as idl from "./idl";
|
|
2
1
|
import { Language } from './Language';
|
|
3
|
-
import { LibraryInterface } from './LibraryInterface';
|
|
4
2
|
export declare function arrayAt<T>(array: T[] | undefined, index: number): T | undefined;
|
|
5
3
|
export declare function isDefined<T>(value: T | null | undefined): value is T;
|
|
6
4
|
export declare function capitalize(string: string): string;
|
|
@@ -19,14 +17,12 @@ export declare function toCamelCase(input: string): string;
|
|
|
19
17
|
export declare function isUpperCase(s: string): boolean;
|
|
20
18
|
export declare function camelCaseToUpperSnakeCase(input: string): string;
|
|
21
19
|
export declare function camelCaseToLowerSnakeCase(input: string): string;
|
|
22
|
-
export declare function snakeToLowCamelNode(node: idl.IDLEntry): string;
|
|
23
20
|
export declare function renameDtsToPeer(fileName: string, language: Language, withFileExtension?: boolean): string;
|
|
24
21
|
export declare function renameDtsToComponent(fileName: string, language: Language, withFileExtension?: boolean): string;
|
|
25
22
|
export declare function renameDtsToInterfaces(fileName: string, language: Language, withFileExtension?: boolean): string;
|
|
26
23
|
export declare function renameClassToBuilderClass(className: string, language: Language, withFileExtension?: boolean): string;
|
|
27
24
|
export declare function renameClassToMaterialized(className: string, language: Language, withFileExtension?: boolean): string;
|
|
28
25
|
export declare function throwException(message: string): never;
|
|
29
|
-
export declare function entryToFunctionName(_language: Language, declaration: idl.IDLEntry, prefix: string, postfix: string): string;
|
|
30
26
|
/**
|
|
31
27
|
* Add a prefix to an enum value which camel case name coincidence
|
|
32
28
|
* with the the same upper case name for an another enum value
|
|
@@ -48,24 +44,12 @@ export declare class Lazy<T> {
|
|
|
48
44
|
get value(): T;
|
|
49
45
|
}
|
|
50
46
|
export declare function lazy<T>(factory: () => T): Lazy<T>;
|
|
51
|
-
export declare function isInNamespace(node: idl.IDLEntry): boolean;
|
|
52
47
|
export declare function rightmostIndexOf<T>(array: T[], predicate: (value: T) => boolean): number;
|
|
53
48
|
type StringProperties<T> = {
|
|
54
49
|
[Property in keyof T as (T[Property] extends string ? Property : never)]: T[Property];
|
|
55
50
|
};
|
|
56
51
|
export declare function sorted<T, N extends keyof StringProperties<T>>(array: T[], key: ((value: T) => string) | N): T[];
|
|
57
|
-
export declare function mapLibraryName(node: idl.IDLEntry, lang: Language, mapping?: Map<string, Map<string, string>>, prefix?: string): string;
|
|
58
|
-
export declare function getExtractor(target: idl.IDLInterface, lang: Language, toPtr?: boolean): {
|
|
59
|
-
receiver?: string;
|
|
60
|
-
method: string;
|
|
61
|
-
};
|
|
62
|
-
export declare function getInitializerFeature(lang: Language): string;
|
|
63
|
-
export declare function getInitializerDefaultValue(decl: idl.IDLEntry, lang: Language): string;
|
|
64
52
|
export declare function getSyntheticTypesFileName(): string;
|
|
65
|
-
export declare function getTransformer(library: LibraryInterface, from: idl.IDLNode, to: idl.IDLNode): {
|
|
66
|
-
receiver?: string;
|
|
67
|
-
method: string;
|
|
68
|
-
};
|
|
69
53
|
export declare function removePoints(s: string): string;
|
|
70
54
|
export declare function scanDirectory(dir: string, fileFilter: (file: string) => boolean, recursive?: boolean): string[];
|
|
71
55
|
export declare function scanInputDirs(inputDirs: string[]): string[];
|