@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.
Files changed (75) hide show
  1. package/build/lib/src/IndentedPrinter.js +2 -2
  2. package/build/lib/src/Language.d.ts +1 -0
  3. package/build/lib/src/Language.js +8 -0
  4. package/build/lib/src/LanguageWriters/ArgConvertors.d.ts +47 -3
  5. package/build/lib/src/LanguageWriters/ArgConvertors.js +194 -20
  6. package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +5 -1
  7. package/build/lib/src/LanguageWriters/LanguageWriter.js +15 -0
  8. package/build/lib/src/LanguageWriters/convertors/CJConvertors.js +6 -2
  9. package/build/lib/src/LanguageWriters/convertors/CppConvertors.js +7 -1
  10. package/build/lib/src/LanguageWriters/convertors/ETSConvertors.js +3 -0
  11. package/build/lib/src/LanguageWriters/convertors/InteropConvertors.js +4 -0
  12. package/build/lib/src/LanguageWriters/convertors/KotlinConvertors.d.ts +10 -5
  13. package/build/lib/src/LanguageWriters/convertors/KotlinConvertors.js +138 -51
  14. package/build/lib/src/LanguageWriters/convertors/TSConvertors.js +5 -1
  15. package/build/lib/src/LanguageWriters/index.d.ts +1 -2
  16. package/build/lib/src/LanguageWriters/index.js +17 -3
  17. package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.d.ts +1 -1
  18. package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +5 -3
  19. package/build/lib/src/LanguageWriters/writers/CLikeLanguageWriter.d.ts +1 -1
  20. package/build/lib/src/LanguageWriters/writers/CLikeLanguageWriter.js +5 -3
  21. package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.d.ts +2 -1
  22. package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.js +8 -3
  23. package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +3 -9
  24. package/build/lib/src/LanguageWriters/writers/KotlinLanguageWriter.d.ts +5 -3
  25. package/build/lib/src/LanguageWriters/writers/KotlinLanguageWriter.js +52 -31
  26. package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.d.ts +1 -1
  27. package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +5 -3
  28. package/build/lib/src/LibraryInterface.d.ts +6 -0
  29. package/build/lib/src/LibraryInterface.js +22 -1
  30. package/build/lib/src/from-idl/DtsPrinter.d.ts +3 -2
  31. package/build/lib/src/from-idl/DtsPrinter.js +9 -6
  32. package/build/lib/src/idl/builders.d.ts +36 -1
  33. package/build/lib/src/idl/builders.js +62 -2
  34. package/build/lib/src/idl/dump.d.ts +3 -0
  35. package/build/lib/src/idl/dump.js +20 -3
  36. package/build/lib/src/idl/index.d.ts +0 -1
  37. package/build/lib/src/idl/index.js +0 -1
  38. package/build/lib/src/idl/node.d.ts +1 -0
  39. package/build/lib/src/idl/node.js +1 -0
  40. package/build/lib/src/idl/stdlib.d.ts +1 -0
  41. package/build/lib/src/idl/stdlib.js +1 -0
  42. package/build/lib/src/idl/utils.d.ts +4 -3
  43. package/build/lib/src/idl/utils.js +26 -13
  44. package/build/lib/src/idl/visitors.js +24 -104
  45. package/build/lib/src/index.d.ts +4 -1
  46. package/build/lib/src/index.js +4 -1
  47. package/build/lib/src/peer-generation/Extractors.d.ts +7 -0
  48. package/build/lib/src/peer-generation/Extractors.js +40 -0
  49. package/build/lib/src/peer-generation/Initializers.d.ts +5 -0
  50. package/build/lib/src/peer-generation/Initializers.js +28 -0
  51. package/build/lib/src/peer-generation/Materialized.d.ts +0 -4
  52. package/build/lib/src/peer-generation/Materialized.js +13 -24
  53. package/build/lib/src/peer-generation/PeerLibrary.d.ts +2 -2
  54. package/build/lib/src/peer-generation/PeerLibrary.js +55 -5
  55. package/build/lib/src/peer-generation/PeerMethod.d.ts +1 -0
  56. package/build/lib/src/peer-generation/PeerMethod.js +1 -0
  57. package/build/lib/src/peer-generation/idl/common.d.ts +0 -2
  58. package/build/lib/src/peer-generation/idl/common.js +3 -25
  59. package/build/lib/src/peer-generation/isMaterialized.d.ts +4 -0
  60. package/build/lib/src/peer-generation/isMaterialized.js +12 -0
  61. package/build/lib/src/peer-generation/unions.d.ts +1 -27
  62. package/build/lib/src/peer-generation/unions.js +1 -99
  63. package/build/lib/src/transformers/FqnTransformer.js +14 -0
  64. package/build/lib/src/transformers/GenericTransformer.d.ts +0 -2
  65. package/build/lib/src/transformers/GenericTransformer.js +19 -19
  66. package/build/lib/src/transformers/IdlTransformer.js +14 -0
  67. package/build/lib/src/transformers/NullTransformer.js +16 -3
  68. package/build/lib/src/transformers/OnSerializeTransformer.js +14 -0
  69. package/build/lib/src/transformers/ThrowsTransformer.d.ts +3 -0
  70. package/build/lib/src/transformers/ThrowsTransformer.js +51 -0
  71. package/build/lib/src/transformers/transformUtils.d.ts +7 -0
  72. package/build/lib/src/transformers/transformUtils.js +55 -0
  73. package/build/lib/src/util.d.ts +0 -16
  74. package/build/lib/src/util.js +2 -76
  75. 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
- import { TypeConvertor } from "../LanguageWriters";
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
- import * as idl from '../idl';
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 && _j !== void 0 ? _j : [];
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((_k = node.typeArguments) !== null && _k !== void 0 ? _k : []);
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)}<${((_l = decl.typeParameters) !== null && _l !== void 0 ? _l : [])
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,3 @@
1
+ import * as idl from "../idl";
2
+ export declare function throwsTransformer(files: idl.IDLFile[]): idl.IDLFile[];
3
+ //# sourceMappingURL=ThrowsTransformer.d.ts.map
@@ -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
@@ -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[];