@idlizer/core 2.0.41 → 2.0.43

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 (50) hide show
  1. package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +3 -2
  2. package/build/lib/src/LanguageWriters/LanguageWriter.js +4 -2
  3. package/build/lib/src/LanguageWriters/convertors/CppConvertors.d.ts +1 -0
  4. package/build/lib/src/LanguageWriters/convertors/CppConvertors.js +17 -2
  5. package/build/lib/src/LanguageWriters/convertors/ETSConvertors.d.ts +3 -1
  6. package/build/lib/src/LanguageWriters/convertors/ETSConvertors.js +3 -1
  7. package/build/lib/src/LanguageWriters/convertors/InteropConvertors.js +4 -4
  8. package/build/lib/src/LanguageWriters/convertors/TSConvertors.d.ts +11 -1
  9. package/build/lib/src/LanguageWriters/convertors/TSConvertors.js +44 -1
  10. package/build/lib/src/LanguageWriters/index.d.ts +2 -2
  11. package/build/lib/src/LanguageWriters/index.js +4 -5
  12. package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.d.ts +3 -3
  13. package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +5 -4
  14. package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.d.ts +1 -1
  15. package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.js +1 -1
  16. package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.d.ts +8 -3
  17. package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +44 -10
  18. package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.d.ts +2 -2
  19. package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.js +3 -3
  20. package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.d.ts +2 -2
  21. package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +15 -7
  22. package/build/lib/src/config.d.ts +892 -12
  23. package/build/lib/src/config.js +22 -2
  24. package/build/lib/src/configDescriber.d.ts +85 -0
  25. package/build/lib/src/configDescriber.js +297 -0
  26. package/build/lib/src/from-idl/DtsPrinter.js +4 -2
  27. package/build/lib/src/from-idl/IDLLinter.d.ts +24 -0
  28. package/build/lib/src/from-idl/IDLLinter.js +81 -0
  29. package/build/lib/src/from-idl/deserialize.js +41 -4
  30. package/build/lib/src/from-idl/webidl2-utils.d.ts +1 -0
  31. package/build/lib/src/from-idl/webidl2-utils.js +3 -0
  32. package/build/lib/src/idl.d.ts +23 -26
  33. package/build/lib/src/idl.js +31 -29
  34. package/build/lib/src/idlize.d.ts +10 -1
  35. package/build/lib/src/idlize.js +54 -26
  36. package/build/lib/src/index.d.ts +2 -0
  37. package/build/lib/src/index.js +2 -0
  38. package/build/lib/src/options.d.ts +1 -0
  39. package/build/lib/src/peer-generation/Materialized.d.ts +2 -1
  40. package/build/lib/src/peer-generation/Materialized.js +3 -2
  41. package/build/lib/src/peer-generation/PeerFile.d.ts +1 -2
  42. package/build/lib/src/peer-generation/PeerFile.js +1 -2
  43. package/build/lib/src/peer-generation/PeerLibrary.d.ts +0 -1
  44. package/build/lib/src/peer-generation/PeerLibrary.js +3 -3
  45. package/build/lib/src/peer-generation/idl/common.js +2 -2
  46. package/build/lib/src/peer-generation/isMaterialized.d.ts +1 -0
  47. package/build/lib/src/peer-generation/isMaterialized.js +6 -0
  48. package/build/lib/src/util.d.ts +1 -0
  49. package/build/lib/src/util.js +9 -0
  50. package/package.json +2 -2
@@ -1,27 +1,27 @@
1
1
  import { stringOrNone } from "./util";
