pocketbase-zod-schema 0.1.2

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 (94) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/LICENSE +21 -0
  3. package/README.md +167 -0
  4. package/dist/cli/index.cjs +3383 -0
  5. package/dist/cli/index.cjs.map +1 -0
  6. package/dist/cli/index.d.cts +30 -0
  7. package/dist/cli/index.d.ts +30 -0
  8. package/dist/cli/index.js +3331 -0
  9. package/dist/cli/index.js.map +1 -0
  10. package/dist/cli/migrate.cjs +3380 -0
  11. package/dist/cli/migrate.cjs.map +1 -0
  12. package/dist/cli/migrate.d.cts +1 -0
  13. package/dist/cli/migrate.d.ts +1 -0
  14. package/dist/cli/migrate.js +3353 -0
  15. package/dist/cli/migrate.js.map +1 -0
  16. package/dist/cli/utils/index.cjs +540 -0
  17. package/dist/cli/utils/index.cjs.map +1 -0
  18. package/dist/cli/utils/index.d.cts +232 -0
  19. package/dist/cli/utils/index.d.ts +232 -0
  20. package/dist/cli/utils/index.js +487 -0
  21. package/dist/cli/utils/index.js.map +1 -0
  22. package/dist/enums.cjs +19 -0
  23. package/dist/enums.cjs.map +1 -0
  24. package/dist/enums.d.cts +6 -0
  25. package/dist/enums.d.ts +6 -0
  26. package/dist/enums.js +17 -0
  27. package/dist/enums.js.map +1 -0
  28. package/dist/index.cjs +4900 -0
  29. package/dist/index.cjs.map +1 -0
  30. package/dist/index.d.cts +18 -0
  31. package/dist/index.d.ts +18 -0
  32. package/dist/index.js +4726 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/migration/analyzer.cjs +1267 -0
  35. package/dist/migration/analyzer.cjs.map +1 -0
  36. package/dist/migration/analyzer.d.cts +186 -0
  37. package/dist/migration/analyzer.d.ts +186 -0
  38. package/dist/migration/analyzer.js +1232 -0
  39. package/dist/migration/analyzer.js.map +1 -0
  40. package/dist/migration/diff.cjs +557 -0
  41. package/dist/migration/diff.cjs.map +1 -0
  42. package/dist/migration/diff.d.cts +291 -0
  43. package/dist/migration/diff.d.ts +291 -0
  44. package/dist/migration/diff.js +534 -0
  45. package/dist/migration/diff.js.map +1 -0
  46. package/dist/migration/generator.cjs +778 -0
  47. package/dist/migration/generator.cjs.map +1 -0
  48. package/dist/migration/generator.d.cts +225 -0
  49. package/dist/migration/generator.d.ts +225 -0
  50. package/dist/migration/generator.js +737 -0
  51. package/dist/migration/generator.js.map +1 -0
  52. package/dist/migration/index.cjs +3390 -0
  53. package/dist/migration/index.cjs.map +1 -0
  54. package/dist/migration/index.d.cts +103 -0
  55. package/dist/migration/index.d.ts +103 -0
  56. package/dist/migration/index.js +3265 -0
  57. package/dist/migration/index.js.map +1 -0
  58. package/dist/migration/snapshot.cjs +609 -0
  59. package/dist/migration/snapshot.cjs.map +1 -0
  60. package/dist/migration/snapshot.d.cts +167 -0
  61. package/dist/migration/snapshot.d.ts +167 -0
  62. package/dist/migration/snapshot.js +575 -0
  63. package/dist/migration/snapshot.js.map +1 -0
  64. package/dist/migration/utils/index.cjs +672 -0
  65. package/dist/migration/utils/index.cjs.map +1 -0
  66. package/dist/migration/utils/index.d.cts +207 -0
  67. package/dist/migration/utils/index.d.ts +207 -0
  68. package/dist/migration/utils/index.js +641 -0
  69. package/dist/migration/utils/index.js.map +1 -0
  70. package/dist/mutator.cjs +427 -0
  71. package/dist/mutator.cjs.map +1 -0
  72. package/dist/mutator.d.cts +190 -0
  73. package/dist/mutator.d.ts +190 -0
  74. package/dist/mutator.js +425 -0
  75. package/dist/mutator.js.map +1 -0
  76. package/dist/permissions-ZHafVSIx.d.cts +71 -0
  77. package/dist/permissions-ZHafVSIx.d.ts +71 -0
  78. package/dist/schema.cjs +430 -0
  79. package/dist/schema.cjs.map +1 -0
  80. package/dist/schema.d.cts +316 -0
  81. package/dist/schema.d.ts +316 -0
  82. package/dist/schema.js +396 -0
  83. package/dist/schema.js.map +1 -0
  84. package/dist/types-BbTgmg6H.d.cts +91 -0
  85. package/dist/types-z1Dkjg8m.d.ts +91 -0
  86. package/dist/types.cjs +4 -0
  87. package/dist/types.cjs.map +1 -0
  88. package/dist/types.d.cts +14 -0
  89. package/dist/types.d.ts +14 -0
  90. package/dist/types.js +3 -0
  91. package/dist/types.js.map +1 -0
  92. package/dist/user-jS1aYoeD.d.cts +123 -0
  93. package/dist/user-jS1aYoeD.d.ts +123 -0
  94. package/package.json +165 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/migration/errors.ts","../../src/migration/generator.ts"],"names":["path","fs"],"mappings":"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","file":"generator.cjs","sourcesContent":["/**\n * Custom error classes for migration tool\n * Provides specific error types for better error handling and user feedback\n */\n\n/**\n * Base error class for all migration-related errors\n */\nexport class MigrationError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"MigrationError\";\n Object.setPrototypeOf(this, MigrationError.prototype);\n }\n}\n\n/**\n * Error thrown when schema parsing fails\n * Used when Zod schemas cannot be parsed or are invalid\n */\nexport class SchemaParsingError extends MigrationError {\n public readonly filePath?: string;\n public readonly originalError?: Error;\n\n constructor(message: string, filePath?: string, originalError?: Error) {\n super(message);\n this.name = \"SchemaParsingError\";\n this.filePath = filePath;\n this.originalError = originalError;\n Object.setPrototypeOf(this, SchemaParsingError.prototype);\n }\n\n /**\n * Creates a formatted error message with file path and original error details\n */\n public getDetailedMessage(): string {\n const parts: string[] = [this.message];\n\n if (this.filePath) {\n parts.push(`\\nFile: ${this.filePath}`);\n }\n\n if (this.originalError) {\n parts.push(`\\nCause: ${this.originalError.message}`);\n }\n\n return parts.join(\"\");\n }\n}\n\n/**\n * Error thrown when snapshot operations fail\n * Used for snapshot file read/write/parse errors\n */\nexport class SnapshotError extends MigrationError {\n public readonly snapshotPath?: string;\n public readonly operation?: \"read\" | \"write\" | \"parse\" | \"validate\";\n public readonly originalError?: Error;\n\n constructor(\n message: string,\n snapshotPath?: string,\n operation?: \"read\" | \"write\" | \"parse\" | \"validate\",\n originalError?: Error\n ) {\n super(message);\n this.name = \"SnapshotError\";\n this.snapshotPath = snapshotPath;\n this.operation = operation;\n this.originalError = originalError;\n Object.setPrototypeOf(this, SnapshotError.prototype);\n }\n\n /**\n * Creates a formatted error message with snapshot path and operation details\n */\n public getDetailedMessage(): string {\n const parts: string[] = [this.message];\n\n if (this.operation) {\n parts.push(`\\nOperation: ${this.operation}`);\n }\n\n if (this.snapshotPath) {\n parts.push(`\\nSnapshot: ${this.snapshotPath}`);\n }\n\n if (this.originalError) {\n parts.push(`\\nCause: ${this.originalError.message}`);\n }\n\n return parts.join(\"\");\n }\n}\n\n/**\n * Error thrown when migration file generation fails\n * Used when migration files cannot be created or written\n */\nexport class MigrationGenerationError extends MigrationError {\n public readonly migrationPath?: string;\n public readonly originalError?: Error;\n\n constructor(message: string, migrationPath?: string, originalError?: Error) {\n super(message);\n this.name = \"MigrationGenerationError\";\n this.migrationPath = migrationPath;\n this.originalError = originalError;\n Object.setPrototypeOf(this, MigrationGenerationError.prototype);\n }\n\n /**\n * Creates a formatted error message with migration path and original error details\n */\n public getDetailedMessage(): string {\n const parts: string[] = [this.message];\n\n if (this.migrationPath) {\n parts.push(`\\nMigration: ${this.migrationPath}`);\n }\n\n if (this.originalError) {\n parts.push(`\\nCause: ${this.originalError.message}`);\n }\n\n return parts.join(\"\");\n }\n}\n\n/**\n * Error thrown when file system operations fail\n * Used for directory creation, file permissions, disk space issues\n */\nexport class FileSystemError extends MigrationError {\n public readonly path?: string;\n public readonly operation?: \"read\" | \"write\" | \"create\" | \"delete\" | \"access\";\n public readonly code?: string;\n public readonly originalError?: Error;\n\n constructor(\n message: string,\n path?: string,\n operation?: \"read\" | \"write\" | \"create\" | \"delete\" | \"access\",\n code?: string,\n originalError?: Error\n ) {\n super(message);\n this.name = \"FileSystemError\";\n this.path = path;\n this.operation = operation;\n this.code = code;\n this.originalError = originalError;\n Object.setPrototypeOf(this, FileSystemError.prototype);\n }\n\n /**\n * Creates a formatted error message with path, operation, and error code details\n */\n public getDetailedMessage(): string {\n const parts: string[] = [this.message];\n\n if (this.operation) {\n parts.push(`\\nOperation: ${this.operation}`);\n }\n\n if (this.path) {\n parts.push(`\\nPath: ${this.path}`);\n }\n\n if (this.code) {\n parts.push(`\\nError Code: ${this.code}`);\n }\n\n if (this.originalError) {\n parts.push(`\\nCause: ${this.originalError.message}`);\n }\n\n return parts.join(\"\");\n }\n}\n\n/**\n * Error thrown when configuration is invalid\n * Used for configuration file parsing, validation, and path resolution errors\n */\nexport class ConfigurationError extends MigrationError {\n public readonly configPath?: string;\n public readonly invalidFields?: string[];\n public readonly originalError?: Error;\n\n constructor(message: string, configPath?: string, invalidFields?: string[], originalError?: Error) {\n super(message);\n this.name = \"ConfigurationError\";\n this.configPath = configPath;\n this.invalidFields = invalidFields;\n this.originalError = originalError;\n Object.setPrototypeOf(this, ConfigurationError.prototype);\n }\n\n /**\n * Creates a formatted error message with configuration details\n */\n public getDetailedMessage(): string {\n const parts: string[] = [this.message];\n\n if (this.configPath) {\n parts.push(`\\nConfiguration File: ${this.configPath}`);\n }\n\n if (this.invalidFields && this.invalidFields.length > 0) {\n parts.push(`\\nInvalid Fields: ${this.invalidFields.join(\", \")}`);\n }\n\n if (this.originalError) {\n parts.push(`\\nCause: ${this.originalError.message}`);\n }\n\n return parts.join(\"\");\n }\n}\n\n/**\n * Error thrown when CLI command usage is incorrect\n * Used for invalid arguments, missing required options, etc.\n */\nexport class CLIUsageError extends MigrationError {\n public readonly command?: string;\n public readonly suggestion?: string;\n\n constructor(message: string, command?: string, suggestion?: string) {\n super(message);\n this.name = \"CLIUsageError\";\n this.command = command;\n this.suggestion = suggestion;\n Object.setPrototypeOf(this, CLIUsageError.prototype);\n }\n\n /**\n * Creates a formatted error message with usage suggestions\n */\n public getDetailedMessage(): string {\n const parts: string[] = [this.message];\n\n if (this.command) {\n parts.push(`\\nCommand: ${this.command}`);\n }\n\n if (this.suggestion) {\n parts.push(`\\nSuggestion: ${this.suggestion}`);\n }\n\n return parts.join(\"\");\n }\n}\n","/**\n * Migration Generator component\n * Creates PocketBase migration files based on detected differences\n *\n * This module provides a standalone, configurable migration generator that can be used\n * by consumer projects to generate PocketBase-compatible migration files.\n */\n\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport { FileSystemError, MigrationGenerationError } from \"./errors\";\nimport type { CollectionSchema, FieldDefinition, FieldModification, SchemaDiff } from \"./types\";\n\n/**\n * Configuration options for the migration generator\n */\nexport interface MigrationGeneratorConfig {\n /**\n * Directory to write migration files\n */\n migrationDir: string;\n\n /**\n * Workspace root for resolving relative paths\n * Defaults to process.cwd()\n */\n workspaceRoot?: string;\n\n /**\n * Custom timestamp generator function\n * Defaults to Unix timestamp in seconds\n */\n timestampGenerator?: () => string;\n\n /**\n * Custom migration file template\n * Use {{UP_CODE}} and {{DOWN_CODE}} placeholders\n */\n template?: string;\n\n /**\n * Whether to include type reference comment\n * Defaults to true\n */\n includeTypeReference?: boolean;\n\n /**\n * Path to types.d.ts file for reference comment\n * Defaults to '../pb_data/types.d.ts'\n */\n typesPath?: string;\n}\n\n/**\n * Default migration template\n */\nconst DEFAULT_TEMPLATE = `/// <reference path=\"{{TYPES_PATH}}\" />\nmigrate((app) => {\n{{UP_CODE}}\n return true;\n}, (app) => {\n{{DOWN_CODE}}\n return true;\n});\n`;\n\n/**\n * Default configuration values\n */\nconst DEFAULT_CONFIG: Omit<Required<MigrationGeneratorConfig>, \"migrationDir\"> = {\n workspaceRoot: process.cwd(),\n timestampGenerator: () => Math.floor(Date.now() / 1000).toString(),\n template: DEFAULT_TEMPLATE,\n includeTypeReference: true,\n typesPath: \"../pb_data/types.d.ts\",\n};\n\n/**\n * Merges user config with defaults\n */\nfunction mergeConfig(config: MigrationGeneratorConfig): Required<MigrationGeneratorConfig> {\n return {\n ...DEFAULT_CONFIG,\n ...config,\n };\n}\n\n/**\n * Resolves the migration directory path\n */\nfunction resolveMigrationDir(config: MigrationGeneratorConfig): string {\n const workspaceRoot = config.workspaceRoot || process.cwd();\n\n if (path.isAbsolute(config.migrationDir)) {\n return config.migrationDir;\n }\n\n return path.join(workspaceRoot, config.migrationDir);\n}\n\n/**\n * Generates a timestamp for migration filename\n * Format: Unix timestamp in seconds (e.g., 1687801090)\n *\n * @param config - Optional configuration with custom timestamp generator\n * @returns Timestamp string\n */\nexport function generateTimestamp(config?: MigrationGeneratorConfig): string {\n if (config?.timestampGenerator) {\n return config.timestampGenerator();\n }\n return Math.floor(Date.now() / 1000).toString();\n}\n\n/**\n * Generates a human-readable description from the diff\n * Creates a concise summary of the main changes\n *\n * @param diff - Schema diff containing all changes\n * @returns Description string for filename\n */\nexport function generateMigrationDescription(diff: SchemaDiff): string {\n const parts: string[] = [];\n\n // Summarize collection changes\n if (diff.collectionsToCreate.length > 0) {\n if (diff.collectionsToCreate.length === 1) {\n parts.push(`created_${diff.collectionsToCreate[0].name}`);\n } else {\n parts.push(`created_${diff.collectionsToCreate.length}_collections`);\n }\n }\n\n if (diff.collectionsToDelete.length > 0) {\n if (diff.collectionsToDelete.length === 1) {\n parts.push(`deleted_${diff.collectionsToDelete[0].name}`);\n } else {\n parts.push(`deleted_${diff.collectionsToDelete.length}_collections`);\n }\n }\n\n if (diff.collectionsToModify.length > 0) {\n if (diff.collectionsToModify.length === 1) {\n parts.push(`updated_${diff.collectionsToModify[0].collection}`);\n } else {\n parts.push(`updated_${diff.collectionsToModify.length}_collections`);\n }\n }\n\n // Default description if no changes\n if (parts.length === 0) {\n return \"no_changes\";\n }\n\n // Join parts with underscores and limit length\n let description = parts.join(\"_\");\n\n // Truncate if too long (keep under 100 chars for filename)\n if (description.length > 80) {\n description = description.substring(0, 77) + \"...\";\n }\n\n return description;\n}\n\n/**\n * Generates the migration filename\n * Format: {timestamp}_{description}.js\n *\n * @param diff - Schema diff containing all changes\n * @param config - Optional configuration\n * @returns Migration filename\n */\nexport function generateMigrationFilename(diff: SchemaDiff, config?: MigrationGeneratorConfig): string {\n const timestamp = generateTimestamp(config);\n const description = generateMigrationDescription(diff);\n\n return `${timestamp}_${description}.js`;\n}\n\n/**\n * Creates the migration file structure with up and down functions\n *\n * @param upCode - Code for the up migration\n * @param downCode - Code for the down migration\n * @param config - Optional configuration with custom template\n * @returns Complete migration file content\n */\nexport function createMigrationFileStructure(\n upCode: string,\n downCode: string,\n config?: MigrationGeneratorConfig\n): string {\n const mergedConfig = config ? mergeConfig(config) : DEFAULT_CONFIG;\n let template = mergedConfig.template;\n\n // Replace placeholders\n template = template.replace(\"{{TYPES_PATH}}\", mergedConfig.typesPath);\n template = template.replace(\"{{UP_CODE}}\", upCode);\n template = template.replace(\"{{DOWN_CODE}}\", downCode);\n\n // Remove type reference if disabled\n if (!mergedConfig.includeTypeReference) {\n template = template.replace(/\\/\\/\\/ <reference path=\"[^\"]*\" \\/>\\n?/, \"\");\n }\n\n return template;\n}\n\n/**\n * Writes migration file to the specified directory\n * Creates directory if it doesn't exist\n *\n * @param migrationDir - Directory to write migration file\n * @param filename - Migration filename\n * @param content - Migration file content\n * @returns Full path to the created migration file\n */\nexport function writeMigrationFile(migrationDir: string, filename: string, content: string): string {\n try {\n // Ensure migration directory exists\n if (!fs.existsSync(migrationDir)) {\n try {\n fs.mkdirSync(migrationDir, { recursive: true });\n } catch (error) {\n const fsError = error as NodeJS.ErrnoException;\n if (fsError.code === \"EACCES\" || fsError.code === \"EPERM\") {\n throw new FileSystemError(\n `Permission denied creating migration directory. Check directory permissions.`,\n migrationDir,\n \"create\",\n fsError.code,\n error as Error\n );\n }\n throw new FileSystemError(\n `Failed to create migration directory: ${fsError.message}`,\n migrationDir,\n \"create\",\n fsError.code,\n error as Error\n );\n }\n }\n\n // Full path to migration file\n const filePath = path.join(migrationDir, filename);\n\n // Write migration file\n fs.writeFileSync(filePath, content, \"utf-8\");\n\n return filePath;\n } catch (error) {\n // If it's already a FileSystemError, re-throw it\n if (error instanceof FileSystemError) {\n throw error;\n }\n\n const fsError = error as NodeJS.ErrnoException;\n const filePath = path.join(migrationDir, filename);\n\n if (fsError.code === \"EACCES\" || fsError.code === \"EPERM\") {\n throw new FileSystemError(\n `Permission denied writing migration file. Check file and directory permissions.`,\n filePath,\n \"write\",\n fsError.code,\n error as Error\n );\n } else if (fsError.code === \"ENOSPC\") {\n throw new FileSystemError(\n `No space left on device when writing migration file.`,\n filePath,\n \"write\",\n fsError.code,\n error as Error\n );\n }\n\n throw new MigrationGenerationError(`Failed to write migration file: ${fsError.message}`, filePath, error as Error);\n }\n}\n\n/**\n * Formats a value for JavaScript code generation\n * Handles strings, numbers, booleans, null, arrays, and objects\n *\n * @param value - Value to format\n * @returns Formatted string representation\n */\nfunction formatValue(value: any): string {\n if (value === null || value === undefined) {\n return \"null\";\n }\n\n if (typeof value === \"string\") {\n // Escape quotes and special characters\n return `\"${value.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"').replace(/\\n/g, \"\\\\n\")}\"`;\n }\n\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return String(value);\n }\n\n if (Array.isArray(value)) {\n const items = value.map((v) => formatValue(v)).join(\", \");\n return `[${items}]`;\n }\n\n if (typeof value === \"object\") {\n const entries = Object.entries(value)\n .map(([k, v]) => `${k}: ${formatValue(v)}`)\n .join(\", \");\n return `{ ${entries} }`;\n }\n\n return String(value);\n}\n\n/**\n * Generates field definition object for collection creation\n * Creates the field configuration object used in Collection constructor\n *\n * @param field - Field definition\n * @returns Field definition object as string\n */\nexport function generateFieldDefinitionObject(field: FieldDefinition): string {\n const parts: string[] = [];\n\n // Add field name\n parts.push(` name: \"${field.name}\"`);\n\n // Add field type\n parts.push(` type: \"${field.type}\"`);\n\n // Add required flag\n parts.push(` required: ${field.required}`);\n\n // Add unique flag if present\n if (field.unique !== undefined) {\n parts.push(` unique: ${field.unique}`);\n }\n\n // Add options if present\n if (field.options && Object.keys(field.options).length > 0) {\n for (const [key, value] of Object.entries(field.options)) {\n parts.push(` ${key}: ${formatValue(value)}`);\n }\n }\n\n // Add relation configuration if present\n if (field.relation) {\n // For relation fields, we need to resolve the collection ID\n // For now, we'll use a placeholder that needs to be resolved at runtime\n const collectionIdPlaceholder =\n field.relation.collection === \"Users\"\n ? '\"_pb_users_auth_\"'\n : `app.findCollectionByNameOrId(\"${field.relation.collection}\").id`;\n\n parts.push(` collectionId: ${collectionIdPlaceholder}`);\n\n if (field.relation.maxSelect !== undefined) {\n parts.push(` maxSelect: ${field.relation.maxSelect}`);\n }\n\n if (field.relation.minSelect !== undefined) {\n parts.push(` minSelect: ${field.relation.minSelect}`);\n }\n\n if (field.relation.cascadeDelete !== undefined) {\n parts.push(` cascadeDelete: ${field.relation.cascadeDelete}`);\n }\n }\n\n return ` {\\n${parts.join(\",\\n\")},\\n }`;\n}\n\n/**\n * Generates fields array for collection creation\n *\n * @param fields - Array of field definitions\n * @returns Fields array as string\n */\nexport function generateFieldsArray(fields: FieldDefinition[]): string {\n if (fields.length === 0) {\n return \"[]\";\n }\n\n const fieldObjects = fields.map((field) => generateFieldDefinitionObject(field));\n return `[\\n${fieldObjects.join(\",\\n\")},\\n ]`;\n}\n\n/**\n * Generates collection rules object\n *\n * @param rules - Collection rules\n * @returns Rules configuration as string\n */\nexport function generateCollectionRules(rules?: CollectionSchema[\"rules\"]): string {\n if (!rules) {\n return \"\";\n }\n\n const parts: string[] = [];\n\n if (rules.listRule !== undefined) {\n parts.push(`listRule: ${formatValue(rules.listRule)}`);\n }\n\n if (rules.viewRule !== undefined) {\n parts.push(`viewRule: ${formatValue(rules.viewRule)}`);\n }\n\n if (rules.createRule !== undefined) {\n parts.push(`createRule: ${formatValue(rules.createRule)}`);\n }\n\n if (rules.updateRule !== undefined) {\n parts.push(`updateRule: ${formatValue(rules.updateRule)}`);\n }\n\n if (rules.deleteRule !== undefined) {\n parts.push(`deleteRule: ${formatValue(rules.deleteRule)}`);\n }\n\n if (rules.manageRule !== undefined) {\n parts.push(`manageRule: ${formatValue(rules.manageRule)}`);\n }\n\n return parts.join(\",\\n \");\n}\n\n/**\n * Generates collection permissions object\n * Permissions are the same as rules but extracted from schema metadata\n *\n * @param permissions - Collection permissions\n * @returns Permissions configuration as string\n */\nexport function generateCollectionPermissions(permissions?: CollectionSchema[\"permissions\"]): string {\n if (!permissions) {\n return \"\";\n }\n\n const parts: string[] = [];\n\n if (permissions.listRule !== undefined) {\n parts.push(`listRule: ${formatValue(permissions.listRule)}`);\n }\n\n if (permissions.viewRule !== undefined) {\n parts.push(`viewRule: ${formatValue(permissions.viewRule)}`);\n }\n\n if (permissions.createRule !== undefined) {\n parts.push(`createRule: ${formatValue(permissions.createRule)}`);\n }\n\n if (permissions.updateRule !== undefined) {\n parts.push(`updateRule: ${formatValue(permissions.updateRule)}`);\n }\n\n if (permissions.deleteRule !== undefined) {\n parts.push(`deleteRule: ${formatValue(permissions.deleteRule)}`);\n }\n\n if (permissions.manageRule !== undefined) {\n parts.push(`manageRule: ${formatValue(permissions.manageRule)}`);\n }\n\n return parts.join(\",\\n \");\n}\n\n/**\n * Generates indexes array for collection creation\n *\n * @param indexes - Array of index definitions\n * @returns Indexes array as string\n */\nexport function generateIndexesArray(indexes?: string[]): string {\n if (!indexes || indexes.length === 0) {\n return \"[]\";\n }\n\n const indexStrings = indexes.map((idx) => `\"${idx}\"`);\n return `[\\n ${indexStrings.join(\",\\n \")},\\n ]`;\n}\n\n/**\n * Generates Collection constructor call for creating a new collection\n *\n * @param collection - Collection schema\n * @param varName - Variable name to use for the collection (default: 'collection')\n * @returns JavaScript code for creating the collection\n */\nexport function generateCollectionCreation(collection: CollectionSchema, varName: string = \"collection\"): string {\n const lines: string[] = [];\n\n lines.push(` const ${varName} = new Collection({`);\n lines.push(` name: \"${collection.name}\",`);\n lines.push(` type: \"${collection.type}\",`);\n\n // Add permissions (preferred) or rules\n // Permissions take precedence if both are defined\n const permissionsCode = generateCollectionPermissions(collection.permissions);\n const rulesCode = generateCollectionRules(collection.rules);\n\n if (permissionsCode) {\n lines.push(` ${permissionsCode},`);\n } else if (rulesCode) {\n lines.push(` ${rulesCode},`);\n }\n\n // Add fields\n lines.push(` fields: ${generateFieldsArray(collection.fields)},`);\n\n // Add indexes\n lines.push(` indexes: ${generateIndexesArray(collection.indexes)},`);\n\n lines.push(` });`);\n lines.push(``);\n lines.push(` app.save(${varName});`);\n\n return lines.join(\"\\n\");\n}\n\n/**\n * Gets the appropriate Field constructor name for a field type\n *\n * @param fieldType - PocketBase field type\n * @returns Field constructor name\n */\nfunction getFieldConstructorName(fieldType: string): string {\n const constructorMap: Record<string, string> = {\n text: \"TextField\",\n email: \"EmailField\",\n url: \"URLField\",\n number: \"NumberField\",\n bool: \"BoolField\",\n date: \"DateField\",\n select: \"SelectField\",\n relation: \"RelationField\",\n file: \"FileField\",\n json: \"JSONField\",\n };\n\n return constructorMap[fieldType] || \"TextField\";\n}\n\n/**\n * Generates field constructor options object\n *\n * @param field - Field definition\n * @returns Options object as string\n */\nfunction generateFieldConstructorOptions(field: FieldDefinition): string {\n const parts: string[] = [];\n\n // Add field name\n parts.push(` name: \"${field.name}\"`);\n\n // Add required flag\n parts.push(` required: ${field.required}`);\n\n // Add unique flag if present\n if (field.unique !== undefined) {\n parts.push(` unique: ${field.unique}`);\n }\n\n // Add options if present\n if (field.options && Object.keys(field.options).length > 0) {\n for (const [key, value] of Object.entries(field.options)) {\n parts.push(` ${key}: ${formatValue(value)}`);\n }\n }\n\n // Add relation-specific options\n if (field.relation && field.type === \"relation\") {\n const collectionIdPlaceholder =\n field.relation.collection === \"Users\"\n ? '\"_pb_users_auth_\"'\n : `app.findCollectionByNameOrId(\"${field.relation.collection}\").id`;\n\n parts.push(` collectionId: ${collectionIdPlaceholder}`);\n\n if (field.relation.maxSelect !== undefined) {\n parts.push(` maxSelect: ${field.relation.maxSelect}`);\n }\n\n if (field.relation.minSelect !== undefined) {\n parts.push(` minSelect: ${field.relation.minSelect}`);\n }\n\n if (field.relation.cascadeDelete !== undefined) {\n parts.push(` cascadeDelete: ${field.relation.cascadeDelete}`);\n }\n }\n\n return parts.join(\",\\n\");\n}\n\n/**\n * Generates code for adding a field to an existing collection\n * Uses the appropriate Field constructor based on field type\n *\n * @param collectionName - Name of the collection\n * @param field - Field definition to add\n * @param varName - Variable name to use for the collection (default: auto-generated)\n * @returns JavaScript code for adding the field\n */\nexport function generateFieldAddition(collectionName: string, field: FieldDefinition, varName?: string): string {\n const lines: string[] = [];\n const constructorName = getFieldConstructorName(field.type);\n const collectionVar = varName || `collection_${collectionName}_${field.name}`;\n\n lines.push(` const ${collectionVar} = app.findCollectionByNameOrId(\"${collectionName}\");`);\n lines.push(``);\n lines.push(` ${collectionVar}.fields.add(new ${constructorName}({`);\n lines.push(generateFieldConstructorOptions(field));\n lines.push(` }));`);\n lines.push(``);\n lines.push(` app.save(${collectionVar});`);\n\n return lines.join(\"\\n\");\n}\n\n/**\n * Generates code for modifying an existing field\n * Updates field properties based on detected changes\n *\n * @param collectionName - Name of the collection\n * @param modification - Field modification details\n * @param varName - Variable name to use for the collection (default: auto-generated)\n * @returns JavaScript code for modifying the field\n */\nexport function generateFieldModification(\n collectionName: string,\n modification: FieldModification,\n varName?: string\n): string {\n const lines: string[] = [];\n const collectionVar = varName || `collection_${collectionName}_${modification.fieldName}`;\n const fieldVar = `${collectionVar}_field`;\n\n lines.push(` const ${collectionVar} = app.findCollectionByNameOrId(\"${collectionName}\");`);\n lines.push(` const ${fieldVar} = ${collectionVar}.fields.getByName(\"${modification.fieldName}\");`);\n lines.push(``);\n\n // Apply each change\n for (const change of modification.changes) {\n if (change.property.startsWith(\"options.\")) {\n // Handle nested options properties\n const optionKey = change.property.replace(\"options.\", \"\");\n // In PocketBase, field properties are set directly on the field, not in an options object\n lines.push(` ${fieldVar}.${optionKey} = ${formatValue(change.newValue)};`);\n } else if (change.property.startsWith(\"relation.\")) {\n // Handle nested relation properties\n const relationKey = change.property.replace(\"relation.\", \"\");\n\n if (relationKey === \"collection\") {\n // Special handling for collection ID\n const collectionIdValue =\n change.newValue === \"Users\" ? '\"_pb_users_auth_\"' : `app.findCollectionByNameOrId(\"${change.newValue}\").id`;\n lines.push(` ${fieldVar}.collectionId = ${collectionIdValue};`);\n } else {\n lines.push(` ${fieldVar}.${relationKey} = ${formatValue(change.newValue)};`);\n }\n } else {\n // Handle top-level properties\n lines.push(` ${fieldVar}.${change.property} = ${formatValue(change.newValue)};`);\n }\n }\n\n lines.push(``);\n lines.push(` app.save(${collectionVar});`);\n\n return lines.join(\"\\n\");\n}\n\n/**\n * Generates code for deleting a field from a collection\n *\n * @param collectionName - Name of the collection\n * @param fieldName - Name of the field to delete\n * @param varName - Variable name to use for the collection (default: auto-generated)\n * @returns JavaScript code for deleting the field\n */\nexport function generateFieldDeletion(collectionName: string, fieldName: string, varName?: string): string {\n const lines: string[] = [];\n const collectionVar = varName || `collection_${collectionName}_${fieldName}`;\n const fieldVar = `${collectionVar}_field`;\n\n lines.push(` const ${collectionVar} = app.findCollectionByNameOrId(\"${collectionName}\");`);\n lines.push(` const ${fieldVar} = ${collectionVar}.fields.getByName(\"${fieldName}\");`);\n lines.push(``);\n lines.push(` ${collectionVar}.fields.remove(${fieldVar}.id);`);\n lines.push(``);\n lines.push(` app.save(${collectionVar});`);\n\n return lines.join(\"\\n\");\n}\n\n/**\n * Generates code for adding an index to a collection\n *\n * @param collectionName - Name of the collection\n * @param index - Index SQL statement\n * @param varName - Variable name to use for the collection (default: auto-generated)\n * @returns JavaScript code for adding the index\n */\nfunction generateIndexAddition(collectionName: string, index: string, varName?: string): string {\n const lines: string[] = [];\n const collectionVar = varName || `collection_${collectionName}_idx`;\n\n lines.push(` const ${collectionVar} = app.findCollectionByNameOrId(\"${collectionName}\");`);\n lines.push(` ${collectionVar}.indexes.push(\"${index}\");`);\n lines.push(` app.save(${collectionVar});`);\n\n return lines.join(\"\\n\");\n}\n\n/**\n * Generates code for removing an index from a collection\n *\n * @param collectionName - Name of the collection\n * @param index - Index SQL statement\n * @param varName - Variable name to use for the collection (default: auto-generated)\n * @returns JavaScript code for removing the index\n */\nfunction generateIndexRemoval(collectionName: string, index: string, varName?: string): string {\n const lines: string[] = [];\n const collectionVar = varName || `collection_${collectionName}_idx`;\n const indexVar = `${collectionVar}_indexToRemove`;\n\n lines.push(` const ${collectionVar} = app.findCollectionByNameOrId(\"${collectionName}\");`);\n lines.push(` const ${indexVar} = ${collectionVar}.indexes.findIndex(idx => idx === \"${index}\");`);\n lines.push(` if (${indexVar} !== -1) {`);\n lines.push(` ${collectionVar}.indexes.splice(${indexVar}, 1);`);\n lines.push(` }`);\n lines.push(` app.save(${collectionVar});`);\n\n return lines.join(\"\\n\");\n}\n\n/**\n * Generates code for updating collection rules\n *\n * @param collectionName - Name of the collection\n * @param ruleType - Type of rule to update\n * @param newValue - New rule value\n * @param varName - Variable name to use for the collection (default: auto-generated)\n * @returns JavaScript code for updating the rule\n */\nfunction generateRuleUpdate(\n collectionName: string,\n ruleType: string,\n newValue: string | null,\n varName?: string\n): string {\n const lines: string[] = [];\n const collectionVar = varName || `collection_${collectionName}_${ruleType}`;\n\n lines.push(` const ${collectionVar} = app.findCollectionByNameOrId(\"${collectionName}\");`);\n lines.push(` ${collectionVar}.${ruleType} = ${formatValue(newValue)};`);\n lines.push(` app.save(${collectionVar});`);\n\n return lines.join(\"\\n\");\n}\n\n/**\n * Generates code for updating collection permissions\n * Handles permission rule updates including manageRule for auth collections\n *\n * @param collectionName - Name of the collection\n * @param ruleType - Type of permission rule to update\n * @param newValue - New permission rule value\n * @param varName - Variable name to use for the collection (default: auto-generated)\n * @returns JavaScript code for updating the permission\n */\nexport function generatePermissionUpdate(\n collectionName: string,\n ruleType: string,\n newValue: string | null,\n varName?: string\n): string {\n const lines: string[] = [];\n const collectionVar = varName || `collection_${collectionName}_${ruleType}`;\n\n lines.push(` const ${collectionVar} = app.findCollectionByNameOrId(\"${collectionName}\");`);\n lines.push(` ${collectionVar}.${ruleType} = ${formatValue(newValue)};`);\n lines.push(` app.save(${collectionVar});`);\n\n return lines.join(\"\\n\");\n}\n\n/**\n * Generates code for deleting a collection\n *\n * @param collectionName - Name of the collection to delete\n * @param varName - Variable name to use for the collection (default: 'collection')\n * @returns JavaScript code for deleting the collection\n */\nfunction generateCollectionDeletion(collectionName: string, varName: string = \"collection\"): string {\n const lines: string[] = [];\n\n lines.push(` const ${varName} = app.findCollectionByNameOrId(\"${collectionName}\");`);\n lines.push(` app.delete(${varName});`);\n\n return lines.join(\"\\n\");\n}\n\n/**\n * Generates the up migration function code\n * Applies all changes from the diff in the correct order\n *\n * @param diff - Schema diff containing all changes\n * @returns JavaScript code for up migration\n */\nexport function generateUpMigration(diff: SchemaDiff): string {\n const lines: string[] = [];\n\n // Add comment header\n lines.push(` // UP MIGRATION`);\n lines.push(``);\n\n // 1. Create new collections\n if (diff.collectionsToCreate.length > 0) {\n lines.push(` // Create new collections`);\n for (let i = 0; i < diff.collectionsToCreate.length; i++) {\n const collection = diff.collectionsToCreate[i];\n const varName = `collection_${collection.name}_create`;\n lines.push(generateCollectionCreation(collection, varName));\n lines.push(``);\n }\n }\n\n // 2. Modify existing collections\n if (diff.collectionsToModify.length > 0) {\n lines.push(` // Modify existing collections`);\n for (const modification of diff.collectionsToModify) {\n const collectionName = modification.collection;\n // Add new fields\n if (modification.fieldsToAdd.length > 0) {\n lines.push(` // Add fields to ${collectionName}`);\n for (const field of modification.fieldsToAdd) {\n const varName = `collection_${collectionName}_add_${field.name}`;\n lines.push(generateFieldAddition(collectionName, field, varName));\n lines.push(``);\n }\n }\n\n // Modify existing fields\n if (modification.fieldsToModify.length > 0) {\n lines.push(` // Modify fields in ${collectionName}`);\n for (const fieldMod of modification.fieldsToModify) {\n const varName = `collection_${collectionName}_modify_${fieldMod.fieldName}`;\n lines.push(generateFieldModification(collectionName, fieldMod, varName));\n lines.push(``);\n }\n }\n\n // Remove fields\n if (modification.fieldsToRemove.length > 0) {\n lines.push(` // Remove fields from ${collectionName}`);\n for (const field of modification.fieldsToRemove) {\n const varName = `collection_${collectionName}_remove_${field.name}`;\n lines.push(generateFieldDeletion(collectionName, field.name, varName));\n lines.push(``);\n }\n }\n\n // Add indexes\n if (modification.indexesToAdd.length > 0) {\n lines.push(` // Add indexes to ${collectionName}`);\n for (let i = 0; i < modification.indexesToAdd.length; i++) {\n const index = modification.indexesToAdd[i];\n const varName = `collection_${collectionName}_addidx_${i}`;\n lines.push(generateIndexAddition(collectionName, index, varName));\n lines.push(``);\n }\n }\n\n // Remove indexes\n if (modification.indexesToRemove.length > 0) {\n lines.push(` // Remove indexes from ${collectionName}`);\n for (let i = 0; i < modification.indexesToRemove.length; i++) {\n const index = modification.indexesToRemove[i];\n const varName = `collection_${collectionName}_rmidx_${i}`;\n lines.push(generateIndexRemoval(collectionName, index, varName));\n lines.push(``);\n }\n }\n\n // Update permissions (preferred) or rules (fallback)\n if (modification.permissionsToUpdate && modification.permissionsToUpdate.length > 0) {\n lines.push(` // Update permissions for ${collectionName}`);\n for (const permission of modification.permissionsToUpdate) {\n const varName = `collection_${collectionName}_perm_${permission.ruleType}`;\n lines.push(generatePermissionUpdate(collectionName, permission.ruleType, permission.newValue, varName));\n lines.push(``);\n }\n } else if (modification.rulesToUpdate.length > 0) {\n lines.push(` // Update rules for ${collectionName}`);\n for (const rule of modification.rulesToUpdate) {\n const varName = `collection_${collectionName}_rule_${rule.ruleType}`;\n lines.push(generateRuleUpdate(collectionName, rule.ruleType, rule.newValue, varName));\n lines.push(``);\n }\n }\n }\n }\n\n // 3. Delete collections\n if (diff.collectionsToDelete.length > 0) {\n lines.push(` // Delete collections`);\n for (let i = 0; i < diff.collectionsToDelete.length; i++) {\n const collection = diff.collectionsToDelete[i];\n const varName = `collection_${collection.name}_delete`;\n lines.push(generateCollectionDeletion(collection.name, varName));\n lines.push(``);\n }\n }\n\n // If no changes, add a comment\n if (lines.length === 2) {\n lines.push(` // No changes detected`);\n lines.push(``);\n }\n\n return lines.join(\"\\n\");\n}\n\n/**\n * Generates the down migration function code\n * Reverts all changes from the diff in reverse order\n *\n * @param diff - Schema diff containing all changes\n * @returns JavaScript code for down migration\n */\nexport function generateDownMigration(diff: SchemaDiff): string {\n const lines: string[] = [];\n\n // Add comment header\n lines.push(` // DOWN MIGRATION (ROLLBACK)`);\n lines.push(``);\n\n // Reverse order: delete -> modify -> create\n\n // 1. Recreate deleted collections\n if (diff.collectionsToDelete.length > 0) {\n lines.push(` // Recreate deleted collections`);\n for (let i = 0; i < diff.collectionsToDelete.length; i++) {\n const collection = diff.collectionsToDelete[i];\n const varName = `collection_${collection.name}_recreate`;\n lines.push(generateCollectionCreation(collection, varName));\n lines.push(``);\n }\n }\n\n // 2. Revert modifications (in reverse order)\n if (diff.collectionsToModify.length > 0) {\n lines.push(` // Revert modifications`);\n for (const modification of diff.collectionsToModify) {\n const collectionName = modification.collection;\n // Revert permissions (preferred) or rules (fallback)\n if (modification.permissionsToUpdate && modification.permissionsToUpdate.length > 0) {\n lines.push(` // Revert permissions for ${collectionName}`);\n for (const permission of modification.permissionsToUpdate) {\n const varName = `collection_${collectionName}_revert_perm_${permission.ruleType}`;\n lines.push(generatePermissionUpdate(collectionName, permission.ruleType, permission.oldValue, varName));\n lines.push(``);\n }\n } else if (modification.rulesToUpdate.length > 0) {\n lines.push(` // Revert rules for ${collectionName}`);\n for (const rule of modification.rulesToUpdate) {\n const varName = `collection_${collectionName}_revert_rule_${rule.ruleType}`;\n lines.push(generateRuleUpdate(collectionName, rule.ruleType, rule.oldValue, varName));\n lines.push(``);\n }\n }\n\n // Revert index removals (add them back)\n if (modification.indexesToRemove.length > 0) {\n lines.push(` // Restore indexes to ${collectionName}`);\n for (let i = 0; i < modification.indexesToRemove.length; i++) {\n const index = modification.indexesToRemove[i];\n const varName = `collection_${collectionName}_restore_idx_${i}`;\n lines.push(generateIndexAddition(collectionName, index, varName));\n lines.push(``);\n }\n }\n\n // Revert index additions (remove them)\n if (modification.indexesToAdd.length > 0) {\n lines.push(` // Remove indexes from ${collectionName}`);\n for (let i = 0; i < modification.indexesToAdd.length; i++) {\n const index = modification.indexesToAdd[i];\n const varName = `collection_${collectionName}_revert_idx_${i}`;\n lines.push(generateIndexRemoval(collectionName, index, varName));\n lines.push(``);\n }\n }\n\n // Revert field removals (add them back)\n if (modification.fieldsToRemove.length > 0) {\n lines.push(` // Restore fields to ${collectionName}`);\n for (const field of modification.fieldsToRemove) {\n const varName = `collection_${collectionName}_restore_${field.name}`;\n lines.push(generateFieldAddition(collectionName, field, varName));\n lines.push(``);\n }\n }\n\n // Revert field modifications\n if (modification.fieldsToModify.length > 0) {\n lines.push(` // Revert field modifications in ${collectionName}`);\n for (const fieldMod of modification.fieldsToModify) {\n // Create a reverse modification\n const reverseChanges = fieldMod.changes.map((change) => ({\n property: change.property,\n oldValue: change.newValue,\n newValue: change.oldValue,\n }));\n\n const reverseMod: FieldModification = {\n fieldName: fieldMod.fieldName,\n currentDefinition: fieldMod.newDefinition,\n newDefinition: fieldMod.currentDefinition,\n changes: reverseChanges,\n };\n\n const varName = `collection_${collectionName}_revert_${fieldMod.fieldName}`;\n lines.push(generateFieldModification(collectionName, reverseMod, varName));\n lines.push(``);\n }\n }\n\n // Revert field additions (remove them)\n if (modification.fieldsToAdd.length > 0) {\n lines.push(` // Remove added fields from ${collectionName}`);\n for (const field of modification.fieldsToAdd) {\n const varName = `collection_${collectionName}_revert_add_${field.name}`;\n lines.push(generateFieldDeletion(collectionName, field.name, varName));\n lines.push(``);\n }\n }\n }\n }\n\n // 3. Delete created collections\n if (diff.collectionsToCreate.length > 0) {\n lines.push(` // Delete created collections`);\n for (let i = 0; i < diff.collectionsToCreate.length; i++) {\n const collection = diff.collectionsToCreate[i];\n const varName = `collection_${collection.name}_rollback`;\n lines.push(generateCollectionDeletion(collection.name, varName));\n lines.push(``);\n }\n }\n\n // If no changes, add a comment\n if (lines.length === 2) {\n lines.push(` // No changes to revert`);\n lines.push(``);\n }\n\n return lines.join(\"\\n\");\n}\n\n/**\n * Main generation function\n * Generates complete migration file from schema diff\n *\n * @param diff - Schema diff containing all changes\n * @param config - Migration generator configuration\n * @returns Path to the generated migration file\n */\nexport function generate(diff: SchemaDiff, config: MigrationGeneratorConfig | string): string {\n // Support legacy string-only parameter (migration directory)\n const normalizedConfig: MigrationGeneratorConfig = typeof config === \"string\" ? { migrationDir: config } : config;\n\n try {\n const migrationDir = resolveMigrationDir(normalizedConfig);\n\n // Generate up and down migration code\n const upCode = generateUpMigration(diff);\n const downCode = generateDownMigration(diff);\n\n // Create migration file structure\n const content = createMigrationFileStructure(upCode, downCode, normalizedConfig);\n\n // Generate filename\n const filename = generateMigrationFilename(diff, normalizedConfig);\n\n // Write migration file\n const filePath = writeMigrationFile(migrationDir, filename, content);\n\n return filePath;\n } catch (error) {\n // If it's already a MigrationGenerationError or FileSystemError, re-throw it\n if (error instanceof MigrationGenerationError || error instanceof FileSystemError) {\n throw error;\n }\n\n // Otherwise, wrap it in a MigrationGenerationError\n throw new MigrationGenerationError(\n `Failed to generate migration: ${error instanceof Error ? error.message : String(error)}`,\n normalizedConfig.migrationDir,\n error as Error\n );\n }\n}\n\n/**\n * MigrationGenerator class for object-oriented usage\n * Provides a stateful interface for migration generation\n */\nexport class MigrationGenerator {\n private config: Required<MigrationGeneratorConfig>;\n\n constructor(config: MigrationGeneratorConfig) {\n this.config = mergeConfig(config);\n }\n\n /**\n * Generates a migration file from a schema diff\n */\n generate(diff: SchemaDiff): string {\n return generate(diff, this.config);\n }\n\n /**\n * Generates the up migration code without writing to file\n */\n generateUpMigration(diff: SchemaDiff): string {\n return generateUpMigration(diff);\n }\n\n /**\n * Generates the down migration code without writing to file\n */\n generateDownMigration(diff: SchemaDiff): string {\n return generateDownMigration(diff);\n }\n\n /**\n * Generates a migration filename\n */\n generateMigrationFilename(diff: SchemaDiff): string {\n return generateMigrationFilename(diff, this.config);\n }\n}\n"]}
