@rexeus/typeweaver-gen 0.6.3 → 0.6.5

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/dist/index.cjs CHANGED
@@ -83,22 +83,12 @@ var BasePlugin = class {
83
83
  * Default implementation - override in subclasses if needed
84
84
  */
85
85
  async finalize(_context) {}
86
- /**
87
- * Copy lib files from plugin package to generated lib folder
88
- */
89
86
  copyLibFiles(context, libSourceDir, libNamespace) {
87
+ if (!node_fs.default.existsSync(libSourceDir)) return;
90
88
  const libDir = node_path.default.join(context.outputDir, "lib", libNamespace);
91
- node_fs.default.mkdirSync(libDir, { recursive: true });
92
- if (node_fs.default.existsSync(libSourceDir)) {
93
- const files = node_fs.default.readdirSync(libSourceDir);
94
- for (const file of files) {
95
- const sourcePath = node_path.default.join(libSourceDir, file);
96
- const targetPath = node_path.default.join(libDir, file);
97
- if (node_fs.default.statSync(sourcePath).isFile()) node_fs.default.copyFileSync(sourcePath, targetPath);
98
- }
99
- const libIndexPath = node_path.default.join("lib", libNamespace, "index.ts");
100
- if (node_fs.default.existsSync(node_path.default.join(libDir, "index.ts"))) context.addGeneratedFile(libIndexPath);
101
- }
89
+ node_fs.default.cpSync(libSourceDir, libDir, { recursive: true });
90
+ const libIndexPath = node_path.default.join("lib", libNamespace, "index.ts");
91
+ if (node_fs.default.existsSync(node_path.default.join(libDir, "index.ts"))) context.addGeneratedFile(libIndexPath);
102
92
  }
103
93
  };
104
94
 
package/dist/index.d.cts CHANGED
@@ -181,9 +181,6 @@ declare abstract class BasePlugin implements TypeweaverPlugin {
181
181
  * Default implementation - override in subclasses if needed
182
182
  */
183
183
  finalize(_context: PluginContext): Promise<void>;
184
- /**
185
- * Copy lib files from plugin package to generated lib folder
186
- */
187
184
  protected copyLibFiles(context: GeneratorContext, libSourceDir: string, libNamespace: string): void;
188
185
  }
189
186
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/Resource.ts","../src/plugins/types.ts","../src/plugins/BasePlugin.ts","../src/plugins/BaseTemplatePlugin.ts","../src/plugins/PluginRegistry.ts","../src/plugins/PluginContext.ts","../src/helpers/Path.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/Resource.ts","../src/plugins/types.ts","../src/plugins/BasePlugin.ts","../src/plugins/BaseTemplatePlugin.ts","../src/plugins/PluginRegistry.ts","../src/plugins/PluginContext.ts","../src/helpers/Path.ts"],"mappings":"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"}
package/dist/index.d.mts CHANGED
@@ -181,9 +181,6 @@ declare abstract class BasePlugin implements TypeweaverPlugin {
181
181
  * Default implementation - override in subclasses if needed
182
182
  */
183
183
  finalize(_context: PluginContext): Promise<void>;
184
- /**
185
- * Copy lib files from plugin package to generated lib folder
186
- */
187
184
  protected copyLibFiles(context: GeneratorContext, libSourceDir: string, libNamespace: string): void;
188
185
  }
189
186
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/Resource.ts","../src/plugins/types.ts","../src/plugins/BasePlugin.ts","../src/plugins/BaseTemplatePlugin.ts","../src/plugins/PluginRegistry.ts","../src/plugins/PluginContext.ts","../src/helpers/Path.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/Resource.ts","../src/plugins/types.ts","../src/plugins/BasePlugin.ts","../src/plugins/BaseTemplatePlugin.ts","../src/plugins/PluginRegistry.ts","../src/plugins/PluginContext.ts","../src/helpers/Path.ts"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -53,22 +53,12 @@ var BasePlugin = class {
53
53
  * Default implementation - override in subclasses if needed
54
54
  */
