bun_plugins 1.1.1 → 1.2.0

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 (182) hide show
  1. package/README.md +2 -2
  2. package/dist/Plugin.d.ts +28 -0
  3. package/dist/Plugin.d.ts.map +1 -0
  4. package/dist/Plugin.js +36 -0
  5. package/dist/Plugin.js.map +1 -0
  6. package/dist/PluginManager.d.ts +9 -0
  7. package/dist/PluginManager.d.ts.map +1 -1
  8. package/dist/PluginManager.js +147 -43
  9. package/dist/PluginManager.js.map +1 -1
  10. package/dist/index.d.ts +2 -0
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +2 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/logger/LoggerAdapter.d.ts +77 -0
  15. package/dist/logger/LoggerAdapter.d.ts.map +1 -0
  16. package/dist/logger/LoggerAdapter.js +244 -0
  17. package/dist/logger/LoggerAdapter.js.map +1 -0
  18. package/dist/logger/LoggerFactory.d.ts +73 -0
  19. package/dist/logger/LoggerFactory.d.ts.map +1 -0
  20. package/dist/logger/LoggerFactory.js +99 -0
  21. package/dist/logger/LoggerFactory.js.map +1 -0
  22. package/dist/logger/index.d.ts +3 -0
  23. package/dist/logger/index.d.ts.map +1 -0
  24. package/dist/logger/index.js +3 -0
  25. package/dist/logger/index.js.map +1 -0
  26. package/dist/managers/ContextFactory.d.ts +1 -1
  27. package/dist/managers/ContextFactory.d.ts.map +1 -1
  28. package/dist/managers/ContextFactory.js +15 -11
  29. package/dist/managers/ContextFactory.js.map +1 -1
  30. package/dist/managers/DependencyManager.d.ts.map +1 -1
  31. package/dist/managers/DependencyManager.js +2 -0
  32. package/dist/managers/DependencyManager.js.map +1 -1
  33. package/dist/managers/HooksManager.d.ts +4 -1
  34. package/dist/managers/HooksManager.d.ts.map +1 -1
  35. package/dist/managers/HooksManager.js +36 -8
  36. package/dist/managers/HooksManager.js.map +1 -1
  37. package/dist/managers/ResourceManager.d.ts.map +1 -1
  38. package/dist/managers/ResourceManager.js +2 -1
  39. package/dist/managers/ResourceManager.js.map +1 -1
  40. package/dist/pluginRegistry.d.ts +13 -0
  41. package/dist/pluginRegistry.d.ts.map +1 -0
  42. package/dist/pluginRegistry.js +11 -0
  43. package/dist/pluginRegistry.js.map +1 -0
  44. package/dist/plugins/ActionRegistryPlugin.d.ts +23 -0
  45. package/dist/plugins/ActionRegistryPlugin.d.ts.map +1 -0
  46. package/dist/plugins/ActionRegistryPlugin.js +56 -0
  47. package/dist/plugins/ActionRegistryPlugin.js.map +1 -0
  48. package/dist/plugins/DynamicJSActionsPlugin.d.ts +21 -0
  49. package/dist/plugins/DynamicJSActionsPlugin.d.ts.map +1 -0
  50. package/dist/plugins/DynamicJSActionsPlugin.js +57 -0
  51. package/dist/plugins/DynamicJSActionsPlugin.js.map +1 -0
  52. package/dist/plugins/DynamicMathActionsPlugin.d.ts +22 -0
  53. package/dist/plugins/DynamicMathActionsPlugin.d.ts.map +1 -0
  54. package/dist/plugins/DynamicMathActionsPlugin.js +64 -0
  55. package/dist/plugins/DynamicMathActionsPlugin.js.map +1 -0
  56. package/dist/plugins/DynamicTextActionsPlugin.d.ts +22 -0
  57. package/dist/plugins/DynamicTextActionsPlugin.d.ts.map +1 -0
  58. package/dist/plugins/DynamicTextActionsPlugin.js +58 -0
  59. package/dist/plugins/DynamicTextActionsPlugin.js.map +1 -0
  60. package/dist/plugins/DynamicUtilityActionsPlugin.d.ts +22 -0
  61. package/dist/plugins/DynamicUtilityActionsPlugin.d.ts.map +1 -0
  62. package/dist/plugins/DynamicUtilityActionsPlugin.js +75 -0
  63. package/dist/plugins/DynamicUtilityActionsPlugin.js.map +1 -0
  64. package/dist/plugins/ExamplePlugin.d.ts +3 -0
  65. package/dist/plugins/ExamplePlugin.d.ts.map +1 -0
  66. package/dist/plugins/ExamplePlugin.js +41 -0
  67. package/dist/plugins/ExamplePlugin.js.map +1 -0
  68. package/dist/plugins/LifecycleDemoPlugin.d.ts +20 -0
  69. package/dist/plugins/LifecycleDemoPlugin.d.ts.map +1 -0
  70. package/dist/plugins/LifecycleDemoPlugin.js +34 -0
  71. package/dist/plugins/LifecycleDemoPlugin.js.map +1 -0
  72. package/dist/plugins/MathPlugin.d.ts +16 -0
  73. package/dist/plugins/MathPlugin.d.ts.map +1 -0
  74. package/dist/plugins/MathPlugin.js +25 -0
  75. package/dist/plugins/MathPlugin.js.map +1 -0
  76. package/dist/plugins/MyJSPlugin.d.ts +7 -0
  77. package/dist/plugins/MyJSPlugin.d.ts.map +1 -0
  78. package/dist/plugins/MyJSPlugin.js +12 -0
  79. package/dist/plugins/MyJSPlugin.js.map +1 -0
  80. package/dist/plugins/arktype/index.d.ts +8 -0
  81. package/dist/plugins/arktype/index.d.ts.map +1 -0
  82. package/dist/plugins/arktype/index.js +25 -0
  83. package/dist/plugins/arktype/index.js.map +1 -0
  84. package/dist/src/Plugin.d.ts +28 -0
  85. package/dist/src/Plugin.d.ts.map +1 -0
  86. package/dist/src/Plugin.js +36 -0
  87. package/dist/src/Plugin.js.map +1 -0
  88. package/dist/src/PluginManager.d.ts +74 -0
  89. package/dist/src/PluginManager.d.ts.map +1 -0
  90. package/dist/src/PluginManager.js +689 -0
  91. package/dist/src/PluginManager.js.map +1 -0
  92. package/dist/src/index.d.ts +7 -0
  93. package/dist/src/index.d.ts.map +1 -0
  94. package/dist/src/index.js +7 -0
  95. package/dist/src/index.js.map +1 -0
  96. package/dist/src/logger/LoggerAdapter.d.ts +77 -0
  97. package/dist/src/logger/LoggerAdapter.d.ts.map +1 -0
  98. package/dist/src/logger/LoggerAdapter.js +242 -0
  99. package/dist/src/logger/LoggerAdapter.js.map +1 -0
  100. package/dist/src/logger/LoggerFactory.d.ts +73 -0
  101. package/dist/src/logger/LoggerFactory.d.ts.map +1 -0
  102. package/dist/src/logger/LoggerFactory.js +99 -0
  103. package/dist/src/logger/LoggerFactory.js.map +1 -0
  104. package/dist/src/logger/index.d.ts +3 -0
  105. package/dist/src/logger/index.d.ts.map +1 -0
  106. package/dist/src/logger/index.js +3 -0
  107. package/dist/src/logger/index.js.map +1 -0
  108. package/dist/src/managers/ContextFactory.d.ts +6 -0
  109. package/dist/src/managers/ContextFactory.d.ts.map +1 -0
  110. package/dist/src/managers/ContextFactory.js +132 -0
  111. package/dist/src/managers/ContextFactory.js.map +1 -0
  112. package/dist/src/managers/DependencyManager.d.ts +10 -0
  113. package/dist/src/managers/DependencyManager.d.ts.map +1 -0
  114. package/dist/src/managers/DependencyManager.js +96 -0
  115. package/dist/src/managers/DependencyManager.js.map +1 -0
  116. package/dist/src/managers/HooksManager.d.ts +24 -0
  117. package/dist/src/managers/HooksManager.d.ts.map +1 -0
  118. package/dist/src/managers/HooksManager.js +145 -0
  119. package/dist/src/managers/HooksManager.js.map +1 -0
  120. package/dist/src/managers/ResourceManager.d.ts +16 -0
  121. package/dist/src/managers/ResourceManager.d.ts.map +1 -0
  122. package/dist/src/managers/ResourceManager.js +50 -0
  123. package/dist/src/managers/ResourceManager.js.map +1 -0
  124. package/dist/src/pluginRegistry.d.ts +13 -0
  125. package/dist/src/pluginRegistry.d.ts.map +1 -0
  126. package/dist/src/pluginRegistry.js +11 -0
  127. package/dist/src/pluginRegistry.js.map +1 -0
  128. package/dist/src/storage/JsonPluginStorage.d.ts +15 -0
  129. package/dist/src/storage/JsonPluginStorage.d.ts.map +1 -0
  130. package/dist/src/storage/JsonPluginStorage.js +75 -0
  131. package/dist/src/storage/JsonPluginStorage.js.map +1 -0
  132. package/dist/src/types/arktype_converter.d.ts +19 -0
  133. package/dist/src/types/arktype_converter.d.ts.map +1 -0
  134. package/dist/src/types/arktype_converter.js +73 -0
  135. package/dist/src/types/arktype_converter.js.map +1 -0
  136. package/dist/src/types/generator.d.ts +8 -0
  137. package/dist/src/types/generator.d.ts.map +1 -0
  138. package/dist/src/types/generator.js +9 -0
  139. package/dist/src/types/generator.js.map +1 -0
  140. package/dist/src/types/interfaces.d.ts +55 -0
  141. package/dist/src/types/interfaces.d.ts.map +1 -0
  142. package/dist/src/types/interfaces.js +5 -0
  143. package/dist/src/types/interfaces.js.map +1 -0
  144. package/dist/src/types/plugin-registry.d.ts +21 -0
  145. package/dist/src/types/plugin-registry.d.ts.map +1 -0
  146. package/dist/src/types/plugin-registry.js +4 -0
  147. package/dist/src/types/plugin-registry.js.map +1 -0
  148. package/dist/src/types/plugin_generator.d.ts +56 -0
  149. package/dist/src/types/plugin_generator.d.ts.map +1 -0
  150. package/dist/src/types/plugin_generator.js +659 -0
  151. package/dist/src/types/plugin_generator.js.map +1 -0
  152. package/dist/src/types.d.ts +211 -0
  153. package/dist/src/types.d.ts.map +1 -0
  154. package/dist/src/types.js +62 -0
  155. package/dist/src/types.js.map +1 -0
  156. package/dist/src/utils/errorParser.d.ts +3 -0
  157. package/dist/src/utils/errorParser.d.ts.map +1 -0
  158. package/dist/src/utils/errorParser.js +23 -0
  159. package/dist/src/utils/errorParser.js.map +1 -0
  160. package/dist/src/utils/pluginValidator.d.ts +17 -0
  161. package/dist/src/utils/pluginValidator.d.ts.map +1 -0
  162. package/dist/src/utils/pluginValidator.js +74 -0
  163. package/dist/src/utils/pluginValidator.js.map +1 -0
  164. package/dist/src/utils/security.d.ts +3 -0
  165. package/dist/src/utils/security.d.ts.map +1 -0
  166. package/dist/src/utils/security.js +26 -0
  167. package/dist/src/utils/security.js.map +1 -0
  168. package/dist/src/worker/WorkerRunner.d.ts +2 -0
  169. package/dist/src/worker/WorkerRunner.d.ts.map +1 -0
  170. package/dist/src/worker/WorkerRunner.js +274 -0
  171. package/dist/src/worker/WorkerRunner.js.map +1 -0
  172. package/dist/storage/JsonPluginStorage.d.ts +2 -1
  173. package/dist/storage/JsonPluginStorage.d.ts.map +1 -1
  174. package/dist/storage/JsonPluginStorage.js +26 -14
  175. package/dist/storage/JsonPluginStorage.js.map +1 -1
  176. package/dist/types.d.ts +26 -7
  177. package/dist/types.d.ts.map +1 -1
  178. package/dist/types.js +3 -1
  179. package/dist/types.js.map +1 -1
  180. package/dist/worker/WorkerRunner.js +32 -12
  181. package/dist/worker/WorkerRunner.js.map +1 -1
  182. package/package.json +4 -3