@@ -0,0 +1,225 @@
1
+ import { f as SchemaDiff, C as CollectionSchema, F as FieldDefinition, c as FieldModification } from '../types-BbTgmg6H.cjs';
2
+ import '../permissions-ZHafVSIx.cjs';
3
+
4
+ /**
5
+ * Migration Generator component
6
+ * Creates PocketBase migration files based on detected differences
7
+ *
8
+ * This module provides a standalone, configurable migration generator that can be used
9
+ * by consumer projects to generate PocketBase-compatible migration files.
10
+ */
11
+
12
+ /**
13
+ * Configuration options for the migration generator
14
+ */
15
+ interface MigrationGeneratorConfig {
16
+ /**
17
+ * Directory to write migration files
18
+ */
19
+ migrationDir: string;
20
+ /**
21
+ * Workspace root for resolving relative paths
22
+ * Defaults to process.cwd()
23
+ */
24
+ workspaceRoot?: string;
25
+ /**
26
+ * Custom timestamp generator function
27
+ * Defaults to Unix timestamp in seconds
28
+ */
29
+ timestampGenerator?: () => string;
30
+ /**
31
+ * Custom migration file template
32
+ * Use {{UP_CODE}} and {{DOWN_CODE}} placeholders
33
+ */
34
+ template?: string;
35
+ /**
36
+ * Whether to include type reference comment
37
+ * Defaults to true
38
+ */
39
+ includeTypeReference?: boolean;
40
+ /**
41
+ * Path to types.d.ts file for reference comment
42
+ * Defaults to '../pb_data/types.d.ts'
43
+ */
44
+ typesPath?: string;
45
+ }
46
+ /**
47
+ * Generates a timestamp for migration filename
48
+ * Format: Unix timestamp in seconds (e.g., 1687801090)
49
+ *
50
+ * @param config - Optional configuration with custom timestamp generator
51
+ * @returns Timestamp string
52
+ */
53
+ declare function generateTimestamp(config?: MigrationGeneratorConfig): string;
54
+ /**
55
+ * Generates a human-readable description from the diff
56
+ * Creates a concise summary of the main changes
57
+ *
58
+ * @param diff - Schema diff containing all changes
59
+ * @returns Description string for filename
60
+ */
61
+ declare function generateMigrationDescription(diff: SchemaDiff): string;
62
+ /**
63
+ * Generates the migration filename
64
+ * Format: {timestamp}_{description}.js
65
+ *
66
+ * @param diff - Schema diff containing all changes
67
+ * @param config - Optional configuration
68
+ * @returns Migration filename
69
+ */
70
+ declare function generateMigrationFilename(diff: SchemaDiff, config?: MigrationGeneratorConfig): string;
71
+ /**
72
+ * Creates the migration file structure with up and down functions
73
+ *
74
+ * @param upCode - Code for the up migration
75
+ * @param downCode - Code for the down migration
76
+ * @param config - Optional configuration with custom template
77
+ * @returns Complete migration file content
78
+ */
79
+ declare function createMigrationFileStructure(upCode: string, downCode: string, config?: MigrationGeneratorConfig): string;
80
+ /**
81
+ * Writes migration file to the specified directory
82
+ * Creates directory if it doesn't exist
83
+ *
84
+ * @param migrationDir - Directory to write migration file
85
+ * @param filename - Migration filename
86
+ * @param content - Migration file content
87
+ * @returns Full path to the created migration file
88
+ */
89
+ declare function writeMigrationFile(migrationDir: string, filename: string, content: string): string;
90
+ /**
91
+ * Generates field definition object for collection creation
92
+ * Creates the field configuration object used in Collection constructor
93
+ *
94
+ * @param field - Field definition
95
+ * @returns Field definition object as string
96
+ */
97
+ declare function generateFieldDefinitionObject(field: FieldDefinition): string;
98
+ /**
99
+ * Generates fields array for collection creation
100
+ *
101
+ * @param fields - Array of field definitions
102
+ * @returns Fields array as string
103
+ */
104
+ declare function generateFieldsArray(fields: FieldDefinition[]): string;
105
+ /**
106
+ * Generates collection rules object
107
+ *
108
+ * @param rules - Collection rules
109
+ * @returns Rules configuration as string
110
+ */
111
+ declare function generateCollectionRules(rules?: CollectionSchema["rules"]): string;
112
+ /**
113
+ * Generates collection permissions object
114
+ * Permissions are the same as rules but extracted from schema metadata
115
+ *
116
+ * @param permissions - Collection permissions
117
+ * @returns Permissions configuration as string
118
+ */
119
+ declare function generateCollectionPermissions(permissions?: CollectionSchema["permissions"]): string;
120
+ /**
121
+ * Generates indexes array for collection creation
122
+ *
123
+ * @param indexes - Array of index definitions
124
+ * @returns Indexes array as string
125
+ */
126
+ declare function generateIndexesArray(indexes?: string[]): string;
127
+ /**
128
+ * Generates Collection constructor call for creating a new collection
129
+ *
130
+ * @param collection - Collection schema
131
+ * @param varName - Variable name to use for the collection (default: 'collection')
132
+ * @returns JavaScript code for creating the collection
133
+ */
134
+ declare function generateCollectionCreation(collection: CollectionSchema, varName?: string): string;
135
+ /**
136
+ * Generates code for adding a field to an existing collection
137
+ * Uses the appropriate Field constructor based on field type
138
+ *
139
+ * @param collectionName - Name of the collection
140
+ * @param field - Field definition to add
141
+ * @param varName - Variable name to use for the collection (default: auto-generated)
142
+ * @returns JavaScript code for adding the field
143
+ */
144
+ declare function generateFieldAddition(collectionName: string, field: FieldDefinition, varName?: string): string;
145
+ /**
146
+ * Generates code for modifying an existing field
147
+ * Updates field properties based on detected changes
148
+ *
149
+ * @param collectionName - Name of the collection
150
+ * @param modification - Field modification details
151
+ * @param varName - Variable name to use for the collection (default: auto-generated)
152
+ * @returns JavaScript code for modifying the field
153
+ */
154
+ declare function generateFieldModification(collectionName: string, modification: FieldModification, varName?: string): string;
155
+ /**
156
+ * Generates code for deleting a field from a collection
157
+ *
158
+ * @param collectionName - Name of the collection
159
+ * @param fieldName - Name of the field to delete
160
+ * @param varName - Variable name to use for the collection (default: auto-generated)
161
+ * @returns JavaScript code for deleting the field
162
+ */
163
+ declare function generateFieldDeletion(collectionName: string, fieldName: string, varName?: string): string;
164
+ /**
165
+ * Generates code for updating collection permissions
166
+ * Handles permission rule updates including manageRule for auth collections
167
+ *
168
+ * @param collectionName - Name of the collection
169
+ * @param ruleType - Type of permission rule to update
170
+ * @param newValue - New permission rule value
171
+ * @param varName - Variable name to use for the collection (default: auto-generated)
172
+ * @returns JavaScript code for updating the permission
173
+ */
174
+ declare function generatePermissionUpdate(collectionName: string, ruleType: string, newValue: string | null, varName?: string): string;
175
+ /**
176
+ * Generates the up migration function code
177
+ * Applies all changes from the diff in the correct order
178
+ *
179
+ * @param diff - Schema diff containing all changes
180
+ * @returns JavaScript code for up migration
181
+ */
182
+ declare function generateUpMigration(diff: SchemaDiff): string;
183
+ /**
184
+ * Generates the down migration function code
185
+ * Reverts all changes from the diff in reverse order
186
+ *
187
+ * @param diff - Schema diff containing all changes
188
+ * @returns JavaScript code for down migration
189
+ */
190
+ declare function generateDownMigration(diff: SchemaDiff): string;
191
+ /**
192
+ * Main generation function
193
+ * Generates complete migration file from schema diff
194
+ *
195
+ * @param diff - Schema diff containing all changes
196
+ * @param config - Migration generator configuration
197
+ * @returns Path to the generated migration file
198
+ */
199
+ declare function generate(diff: SchemaDiff, config: MigrationGeneratorConfig | string): string;
200
+ /**
201
+ * MigrationGenerator class for object-oriented usage
202
+ * Provides a stateful interface for migration generation
203
+ */
204
+ declare class MigrationGenerator {
205
+ private config;
206
+ constructor(config: MigrationGeneratorConfig);
207
+ /**
208
+ * Generates a migration file from a schema diff
209
+ */
210
+ generate(diff: SchemaDiff): string;
211
+ /**
212
+ * Generates the up migration code without writing to file
213
+ */
214
+ generateUpMigration(diff: SchemaDiff): string;
215
+ /**
216
+ * Generates the down migration code without writing to file
217
+ */
218
+ generateDownMigration(diff: SchemaDiff): string;
219
+ /**
220
+ * Generates a migration filename
221
+ */
222
+ generateMigrationFilename(diff: SchemaDiff): string;
223
+ }
224
+
225
+ export { MigrationGenerator, type MigrationGeneratorConfig, createMigrationFileStructure, generate, generateCollectionCreation, generateCollectionPermissions, generateCollectionRules, generateDownMigration, generateFieldAddition, generateFieldDefinitionObject, generateFieldDeletion, generateFieldModification, generateFieldsArray, generateIndexesArray, generateMigrationDescription, generateMigrationFilename, generatePermissionUpdate, generateTimestamp, generateUpMigration, writeMigrationFile };
@@ -0,0 +1,225 @@
1
+ import { f as SchemaDiff, C as CollectionSchema, F as FieldDefinition, c as FieldModification } from '../types-z1Dkjg8m.js';
2
+ import '../permissions-ZHafVSIx.js';
3
+
4
+ /**
5
+ * Migration Generator component
6
+ * Creates PocketBase migration files based on detected differences
7
+ *
8
+ * This module provides a standalone, configurable migration generator that can be used
9
+ * by consumer projects to generate PocketBase-compatible migration files.
10
+ */
11
+
12
+ /**
13
+ * Configuration options for the migration generator
14
+ */
15
+ interface MigrationGeneratorConfig {
16
+ /**
17
+ * Directory to write migration files
18
+ */
19
+ migrationDir: string;
20
+ /**
21
+ * Workspace root for resolving relative paths
22
+ * Defaults to process.cwd()
23
+ */
24
+ workspaceRoot?: string;
25
+ /**
26
+ * Custom timestamp generator function
27
+ * Defaults to Unix timestamp in seconds
28
+ */
29
+ timestampGenerator?: () => string;
30
+ /**
31
+ * Custom migration file template
32
+ * Use {{UP_CODE}} and {{DOWN_CODE}} placeholders
33
+ */
34
+ template?: string;
35
+ /**
36
+ * Whether to include type reference comment
37
+ * Defaults to true
38
+ */
39
+ includeTypeReference?: boolean;
40
+ /**
41
+ * Path to types.d.ts file for reference comment
42
+ * Defaults to '../pb_data/types.d.ts'
43
+ */
44
+ typesPath?: string;
45
+ }
46
+ /**
47
+ * Generates a timestamp for migration filename
48
+ * Format: Unix timestamp in seconds (e.g., 1687801090)
49
+ *
50
+ * @param config - Optional configuration with custom timestamp generator
51
+ * @returns Timestamp string
52
+ */
53
+ declare function generateTimestamp(config?: MigrationGeneratorConfig): string;
54
+ /**
55
+ * Generates a human-readable description from the diff
56
+ * Creates a concise summary of the main changes
57
+ *
58
+ * @param diff - Schema diff containing all changes
59
+ * @returns Description string for filename
60
+ */
61
+ declare function generateMigrationDescription(diff: SchemaDiff): string;
62
+ /**
63
+ * Generates the migration filename
64
+ * Format: {timestamp}_{description}.js
65
+ *
66
+ * @param diff - Schema diff containing all changes
67
+ * @param config - Optional configuration
68
+ * @returns Migration filename
69
+ */
70
+ declare function generateMigrationFilename(diff: SchemaDiff, config?: MigrationGeneratorConfig): string;
71
+ /**
72
+ * Creates the migration file structure with up and down functions
73
+ *
74
+ * @param upCode - Code for the up migration
75
+ * @param downCode - Code for the down migration
76
+ * @param config - Optional configuration with custom template
77
+ * @returns Complete migration file content
78
+ */
79
+ declare function createMigrationFileStructure(upCode: string, downCode: string, config?: MigrationGeneratorConfig): string;
80
+ /**
81
+ * Writes migration file to the specified directory
82
+ * Creates directory if it doesn't exist
83
+ *
84
+ * @param migrationDir - Directory to write migration file
85
+ * @param filename - Migration filename
86
+ * @param content - Migration file content
87
+ * @returns Full path to the created migration file
88
+ */
89
+ declare function writeMigrationFile(migrationDir: string, filename: string, content: string): string;
90
+ /**
91
+ * Generates field definition object for collection creation
92
+ * Creates the field configuration object used in Collection constructor
93
+ *
94
+ * @param field - Field definition
95
+ * @returns Field definition object as string
96
+ */
97
+ declare function generateFieldDefinitionObject(field: FieldDefinition): string;
98
+ /**
99
+ * Generates fields array for collection creation
100
+ *
101
+ * @param fields - Array of field definitions
102
+ * @returns Fields array as string
103
+ */
104
+ declare function generateFieldsArray(fields: FieldDefinition[]): string;
105
+ /**
106
+ * Generates collection rules object
107
+ *
108
+ * @param rules - Collection rules
109
+ * @returns Rules configuration as string
110
+ */
111
+ declare function generateCollectionRules(rules?: CollectionSchema["rules"]): string;
112
+ /**
113
+ * Generates collection permissions object
114
+ * Permissions are the same as rules but extracted from schema metadata
115
+ *
116
+ * @param permissions - Collection permissions
117
+ * @returns Permissions configuration as string
118
+ */
119
+ declare function generateCollectionPermissions(permissions?: CollectionSchema["permissions"]): string;
120
+ /**
121
+ * Generates indexes array for collection creation
122
+ *
123
+ * @param indexes - Array of index definitions
124
+ * @returns Indexes array as string
125
+ */
126
+ declare function generateIndexesArray(indexes?: string[]): string;
127
+ /**
128
+ * Generates Collection constructor call for creating a new collection
129
+ *
130
+ * @param collection - Collection schema
131
+ * @param varName - Variable name to use for the collection (default: 'collection')
132
+ * @returns JavaScript code for creating the collection
133
+ */
134
+ declare function generateCollectionCreation(collection: CollectionSchema, varName?: string): string;
135
+ /**
136
+ * Generates code for adding a field to an existing collection
137
+ * Uses the appropriate Field constructor based on field type
138
+ *
139
+ * @param collectionName - Name of the collection
140
+ * @param field - Field definition to add
141
+ * @param varName - Variable name to use for the collection (default: auto-generated)
142
+ * @returns JavaScript code for adding the field
143
+ */
144
+ declare function generateFieldAddition(collectionName: string, field: FieldDefinition, varName?: string): string;
145
+ /**
146
+ * Generates code for modifying an existing field
147
+ * Updates field properties based on detected changes
148
+ *
149
+ * @param collectionName - Name of the collection
150
+ * @param modification - Field modification details
151
+ * @param varName - Variable name to use for the collection (default: auto-generated)
152
+ * @returns JavaScript code for modifying the field
153
+ */
154
+ declare function generateFieldModification(collectionName: string, modification: FieldModification, varName?: string): string;
155
+ /**
156
+ * Generates code for deleting a field from a collection
157
+ *
158
+ * @param collectionName - Name of the collection
159
+ * @param fieldName - Name of the field to delete
160
+ * @param varName - Variable name to use for the collection (default: auto-generated)
161
+ * @returns JavaScript code for deleting the field
162
+ */
163
+ declare function generateFieldDeletion(collectionName: string, fieldName: string, varName?: string): string;
164
+ /**
165
+ * Generates code for updating collection permissions
166
+ * Handles permission rule updates including manageRule for auth collections
167
+ *
168
+ * @param collectionName - Name of the collection
169
+ * @param ruleType - Type of permission rule to update
170
+ * @param newValue - New permission rule value
171
+ * @param varName - Variable name to use for the collection (default: auto-generated)
172
+ * @returns JavaScript code for updating the permission
173
+ */
174
+ declare function generatePermissionUpdate(collectionName: string, ruleType: string, newValue: string | null, varName?: string): string;
175
+ /**
176
+ * Generates the up migration function code
177
+ * Applies all changes from the diff in the correct order
178
+ *
179
+ * @param diff - Schema diff containing all changes
180
+ * @returns JavaScript code for up migration
181
+ */
182
+ declare function generateUpMigration(diff: SchemaDiff): string;
183
+ /**
184
+ * Generates the down migration function code
185
+ * Reverts all changes from the diff in reverse order
186
+ *
187
+ * @param diff - Schema diff containing all changes
188
+ * @returns JavaScript code for down migration
189
+ */
190
+ declare function generateDownMigration(diff: SchemaDiff): string;
191
+ /**
192
+ * Main generation function
193
+ * Generates complete migration file from schema diff
194
+ *
195
+ * @param diff - Schema diff containing all changes
196
+ * @param config - Migration generator configuration
197
+ * @returns Path to the generated migration file
198
+ */
199
+ declare function generate(diff: SchemaDiff, config: MigrationGeneratorConfig | string): string;
200
+ /**
201
+ * MigrationGenerator class for object-oriented usage
202
+ * Provides a stateful interface for migration generation
203
+ */
204
+ declare class MigrationGenerator {
205
+ private config;
206
+ constructor(config: MigrationGeneratorConfig);
207
+ /**
208
+ * Generates a migration file from a schema diff
209
+ */
210
+ generate(diff: SchemaDiff): string;
211
+ /**
212
+ * Generates the up migration code without writing to file
213
+ */
214
+ generateUpMigration(diff: SchemaDiff): string;
215
+ /**
216
+ * Generates the down migration code without writing to file
217
+ */
218
+ generateDownMigration(diff: SchemaDiff): string;
219
+ /**
220
+ * Generates a migration filename
221
+ */
222
+ generateMigrationFilename(diff: SchemaDiff): string;
223
+ }
224
+
225
+ export { MigrationGenerator, type MigrationGeneratorConfig, createMigrationFileStructure, generate, generateCollectionCreation, generateCollectionPermissions, generateCollectionRules, generateDownMigration, generateFieldAddition, generateFieldDefinitionObject, generateFieldDeletion, generateFieldModification, generateFieldsArray, generateIndexesArray, generateMigrationDescription, generateMigrationFilename, generatePermissionUpdate, generateTimestamp, generateUpMigration, writeMigrationFile };