55
55
  async finalize(_context) {}
56
- /**
57
- * Copy lib files from plugin package to generated lib folder
58
- */
59
56
  copyLibFiles(context, libSourceDir, libNamespace) {
57
+ if (!fs.existsSync(libSourceDir)) return;
60
58
  const libDir = path.join(context.outputDir, "lib", libNamespace);
61
- fs.mkdirSync(libDir, { recursive: true });
62
- if (fs.existsSync(libSourceDir)) {
63
- const files = fs.readdirSync(libSourceDir);
64
- for (const file of files) {
65
- const sourcePath = path.join(libSourceDir, file);
66
- const targetPath = path.join(libDir, file);
67
- if (fs.statSync(sourcePath).isFile()) fs.copyFileSync(sourcePath, targetPath);
68
- }
69
- const libIndexPath = path.join("lib", libNamespace, "index.ts");
70
- if (fs.existsSync(path.join(libDir, "index.ts"))) context.addGeneratedFile(libIndexPath);
71
- }
59
+ fs.cpSync(libSourceDir, libDir, { recursive: true });
60
+ const libIndexPath = path.join("lib", libNamespace, "index.ts");
61
+ if (fs.existsSync(path.join(libDir, "index.ts"))) context.addGeneratedFile(libIndexPath);
72
62
  }
73
63
  };
