@idlizer/core 2.1.10-arktscgen-7 → 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 (77) 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 +216 -19
  6. package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +12 -4
  7. package/build/lib/src/LanguageWriters/LanguageWriter.js +28 -3
  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 +4 -10
  24. package/build/lib/src/LanguageWriters/writers/KotlinLanguageWriter.d.ts +6 -4
  25. package/build/lib/src/LanguageWriters/writers/KotlinLanguageWriter.js +59 -42
  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/from-idl/parser.d.ts +1 -1
  33. package/build/lib/src/from-idl/parser.js +3 -3
  34. package/build/lib/src/idl/builders.d.ts +36 -1
  35. package/build/lib/src/idl/builders.js +62 -2
  36. package/build/lib/src/idl/dump.d.ts +3 -0
  37. package/build/lib/src/idl/dump.js +22 -4
  38. package/build/lib/src/idl/index.d.ts +0 -1
  39. package/build/lib/src/idl/index.js +0 -1
  40. package/build/lib/src/idl/node.d.ts +1 -0
  41. package/build/lib/src/idl/node.js +1 -0
  42. package/build/lib/src/idl/stdlib.d.ts +1 -0
  43. package/build/lib/src/idl/stdlib.js +1 -0
  44. package/build/lib/src/idl/utils.d.ts +4 -3
  45. package/build/lib/src/idl/utils.js +26 -13
  46. package/build/lib/src/idl/visitors.js +24 -104
  47. package/build/lib/src/index.d.ts +4 -1
  48. package/build/lib/src/index.js +4 -1
  49. package/build/lib/src/peer-generation/Extractors.d.ts +7 -0
  50. package/build/lib/src/peer-generation/Extractors.js +40 -0
  51. package/build/lib/src/peer-generation/Initializers.d.ts +5 -0
  52. package/build/lib/src/peer-generation/Initializers.js +28 -0
  53. package/build/lib/src/peer-generation/Materialized.d.ts +0 -4
  54. package/build/lib/src/peer-generation/Materialized.js +13 -24
  55. package/build/lib/src/peer-generation/PeerLibrary.d.ts +1 -0
  56. package/build/lib/src/peer-generation/PeerLibrary.js +54 -3
  57. package/build/lib/src/peer-generation/PeerMethod.d.ts +1 -0
  58. package/build/lib/src/peer-generation/PeerMethod.js +1 -0
  59. package/build/lib/src/peer-generation/idl/common.d.ts +0 -2
  60. package/build/lib/src/peer-generation/idl/common.js +3 -25
  61. package/build/lib/src/peer-generation/isMaterialized.d.ts +4 -0
  62. package/build/lib/src/peer-generation/isMaterialized.js +12 -0
  63. package/build/lib/src/peer-generation/unions.d.ts +1 -27
  64. package/build/lib/src/peer-generation/unions.js +1 -99
  65. package/build/lib/src/transformers/FqnTransformer.js +26 -2
  66. package/build/lib/src/transformers/GenericTransformer.d.ts +0 -2
  67. package/build/lib/src/transformers/GenericTransformer.js +20 -20
  68. package/build/lib/src/transformers/IdlTransformer.js +14 -0
  69. package/build/lib/src/transformers/NullTransformer.js +16 -3
  70. package/build/lib/src/transformers/OnSerializeTransformer.js +14 -0
  71. package/build/lib/src/transformers/ThrowsTransformer.d.ts +3 -0
  72. package/build/lib/src/transformers/ThrowsTransformer.js +51 -0
  73. package/build/lib/src/transformers/transformUtils.d.ts +7 -0
  74. package/build/lib/src/transformers/transformUtils.js +55 -0
  75. package/build/lib/src/util.d.ts +0 -15
  76. package/build/lib/src/util.js +2 -73
  77. package/package.json +11 -5
@@ -45,6 +45,7 @@ export const IDLFunctionType = createPrimitiveType('Function');
45
45
  export const IDLCustomObjectType = createPrimitiveType('CustomObject');
46
46
  export const IDLInteropReturnBufferType = createPrimitiveType('InteropReturnBuffer');
47
47
  export const IDLNullTypeName = "idlize.stdlib.Null";
48
+ export const IDLThrowsTypeName = "idlize.stdlib.Throws";
48
49
  export function isUndefinedType(type) {
49
50
  return isPrimitiveType(type) && type.name === IDLUndefinedType.name;
50
51
  }
@@ -1,6 +1,7 @@
1
1
  import { stringOrNone } from "../util";
2
2
  import { QNPattern } from "./discriminators";
3
3
  import { IDLNode, IDLNamedNode, IDLType, IDLEntry, IDLReferenceType, IDLContainerType, IDLSignature, IDLParameter, IDLEnum, IDLFile } from "./node";
4
+ import { Language } from "../Language";
4
5
  export declare function entityToType(entity: IDLNode): IDLType;
5
6
  export declare function forceAsNamedNode(type: IDLNode): IDLNamedNode;
6
7
  export declare function isEqualByQualifedName(a?: IDLNamedNode, b?: IDLNamedNode, pattern?: QNPattern): boolean;