2
2
  export declare enum IDLKind {
3
- Interface = 0,
4
- Import = 1,
5
- Callback = 2,
6
- Const = 3,
7
- Property = 4,
8
- Parameter = 5,
9
- Method = 6,
10
- Callable = 7,
11
- Constructor = 8,
12
- Enum = 9,
13
- EnumMember = 10,
14
- Typedef = 11,
15
- PrimitiveType = 12,
16
- ContainerType = 13,
17
- UnspecifiedGenericType = 14,
18
- ReferenceType = 15,
19
- UnionType = 16,
20
- TypeParameterType = 17,
21
- OptionalType = 18,
22
- Version = 19,
23
- Namespace = 20,
24
- File = 21
3
+ Interface = "Interface",
4
+ Import = "Import",
5
+ Callback = "Callback",
6
+ Const = "Const",
7
+ Property = "Property",
8
+ Parameter = "Parameter",
9
+ Method = "Method",
10
+ Callable = "Callable",
11
+ Constructor = "Constructor",
12
+ Enum = "Enum",
13
+ EnumMember = "EnumMember",
14
+ Typedef = "Typedef",
15
+ PrimitiveType = "PrimitiveType",
16
+ ContainerType = "ContainerType",
17
+ UnspecifiedGenericType = "UnspecifiedGenericType",
18
+ ReferenceType = "ReferenceType",
19
+ UnionType = "UnionType",
20
+ TypeParameterType = "TypeParameterType",
21
+ OptionalType = "OptionalType",
22
+ Version = "Version",
23
+ Namespace = "Namespace",
24
+ File = "File"
25
25
  }
