@t1mmen/srtd
Version:
Supabase Repeatable Template Definitions (srtd): 🪄 Live-reloading SQL templates for Supabase DX. Make your database changes reviewable and migrations maintainable! 🚀
43 lines • 1.57 kB
JavaScript
/**
* Interpolation utility for migration filename templates
* Supports $timestamp, $migrationName, and $prefix variables
*/
/**
* Interpolate a migration filename template with the provided values.
*
* Supported variables:
* - $timestamp: The migration timestamp
* - $migrationName: The template name (or 'bundle' for bundled migrations)
* - $prefix: The migration prefix with trailing dash (empty if no prefix)
*
* @example
* // Default pattern (backward compatible)
* interpolateMigrationFilename({
* template: '$timestamp_$prefix$migrationName.sql',
* timestamp: '20240101123456',
* migrationName: 'create_users',
* prefix: 'srtd'
* });
* // Returns: '20240101123456_srtd-create_users.sql'
*
* @example
* // Directory-based pattern (Issue #41)
* interpolateMigrationFilename({
* template: '$migrationName/migrate.sql',
* timestamp: '20240101123456',
* migrationName: 'create_users',
* prefix: 'srtd'
* });
* // Returns: 'create_users/migrate.sql'
*/
export function interpolateMigrationFilename(options) {
const { template, timestamp, migrationName, prefix } = options;
// Prefix gets a trailing dash when it exists, empty string otherwise
const prefixValue = prefix ? `${prefix}-` : '';
// Use replacer functions to prevent special replacement patterns (e.g., $&, $`)
return template
.replace(/\$timestamp/g, () => timestamp)
.replace(/\$migrationName/g, () => migrationName)
.replace(/\$prefix/g, () => prefixValue);
}
//# sourceMappingURL=interpolateMigrationFilename.js.map