@idlizer/core 2.1.9-arktscgen-6 → 2.1.9-arktscgen-9
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.d.ts +2 -1
- package/build/lib/src/IndentedPrinter.js +9 -2
- package/build/lib/src/Language.d.ts +0 -1
- package/build/lib/src/Language.js +7 -8
- package/build/lib/src/LanguageWriters/ArgConvertors.d.ts +27 -40
- package/build/lib/src/LanguageWriters/ArgConvertors.js +167 -206
- package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +13 -34
- package/build/lib/src/LanguageWriters/LanguageWriter.js +31 -82
- package/build/lib/src/LanguageWriters/convertors/ETSConvertors.js +2 -2
- package/build/lib/src/LanguageWriters/convertors/KotlinConvertors.d.ts +17 -1
- package/build/lib/src/LanguageWriters/convertors/KotlinConvertors.js +121 -6
- package/build/lib/src/LanguageWriters/convertors/TSConvertors.js +6 -0
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.d.ts +2 -3
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +9 -25
- package/build/lib/src/LanguageWriters/writers/CLikeLanguageWriter.d.ts +0 -5
- package/build/lib/src/LanguageWriters/writers/CLikeLanguageWriter.js +0 -9
- package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.d.ts +4 -6
- package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.js +15 -28
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.d.ts +14 -10
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +51 -74
- package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.d.ts +2 -8
- package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.js +11 -21
- package/build/lib/src/LanguageWriters/writers/KotlinLanguageWriter.d.ts +12 -9
- package/build/lib/src/LanguageWriters/writers/KotlinLanguageWriter.js +121 -32
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.d.ts +5 -6
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +17 -33
- package/build/lib/src/config.d.ts +402 -133
- package/build/lib/src/config.js +13 -7
- package/build/lib/src/diagnosticmessages.d.ts +45 -0
- package/build/lib/src/diagnosticmessages.js +66 -0
- package/build/lib/src/diagnostictypes.d.ts +140 -0
- package/build/lib/src/diagnostictypes.js +72 -0
- package/build/lib/src/formatter.d.ts +3 -0
- package/build/lib/src/formatter.js +98 -0
- package/build/lib/src/from-idl/deserialize.d.ts +1 -0
- package/build/lib/src/from-idl/deserialize.js +107 -5
- package/build/lib/src/idl.d.ts +8 -0
- package/build/lib/src/idl.js +16 -3
- package/build/lib/src/index.d.ts +7 -1
- package/build/lib/src/index.js +7 -1
- package/build/lib/src/peer-generation/Materialized.d.ts +2 -2
- package/build/lib/src/peer-generation/Materialized.js +4 -9
- package/build/lib/src/peer-generation/PeerLibrary.js +1 -5
- package/build/lib/src/peer-generation/PeerMethod.d.ts +0 -4
- package/build/lib/src/peer-generation/PeerMethod.js +18 -36
- package/build/lib/src/peer-generation/idl/common.js +1 -1
- package/build/lib/src/peer-generation/isMaterialized.js +0 -4
- package/build/lib/src/peer-generation/modules.d.ts +1 -0
- package/build/lib/src/peer-generation/modules.js +25 -6
- package/build/lib/src/peer-generation/unions.d.ts +0 -2
- package/build/lib/src/peer-generation/unions.js +3 -23
- package/build/lib/src/transformers/FqnTransformer.d.ts +4 -0
- package/build/lib/src/transformers/FqnTransformer.js +17 -0
- package/build/lib/src/transformers/GenericTransformer.d.ts +8 -0
- package/build/lib/src/transformers/GenericTransformer.js +141 -0
- package/build/lib/src/util.d.ts +5 -2
- package/build/lib/src/util.js +26 -12
- package/package.json +2 -2
- package/build/lib/src/peer-generation/isExternalType.d.ts +0 -4
- package/build/lib/src/peer-generation/isExternalType.js +0 -15
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { generatorConfiguration } from "../config";
|
|
2
|
+
import { toIdlType } from "../from-idl/deserialize";
|
|
3
|
+
import * as idl from "../idl";
|
|
4
|
+
import { isBuilderClass } from "../peer-generation/BuilderClass";
|
|
5
|
+
import { generateSyntheticIdlNodeName } from "../peer-generation/idl/common";
|
|
6
|
+
import { isMaterialized } from "../peer-generation/isMaterialized";
|
|
7
|
+
import { inplaceFQN } from "./FqnTransformer";
|
|
8
|
+
export function inplaceGenerics(node, resolver, options) {
|
|
9
|
+
var _a;
|
|
10
|
+
const candidates = [];
|
|
11
|
+
idl.forEachChild(node, () => { }, (child) => {
|
|
12
|
+
if (idl.isReferenceType(child))
|
|
13
|
+
candidates.push(child);
|
|
14
|
+
});
|
|
15
|
+
if (idl.isReferenceType(node)) {
|
|
16
|
+
candidates.push(node);
|
|
17
|
+
}
|
|
18
|
+
options !== null && options !== void 0 ? options : (options = {});
|
|
19
|
+
(_a = options.ignore) !== null && _a !== void 0 ? _a : (options.ignore = []);
|
|
20
|
+
options.ignore.push(ignoreConfigRule, ignoreBuilderClassRule, createIgnoreMaterializedRule(resolver));
|
|
21
|
+
candidates.forEach(it => inplaceReferenceGenerics(it, resolver, options));
|
|
22
|
+
}
|
|
23
|
+
export function isInplacedGeneric(entry) {
|
|
24
|
+
return idl.hasExtAttribute(entry, idl.IDLExtendedAttributes.OriginalGenericName);
|
|
25
|
+
}
|
|
26
|
+
export function maybeRestoreGenerics(maybeTransformedGeneric, resolver) {
|
|
27
|
+
if (idl.isReferenceType(maybeTransformedGeneric)) {
|
|
28
|
+
const resolved = resolver.resolveTypeReference(maybeTransformedGeneric);
|
|
29
|
+
return resolved ? maybeRestoreGenerics(resolved, resolver) : undefined;
|
|
30
|
+
}
|
|
31
|
+
if (maybeTransformedGeneric && idl.hasExtAttribute(maybeTransformedGeneric, idl.IDLExtendedAttributes.OriginalGenericName)) {
|
|
32
|
+
const originalName = idl.getExtAttribute(maybeTransformedGeneric, idl.IDLExtendedAttributes.OriginalGenericName);
|
|
33
|
+
const typeArgumentsAttribute = idl.getExtAttribute(maybeTransformedGeneric, idl.IDLExtendedAttributes.TypeArguments);
|
|
34
|
+
if (!typeArgumentsAttribute)
|
|
35
|
+
throw new Error(`Can not restore original generic type arguments for ${originalName}: no type arguments`);
|
|
36
|
+
const typeArguments = typeArgumentsAttribute.split(',').map(it => { var _a; return toIdlType((_a = maybeTransformedGeneric.fileName) !== null && _a !== void 0 ? _a : "", it); });
|
|
37
|
+
return idl.createReferenceType(originalName, typeArguments, {
|
|
38
|
+
extendedAttributes: [{
|
|
39
|
+
name: idl.IDLExtendedAttributes.TypeArguments,
|
|
40
|
+
value: typeArgumentsAttribute,
|
|
41
|
+
}]
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
function ignoreConfigRule(node) {
|
|
47
|
+
if (idl.isEntry(node))
|
|
48
|
+
return generatorConfiguration().ignoreGenerics.includes(idl.getFQName(node));
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
function ignoreBuilderClassRule(node) {
|
|
52
|
+
return idl.isInterface(node) && isBuilderClass(node);
|
|
53
|
+
}
|
|
54
|
+
function createIgnoreMaterializedRule(resolver) {
|
|
55
|
+
return (node) => idl.isInterface(node) && isMaterialized(node, resolver);
|
|
56
|
+
}
|
|
57
|
+
function monomorphisedEntryName(typedEntry, typeArguments) {
|
|
58
|
+
return typedEntry.name + "_" + typeArguments.map(generateSyntheticIdlNodeName).join("_");
|
|
59
|
+
}
|
|
60
|
+
function monomorphizeEntry(typedEntry, typeArguments) {
|
|
61
|
+
var _a, _b, _c, _d;
|
|
62
|
+
if (!idl.isTypedef(typedEntry) && !idl.isInterface(typedEntry) && !idl.isCallback(typedEntry))
|
|
63
|
+
throw new Error(`Can not monomorphize ${typedEntry.kind}`);
|
|
64
|
+
if (((_a = typedEntry.typeParameters) === null || _a === void 0 ? void 0 : _a.length) != typeArguments.length)
|
|
65
|
+
throw new Error(`Trying to monomorphize entry ${typedEntry.name} that accepts ${(_b = typedEntry.typeParameters) === null || _b === void 0 ? void 0 : _b.length} type parameters with ${typeArguments.length} type arguments`);
|
|
66
|
+
const monomorphizedEntry = idl.clone(typedEntry);
|
|
67
|
+
monomorphizedEntry.name = monomorphisedEntryName(typedEntry, typeArguments);
|
|
68
|
+
monomorphizedEntry.typeParameters = undefined;
|
|
69
|
+
const nameToType = new Map(typedEntry.typeParameters.map((name, index) => [name, typeArguments[index]]));
|
|
70
|
+
idl.updateEachChild(monomorphizedEntry, (node) => {
|
|
71
|
+
var _a;
|
|
72
|
+
if (idl.isTypeParameterType(node)) {
|
|
73
|
+
if (!nameToType.has(node.name))
|
|
74
|
+
throw new Error(`Can not name ${node.name} in type parameters of ${typedEntry.name}: available are ${(_a = typedEntry.typeParameters) === null || _a === void 0 ? void 0 : _a.join(", ")}`);
|
|
75
|
+
return idl.clone(nameToType.get(node.name));
|
|
76
|
+
}
|
|
77
|
+
return node;
|
|
78
|
+
});
|
|
79
|
+
monomorphizedEntry.extendedAttributes = (_d = (_c = monomorphizedEntry.extendedAttributes) === null || _c === void 0 ? void 0 : _c.filter(it => {
|
|
80
|
+
return it.name != idl.IDLExtendedAttributes.TypeParameters;
|
|
81
|
+
})) !== null && _d !== void 0 ? _d : [];
|
|
82
|
+
monomorphizedEntry.extendedAttributes.push({
|
|
83
|
+
name: idl.IDLExtendedAttributes.OriginalGenericName,
|
|
84
|
+
value: idl.getFQName(typedEntry),
|
|
85
|
+
}, {
|
|
86
|
+
name: idl.IDLExtendedAttributes.TypeArguments,
|
|
87
|
+
value: typeArguments.map(type => idl.printType(type)).join("|"),
|
|
88
|
+
});
|
|
89
|
+
return monomorphizedEntry;
|
|
90
|
+
}
|
|
91
|
+
function hasTypeParameterTypeChild(node) {
|
|
92
|
+
let result = false;
|
|
93
|
+
idl.forEachChild(node, (child) => {
|
|
94
|
+
if (idl.isTypeParameterType(child))
|
|
95
|
+
result = true;
|
|
96
|
+
});
|
|
97
|
+
return result;
|
|
98
|
+
}
|
|
99
|
+
function inplaceReferenceGenerics(ref, resolver, options) {
|
|
100
|
+
var _a, _b;
|
|
101
|
+
if (!((_a = ref.typeArguments) === null || _a === void 0 ? void 0 : _a.length) || hasTypeParameterTypeChild(ref)) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
ref.typeArguments.forEach(it => inplaceFQN(it, resolver));
|
|
105
|
+
const resolved = resolver.resolveTypeReference(ref);
|
|
106
|
+
if (!resolved) {
|
|
107
|
+
throw new Error(`Can not resolve ${ref.name}`);
|
|
108
|
+
}
|
|
109
|
+
if (((_b = options === null || options === void 0 ? void 0 : options.ignore) === null || _b === void 0 ? void 0 : _b.some(it => it(ref) || it(resolved))) || generatorConfiguration().ignoreGenerics.includes(idl.getFQName(resolved))) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
if (!idl.isTypedef(resolved) && !idl.isInterface(resolved) && !idl.isCallback(resolved)) {
|
|
113
|
+
throw new Error(`Unsupported generics target ${resolved.kind}`);
|
|
114
|
+
}
|
|
115
|
+
const inplacedRef = idl.createReferenceType(monomorphisedEntryName(resolved, ref.typeArguments));
|
|
116
|
+
if (!resolver.resolveTypeReference(inplacedRef)) {
|
|
117
|
+
const monomorphizedEntry = monomorphizeEntry(resolved, ref.typeArguments);
|
|
118
|
+
insertEntryNearTo(monomorphizedEntry, resolved);
|
|
119
|
+
inplaceGenerics(monomorphizedEntry, resolver);
|
|
120
|
+
}
|
|
121
|
+
ref.name = inplacedRef.name;
|
|
122
|
+
ref.typeArguments = undefined;
|
|
123
|
+
}
|
|
124
|
+
function insertEntryNearTo(entry, anchor) {
|
|
125
|
+
if (!anchor.parent) {
|
|
126
|
+
throw new Error(`Entry used as anchor has not parent`);
|
|
127
|
+
}
|
|
128
|
+
let parentEntries;
|
|
129
|
+
if (idl.isFile(anchor.parent)) {
|
|
130
|
+
parentEntries = anchor.parent.entries;
|
|
131
|
+
}
|
|
132
|
+
else if (idl.isNamespace(anchor.parent)) {
|
|
133
|
+
parentEntries = anchor.parent.members;
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
throw new Error(`Can not insert entry, unknown parent kind ${anchor.parent.kind}`);
|
|
137
|
+
}
|
|
138
|
+
parentEntries.splice(parentEntries.indexOf(anchor), 0, entry);
|
|
139
|
+
idl.linkParentBack(anchor.parent);
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=GenericTransformer.js.map
|
package/build/lib/src/util.d.ts
CHANGED
|
@@ -90,7 +90,10 @@ type StringProperties<T> = {
|
|
|
90
90
|
[Property in keyof T as (T[Property] extends string ? Property : never)]: T[Property];
|
|
91
91
|
};
|
|
92
92
|
export declare function sorted<T, N extends keyof StringProperties<T>>(array: T[], key: ((value: T) => string) | N): T[];
|
|
93
|
-
export declare function
|
|
94
|
-
export declare function
|
|
93
|
+
export declare function mapLibraryName(node: idl.IDLEntry, lang: Language, mapping?: Map<string, Map<string, string>>, prefix?: string): string;
|
|
94
|
+
export declare function getExtractor(target: idl.IDLInterface, lang: Language, toPtr?: boolean): {
|
|
95
|
+
receiver?: string;
|
|
96
|
+
method: string;
|
|
97
|
+
};
|
|
95
98
|
export {};
|
|
96
99
|
//# sourceMappingURL=util.d.ts.map
|
package/build/lib/src/util.js
CHANGED
|
@@ -17,7 +17,8 @@ import * as fs from "fs";
|
|
|
17
17
|
import * as ts from "typescript";
|
|
18
18
|
import * as idl from "./idl";
|
|
19
19
|
import { Language } from './Language';
|
|
20
|
-
import {
|
|
20
|
+
import { isInExternalModule } from './peer-generation/modules';
|
|
21
|
+
import { getInternalClassName, getInternalClassQualifiedName } from './peer-generation/Materialized';
|
|
21
22
|
/** True if this is visible outside this file, false otherwise */
|
|
22
23
|
export function isNodePublic(node) {
|
|
23
24
|
return (ts.getCombinedModifierFlags(node) & ts.ModifierFlags.Public) !== 0;
|
|
@@ -690,16 +691,29 @@ export function sorted(array, key) {
|
|
|
690
691
|
return array.map(it => it)
|
|
691
692
|
.sort((a, b) => comparator.compare(a[key], b[key]));
|
|
692
693
|
}
|
|
693
|
-
export function
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
}
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
return
|
|
703
|
-
|
|
694
|
+
export function mapLibraryName(node, lang, mapping, prefix = "@") {
|
|
695
|
+
var _a, _b;
|
|
696
|
+
const packageName = idl.getPackageName(node);
|
|
697
|
+
return (_b = (_a = mapping === null || mapping === void 0 ? void 0 : mapping.get(packageName)) === null || _a === void 0 ? void 0 : _a.get(lang.name)) !== null && _b !== void 0 ? _b : `${prefix}${packageName}`;
|
|
698
|
+
}
|
|
699
|
+
function getExtractorClass(target, toPtr = true) {
|
|
700
|
+
if (isInExternalModule(target)) {
|
|
701
|
+
const qualifiedName = idl.getQualifiedName(target, "namespace.name");
|
|
702
|
+
const name = qualifiedName.split(`.`).map(it => capitalize(it)).join("");
|
|
703
|
+
return name;
|
|
704
|
+
}
|
|
705
|
+
return toPtr ? "Peer" : "";
|
|
706
|
+
}
|
|
707
|
+
export function getExtractor(target, lang, toPtr = true) {
|
|
708
|
+
const receiver = isInExternalModule(target)
|
|
709
|
+
? `extractors`
|
|
710
|
+
: toPtr
|
|
711
|
+
? undefined // TBD: update to MaterializedBase when import is updated
|
|
712
|
+
: (lang == Language.CJ || lang == Language.KOTLIN)
|
|
713
|
+
? getInternalClassName(target.name)
|
|
714
|
+
: getInternalClassQualifiedName(target, "namespace.name", lang);
|
|
715
|
+
const extractorClass = getExtractorClass(target, toPtr);
|
|
716
|
+
const method = toPtr ? `to${extractorClass}Ptr` : `from${extractorClass}Ptr`;
|
|
717
|
+
return { receiver, method };
|
|
704
718
|
}
|
|
705
719
|
//# sourceMappingURL=util.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@idlizer/core",
|
|
3
|
-
"version": "2.1.9-arktscgen-
|
|
3
|
+
"version": "2.1.9-arktscgen-9",
|
|
4
4
|
"description": "",
|
|
5
5
|
"types": "build/lib/src/index.d.ts",
|
|
6
6
|
"exports": {
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
},
|
|
35
35
|
"keywords": [],
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@koalaui/interop": "1.7.
|
|
37
|
+
"@koalaui/interop": "1.7.6",
|
|
38
38
|
"typescript": "4.9.5",
|
|
39
39
|
"@types/node": "^18.0.0"
|
|
40
40
|
},
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import * as idl from '../idl';
|
|
2
|
-
import { generatorConfiguration } from '../config';
|
|
3
|
-
export function isExternalType(declaration, resolver) {
|
|
4
|
-
// declarations outside of the generator input dirs
|
|
5
|
-
if (generatorConfiguration().externalTypes.get(declaration.name) != undefined)
|
|
6
|
-
return true;
|
|
7
|
-
// treat as external types only declarations with methods
|
|
8
|
-
if (declaration.methods.length == 0)
|
|
9
|
-
return false;
|
|
10
|
-
const pack = idl.getPackageName(declaration);
|
|
11
|
-
if (generatorConfiguration().externalPackages.includes(pack))
|
|
12
|
-
return true;
|
|
13
|
-
return false;
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=isExternalType.js.map
|