26
26
  export declare enum IDLEntity {
27
27
  Class = "Class",
@@ -35,13 +35,10 @@ export declare enum IDLEntity {
35
35
  export declare enum IDLExtendedAttributes {
36
36
  Accessor = "Accessor",
37
37
  Async = "Async",
38
- ArkTSType = "ArkTSType",
39
38
  CallSignature = "CallSignature",
40
- CJType = "CJType",
41
39
  CommonMethod = "CommonMethod",
42
40
  Component = "Component",
43
41
  ComponentInterface = "ComponentInterface",
44
- CPPType = "CPPType",
45
42
  Deprecated = "Deprecated",
46
43
  Documentation = "Documentation",
47
44
  DtsName = "DtsName",
@@ -57,7 +54,6 @@ export declare enum IDLExtendedAttributes {
57
54
  Protected = "Protected",
58
55
  Synthetic = "Synthetic",
59
56
  Throws = "Throws",
60
- TSType = "TSType",
61
57
  TypeArguments = "TypeArguments",
62
58
  TypeParameters = "TypeParameters",
63
59
  VerbatimDts = "VerbatimDts",
@@ -300,6 +296,7 @@ export declare function getFileFor(entry: IDLNode): IDLFile | undefined;
300
296
  export declare function isEqualByQualifedName(a?: IDLEntry, b?: IDLEntry): boolean;
301
297
  export declare function getPackageClause(entry: IDLFile | IDLEntry): string[];
302
298
  export declare function getPackageName(entry: IDLFile | IDLEntry): string;
299
+ export declare function isInPackage(entry: IDLEntry | IDLFile, packageName: string, exactMatch?: boolean): boolean;
303
300
  export declare function getNamespaceName(a: IDLEntry): string;
304
301
  export declare function getFQName(a: IDLEntry): string;
305
302
  export declare function createVersion(value: string[], extendedAttributes?: IDLExtendedAttribute[], fileName?: string): IDLVersion;
@@ -18,28 +18,28 @@ import { generateSyntheticIdlNodeName } from "./peer-generation/idl/common";
18
18
  import { IDLKeywords } from "./languageSpecificKeywords";
19
19
  export var IDLKind;
20
20
  (function (IDLKind) {
21
- IDLKind[IDLKind["Interface"] = 0] = "Interface";
22
- IDLKind[IDLKind["Import"] = 1] = "Import";
23
- IDLKind[IDLKind["Callback"] = 2] = "Callback";
24
- IDLKind[IDLKind["Const"] = 3] = "Const";
25
- IDLKind[IDLKind["Property"] = 4] = "Property";
26
- IDLKind[IDLKind["Parameter"] = 5] = "Parameter";
27
- IDLKind[IDLKind["Method"] = 6] = "Method";
28
- IDLKind[IDLKind["Callable"] = 7] = "Callable";
29
- IDLKind[IDLKind["Constructor"] = 8] = "Constructor";
30
- IDLKind[IDLKind["Enum"] = 9] = "Enum";
31
- IDLKind[IDLKind["EnumMember"] = 10] = "EnumMember";
32
- IDLKind[IDLKind["Typedef"] = 11] = "Typedef";
33
- IDLKind[IDLKind["PrimitiveType"] = 12] = "PrimitiveType";
34
- IDLKind[IDLKind["ContainerType"] = 13] = "ContainerType";
35
- IDLKind[IDLKind["UnspecifiedGenericType"] = 14] = "UnspecifiedGenericType";
36
- IDLKind[IDLKind["ReferenceType"] = 15] = "ReferenceType";
37
- IDLKind[IDLKind["UnionType"] = 16] = "UnionType";
38
- IDLKind[IDLKind["TypeParameterType"] = 17] = "TypeParameterType";
39
- IDLKind[IDLKind["OptionalType"] = 18] = "OptionalType";
40
- IDLKind[IDLKind["Version"] = 19] = "Version";
41
- IDLKind[IDLKind["Namespace"] = 20] = "Namespace";
42
- IDLKind[IDLKind["File"] = 21] = "File";
21
+ IDLKind["Interface"] = "Interface";
22
+ IDLKind["Import"] = "Import";
23
+ IDLKind["Callback"] = "Callback";
24
+ IDLKind["Const"] = "Const";
25
+ IDLKind["Property"] = "Property";
26
+ IDLKind["Parameter"] = "Parameter";
27
+ IDLKind["Method"] = "Method";
28
+ IDLKind["Callable"] = "Callable";
29
+ IDLKind["Constructor"] = "Constructor";
30
+ IDLKind["Enum"] = "Enum";
31
+ IDLKind["EnumMember"] = "EnumMember";
32
+ IDLKind["Typedef"] = "Typedef";
33
+ IDLKind["PrimitiveType"] = "PrimitiveType";
34
+ IDLKind["ContainerType"] = "ContainerType";
35
+ IDLKind["UnspecifiedGenericType"] = "UnspecifiedGenericType";
36
+ IDLKind["ReferenceType"] = "ReferenceType";
37
+ IDLKind["UnionType"] = "UnionType";
38
+ IDLKind["TypeParameterType"] = "TypeParameterType";
39
+ IDLKind["OptionalType"] = "OptionalType";
40
+ IDLKind["Version"] = "Version";
41
+ IDLKind["Namespace"] = "Namespace";
42
+ IDLKind["File"] = "File";
43
43
  })(IDLKind || (IDLKind = {}));
44
44
  export var IDLEntity;
45
45
  (function (IDLEntity) {
@@ -55,13 +55,10 @@ export var IDLExtendedAttributes;
55
55
  (function (IDLExtendedAttributes) {
56
56
  IDLExtendedAttributes["Accessor"] = "Accessor";
57
57
  IDLExtendedAttributes["Async"] = "Async";
58
- IDLExtendedAttributes["ArkTSType"] = "ArkTSType";
59
58
  IDLExtendedAttributes["CallSignature"] = "CallSignature";
60
- IDLExtendedAttributes["CJType"] = "CJType";
61
59
  IDLExtendedAttributes["CommonMethod"] = "CommonMethod";
62
60
  IDLExtendedAttributes["Component"] = "Component";
63
61
  IDLExtendedAttributes["ComponentInterface"] = "ComponentInterface";
64
- IDLExtendedAttributes["CPPType"] = "CPPType";
65
62
  IDLExtendedAttributes["Deprecated"] = "Deprecated";
66
63
  IDLExtendedAttributes["Documentation"] = "Documentation";
67
64
  IDLExtendedAttributes["DtsName"] = "DtsName";
@@ -77,7 +74,6 @@ export var IDLExtendedAttributes;
77
74
  IDLExtendedAttributes["Protected"] = "Protected";
78
75
  IDLExtendedAttributes["Synthetic"] = "Synthetic";
79
76
  IDLExtendedAttributes["Throws"] = "Throws";
80
- IDLExtendedAttributes["TSType"] = "TSType";
81
77
  IDLExtendedAttributes["TypeArguments"] = "TypeArguments";
82
78
  IDLExtendedAttributes["TypeParameters"] = "TypeParameters";
83
79
  IDLExtendedAttributes["VerbatimDts"] = "VerbatimDts";
@@ -398,6 +394,12 @@ export function getPackageClause(entry) {
398
394
  export function getPackageName(entry) {
399
395
  return getPackageClause(entry).join(".");
400
396
  }
397
+ export function isInPackage(entry, packageName, exactMatch = false) {
398
+ const entryPackageName = getPackageName(entry);
399
+ return exactMatch
400
+ ? entryPackageName === packageName
401
+ : entryPackageName.startsWith(packageName);
402
+ }
401
403
  export function getNamespaceName(a) {
402
404
  return getNamespacesPathFor(a).map(it => it.name).join('.');
403
405
  }
@@ -945,12 +947,12 @@ export function forEachFunction(node, cb) {
945
947
  }
946
948
  export function asPromise(type) {
947
949
  if (!type)
948
- return;
950
+ return undefined;
949
951
  if (!isContainerType(type))
950
- return;
952
+ return undefined;
951
953
  const container = type;
952
954
  if (!IDLContainerUtils.isPromise(container))
953
- return;
955
+ return undefined;
954
956
  return container;
955
957
  }
956
958
  export function transformMethodsAsync2ReturnPromise(entry) {
@@ -1,5 +1,10 @@
1
1
  import * as ts from "typescript";
2
+ import * as idl from "./idl";
2
3
  import { GenerateOptions } from "./options";
4
+ export declare function scanDirectory(dir: string, fileFilter: (file: string) => boolean, recursive?: boolean): string[];
5
+ export declare function scanInputDirs(inputDirs: string[]): string[];
6
+ export declare function scanInputDirs(inputDirs: string[], fileExtension: string): string[];
7
+ export declare function scanInputDirs(inputDirs: string[], fileFilter: (file: string) => boolean, recursive: boolean): string[];
3
8
  export interface GenerateVisitor<T> {
4
9
  visitPhase1(): T;
5
10
  visitPhase2?(siblings: {
@@ -10,5 +15,9 @@ export interface GenerateVisitor<T> {
10
15
  };
11
16
  }): T;
12
17
  }
13
- export declare function generate<T>(inputDirs: string[], inputFiles: string[], outputDir: string, visitorFactory: (sourceFile: ts.SourceFile, program: ts.Program, compilerHost: ts.CompilerHost) => GenerateVisitor<T>, options: GenerateOptions<T>): void;
18
+ export declare function generate<T>(inputFiles: string[], outputDir: string, visitorFactory: (sourceFile: ts.SourceFile, program: ts.Program, compilerHost: ts.CompilerHost) => GenerateVisitor<T>, options: GenerateOptions<T>): void;
19
+ export declare function isInIdlize(entry: idl.IDLEntry | idl.IDLFile): boolean;
20
+ export declare function isInIdlizeInterop(entry: idl.IDLEntry | idl.IDLFile): boolean;
21
+ export declare function isInIdlizeInternal(entry: idl.IDLEntry | idl.IDLFile): boolean;
22
+ export declare function isInIdlizeStdlib(entry: idl.IDLEntry | idl.IDLFile): boolean;
14
23
  //# sourceMappingURL=idlize.d.ts.map
@@ -15,38 +15,55 @@
15
15
  import * as ts from "typescript";
16
16
  import * as fs from "fs";
17
17
  import * as path from "path";
18
- function readdir(dir) {
19
- return fs.readdirSync(dir)
20
- .map(elem => path.join(dir, elem));
18
+ import * as idl from "./idl";
19
+ export function scanDirectory(dir, fileFilter, recursive = false) {
20
+ const dirsToVisit = [path.resolve(dir)];
21
+ const result = [];
22
+ while (dirsToVisit.length > 0) {
23
+ let dir = dirsToVisit.pop();
24
+ let dirents = fs.readdirSync(dir, { withFileTypes: true });
25
+ for (const entry of dirents) {
26
+ const fullPath = path.join(dir, entry.name);
27
+ if (entry.isFile()) {
28
+ if (fileFilter(fullPath)) {
29
+ result.push(fullPath);
30
+ }
31
+ }
32
+ else if (recursive && entry.isDirectory()) {
33
+ dirsToVisit.push(fullPath);
34
+ }
35
+ }
36
+ }
37
+ return result;
38
+ }
39
+ export function scanInputDirs(inputDirs, fileFilter = undefined, recursive = false) {
40
+ if (typeof fileFilter === 'undefined')
41
+ return scanInputDirs(inputDirs, (_) => true, recursive);
42
+ if (typeof fileFilter === 'string')
43
+ return scanInputDirs(inputDirs, (file) => file.endsWith(fileFilter), recursive);
44
+ const resolvedInputDirs = inputDirs.map(dir => path.resolve(dir));
45
+ console.log("Resolved input directories:", resolvedInputDirs);
46
+ return resolvedInputDirs.flatMap(dir => {
47
+ if (fs.existsSync(dir) && fs.statSync(dir).isDirectory()) {
48
+ console.log(`Processing all .d.ts from directory: ${dir}`);
49
+ return scanDirectory(dir, fileFilter, recursive);
50
+ }
51
+ else {
52
+ console.warn(`Warning: Directory does not exist or is not a directory: ${dir}`);
53
+ return [];
54
+ }
55
+ });
21
56
  }
22
- export function generate(inputDirs, inputFiles, outputDir, visitorFactory, options) {
57
+ export function generate(inputFiles, outputDir, visitorFactory, options) {
23
58
  var _a, _b, _c;
24
59
  if (options.enableLog) {
25
60
  console.log("Starting generation process...");
26
61
  }
27
- if (inputDirs.length === 0 && inputFiles.length === 0) {
28
- console.error("Error: No input specified (no directories and no files).");
62
+ if (inputFiles.length === 0) {
63
+ console.error("Error: No input files specified.");
29
64
  process.exit(1);
30
65
  }
31
- const resolvedInputDirs = inputDirs.map(dir => path.resolve(dir));
32
- if (options.enableLog) {
33
- console.log("Resolved input directories:", resolvedInputDirs);
34
- }
35
66
  let input = [];
36
- if (resolvedInputDirs.length > 0) {
37
- resolvedInputDirs.forEach(dir => {
38
- if (fs.existsSync(dir) && fs.statSync(dir).isDirectory()) {
39
- if (options.enableLog) {
40
- console.log(`Processing all .d.ts from directory: ${dir}`);
41
- }
42
- const files = readdir(dir).filter(file => file.endsWith(".d.ts"));
43
- input = input.concat(files);
44
- }
45
- else {
46
- console.warn(`Warning: Directory does not exist or is not a directory: ${dir}`);
47
- }
48
- });
49
- }
50
67
  if (inputFiles.length > 0) {
51
68
  inputFiles.forEach(file => {
52
69
  const fullPath = path.resolve(file);
@@ -74,9 +91,8 @@ export function generate(inputDirs, inputFiles, outputDir, visitorFactory, optio
74
91
  const dtsFileName2Visitor = {};
75
92
  for (const sourceFile of program.getSourceFiles()) {
76
93
  const resolvedSourceFileName = path.resolve(sourceFile.fileName);
77
- const isInDir = resolvedInputDirs.some(dir => resolvedSourceFileName.startsWith(dir));
78
94
  const isExplicitFile = input.some(f => path.resolve(f) === resolvedSourceFileName);
79
- if (!isInDir && !isExplicitFile) {
95
+ if (!isExplicitFile) {
80
96
  if (options.enableLog) {
81
97
  console.log(`Skipping file: ${resolvedSourceFileName}`);
82
98
  }
@@ -108,4 +124,16 @@ export function generate(inputDirs, inputFiles, outputDir, visitorFactory, optio
108
124
  console.log("Generation completed.");
109
125
  }
110
126
  }
127
+ export function isInIdlize(entry) {
128
+ return idl.isInPackage(entry, "idlize");
129
+ }
130
+ export function isInIdlizeInterop(entry) {
131
+ return idl.isInPackage(entry, "idlize.internal.interop");
132
+ }
133
+ export function isInIdlizeInternal(entry) {
134
+ return idl.isInPackage(entry, "idlize.internal");
135
+ }
136
+ export function isInIdlizeStdlib(entry) {
137
+ return idl.isInPackage(entry, "idlize.stdlib");
138
+ }
111
139
  //# sourceMappingURL=idlize.js.map
@@ -43,7 +43,9 @@ export * from "./peer-generation/unions";
43
43
  export * from "./LanguageWriters";
44
44
  export * from "./peer-generation/ReferenceResolver";
45
45
  export * from "./peer-generation/idl/common";
46
+ export * from "./from-idl/IDLLinter";
46
47
  export { fromIDL } from "./from-idl/common";
47
48
  export { idlToDtsString, CustomPrintVisitor } from "./from-idl/DtsPrinter";
48
49
  export { toIDLFile, addSyntheticType, resolveSyntheticType } from "./from-idl/deserialize";
50
+ export { D, ConfigTypeInfer, ConfigSchema } from './configDescriber';
49
51
  //# sourceMappingURL=index.d.ts.map
@@ -57,7 +57,9 @@ export * from "./peer-generation/unions";
57
57
  export * from "./LanguageWriters";
58
58
  export * from "./peer-generation/ReferenceResolver";
59
59
  export * from "./peer-generation/idl/common";
60
+ export * from "./from-idl/IDLLinter";
60
61
  export { fromIDL } from "./from-idl/common";
61
62
  export { idlToDtsString, CustomPrintVisitor } from "./from-idl/DtsPrinter";
62
63
  export { toIDLFile, addSyntheticType, resolveSyntheticType } from "./from-idl/deserialize";
64
+ export { D } from './configDescriber';
63
65
  //# sourceMappingURL=index.js.map
@@ -5,6 +5,7 @@ export interface GenerateOptions<T> {
5
5
  onSingleFile?: (entries: T, outDir: string, inputFile: ts.SourceFile) => void;
6
6
  onEnd?: (outDir: string) => void;
7
7
  enableLog?: boolean;
8
+ recursive?: boolean;
8
9
  }
9
10
  export interface GenericVisitor<T> {
10
11
  visitWholeFile(): T;
@@ -37,6 +37,7 @@ export declare class MaterializedClass implements PeerClassBase {
37
37
  readonly decl: idl.IDLInterface;
38
38
  readonly className: string;
39
39
  readonly isInterface: boolean;
40
+ readonly isStaticMaterialized: boolean;
40
41
  readonly superClass: idl.IDLReferenceType | undefined;
41
42
  readonly interfaces: idl.IDLReferenceType[] | undefined;
42
43
  readonly generics: string[] | undefined;
@@ -46,7 +47,7 @@ export declare class MaterializedClass implements PeerClassBase {
46
47
  readonly methods: MaterializedMethod[];
47
48
  readonly needBeGenerated: boolean;
48
49
  readonly taggedMethods: idl.IDLMethod[];
49
- constructor(decl: idl.IDLInterface, className: string, isInterface: boolean, superClass: idl.IDLReferenceType | undefined, interfaces: idl.IDLReferenceType[] | undefined, generics: string[] | undefined, fields: MaterializedField[], ctor: MaterializedMethod | undefined, // undefined when used for global functions
50
+ constructor(decl: idl.IDLInterface, className: string, isInterface: boolean, isStaticMaterialized: boolean, superClass: idl.IDLReferenceType | undefined, interfaces: idl.IDLReferenceType[] | undefined, generics: string[] | undefined, fields: MaterializedField[], ctor: MaterializedMethod | undefined, // undefined when used for global functions
50
51
  finalizer: MaterializedMethod | undefined, // undefined when used for global functions
51
52
  methods: MaterializedMethod[], needBeGenerated?: boolean, taggedMethods?: idl.IDLMethod[]);
52
53
  getComponentName(): string;
@@ -96,12 +96,13 @@ export function copyMaterializedMethod(method, overrides) {
96
96
  return copied;
97
97
  }
98
98
  export class MaterializedClass {
99
- constructor(decl, className, isInterface, superClass, interfaces, generics, fields, ctor, // undefined when used for global functions
99
+ constructor(decl, className, isInterface, isStaticMaterialized, superClass, interfaces, generics, fields, ctor, // undefined when used for global functions
100
100
  finalizer, // undefined when used for global functions
101
101
  methods, needBeGenerated = true, taggedMethods = []) {
102
102
  this.decl = decl;
103
103
  this.className = className;
104
104
  this.isInterface = isInterface;
105
+ this.isStaticMaterialized = isStaticMaterialized;
105
106
  this.superClass = superClass;
106
107
  this.interfaces = interfaces;
107
108
  this.generics = generics;
@@ -131,7 +132,7 @@ export class MaterializedClass {
131
132
  }
132
133
  }
133
134
  export function createDestroyPeerMethod(clazz) {
134
- if (clazz.isGlobalScope()) {
135
+ if (clazz.isGlobalScope() || clazz.isStaticMaterialized) {
135
136
  return undefined;
136
137
  }
137
138
  return new MaterializedMethod(clazz.className, clazz.getImplementationName(), [], idl.IDLVoidType, false, new Method('destroyPeer', new NamedMethodSignature(idl.IDLVoidType, [idl.createReferenceType(clazz.className)], ['peer'])));
@@ -3,9 +3,8 @@ import { PeerClass } from "./PeerClass";
3
3
  import { LibraryFileInterface } from '../LibraryInterface';
4
4
  export declare class PeerFile implements LibraryFileInterface {
5
5
  readonly file: idl.IDLFile;
6
- readonly isPredefined: boolean;
7
6
  readonly peers: Map<string, PeerClass>;
8
- constructor(file: idl.IDLFile, isPredefined?: boolean);
7
+ constructor(file: idl.IDLFile);
9
8
  packageName(): string;
10
9
  packageClause(): string[];
11
10
  get peersToGenerate(): PeerClass[];
@@ -13,9 +13,8 @@
13
13
  * limitations under the License.
14
14
  */
15
15
  export class PeerFile {
16
- constructor(file, isPredefined = false) {
16
+ constructor(file) {
17
17
  this.file = file;
18
- this.isPredefined = isPredefined;
19
18
  this.peers = new Map();
20
19
  }
21
20
  packageName() {
@@ -10266,7 +10266,6 @@ export declare class PeerLibrary implements LibraryInterface {
10266
10266
  get buildersToGenerate(): BuilderClass[];
10267
10267
  readonly materializedClasses: Map<string, MaterializedClass>;
10268
10268
  get materializedToGenerate(): MaterializedClass[];
10269
- readonly predefinedDeclarations: idl.IDLInterface[];
10270
10269
  constructor(language: Language, libraryPackages: string[] | undefined);
10271
10270
  name: string;
10272
10271
  readonly customComponentMethods: string[];
@@ -28,6 +28,7 @@ import { generateSyntheticFunctionName, isImportAttr } from './idl/common';
28
28
  import { LayoutManager } from './LayoutManager';
29
29
  import { lib, query } from '../library';
30
30
  import { isMaterialized } from './isMaterialized';
31
+ import { isInIdlizeInternal } from '../idlize';
31
32
  export const lenses = {
32
33
  globals: lib.lens(lib.select.files())
33
34
  .pipe(lib.select.nodes())
@@ -89,7 +90,6 @@ export class PeerLibrary {
89
90
  this.files = [];
90
91
  this.builderClasses = new Map();
91
92
  this.materializedClasses = new Map();
92
- this.predefinedDeclarations = [];
93
93
  this.name = "";
94
94
  this.customComponentMethods = [];
95
95
  this.targetNameConvertorInstance = this.createTypeNameConvertor(this.language);
@@ -154,8 +154,7 @@ export class PeerLibrary {
154
154
  let pointOfViewNamespace = idl.fetchNamespaceFrom(type.parent);
155
155
  rootEntries !== null && rootEntries !== void 0 ? rootEntries : (rootEntries = this.files.flatMap(it => it.entries));
156
156
  if (1 === qualifiedName.length) {
157
- const predefined = rootEntries.filter(it => idl.hasExtAttribute(it, idl.IDLExtendedAttributes.Predefined));
158
- predefined.push(...this.predefinedDeclarations);
157
+ const predefined = rootEntries.filter(it => isInIdlizeInternal(it));
159
158
  const found = predefined.find(it => it.name === qualifiedName[0]);
160
159
  if (found)
161
160
  return found;
@@ -242,6 +241,7 @@ export class PeerLibrary {
242
241
  case idl.IDLVoidType: return new VoidConvertor(param);
243
242
  case idl.IDLUnknownType:
244
243
  case idl.IDLAnyType: return new CustomTypeConvertor(param, "Any", false, "Object");
244
+ case idl.IDLDate: return new DateConvertor(param);
245
245
  default: throw new Error(`Unconverted primitive ${idl.DebugUtils.debugPrintType(type)}`);
246
246
  }
247
247
  }
@@ -19,7 +19,7 @@ export function generateSyntheticIdlNodeName(type) {
19
19
  if (idl.isPrimitiveType(type))
20
20
  return capitalize(type.name);
21
21
  if (idl.isContainerType(type)) {
22
- const typeArgs = type.elementType.map(it => generateSyntheticIdlNodeName(it)).join("_");
22
+ const typeArgs = type.elementType.map(it => generateSyntheticIdlNodeName(it)).join("_").replaceAll(".", "_");
23
23
  switch (type.containerKind) {
24
24
  case "sequence": return "Array_" + typeArgs;
25
25
  case "record": return "Map_" + typeArgs;
@@ -62,7 +62,7 @@ export function generifiedTypeName(refType, refName) {
62
62
  return `${refName ? refName : refType.name}${typeArgs ? `<${typeArgs}>` : ``}`;
63
63
  }
64
64
  export function generateSyntheticUnionName(types) {
65
- return `Union_${types.map(it => generateSyntheticIdlNodeName(it)).join("_")}`;
65
+ return `Union_${types.map(it => generateSyntheticIdlNodeName(it)).join("_").replaceAll(".", "_")}`;
66
66
  }
67
67
  export function generateSyntheticFunctionName(parameters, returnType, isAsync = false) {
68
68
  let prefix = isAsync ? "AsyncCallback" : "Callback";
@@ -1,5 +1,6 @@
1
1
  import * as idl from '../idl';
2
2
  import { ReferenceResolver } from './ReferenceResolver';
3
3
  export declare function isMaterialized(declaration: idl.IDLInterface, resolver: ReferenceResolver): boolean;
4
+ export declare function isStaticMaterialized(declaration: idl.IDLInterface, resolver: ReferenceResolver): boolean;
4
5
  export declare function isMaterializedType(type: idl.IDLType, resolver: ReferenceResolver): boolean;
5
6
  //# sourceMappingURL=isMaterialized.d.ts.map
@@ -24,6 +24,9 @@ export function isMaterialized(declaration, resolver) {
24
24
  if (declaration.name == forceMaterialized)
25
25
  return true;
26
26
  }
27
+ if (generatorConfiguration().forceCallback.includes(declaration.name)) {
28
+ return false;
29
+ }
27
30
  for (const ignore of generatorConfiguration().ignoreMaterialized) {
28
31
  if (declaration.name.endsWith(ignore))
29
32
  return false;
@@ -43,6 +46,9 @@ export function isMaterialized(declaration, resolver) {
43
46
  }
44
47
  return false;
45
48
  }
49
+ export function isStaticMaterialized(declaration, resolver) {
50
+ return isMaterialized(declaration, resolver) && (declaration.methods.length > 0 && declaration.methods.every(it => it.isStatic)) && !declaration.properties.length && !declaration.constructors.length;
51
+ }
46
52
  export function isMaterializedType(type, resolver) {
47
53
  if (!idl.isReferenceType(type))
48
54
  return false;
@@ -82,4 +82,5 @@ export declare class Lazy<T> {
82
82
  }
83
83
  export declare function lazy<T>(factory: () => T): Lazy<T>;
84
84
  export declare function isInNamespace(node: idl.IDLEntry): boolean;
85
+ export declare function rightmostIndexOf<T>(array: T[], predicate: (value: T) => boolean): number;
85
86
  //# sourceMappingURL=util.d.ts.map
@@ -639,4 +639,13 @@ export function lazy(factory) {
639
639
  export function isInNamespace(node) {
640
640
  return idl.getNamespacesPathFor(node).length > 0;
641
641
  }
642
+ export function rightmostIndexOf(array, predicate) {
643
+ let result = -1;
644
+ array.forEach((it, index) => {
645
+ if (predicate(it)) {
646
+ result = index;
647
+ }
648
+ });
649
+ return result;
650
+ }
642
651
  //# sourceMappingURL=util.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@idlizer/core",
3
- "version": "2.0.41",
3
+ "version": "2.0.43",
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.5.7",
37
+ "@koalaui/interop": "1.5.8",
38
38
  "typescript": "4.9.5",
39
39
  "@types/node": "^18.0.0"
40
40
  },