@@ -12,9 +13,6 @@ export declare function decomposeQualifiedName(type: IDLReferenceType): [string
12
13
  export declare function qualifiedNameStartsWith(node: IDLNode | string[], template: string[]): boolean;
13
14
  export declare function maybeUnwrapOptionalType(type: IDLType): IDLType;
14
15
  export declare function maybeOptional(type: IDLType, optional?: boolean): IDLType;
15
- export declare const DebugUtils: {
16
- debugPrintType: (type: IDLType) => string;
17
- };
18
16
  export declare function asPromise(type?: IDLType): IDLContainerType | undefined;
19
17
  export declare function transformMethodsAsync2ReturnPromise(entry: IDLEntry): void;
20
18
  export declare function transformMethodsReturnPromise2Async(entry: IDLEntry): void;
@@ -41,4 +39,7 @@ export declare function hasTypeParameters(entry: IDLEntry): boolean;
41
39
  export declare function isGeneric(entry: IDLEntry): entry is IDLEntry & {
42
40
  typeParameters?: string[];
43
41
  };
42
+ export declare function snakeToLowCamelNode(node: IDLEntry): string;
43
+ export declare function entryToFunctionName(_language: Language, declaration: IDLEntry, prefix: string, postfix: string): string;
44
+ export declare function isInNamespace(node: IDLEntry): boolean;
44
45
  //# sourceMappingURL=utils.d.ts.map
@@ -12,11 +12,11 @@
12
12
  * See the License for the specific language governing permissions and
13
13
  * limitations under the License.
14
14
  */
15
- import { createOptionalType, createContainerType, createReferenceType } from "./builders";
16
- import { isNamedNode, getQualifiedName, getFQName, isOptionalType, isContainerType, IDLContainerUtils, isNamespace, isInPackage, isType, isEntry, isTypeParameterType, isInterface, isTypedef, isCallback, isMethod, isCallable, getExtAttribute, hasExtAttribute } from "./discriminators";
17
- import { printType } from "./dump";
15
+ import { basename } from "node:path";
16
+ import { capitalize } from "../util";
17
+ import { createOptionalType, createContainerType, createReferenceType, IDLVoidType, IDLStringType } from "./builders";
18
+ import { isNamedNode, getQualifiedName, getFQName, isOptionalType, isContainerType, IDLContainerUtils, isNamespace, isInPackage, isType, isEntry, isTypeParameterType, isInterface, isTypedef, isCallback, isMethod, isCallable, getExtAttribute, hasExtAttribute, getNamespacesPathFor } from "./discriminators";
18
19
  import { IDLKind, IDLExtendedAttributes } from "./node";
19
- import { IDLVoidType, IDLStringType } from "./stdlib";
20
20
  import { forEachChild, forEachFunction } from "./visitors";
21
21
  export function entityToType(entity) {
22
22
  if (isType(entity)) {
@@ -83,15 +83,6 @@ export function maybeOptional(type, optional = false) {
83
83
  }
84
84
  return type;
85
85
  }
86
- export const DebugUtils = {
87
- debugPrintType: (type) => {
88
- const filename = type.fileName ? `, fileName: '${type.fileName}'` : "";
89
- if (isContainerType(type)) {
90
- return `[IDLType, name: '${printType(type)}', kind: '${IDLKind[type.kind]}', elements: [${type.elementType.map(DebugUtils.debugPrintType).join(', ')}]${filename}]`;
91
- }
92
- return `[IDLType, name: '${printType(type)}', kind: '${IDLKind[type.kind]}'${filename}]`;
93
- },
94
- };
95
86
  export function asPromise(type) {
96
87
  if (!type)
97
88
  return undefined;
@@ -212,4 +203,26 @@ export function isGeneric(entry) {
212
203
  || isMethod(entry)
213
204
  || isCallable(entry);
214
205
  }
206
+ export function snakeToLowCamelNode(node) {
207
+ if (!node.fileName) {
208
+ throw new Error("Invalid Convert");
209
+ }
210
+ const classname = basename(node.fileName).replace(".idl", "").replace(".d.ts", "");
211
+ return classname
212
+ .split('_')
213
+ .filter(word => word !== '')
214
+ .map((word, index) => {
215
+ if (index === 0) {
216
+ return word.toLowerCase();
217
+ }
218
+ return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
219
+ })
220
+ .join('');
221
+ }
222
+ export function entryToFunctionName(_language, declaration, prefix, postfix) {
223
+ return `${prefix}${getQualifiedName(declaration, "package.namespace.name").split('.').map(capitalize).join('')}${postfix}`;
224
+ }
225
+ export function isInNamespace(node) {
226
+ return getNamespacesPathFor(node).length > 0;
227
+ }
215
228
  //# sourceMappingURL=utils.js.map
@@ -12,8 +12,7 @@
12
12
  * See the License for the specific language governing permissions and
13
13
  * limitations under the License.
14
14
  */
15
- import { generateSyntheticUnionName } from "../peer-generation/idl/common";
16
- import { createInterface, createFile, createNamespace, createMethod, createCallable, createCallback, createConstructor, createUnionType, createOptionalType, createConstant, createEnum, createEnumMember, createProperty, createParameter, createTypedef, createContainerType, createReferenceType, createImport, createTypeParameterReference, createVersion } from "./builders";
15
+ import { createInterface, createFile, createNamespace, createMethod, createCallable, createCallback, createConstructor, createUnionType, createOptionalType, createConstant, createEnum, createEnumMember, createProperty, createParameter, createTypedef, createContainerType, createReferenceType, createImport, createTypeParameterReference, createVersion, generateSyntheticUnionName } from "./builders";
17
16
  import { isType, isNamespace, isInterface, isMethod, isCallback, isTypedef, isEnum, isImport, isVersion, isConstant, isConstructor, isProperty, isCallable, isFile, isReferenceType, isParameter, isUnionType, isOptionalType, isEnumMember, isPrimitiveType, isContainerType, isTypeParameterType } from "./discriminators";
18
17
  import { IDLKind } from "./node";
19
18
  export function forEachChild(node, cbEnter, cbLeave) {
@@ -199,9 +198,10 @@ export function updateEachChild(node, op, cbLeave) {
199
198
  return node;
200
199
  }
201
200
  export function cloneNodeInitializer(other) {
201
+ var _a;
202
202
  return {
203
203
  documentation: other.documentation,
204
- extendedAttributes: other.extendedAttributes,
204
+ extendedAttributes: (_a = other.extendedAttributes) === null || _a === void 0 ? void 0 : _a.map(it => { return Object.assign({}, it); }),
205
205
  fileName: other.fileName,
206
206
  nameLocation: other.nameLocation,
207
207
  nodeLocation: other.nodeLocation,
@@ -392,7 +392,7 @@ export function linkParentBack(node) {
392
392
  return node;
393
393
  }
394
394
  export function clone(node) {
395
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z;
395
+ var _a, _b, _c, _d;
396
396
  const make = (newnode) => {
397
397
  if (node.nodeLocation) {
398
398
  newnode.nodeLocation = node.nodeLocation;
@@ -409,51 +409,27 @@ export function clone(node) {
409
409
  switch (node.kind) {
410
410
  case IDLKind.Interface: {
411
411
  const entry = get(node);
412
- return make(createInterface(entry.name, entry.subkind, (_a = entry.inheritance) === null || _a === void 0 ? void 0 : _a.map(clone), (_b = entry.constructors) === null || _b === void 0 ? void 0 : _b.map(clone), entry.constants.map(clone), entry.properties.map(clone), entry.methods.map(clone), entry.callables.map(clone), (_c = entry.typeParameters) === null || _c === void 0 ? void 0 : _c.map(it => it), {
413
- documentation: node.documentation,
414
- extendedAttributes: (_d = node.extendedAttributes) === null || _d === void 0 ? void 0 : _d.slice(),
415
- fileName: node.fileName
416
- }));
412
+ return make(createInterface(entry.name, entry.subkind, (_a = entry.inheritance) === null || _a === void 0 ? void 0 : _a.map(clone), (_b = entry.constructors) === null || _b === void 0 ? void 0 : _b.map(clone), entry.constants.map(clone), entry.properties.map(clone), entry.methods.map(clone), entry.callables.map(clone), (_c = entry.typeParameters) === null || _c === void 0 ? void 0 : _c.map(it => it), cloneNodeInitializer(node)));
417
413
  }
418
414
  case IDLKind.Import: {
419
415
  const entry = get(node);
420
- return make(createImport(entry.clause, entry.name, {
421
- documentation: entry.documentation,
422
- extendedAttributes: (_e = entry.extendedAttributes) === null || _e === void 0 ? void 0 : _e.slice(),
423
- fileName: entry.fileName
424
- }));
416
+ return make(createImport(entry.clause, entry.name, cloneNodeInitializer(entry)));
425
417
  }
426
418
  case IDLKind.Callback: {
427
419
  const entry = get(node);
428
- return make(createCallback(entry.name, entry.parameters.map(clone), clone(entry.returnType), {
429
- documentation: entry.documentation,
430
- extendedAttributes: (_f = entry.extendedAttributes) === null || _f === void 0 ? void 0 : _f.slice(),
431
- fileName: entry.fileName
432
- }, entry.typeParameters));
420
+ return make(createCallback(entry.name, entry.parameters.map(clone), clone(entry.returnType), cloneNodeInitializer(entry), entry.typeParameters));
433
421
  }
434
422
  case IDLKind.Const: {
435
423
  const entry = get(node);
436
- return make(createConstant(entry.name, clone(entry.type), entry.value, {
437
- documentation: entry.documentation,
438
- extendedAttributes: (_g = entry.extendedAttributes) === null || _g === void 0 ? void 0 : _g.slice(),
439
- fileName: entry.fileName
440
- }));
424
+ return make(createConstant(entry.name, clone(entry.type), entry.value, cloneNodeInitializer(entry)));
441
425
  }
442
426
  case IDLKind.Property: {
443
427
  const entry = get(node);
444
- return make(createProperty(entry.name, clone(entry.type), entry.isReadonly, entry.isStatic, entry.isOptional, {
445
- documentation: entry.documentation,
446
- extendedAttributes: (_h = entry.extendedAttributes) === null || _h === void 0 ? void 0 : _h.slice(),
447
- fileName: entry.fileName
448
- }));
428
+ return make(createProperty(entry.name, clone(entry.type), entry.isReadonly, entry.isStatic, entry.isOptional, cloneNodeInitializer(entry)));
449
429
  }
450
430
  case IDLKind.Parameter: {
451
431
  const entry = get(node);
452
- return make(createParameter(entry.name, clone(entry.type), entry.isOptional, entry.isVariadic, {
453
- documentation: entry.documentation,
454
- extendedAttributes: (_j = entry.extendedAttributes) === null || _j === void 0 ? void 0 : _j.slice(),
455
- fileName: entry.fileName
456
- }));
432
+ return make(createParameter(entry.name, clone(entry.type), entry.isOptional, entry.isVariadic, cloneNodeInitializer(entry)));
457
433
  }
458
434
  case IDLKind.Method: {
459
435
  const entry = get(node);
@@ -462,38 +438,22 @@ export function clone(node) {
462
438
  isFree: entry.isFree,
463
439
  isOptional: entry.isOptional,
464
440
  isStatic: entry.isStatic
465
- }, {
466
- documentation: entry.documentation,
467
- extendedAttributes: (_k = entry.extendedAttributes) === null || _k === void 0 ? void 0 : _k.slice(),
468
- fileName: entry.fileName
469
- }, entry.typeParameters));
441
+ }, cloneNodeInitializer(entry), entry.typeParameters));
470
442
  }
471
443
  case IDLKind.Callable: {
472
444
  const entry = get(node);
473
445
  return make(createCallable(entry.name, entry.parameters.map(clone), clone(entry.returnType), {
474
446
  isAsync: entry.isAsync,
475
447
  isStatic: entry.isStatic
476
- }, {
477
- documentation: entry.documentation,
478
- extendedAttributes: (_l = entry.extendedAttributes) === null || _l === void 0 ? void 0 : _l.slice(),
479
- fileName: entry.documentation
480
- }, entry.typeParameters));
448
+ }, cloneNodeInitializer(entry), entry.typeParameters));
481
449
  }
482
450
  case IDLKind.Constructor: {
483
451
  const entry = get(node);
484
- return make(createConstructor(entry.parameters.map(clone), entry.returnType ? clone(entry.returnType) : undefined, {
485
- documentation: entry.documentation,
486
- extendedAttributes: (_m = entry.extendedAttributes) === null || _m === void 0 ? void 0 : _m.slice(),
487
- fileName: entry.fileName
488
- }));
452
+ return make(createConstructor(entry.parameters.map(clone), entry.returnType ? clone(entry.returnType) : undefined, cloneNodeInitializer(entry)));
489
453
  }
490
454
  case IDLKind.Enum: {
491
455
  const entry = get(node);
492
- const cloned = createEnum(entry.name, entry.elements.map(clone), {
493
- documentation: entry.documentation,
494
- extendedAttributes: (_o = entry.extendedAttributes) === null || _o === void 0 ? void 0 : _o.slice(),
495
- fileName: entry.fileName
496
- });
456
+ const cloned = createEnum(entry.name, entry.elements.map(clone), cloneNodeInitializer(entry));
497
457
  cloned.elements.forEach(it => {
498
458
  it.parent = cloned;
499
459
  });
@@ -501,86 +461,46 @@ export function clone(node) {
501
461
  }
502
462
  case IDLKind.EnumMember: {
503
463
  const entry = get(node);
504
- return make(createEnumMember(entry.name, entry.parent, clone(entry.type), entry.initializer, {
505
- documentation: entry.documentation,
506
- extendedAttributes: (_p = entry.extendedAttributes) === null || _p === void 0 ? void 0 : _p.slice(),
507
- fileName: entry.fileName
508
- }));
464
+ return make(createEnumMember(entry.name, entry.parent, clone(entry.type), entry.initializer, cloneNodeInitializer(entry)));
509
465
  }
510
466
  case IDLKind.Typedef: {
511
467
  const entry = get(node);
512
- return make(createTypedef(entry.name, clone(entry.type), entry.typeParameters, {
513
- documentation: entry.documentation,
514
- extendedAttributes: (_q = entry.extendedAttributes) === null || _q === void 0 ? void 0 : _q.slice(),
515
- fileName: entry.fileName
516
- }));
468
+ return make(createTypedef(entry.name, clone(entry.type), entry.typeParameters, cloneNodeInitializer(entry)));
517
469
  }
518
470
  case IDLKind.PrimitiveType: {
519
471
  return node;
520
472
  }
521
473
  case IDLKind.ContainerType: {
522
474
  const type = get(node);
523
- return make(createContainerType(type.containerKind, type.elementType.map(clone), {
524
- documentation: type.documentation,
525
- extendedAttributes: (_r = type.extendedAttributes) === null || _r === void 0 ? void 0 : _r.slice(),
526
- fileName: type.fileName
527
- }));
475
+ return make(createContainerType(type.containerKind, type.elementType.map(clone), cloneNodeInitializer(type)));
528
476
  }
529
477
  case IDLKind.ReferenceType: {
530
478
  const type = get(node);
531
- return make(createReferenceType(type.name, (_s = type.typeArguments) === null || _s === void 0 ? void 0 : _s.map(clone), {
532
- documentation: type.documentation,
533
- extendedAttributes: (_t = type.extendedAttributes) === null || _t === void 0 ? void 0 : _t.slice(),
534
- fileName: type.fileName
535
- }));
479
+ return make(createReferenceType(type.name, (_d = type.typeArguments) === null || _d === void 0 ? void 0 : _d.map(clone), cloneNodeInitializer(type)));
536
480
  }
537
481
  case IDLKind.UnionType: {
538
482
  const type = get(node);
539
- return make(createUnionType(type.types.map(clone), type.name, {
540
- documentation: type.documentation,
541
- extendedAttributes: (_u = type.extendedAttributes) === null || _u === void 0 ? void 0 : _u.slice(),
542
- fileName: type.fileName
543
- }));
483
+ return make(createUnionType(type.types.map(clone), type.name, cloneNodeInitializer(type)));
544
484
  }
545
485
  case IDLKind.TypeParameterType: {
546
486
  const type = get(node);
547
- return make(createTypeParameterReference(type.name, {
548
- documentation: type.documentation,
549
- extendedAttributes: (_v = type.extendedAttributes) === null || _v === void 0 ? void 0 : _v.slice(),
550
- fileName: type.fileName
551
- }));
487
+ return make(createTypeParameterReference(type.name, cloneNodeInitializer(type)));
552
488
  }
553
489
  case IDLKind.OptionalType: {
554
490
  const type = get(node);
555
- return make(createOptionalType(clone(type.type), {
556
- documentation: type.documentation,
557
- extendedAttributes: (_w = type.extendedAttributes) === null || _w === void 0 ? void 0 : _w.slice(),
558
- fileName: type.fileName
559
- }));
491
+ return make(createOptionalType(clone(type.type), cloneNodeInitializer(type)));
560
492
  }
561
493
  case IDLKind.Version: {
562
494
  const entry = get(node);
563
- return make(createVersion(entry.value, {
564
- documentation: entry.documentation,
565
- extendedAttributes: (_x = entry.extendedAttributes) === null || _x === void 0 ? void 0 : _x.slice(),
566
- fileName: entry.fileName
567
- }));
495
+ return make(createVersion(entry.value, cloneNodeInitializer(entry)));
568
496
  }
569
497
  case IDLKind.Namespace: {
570
498
  const ns = get(node);
571
- return make(createNamespace(ns.name, ns.members.map(clone), {
572
- documentation: ns.documentation,
573
- extendedAttributes: (_y = ns.extendedAttributes) === null || _y === void 0 ? void 0 : _y.slice(),
574
- fileName: ns.fileName
575
- }));
499
+ return make(createNamespace(ns.name, ns.members.map(clone), cloneNodeInitializer(ns)));
576
500
  }
577
501
  case IDLKind.File: {
578
502
  const file = get(node);
579
- return make(createFile(file.entries.map(clone), file.fileName, file.packageClause, {
580
- documentation: file.documentation,
581
- extendedAttributes: (_z = file.extendedAttributes) === null || _z === void 0 ? void 0 : _z.slice(),
582
- fileName: file.fileName
583
- }));
503
+ return make(createFile(file.entries.map(clone), file.fileName, file.packageClause, cloneNodeInitializer(file)));
584
504
  }
585
505
  }
586
506
  }
@@ -46,12 +46,15 @@ export * from "./peer-generation/isEnumType";
46
46
  export * from "./peer-generation/unions";
47
47
  export * from "./peer-generation/getSuperType";
48
48
  export * from "./peer-generation/ConflictingDeclarations";
49
- export * from "./peer-generation/toDeclaration";
49
+ export * from "./peer-generation/Extractors";
50
+ export * from "./peer-generation/Initializers";
50
51
  export * from "./transformers/FqnTransformer";
51
52
  export * from "./transformers/GenericTransformer";
52
53
  export * from "./transformers/NullTransformer";
54
+ export * from "./transformers/ThrowsTransformer";
53
55
  export * from "./transformers/OnSerializeTransformer";
54
56
  export * from "./transformers/IdlTransformer";
57
+ export * from "./transformers/transformUtils";
55
58
  export * from "./LanguageWriters";
56
59
  export * from "./peer-generation/ReferenceResolver";
57
60
  export * from "./peer-generation/idl/common";
@@ -60,12 +60,15 @@ export * from "./peer-generation/isEnumType";
60
60
  export * from "./peer-generation/unions";
61
61
  export * from "./peer-generation/getSuperType";
62
62
  export * from "./peer-generation/ConflictingDeclarations";
63
- export * from "./peer-generation/toDeclaration";
63
+ export * from "./peer-generation/Extractors";
64
+ export * from "./peer-generation/Initializers";
64
65
  export * from "./transformers/FqnTransformer";
65
66
  export * from "./transformers/GenericTransformer";
66
67
  export * from "./transformers/NullTransformer";
68
+ export * from "./transformers/ThrowsTransformer";
67
69
  export * from "./transformers/OnSerializeTransformer";
68
70
  export * from "./transformers/IdlTransformer";
71
+ export * from "./transformers/transformUtils";
69
72
  export * from "./LanguageWriters";
70
73
  export * from "./peer-generation/ReferenceResolver";
71
74
  export * from "./peer-generation/idl/common";
@@ -0,0 +1,7 @@
1
+ import { IDLInterface } from "../idl";
2
+ import { Language } from "../Language";
3
+ export declare function getExtractor(target: IDLInterface, lang: Language, toPtr?: boolean): {
4
+ receiver?: string;
5
+ method: string;
6
+ };
7
+ //# sourceMappingURL=Extractors.d.ts.map
@@ -0,0 +1,40 @@
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 { getQualifiedName } from "../idl";
16
+ import { Language } from "../Language";
17
+ import { capitalize } from "../util";
18
+ import { getInternalClassName, getInternalClassQualifiedName } from "./isMaterialized";
19
+ import { isInExternalModule } from "./modules";
20
+ function getExtractorClass(target, toPtr = true) {
21
+ if (isInExternalModule(target)) {
22
+ const qualifiedName = getQualifiedName(target, "namespace.name");
23
+ const name = qualifiedName.split(`.`).map(it => capitalize(it)).join("");
24
+ return name;
25
+ }
26
+ return toPtr ? "Peer" : "";
27
+ }
28
+ export function getExtractor(target, lang, toPtr = true) {
29
+ const receiver = isInExternalModule(target)
30
+ ? `extractors`
31
+ : toPtr
32
+ ? undefined // TBD: update to MaterializedBase when import is updated
33
+ : (lang == Language.CJ || lang == Language.KOTLIN)
34
+ ? getInternalClassName(target.name)
35
+ : getInternalClassQualifiedName(target, "namespace.name", lang);
36
+ const extractorClass = getExtractorClass(target, toPtr);
37
+ const method = toPtr ? `to${extractorClass}Ptr` : `from${extractorClass}Ptr`;
38
+ return { receiver, method };
39
+ }
40
+ //# sourceMappingURL=Extractors.js.map
@@ -0,0 +1,5 @@
1
+ import { IDLEntry } from "../idl";
2
+ import { Language } from "../Language";
3
+ export declare function getInitializerFeature(lang: Language): string;
4
+ export declare function getInitializerDefaultValue(decl: IDLEntry, lang: Language): string;
5
+ //# sourceMappingURL=Initializers.d.ts.map
@@ -0,0 +1,28 @@
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 { getFQName, isProperty } from "../idl";
16
+ export function getInitializerFeature(lang) {
17
+ // TBD: update code for KT and CJ
18
+ return "initializers";
19
+ }
20
+ export function getInitializerDefaultValue(decl, lang) {
21
+ const parent = decl.parent;
22
+ const fqn = parent && isProperty(decl)
23
+ ? `${getFQName(parent)}NS.${decl.name}`
24
+ : getFQName(decl);
25
+ // TBD: update code for KT and CJ
26
+ return `${getInitializerFeature(lang)}.${fqn}`;
27
+ }
28
+ //# sourceMappingURL=Initializers.js.map
@@ -1,5 +1,4 @@
1
1
  import * as idl from '../idl';
2
- import { Language } from '../Language';
3
2
  import { ArgConvertor } from '../LanguageWriters/ArgConvertors';
4
3
  import { Field, Method } from '../LanguageWriters/LanguageWriter';
5
4
  import { PeerClassBase } from './PeerClass';
@@ -56,7 +55,4 @@ export declare class MaterializedClass implements PeerClassBase {
56
55
  isGlobalScope(): boolean;
57
56
  }
58
57
  export declare function createDestroyPeerMethod(clazz: MaterializedClass): MaterializedMethod | undefined;
59
- export declare function getInternalClassName(name: string): string;
60
- export declare function getInternalClassQualifiedName(target: idl.IDLEntry, pattern?: idl.QNPattern, language?: Language): string;
61
- export declare function getMaterializedFileName(name: string): string;
62
58
  //# sourceMappingURL=Materialized.d.ts.map
@@ -13,9 +13,8 @@
13
13
  * limitations under the License.
14
14
  */
15
15
  import * as idl from '../idl';
16
- import { copyMethod, FieldModifier, Method, MethodModifier, NamedMethodSignature } from '../LanguageWriters/LanguageWriter';
17
- import { capitalize } from '../util';
18
- import { qualifiedName } from './idl/common';
16
+ import { copyMethod, FieldModifier, Method, METHOD_ACCESS_MODIFIERS, MethodModifier, NamedMethodSignature } from '../LanguageWriters/LanguageWriter';
17
+ import { getInternalClassName } from './isMaterialized';
19
18
  import { PeerMethod, PeerMethodSignature } from './PeerMethod';
20
19
  export class MaterializedField {
21
20
  constructor(field, argConvertor, outArgConvertor, isNullableOriginalTypeField, extraMethodName = undefined) {
@@ -63,18 +62,18 @@ export class MaterializedMethod extends PeerMethod {
63
62
  getPrivateMethod(asProtected = false) {
64
63
  var _a, _b;
65
64
  let privateMethod = this;
66
- if (!((_a = privateMethod.method.modifiers) === null || _a === void 0 ? void 0 : _a.includes(MethodModifier.PRIVATE))) {
67
- privateMethod = copyMaterializedMethod(this, {
68
- method: copyMethod(this.method, {
69
- modifiers: ((_b = this.method.modifiers) !== null && _b !== void 0 ? _b : [])
70
- .filter(it => it !== MethodModifier.PUBLIC)
71
- .filter(it => it !== MethodModifier.OVERRIDE)
72
- .filter(it => !asProtected || (it !== MethodModifier.PRIVATE))
73
- .concat([asProtected ? MethodModifier.PROTECTED : MethodModifier.PRIVATE])
74
- })
75
- });
65
+ const neededModifier = asProtected ? MethodModifier.PROTECTED : MethodModifier.PRIVATE;
66
+ if ((_a = privateMethod.method.modifiers) === null || _a === void 0 ? void 0 : _a.includes(neededModifier)) {
67
+ return privateMethod;
76
68
  }
77
- return privateMethod;
69
+ return copyMaterializedMethod(this, {
70
+ method: copyMethod(this.method, {
71
+ modifiers: ((_b = this.method.modifiers) !== null && _b !== void 0 ? _b : [])
72
+ .filter(it => !METHOD_ACCESS_MODIFIERS.has(it))
73
+ .filter(it => it !== MethodModifier.OVERRIDE)
74
+ .concat([neededModifier])
75
+ })
76
+ });
78
77
  }
79
78
  withReturnType(returnType) {
80
79
  const s = this.method.signature;
@@ -127,14 +126,4 @@ export function createDestroyPeerMethod(clazz) {
127
126
  }
128
127
  return new MaterializedMethod(undefined, new PeerMethodSignature(PeerMethodSignature.DESTROY, '%NEVER_USED$', [], idl.IDLVoidType, clazz.decl), idl.getQualifiedName(clazz.decl, "namespace.name").split('.').join('_'), clazz.getImplementationName(), idl.IDLVoidType, false, PeerMethodSignature.DESTROY, new Method(PeerMethodSignature.DESTROY, new NamedMethodSignature(idl.IDLVoidType, [idl.createReferenceType(clazz.decl)], ['peer'])));
129
128
  }
130
- export function getInternalClassName(name) {
131
- return `${name}Internal`;
132
- }
133
- export function getInternalClassQualifiedName(target, pattern = "package.namespace.name", language) {
134
- return getInternalClassName(qualifiedName(target, language !== null && language !== void 0 ? language : ".", pattern));
135
- }
136
- export function getMaterializedFileName(name) {
137
- const pascalCase = name.split('_').map(x => capitalize(x)).join('');
138
- return `Ark${pascalCase}Materialized`;
139
- }
140
129
  //# sourceMappingURL=Materialized.js.map
@@ -10297,4 +10297,5 @@ export declare const ArkDate: idl.IDLPrimitiveType;
10297
10297
  export declare const ArkCustomObject: idl.IDLPrimitiveType;
10298
10298
  export declare function cleanPrefix(name: string, prefix: string): string;
10299
10299
  export declare function forceTypedefAsResource(resolver: ReferenceResolver, type: idl.IDLType, decl: idl.IDLTypedef): boolean;
10300
+ export declare function toDeclaration(type: idl.IDLType | idl.IDLEntry, resolver: ReferenceResolver): idl.IDLEntry | idl.IDLType;
10300
10301
  //# sourceMappingURL=PeerLibrary.d.ts.map
@@ -16,7 +16,7 @@ import { warn } from 'console';
16
16
  import * as idl from '../idl';
17
17
  import { Language } from '../Language';
18
18
  import { createLanguageWriter } from '../LanguageWriters';
19
- import { BufferConvertor, CallbackConvertor, DateConvertor, MapConvertor, PointerConvertor, TupleConvertor, TypeAliasConvertor, AggregateConvertor, StringConvertor, ArrayConvertor, FunctionConvertor, OptionConvertor, NumberConvertor, NumericConvertor, CustomTypeConvertor, UnionConvertor, MaterializedClassConvertor, BooleanConvertor, EnumConvertor, UndefinedConvertor, VoidConvertor, ImportTypeConvertor, InterfaceConvertor, BigIntToU64Convertor, ObjectConvertor, TransformOnSerializeConvertor, } from "../LanguageWriters/ArgConvertors";
19
+ import { BufferConvertor, CallbackConvertor, DateConvertor, MapConvertor, PointerConvertor, TupleConvertor, TypeAliasConvertor, AggregateConvertor, StringConvertor, ArrayConvertor, FunctionConvertor, OptionConvertor, NumberConvertor, NumericConvertor, CustomTypeConvertor, UnionConvertor, MaterializedClassConvertor, BooleanConvertor, EnumConvertor, UndefinedConvertor, VoidConvertor, ImportTypeConvertor, InterfaceConvertor, BigIntToU64Convertor, ObjectConvertor, TransformOnSerializeConvertor, ThrowsConvertor, } from "../LanguageWriters/ArgConvertors";
20
20
  import { StructureNameConvertor } from '../LanguageWriters/convertors/CppConvertors';
21
21
  import { CJTypeNameConvertor } from '../LanguageWriters/convertors/CJConvertors';
22
22
  import { CppConvertor } from '../LanguageWriters/convertors/CppConvertors';
@@ -31,7 +31,7 @@ import { generatorConfiguration } from '../config';
31
31
  import { KotlinTypeNameConvertor } from '../LanguageWriters/convertors/KotlinConvertors';
32
32
  import { toIdlType } from '../from-idl/deserialize';
33
33
  import { createCachedReferenceResolver } from './ReferenceResolver';
34
- import { toDeclaration } from './toDeclaration';
34
+ import { maybeRestoreThrows } from '../transformers/transformUtils';
35
35
  export const lenses = {
36
36
  globals: lib.lens(lib.select.files())
37
37
  .pipe(lib.select.nodes())
@@ -248,8 +248,9 @@ export class PeerLibrary {
248
248
  throw new Error(`Unexpected declaration ${declaration.kind}`);
249
249
  }
250
250
  if (idl.hasExtAttribute(declaration, idl.IDLExtendedAttributes.TransformOnSerialize)) {
251
+ const sourceType = type;
251
252
  const targetType = toIdlType("", idl.getExtAttribute(declaration, idl.IDLExtendedAttributes.TransformOnSerialize));
252
- return new TransformOnSerializeConvertor(param, this, declaration, targetType);
253
+ return new TransformOnSerializeConvertor(param, this, declaration, sourceType, targetType);
253
254
  }
254
255
  if (idl.isEnum(declaration)) {
255
256
  return new EnumConvertor(param, declaration);
@@ -266,6 +267,9 @@ export class PeerLibrary {
266
267
  return new TypeAliasConvertor(this, param, declaration);
267
268
  }
268
269
  if (idl.isInterface(declaration)) {
270
+ if (maybeRestoreThrows(declaration, this)) {
271
+ return new ThrowsConvertor(this, param, declaration);
272
+ }
269
273
  if (generatorConfiguration().forceResource.includes(declaration.name)) {
270
274
  return new ObjectConvertor(param, type);
271
275
  }
@@ -338,4 +342,51 @@ function isCyclicTypeDef(resolver, decl) {
338
342
  });
339
343
  return foundCycle;
340
344
  }
345
+ export function toDeclaration(type, resolver) {
346
+ switch (type) {
347
+ case idl.IDLAnyType: return ArkCustomObject;
348
+ case idl.IDLVoidType: return idl.IDLVoidType;
349
+ case idl.IDLUndefinedType: return idl.IDLUndefinedType;
350
+ case idl.IDLUnknownType: return ArkCustomObject;
351
+ // case idl.IDLObjectType: return ArkCustomObject
352
+ }
353
+ const typeName = idl.isNamedNode(type) ? type.name : undefined;
354
+ switch (typeName) {
355
+ case "object":
356
+ case "Object": return idl.IDLObjectType;
357
+ }
358
+ if (idl.isReferenceType(type)) {
359
+ // TODO: remove all this!
360
+ if (type.name === 'Date') {
361
+ return ArkDate;
362
+ }
363
+ if (type.name === 'AnimationRange') {
364
+ return ArkCustomObject;
365
+ }
366
+ if (type.name === 'Function') {
367
+ return ArkFunction;
368
+ }
369
+ if (type.name === 'Optional') {
370
+ return toDeclaration(type.typeArguments[0], resolver);
371
+ }
372
+ const decl = resolver.resolveTypeReference(type);
373
+ if (!decl) {
374
+ warn(`undeclared type ${idl.DebugUtils.debugPrintType(type)}`);
375
+ }
376
+ if (decl && idl.isTypedef(decl) && forceTypedefAsResource(resolver, type, decl)) {
377
+ return idl.IDLObjectType;
378
+ }
379
+ if (decl && idl.hasExtAttribute(decl, idl.IDLExtendedAttributes.TransformOnSerialize)) {
380
+ const type = toIdlType("", idl.getExtAttribute(decl, idl.IDLExtendedAttributes.TransformOnSerialize));
381
+ return toDeclaration(type, resolver);
382
+ }
383
+ return !decl ? ArkCustomObject // assume some builtin type
384
+ : idl.isTypedef(decl) ? toDeclaration(decl.type, resolver)
385
+ : decl;
386
+ }
387
+ if (isImportAttr(type)) {
388
+ return ArkCustomObject;
389
+ }
390
+ return type;
391
+ }
341
392
  //# sourceMappingURL=PeerLibrary.js.map
@@ -24,6 +24,7 @@ export declare class PeerMethodSignature {
24
24
  static mangleOverloadedName(decl: idl.IDLConstructor | idl.IDLMethod | idl.IDLCallable | idl.IDLProperty): OverloadInfo;
25
25
  static get CTOR(): string;
26
26
  static get GET_FINALIZER(): string;
27
+ static get CALL_HOLDER(): string;
27
28
  static get DESTROY(): string;
28
29
  }
29
30
  export declare class PeerMethod {
@@ -77,6 +77,7 @@ export class PeerMethodSignature {
77
77
  }
78
78
  static get CTOR() { return "construct"; }
79
79
  static get GET_FINALIZER() { return "getFinalizer"; }
80
+ static get CALL_HOLDER() { return "callHolder"; }
80
81
  static get DESTROY() { return "destroyPeer"; }
81
82
  }
82
83
  export class PeerMethod {
@@ -1,12 +1,10 @@
1
1
  import * as idl from "../../idl";
2
2
  import { Language } from "../../Language";
3
3
  import { IdlNameConvertor } from "../../LanguageWriters";
4
- export declare function generateSyntheticIdlNodeName(type: idl.IDLType): string;
5
4
  export declare function qualifiedName(decl: idl.IDLNode, languageOrDelimiter: Language | string, pattern: idl.QNPattern): string;
6
5
  export declare function collapseTypes(types: idl.IDLType[], name?: string): idl.IDLType;
7
6
  export declare function generifiedTypeName(refType: idl.IDLReferenceType, nameConvertor: IdlNameConvertor, refName?: string): string;
8
7
  export declare function sanitizeGenerics(genericDeclarationString: string): string;
9
- export declare function generateSyntheticUnionName(types: idl.IDLType[]): string;
10
8
  export declare function generateSyntheticFunctionParameterName(parameter: idl.IDLParameter): string;
11
9
  export declare function generateSyntheticFunctionName(parameters: idl.IDLParameter[], returnType: idl.IDLType, options?: {
12
10
  isAsync?: boolean;