74
64
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../src/plugins/types.ts","../src/plugins/BasePlugin.ts","../src/plugins/BaseTemplatePlugin.ts","../src/plugins/PluginRegistry.ts","../src/plugins/PluginContext.ts","../src/helpers/Path.ts"],"sourcesContent":["import type { GetResourcesResult } from \"../Resource\";\n\n/**\n * Configuration for a typeweaver plugin\n */\nexport type PluginConfig = Record<string, unknown>;\n\n/**\n * Context provided to plugins during initialization and finalization\n */\nexport type PluginContext = {\n outputDir: string;\n inputDir: string;\n config: PluginConfig;\n};\n\n/**\n * Context provided to plugins during generation\n */\nexport type GeneratorContext = PluginContext & {\n resources: GetResourcesResult;\n templateDir: string;\n coreDir: string;\n\n // Utility functions\n writeFile: (relativePath: string, content: string) => void;\n renderTemplate: (templatePath: string, data: unknown) => string;\n addGeneratedFile: (relativePath: string) => void;\n getGeneratedFiles: () => string[];\n};\n\n/**\n * Plugin metadata\n */\nexport type PluginMetadata = {\n name: string;\n};\n\n/**\n * typeweaver plugin interface\n */\nexport type TypeweaverPlugin = PluginMetadata & {\n /**\n * Initialize the plugin\n * Called before any generation happens\n */\n initialize?(context: PluginContext): Promise<void> | void;\n\n /**\n * Collect and transform resources\n * Allows plugins to modify the resource collection\n */\n collectResources?(\n resources: GetResourcesResult\n ): Promise<GetResourcesResult> | GetResourcesResult;\n\n /**\n * Main generation logic\n * Called with all resources and utilities\n */\n generate?(context: GeneratorContext): Promise<void> | void;\n\n /**\n * Finalize the plugin\n * Called after all generation is complete\n */\n finalize?(context: PluginContext): Promise<void> | void;\n};\n\n/**\n * Plugin constructor type\n */\nexport type PluginConstructor = new (config?: PluginConfig) => TypeweaverPlugin;\n\n/**\n * Plugin module export\n */\nexport type PluginModule = {\n default: PluginConstructor;\n};\n\n/**\n * Plugin registration entry\n */\nexport type PluginRegistration = {\n name: string;\n plugin: TypeweaverPlugin;\n config?: PluginConfig;\n};\n\n/**\n * typeweaver configuration\n */\nexport type TypeweaverConfig = {\n input: string;\n output: string;\n shared?: string;\n plugins?: (string | [string, PluginConfig])[];\n format?: boolean;\n clean?: boolean;\n};\n\n/**\n * Plugin loading error\n */\nexport class PluginLoadError extends Error {\n constructor(\n public pluginName: string,\n message: string\n ) {\n super(`Failed to load plugin '${pluginName}': ${message}`);\n this.name = \"PluginLoadError\";\n }\n}\n\n/**\n * Plugin dependency error\n */\nexport class PluginDependencyError extends Error {\n constructor(\n public pluginName: string,\n public missingDependency: string\n ) {\n super(\n `Plugin '${pluginName}' depends on '${missingDependency}' which is not loaded`\n );\n this.name = \"PluginDependencyError\";\n }\n}\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport type { GetResourcesResult } from \"../Resource\";\nimport type {\n GeneratorContext,\n PluginConfig,\n PluginContext,\n TypeweaverPlugin,\n} from \"./types\";\n\n/**\n * Base class for typeweaver plugins\n * Provides default implementations and common utilities\n */\nexport abstract class BasePlugin implements TypeweaverPlugin {\n abstract name: string;\n description?: string;\n author?: string;\n depends?: string[];\n\n protected config: PluginConfig;\n\n constructor(config: PluginConfig = {}) {\n this.config = config;\n }\n\n /**\n * Default implementation - override in subclasses if needed\n */\n async initialize(_context: PluginContext): Promise<void> {\n // Default: no initialization needed\n }\n\n /**\n * Default implementation - override in subclasses if needed\n */\n collectResources(resources: GetResourcesResult): GetResourcesResult {\n // Default: return resources unchanged\n return resources;\n }\n\n /**\n * Main generation logic - must be implemented by subclasses\n */\n abstract generate(context: GeneratorContext): Promise<void> | void;\n\n /**\n * Default implementation - override in subclasses if needed\n */\n async finalize(_context: PluginContext): Promise<void> {\n // Default: no finalization needed\n }\n\n /**\n * Copy lib files from plugin package to generated lib folder\n */\n protected copyLibFiles(\n context: GeneratorContext,\n libSourceDir: string,\n libNamespace: string\n ): void {\n const libDir = path.join(context.outputDir, \"lib\", libNamespace);\n\n // Ensure lib directory exists\n fs.mkdirSync(libDir, { recursive: true });\n\n // Copy all files from lib source to lib directory\n if (fs.existsSync(libSourceDir)) {\n const files = fs.readdirSync(libSourceDir);\n\n for (const file of files) {\n const sourcePath = path.join(libSourceDir, file);\n const targetPath = path.join(libDir, file);\n\n if (fs.statSync(sourcePath).isFile()) {\n fs.copyFileSync(sourcePath, targetPath);\n }\n }\n\n const libIndexPath = path.join(\"lib\", libNamespace, \"index.ts\");\n if (fs.existsSync(path.join(libDir, \"index.ts\"))) {\n context.addGeneratedFile(libIndexPath);\n }\n }\n }\n}\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { render } from \"ejs\";\nimport { BasePlugin } from \"./BasePlugin\";\nimport type { GeneratorContext } from \"./types\";\nimport type { Data } from \"ejs\";\n\n/**\n * Base class for template-based generator plugins\n * Provides utilities for working with EJS templates\n */\nexport abstract class BaseTemplatePlugin extends BasePlugin {\n /**\n * Render an EJS template with the given data\n */\n protected renderTemplate(templatePath: string, data: unknown): string {\n const template = fs.readFileSync(templatePath, \"utf8\");\n return render(template, data as Data);\n }\n\n /**\n * Write a file relative to the output directory\n */\n protected writeFile(\n context: GeneratorContext,\n relativePath: string,\n content: string\n ): void {\n context.writeFile(relativePath, content);\n }\n\n /**\n * Ensure a directory exists\n */\n protected ensureDir(context: GeneratorContext, relativePath: string): void {\n const fullPath = path.join(context.outputDir, relativePath);\n fs.mkdirSync(fullPath, { recursive: true });\n }\n\n /**\n * Get the template path for this plugin\n */\n protected getTemplatePath(\n context: GeneratorContext,\n templateName: string\n ): string {\n return path.join(context.templateDir, templateName);\n }\n}\n","import type { PluginRegistration, TypeweaverPlugin } from \"./types\";\n\n/**\n * Registry for managing typeweaver plugins\n */\nexport class PluginRegistry {\n private plugins: Map<string, PluginRegistration>;\n\n public constructor() {\n this.plugins = new Map();\n }\n\n /**\n * Register a plugin\n */\n public register(plugin: TypeweaverPlugin, config?: unknown): void {\n if (this.plugins.has(plugin.name)) {\n console.info(\n `Skipping duplicate registration of required plugin: ${plugin.name}`\n );\n return;\n }\n\n const registration: PluginRegistration = {\n name: plugin.name,\n plugin,\n config: config as Record<string, unknown>,\n };\n\n this.plugins.set(plugin.name, registration);\n console.info(`Registered plugin: ${plugin.name}`);\n }\n\n /**\n * Get a registered plugin\n */\n public get(name: string): PluginRegistration | undefined {\n return this.plugins.get(name);\n }\n\n /**\n * Get all registered plugins\n */\n public getAll(): PluginRegistration[] {\n return Array.from(this.plugins.values());\n }\n\n /**\n * Check if a plugin is registered\n */\n public has(name: string): boolean {\n return this.plugins.has(name);\n }\n\n /**\n * Clear all registered plugins (except required ones)\n */\n public clear(): void {\n this.plugins.clear();\n }\n}\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { render } from \"ejs\";\nimport type { GetResourcesResult } from \"../Resource\";\nimport type { GeneratorContext, PluginConfig, PluginContext } from \"./types\";\nimport type { Data } from \"ejs\";\n\n/**\n * Builder for plugin contexts\n */\nexport class PluginContextBuilder {\n private generatedFiles = new Set<string>();\n\n /**\n * Create a basic plugin context\n */\n createPluginContext(params: {\n outputDir: string;\n inputDir: string;\n config: PluginConfig;\n }): PluginContext {\n return {\n outputDir: params.outputDir,\n inputDir: params.inputDir,\n config: params.config,\n };\n }\n\n /**\n * Create a generator context with utilities\n */\n createGeneratorContext(params: {\n outputDir: string;\n inputDir: string;\n config: PluginConfig;\n resources: GetResourcesResult;\n templateDir: string;\n coreDir: string;\n }): GeneratorContext {\n const pluginContext = this.createPluginContext(params);\n\n return {\n ...pluginContext,\n resources: params.resources,\n templateDir: params.templateDir,\n coreDir: params.coreDir,\n\n // Utility functions\n writeFile: (relativePath: string, content: string) => {\n const fullPath = path.join(params.outputDir, relativePath);\n const dir = path.dirname(fullPath);\n\n // Ensure directory exists\n fs.mkdirSync(dir, { recursive: true });\n\n // Write file\n fs.writeFileSync(fullPath, content);\n\n // Track generated file\n this.generatedFiles.add(relativePath);\n\n console.info(`Generated: ${relativePath}`);\n },\n\n renderTemplate: (templatePath: string, data: unknown) => {\n const fullTemplatePath = path.isAbsolute(templatePath)\n ? templatePath\n : path.join(params.templateDir, templatePath);\n\n const template = fs.readFileSync(fullTemplatePath, \"utf8\");\n return render(template, data as Data);\n },\n\n addGeneratedFile: (relativePath: string) => {\n this.generatedFiles.add(relativePath);\n },\n\n getGeneratedFiles: () => {\n return Array.from(this.generatedFiles);\n },\n };\n }\n\n /**\n * Get all generated files\n */\n getGeneratedFiles(): string[] {\n return Array.from(this.generatedFiles);\n }\n\n /**\n * Clear generated files tracking\n */\n clearGeneratedFiles(): void {\n this.generatedFiles.clear();\n }\n}\n","import path from \"node:path\";\n\nexport class Path {\n public static relative(from: string, to: string): string {\n const relativePath = path.relative(from, to);\n\n if (relativePath.includes(\"node_modules\")) {\n const parts = relativePath.split(path.sep);\n const index = parts.indexOf(\"node_modules\");\n return parts.slice(index + 1).join(\"/\");\n }\n\n const posixPath = relativePath.split(path.sep).join(\"/\");\n\n if (!posixPath.startsWith(\"./\") && !posixPath.startsWith(\"../\")) {\n return `./${posixPath}`;\n }\n\n return posixPath;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../src/plugins/types.ts","../src/plugins/BasePlugin.ts","../src/plugins/BaseTemplatePlugin.ts","../src/plugins/PluginRegistry.ts","../src/plugins/PluginContext.ts","../src/helpers/Path.ts"],"sourcesContent":["import type { GetResourcesResult } from \"../Resource\";\n\n/**\n * Configuration for a typeweaver plugin\n */\nexport type PluginConfig = Record<string, unknown>;\n\n/**\n * Context provided to plugins during initialization and finalization\n */\nexport type PluginContext = {\n outputDir: string;\n inputDir: string;\n config: PluginConfig;\n};\n\n/**\n * Context provided to plugins during generation\n */\nexport type GeneratorContext = PluginContext & {\n resources: GetResourcesResult;\n templateDir: string;\n coreDir: string;\n\n // Utility functions\n writeFile: (relativePath: string, content: string) => void;\n renderTemplate: (templatePath: string, data: unknown) => string;\n addGeneratedFile: (relativePath: string) => void;\n getGeneratedFiles: () => string[];\n};\n\n/**\n * Plugin metadata\n */\nexport type PluginMetadata = {\n name: string;\n};\n\n/**\n * typeweaver plugin interface\n */\nexport type TypeweaverPlugin = PluginMetadata & {\n /**\n * Initialize the plugin\n * Called before any generation happens\n */\n initialize?(context: PluginContext): Promise<void> | void;\n\n /**\n * Collect and transform resources\n * Allows plugins to modify the resource collection\n */\n collectResources?(\n resources: GetResourcesResult\n ): Promise<GetResourcesResult> | GetResourcesResult;\n\n /**\n * Main generation logic\n * Called with all resources and utilities\n */\n generate?(context: GeneratorContext): Promise<void> | void;\n\n /**\n * Finalize the plugin\n * Called after all generation is complete\n */\n finalize?(context: PluginContext): Promise<void> | void;\n};\n\n/**\n * Plugin constructor type\n */\nexport type PluginConstructor = new (config?: PluginConfig) => TypeweaverPlugin;\n\n/**\n * Plugin module export\n */\nexport type PluginModule = {\n default: PluginConstructor;\n};\n\n/**\n * Plugin registration entry\n */\nexport type PluginRegistration = {\n name: string;\n plugin: TypeweaverPlugin;\n config?: PluginConfig;\n};\n\n/**\n * typeweaver configuration\n */\nexport type TypeweaverConfig = {\n input: string;\n output: string;\n shared?: string;\n plugins?: (string | [string, PluginConfig])[];\n format?: boolean;\n clean?: boolean;\n};\n\n/**\n * Plugin loading error\n */\nexport class PluginLoadError extends Error {\n constructor(\n public pluginName: string,\n message: string\n ) {\n super(`Failed to load plugin '${pluginName}': ${message}`);\n this.name = \"PluginLoadError\";\n }\n}\n\n/**\n * Plugin dependency error\n */\nexport class PluginDependencyError extends Error {\n constructor(\n public pluginName: string,\n public missingDependency: string\n ) {\n super(\n `Plugin '${pluginName}' depends on '${missingDependency}' which is not loaded`\n );\n this.name = \"PluginDependencyError\";\n }\n}\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport type { GetResourcesResult } from \"../Resource\";\nimport type {\n GeneratorContext,\n PluginConfig,\n PluginContext,\n TypeweaverPlugin,\n} from \"./types\";\n\n/**\n * Base class for typeweaver plugins\n * Provides default implementations and common utilities\n */\nexport abstract class BasePlugin implements TypeweaverPlugin {\n abstract name: string;\n description?: string;\n author?: string;\n depends?: string[];\n\n protected config: PluginConfig;\n\n constructor(config: PluginConfig = {}) {\n this.config = config;\n }\n\n /**\n * Default implementation - override in subclasses if needed\n */\n async initialize(_context: PluginContext): Promise<void> {\n // Default: no initialization needed\n }\n\n /**\n * Default implementation - override in subclasses if needed\n */\n collectResources(resources: GetResourcesResult): GetResourcesResult {\n // Default: return resources unchanged\n return resources;\n }\n\n /**\n * Main generation logic - must be implemented by subclasses\n */\n abstract generate(context: GeneratorContext): Promise<void> | void;\n\n /**\n * Default implementation - override in subclasses if needed\n */\n async finalize(_context: PluginContext): Promise<void> {\n // Default: no finalization needed\n }\n\n protected copyLibFiles(\n context: GeneratorContext,\n libSourceDir: string,\n libNamespace: string\n ): void {\n if (!fs.existsSync(libSourceDir)) return;\n\n const libDir = path.join(context.outputDir, \"lib\", libNamespace);\n\n fs.cpSync(libSourceDir, libDir, { recursive: true });\n\n const libIndexPath = path.join(\"lib\", libNamespace, \"index.ts\");\n if (fs.existsSync(path.join(libDir, \"index.ts\"))) {\n context.addGeneratedFile(libIndexPath);\n }\n }\n}\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { render } from \"ejs\";\nimport { BasePlugin } from \"./BasePlugin\";\nimport type { GeneratorContext } from \"./types\";\nimport type { Data } from \"ejs\";\n\n/**\n * Base class for template-based generator plugins\n * Provides utilities for working with EJS templates\n */\nexport abstract class BaseTemplatePlugin extends BasePlugin {\n /**\n * Render an EJS template with the given data\n */\n protected renderTemplate(templatePath: string, data: unknown): string {\n const template = fs.readFileSync(templatePath, \"utf8\");\n return render(template, data as Data);\n }\n\n /**\n * Write a file relative to the output directory\n */\n protected writeFile(\n context: GeneratorContext,\n relativePath: string,\n content: string\n ): void {\n context.writeFile(relativePath, content);\n }\n\n /**\n * Ensure a directory exists\n */\n protected ensureDir(context: GeneratorContext, relativePath: string): void {\n const fullPath = path.join(context.outputDir, relativePath);\n fs.mkdirSync(fullPath, { recursive: true });\n }\n\n /**\n * Get the template path for this plugin\n */\n protected getTemplatePath(\n context: GeneratorContext,\n templateName: string\n ): string {\n return path.join(context.templateDir, templateName);\n }\n}\n","import type { PluginRegistration, TypeweaverPlugin } from \"./types\";\n\n/**\n * Registry for managing typeweaver plugins\n */\nexport class PluginRegistry {\n private plugins: Map<string, PluginRegistration>;\n\n public constructor() {\n this.plugins = new Map();\n }\n\n /**\n * Register a plugin\n */\n public register(plugin: TypeweaverPlugin, config?: unknown): void {\n if (this.plugins.has(plugin.name)) {\n console.info(\n `Skipping duplicate registration of required plugin: ${plugin.name}`\n );\n return;\n }\n\n const registration: PluginRegistration = {\n name: plugin.name,\n plugin,\n config: config as Record<string, unknown>,\n };\n\n this.plugins.set(plugin.name, registration);\n console.info(`Registered plugin: ${plugin.name}`);\n }\n\n /**\n * Get a registered plugin\n */\n public get(name: string): PluginRegistration | undefined {\n return this.plugins.get(name);\n }\n\n /**\n * Get all registered plugins\n */\n public getAll(): PluginRegistration[] {\n return Array.from(this.plugins.values());\n }\n\n /**\n * Check if a plugin is registered\n */\n public has(name: string): boolean {\n return this.plugins.has(name);\n }\n\n /**\n * Clear all registered plugins (except required ones)\n */\n public clear(): void {\n this.plugins.clear();\n }\n}\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { render } from \"ejs\";\nimport type { GetResourcesResult } from \"../Resource\";\nimport type { GeneratorContext, PluginConfig, PluginContext } from \"./types\";\nimport type { Data } from \"ejs\";\n\n/**\n * Builder for plugin contexts\n */\nexport class PluginContextBuilder {\n private generatedFiles = new Set<string>();\n\n /**\n * Create a basic plugin context\n */\n createPluginContext(params: {\n outputDir: string;\n inputDir: string;\n config: PluginConfig;\n }): PluginContext {\n return {\n outputDir: params.outputDir,\n inputDir: params.inputDir,\n config: params.config,\n };\n }\n\n /**\n * Create a generator context with utilities\n */\n createGeneratorContext(params: {\n outputDir: string;\n inputDir: string;\n config: PluginConfig;\n resources: GetResourcesResult;\n templateDir: string;\n coreDir: string;\n }): GeneratorContext {\n const pluginContext = this.createPluginContext(params);\n\n return {\n ...pluginContext,\n resources: params.resources,\n templateDir: params.templateDir,\n coreDir: params.coreDir,\n\n // Utility functions\n writeFile: (relativePath: string, content: string) => {\n const fullPath = path.join(params.outputDir, relativePath);\n const dir = path.dirname(fullPath);\n\n // Ensure directory exists\n fs.mkdirSync(dir, { recursive: true });\n\n // Write file\n fs.writeFileSync(fullPath, content);\n\n // Track generated file\n this.generatedFiles.add(relativePath);\n\n console.info(`Generated: ${relativePath}`);\n },\n\n renderTemplate: (templatePath: string, data: unknown) => {\n const fullTemplatePath = path.isAbsolute(templatePath)\n ? templatePath\n : path.join(params.templateDir, templatePath);\n\n const template = fs.readFileSync(fullTemplatePath, \"utf8\");\n return render(template, data as Data);\n },\n\n addGeneratedFile: (relativePath: string) => {\n this.generatedFiles.add(relativePath);\n },\n\n getGeneratedFiles: () => {\n return Array.from(this.generatedFiles);\n },\n };\n }\n\n /**\n * Get all generated files\n */\n getGeneratedFiles(): string[] {\n return Array.from(this.generatedFiles);\n }\n\n /**\n * Clear generated files tracking\n */\n clearGeneratedFiles(): void {\n this.generatedFiles.clear();\n }\n}\n","import path from \"node:path\";\n\nexport class Path {\n public static relative(from: string, to: string): string {\n const relativePath = path.relative(from, to);\n\n if (relativePath.includes(\"node_modules\")) {\n const parts = relativePath.split(path.sep);\n const index = parts.indexOf(\"node_modules\");\n return parts.slice(index + 1).join(\"/\");\n }\n\n const posixPath = relativePath.split(path.sep).join(\"/\");\n\n if (!posixPath.startsWith(\"./\") && !posixPath.startsWith(\"../\")) {\n return `./${posixPath}`;\n }\n\n return posixPath;\n }\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rexeus/typeweaver-gen",
3
- "version": "0.6.3",
3
+ "version": "0.6.5",
4
4
  "description": "Template-driven engine that turns structured API definitions into production-ready artifacts. Powered by Typeweaver 🧵✨",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -47,10 +47,10 @@
47
47
  },
48
48
  "homepage": "https://github.com/rexeus/typeweaver#readme",
49
49
  "peerDependencies": {
50
- "@rexeus/typeweaver-core": "^0.6.3"
50
+ "@rexeus/typeweaver-core": "^0.6.5"
51
51
  },
52
52
  "devDependencies": {
53
- "@rexeus/typeweaver-core": "^0.6.3"
53
+ "@rexeus/typeweaver-core": "^0.6.5"
54
54
  },
55
55
  "dependencies": {
56
56
  "ejs": "^3.1.10"