@@ -0,0 +1,75 @@
1
+ import { join, dirname } from "node:path";
2
+ import { mkdir } from "node:fs/promises";
3
+ import { logger } from "../logger";
4
+ export class JsonPluginStorage {
5
+ filePath;
6
+ data = null;
7
+ lastModified = 0;
8
+ constructor(basePath, pluginName) {
9
+ this.filePath = join(basePath, "plugins", pluginName, "storage.json");
10
+ }
11
+ async ensureLoaded(force = false) {
12
+ try {
13
+ const file = Bun.file(this.filePath);
14
+ const exists = await file.exists();
15
+ if (!exists) {
16
+ this.data = this.data || {};
17
+ this.lastModified = 0;
18
+ return;
19
+ }
20
+ const stats = await import("node:fs/promises").then(fs => fs.stat(this.filePath));
21
+ const mtime = stats.mtimeMs;
22
+ if (force || this.data === null || mtime > this.lastModified) {
23
+ this.data = await file.json();
24
+ this.lastModified = mtime;
25
+ }
26
+ }
27
+ catch (e) {
28
+ if (this.data === null) {
29
+ logger.getLogger("JsonPluginStorage").error(`Failed to load storage for ${this.filePath}`, e);
30
+ this.data = {};
31
+ }
32
+ }
33
+ }
34
+ async save() {
35
+ if (this.data === null)
36
+ return;
37
+ try {
38
+ await mkdir(dirname(this.filePath), { recursive: true });
39
+ const content = JSON.stringify(this.data, null, 2);
40
+ await Bun.write(this.filePath, content);
41
+ // Update local mtime to avoid immediate reload
42
+ const stats = await import("node:fs/promises").then(fs => fs.stat(this.filePath));
43
+ this.lastModified = stats.mtimeMs;
44
+ }
45
+ catch (e) {
46
+ logger.getLogger("JsonPluginStorage").error(`Failed to save storage for ${this.filePath}`, e);
47
+ }
48
+ }
49
+ async get(key, defaultValue) {
50
+ await this.ensureLoaded();
51
+ return this.data?.[key] ?? defaultValue;
52
+ }
53
+ async set(key, value) {
54
+ await this.ensureLoaded();
55
+ if (this.data) {
56
+ this.data[key] = value;
57
+ await this.save();
58
+ }
59
+ }
60
+ async delete(key) {
61
+ await this.ensureLoaded();
62
+ if (this.data) {
63
+ delete this.data[key];
64
+ await this.save();
65
+ }
66
+ }
67
+ async clear() {
68
+ this.data = {};
69
+ await this.save();
70
+ }
71
+ async reload() {
72
+ await this.ensureLoaded(true);
73
+ }
74
+ }
75
+ //# sourceMappingURL=JsonPluginStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonPluginStorage.js","sourceRoot":"","sources":["../../../src/storage/JsonPluginStorage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { PropertyInfo, ArkTypeSchemaInfo } from "./interfaces";
2
+ /**
3
+ * Utilities for converting between TypeScript classes and arktype schemas.
4
+ */
5
+ export declare class ArkTypeConverter {
6
+ /**
7
+ * Converts a TypeScript class to an arktype schema.
8
+ */
9
+ static classToArkType(className: string, properties: PropertyInfo[]): string;
10
+ /**
11
+ * Converts a TypeScript type to its arktype equivalent.
12
+ */
13
+ static typeToArkType(prop: PropertyInfo): string;
14
+ /**
15
+ * Converts a nested type to arktype.
16
+ */
17
+ static nestedTypeToArkType(schema: ArkTypeSchemaInfo): string;
18
+ }
19
+ //# sourceMappingURL=arktype_converter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arktype_converter.d.ts","sourceRoot":"","sources":["../../../src/types/arktype_converter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEpE;;GAEG;AACH,qBAAa,gBAAgB;IAC3B;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,MAAM;IAU5E;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;IA8ChD;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM;CAW9D"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Utilities for converting between TypeScript classes and arktype schemas.
3
+ */
4
+ export class ArkTypeConverter {
5
+ /**
6
+ * Converts a TypeScript class to an arktype schema.
7
+ */
8
+ static classToArkType(className, properties) {
9
+ const schemaProps = properties.map(prop => {
10
+ const typeStr = this.typeToArkType(prop);
11
+ return ` ${prop.name}${prop.isOptional ? "?" : ""}: ${typeStr}`;
12
+ }).join(",\n");
13
+ const varName = className.charAt(0).toLowerCase() + className.slice(1);
14
+ return `const ${varName}Schema = type({\n${schemaProps}\n});`;
15
+ }
16
+ /**
17
+ * Converts a TypeScript type to its arktype equivalent.
18
+ */
19
+ static typeToArkType(prop) {
20
+ // Handle method types - they should be "function" in arktype
21
+ if (prop.isMethod) {
22
+ return "function";
23
+ }
24
+ if (prop.isArray) {
25
+ if (prop.nestedType) {
26
+ // For arrays with nested types, use the type name
27
+ return `array("${prop.type}")`;
28
+ }
29
+ return `array("${prop.type.toLowerCase()}")`;
30
+ }
31
+ // Check if this is a custom class type (starts with uppercase letter)
32
+ const isCustomClass = /^[A-Z]/.test(prop.type) &&
33
+ prop.type !== "String" &&
34
+ prop.type !== "Number" &&
35
+ prop.type !== "Boolean" &&
36
+ prop.type !== "Date" &&
37
+ prop.type !== "Array" &&
38
+ prop.type !== "Promise" &&
39
+ prop.type !== "Record" &&
40
+ prop.type !== "Map";
41
+ if (isCustomClass) {
42
+ // Keep custom class types as-is (without quotes) for proper type reference
43
+ return prop.type;
44
+ }
45
+ const typeMap = {
46
+ "string": "string",
47
+ "number": "number",
48
+ "boolean": "boolean",
49
+ "any": "any",
50
+ "unknown": "unknown",
51
+ "void": "undefined",
52
+ "null": "null",
53
+ "Date": "string", // Dates are represented as strings in JSON
54
+ "Map": "Map",
55
+ "object": "any"
56
+ };
57
+ return typeMap[prop.type] ?? `"${prop.type}"`; // Enums or literal types
58
+ }
59
+ /**
60
+ * Converts a nested type to arktype.
61
+ */
62
+ static nestedTypeToArkType(schema) {
63
+ if (schema.properties.length === 0) {
64
+ return "any";
65
+ }
66
+ const props = schema.properties.map(prop => {
67
+ const typeStr = this.typeToArkType(prop);
68
+ return ` ${prop.name}${prop.isOptional ? "?" : ""}: ${typeStr}`;
69
+ }).join(",\n");
70
+ return `type({\n${props}\n})`;
71
+ }
72
+ }
73
+ //# sourceMappingURL=arktype_converter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arktype_converter.js","sourceRoot":"","sources":["../../../src/types/arktype_converter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Modular type generator for plugins.
3
+ * This module re-exports all types and generators from the modularized files.
4
+ */
5
+ export type { PluginTypeInfo, ArkTypeSchemaInfo, PropertyInfo, MethodParamInfo, GeneratorOptions } from "./interfaces";
6
+ export { ArkTypeConverter } from "./arktype_converter";
7
+ export { PluginTypeGenerator, generatePluginTypes } from "./plugin_generator";
8
+ //# sourceMappingURL=generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../src/types/generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,gBAAgB,EACjB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Modular type generator for plugins.
3
+ * This module re-exports all types and generators from the modularized files.
4
+ */
5
+ // Re-export ArkTypeConverter
6
+ export { ArkTypeConverter } from "./arktype_converter";
7
+ // Re-export PluginTypeGenerator
8
+ export { PluginTypeGenerator, generatePluginTypes } from "./plugin_generator";
9
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../src/types/generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,6BAA6B;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,gCAAgC;AAChC,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Type definitions for the plugin type generator system.
3
+ */
4
+ /**
5
+ * Information about a plugin's type metadata.
6
+ */
7
+ export interface PluginTypeInfo {
8
+ name: string;
9
+ version: string;
10
+ className: string;
11
+ filePath: string;
12
+ isTypeScript: boolean;
13
+ apiInterface?: string;
14
+ dependencies?: Record<string, string>;
15
+ arkTypeSchema?: ArkTypeSchemaInfo;
16
+ }
17
+ /**
18
+ * Information about an ArkType schema derived from a class.
19
+ */
20
+ export interface ArkTypeSchemaInfo {
21
+ schemaName: string;
22
+ schemaDefinition: string;
23
+ typeDefinition: string;
24
+ properties: PropertyInfo[];
25
+ }
26
+ /**
27
+ * Information about a property extracted from a class.
28
+ */
29
+ export interface PropertyInfo {
30
+ name: string;
31
+ type: string;
32
+ isOptional: boolean;
33
+ isArray: boolean;
34
+ nestedType?: ArkTypeSchemaInfo;
35
+ isMethod?: boolean;
36
+ params?: MethodParamInfo[];
37
+ }
38
+ /**
39
+ * Information about a method parameter.
40
+ */
41
+ export interface MethodParamInfo {
42
+ name: string;
43
+ type: string;
44
+ isOptional: boolean;
45
+ }
46
+ /**
47
+ * Options for the generator.
48
+ */
49
+ export interface GeneratorOptions {
50
+ pluginsDir: string;
51
+ outputDir: string;
52
+ baseApiInterface?: string;
53
+ packageName?: string;
54
+ }
55
+ //# sourceMappingURL=interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/types/interfaces.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,aAAa,CAAC,EAAE,iBAAiB,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,YAAY,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Type definitions for the plugin type generator system.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/types/interfaces.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,21 @@
1
+ import type { IPlugin } from "../types";
2
+ /**
3
+ * Plugin name type - union of all discovered plugin names
4
+ */
5
+ export type PluginNames = string;
6
+ /**
7
+ * Get the instance type for a plugin by name
8
+ */
9
+ export type PluginInstanceType<T extends PluginNames> = T extends T ? IPlugin : IPlugin;
10
+ /**
11
+ * Plugin factory map type - maps plugin names to their instance types
12
+ */
13
+ export interface PluginFactoryMap {
14
+ [key: string]: {
15
+ name: string;
16
+ version: string;
17
+ instance: IPlugin;
18
+ api: unknown;
19
+ };
20
+ }
21
+ //# sourceMappingURL=plugin-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-registry.d.ts","sourceRoot":"","sources":["../../../src/types/plugin-registry.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC;;GAEG;AACH,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,WAAW,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,GAAG,OAAO,CAAC;AAExF;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,OAAO,CAAC;QAClB,GAAG,EAAE,OAAO,CAAC;KACd,CAAC;CACH"}
@@ -0,0 +1,4 @@
1
+ // Re-export types from generated plugin registry
2
+ // This file bridges the generated types with the plugin system
3
+ export {};
4
+ //# sourceMappingURL=plugin-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-registry.js","sourceRoot":"","sources":["../../../src/types/plugin-registry.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,+DAA+D"}
@@ -0,0 +1,56 @@
1
+ import ts from "typescript";
2
+ import type { PluginTypeInfo, ArkTypeSchemaInfo, PropertyInfo, GeneratorOptions } from "./interfaces";
3
+ /**
4
+ * Main generator for handling conversion between classes and arktype schemas.
5
+ * Provides dynamic typing and autocomplete without static KnownPluginNames.
6
+ */
7
+ export declare class PluginTypeGenerator {
8
+ private pluginsDir;
9
+ private outputDir;
10
+ private packageName;
11
+ private compilerOptions;
12
+ constructor(options: GeneratorOptions);
13
+ private getCompilerOptions;
14
+ private getDefaultOptions;
15
+ scanPlugins(): Promise<PluginTypeInfo[]>;
16
+ private scanDirectory;
17
+ /**
18
+ * Extracts the properties and methods from a TypeScript class.
19
+ */
20
+ extractClassProperties(sourceFile: ts.SourceFile): PropertyInfo[];
21
+ private extractMethodInfo;
22
+ private extractPropertyType;
23
+ private isArrayType;
24
+ private extractNestedType;
25
+ /**
26
+ * Generate a type string for public methods of a plugin class.
27
+ */
28
+ private generatePublicMethodsType;
29
+ private findTypeProperties;
30
+ private mapTypeName;
31
+ private inferTypeFromInitializer;
32
+ private getSymbolAtLocation;
33
+ private getTypeChecker;
34
+ private parseTypeScriptPlugin;
35
+ private parseJavaScriptPlugin;
36
+ private parsePlugin;
37
+ /**
38
+ * Generates dynamic type declarations using a factory pattern.
39
+ * No static KnownPluginNames - types are computed at compile time.
40
+ *
41
+ * The API type includes:
42
+ * - Base plugin properties (name, version)
43
+ * - Public methods from the class
44
+ * - Shared API methods if getApi is defined
45
+ */
46
+ generateDeclarations(plugins: PluginTypeInfo[], baseApiInterface?: string): string;
47
+ generateModuleExports(plugins: PluginTypeInfo[], baseApiInterface?: string): string;
48
+ generate(): Promise<PluginTypeInfo[]>;
49
+ getPlugins(): Promise<PluginTypeInfo[]>;
50
+ static convertClassToArkType(classFilePath: string): Promise<ArkTypeSchemaInfo | null>;
51
+ }
52
+ /**
53
+ * Generates plugin types from a plugins directory.
54
+ */
55
+ export declare function generatePluginTypes(pluginsDir?: string, outputDir?: string, packageName?: string): Promise<PluginTypeInfo[]>;
56
+ //# sourceMappingURL=plugin_generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin_generator.d.ts","sourceRoot":"","sources":["../../../src/types/plugin_generator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGtG;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,eAAe,CAAqB;gBAEhC,OAAO,EAAE,gBAAgB;IAOrC,OAAO,CAAC,kBAAkB;IAoB1B,OAAO,CAAC,iBAAiB;IAWnB,WAAW,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAsBhC,aAAa;IA+B3B;;OAEG;IACH,sBAAsB,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,YAAY,EAAE;IA6CjE,OAAO,CAAC,iBAAiB;IAmCzB,OAAO,CAAC,mBAAmB;IAiC3B,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,iBAAiB;IAyCzB;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAiBjC,OAAO,CAAC,kBAAkB;IAyC1B,OAAO,CAAC,WAAW;IAsBnB,OAAO,CAAC,wBAAwB;IAgBhC,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,qBAAqB;IAkG7B,OAAO,CAAC,qBAAqB;IA2B7B,OAAO,CAAC,WAAW;IAYnB;;;;;;;;OAQG;IACH,oBAAoB,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,gBAAgB,GAAE,MAAwB,GAAG,MAAM;IAwHnG,qBAAqB,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,gBAAgB,GAAE,MAAwB,GAAG,MAAM;IA+B9F,QAAQ,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAqBrC,UAAU,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;WAIhC,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;CA4C7F;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,GAAE,MAAuC,EACnD,SAAS,GAAE,MAA4C,EACvD,WAAW,GAAE,MAAsB,GAClC,OAAO,CAAC,cAAc,EAAE,CAAC,CAG3B"}