@breadstone-infrastructure/prisma-seeds 0.0.231

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 (252) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/LICENSE +21 -0
  3. package/README.md +284 -0
  4. package/ai/AISeedGenerator.d.ts +127 -0
  5. package/ai/AISeedGenerator.d.ts.map +1 -0
  6. package/ai/AISeedGenerator.js +438 -0
  7. package/ai/AISeedGenerator.js.map +1 -0
  8. package/ai/AISeedTypes.d.ts +138 -0
  9. package/ai/AISeedTypes.d.ts.map +1 -0
  10. package/ai/AISeedTypes.js +3 -0
  11. package/ai/AISeedTypes.js.map +1 -0
  12. package/ai/PrismaModelAnalyzer.d.ts +36 -0
  13. package/ai/PrismaModelAnalyzer.d.ts.map +1 -0
  14. package/ai/PrismaModelAnalyzer.js +110 -0
  15. package/ai/PrismaModelAnalyzer.js.map +1 -0
  16. package/ai/PrismaTypeSchemaGenerator.d.ts +38 -0
  17. package/ai/PrismaTypeSchemaGenerator.d.ts.map +1 -0
  18. package/ai/PrismaTypeSchemaGenerator.js +71 -0
  19. package/ai/PrismaTypeSchemaGenerator.js.map +1 -0
  20. package/ai/createAISeeder.d.ts +11 -0
  21. package/ai/createAISeeder.d.ts.map +1 -0
  22. package/ai/createAISeeder.js +72 -0
  23. package/ai/createAISeeder.js.map +1 -0
  24. package/ai/index.d.ts +6 -0
  25. package/ai/index.d.ts.map +1 -0
  26. package/ai/index.js +5 -0
  27. package/ai/index.js.map +1 -0
  28. package/assets/AssetManager.d.ts +213 -0
  29. package/assets/AssetManager.d.ts.map +1 -0
  30. package/assets/AssetManager.js +460 -0
  31. package/assets/AssetManager.js.map +1 -0
  32. package/assets/IImageTransformOptions.d.ts +42 -0
  33. package/assets/IImageTransformOptions.d.ts.map +1 -0
  34. package/assets/IImageTransformOptions.js +22 -0
  35. package/assets/IImageTransformOptions.js.map +1 -0
  36. package/assets/adapters/BlobAdapterFactory.d.ts +21 -0
  37. package/assets/adapters/BlobAdapterFactory.d.ts.map +1 -0
  38. package/assets/adapters/BlobAdapterFactory.js +3 -0
  39. package/assets/adapters/BlobAdapterFactory.js.map +1 -0
  40. package/assets/adapters/CloudflareR2BlobAdapter.d.ts +97 -0
  41. package/assets/adapters/CloudflareR2BlobAdapter.d.ts.map +1 -0
  42. package/assets/adapters/CloudflareR2BlobAdapter.js +265 -0
  43. package/assets/adapters/CloudflareR2BlobAdapter.js.map +1 -0
  44. package/assets/adapters/EmptyBlobAdapter.d.ts +42 -0
  45. package/assets/adapters/EmptyBlobAdapter.d.ts.map +1 -0
  46. package/assets/adapters/EmptyBlobAdapter.js +65 -0
  47. package/assets/adapters/EmptyBlobAdapter.js.map +1 -0
  48. package/assets/adapters/LocalFileAdapter.d.ts +34 -0
  49. package/assets/adapters/LocalFileAdapter.d.ts.map +1 -0
  50. package/assets/adapters/LocalFileAdapter.js +74 -0
  51. package/assets/adapters/LocalFileAdapter.js.map +1 -0
  52. package/assets/adapters/VercelBlobAdapter.d.ts +73 -0
  53. package/assets/adapters/VercelBlobAdapter.d.ts.map +1 -0
  54. package/assets/adapters/VercelBlobAdapter.js +168 -0
  55. package/assets/adapters/VercelBlobAdapter.js.map +1 -0
  56. package/assets/adapters/abstracts/BlobAdapterBase.d.ts +62 -0
  57. package/assets/adapters/abstracts/BlobAdapterBase.d.ts.map +1 -0
  58. package/assets/adapters/abstracts/BlobAdapterBase.js +58 -0
  59. package/assets/adapters/abstracts/BlobAdapterBase.js.map +1 -0
  60. package/assets/adapters/abstracts/HttpBlobAdapterBase.d.ts +43 -0
  61. package/assets/adapters/abstracts/HttpBlobAdapterBase.d.ts.map +1 -0
  62. package/assets/adapters/abstracts/HttpBlobAdapterBase.js +88 -0
  63. package/assets/adapters/abstracts/HttpBlobAdapterBase.js.map +1 -0
  64. package/assets/adapters/createBlobAdapter.d.ts +47 -0
  65. package/assets/adapters/createBlobAdapter.d.ts.map +1 -0
  66. package/assets/adapters/createBlobAdapter.js +63 -0
  67. package/assets/adapters/createBlobAdapter.js.map +1 -0
  68. package/assets/adapters/index.d.ts +11 -0
  69. package/assets/adapters/index.d.ts.map +1 -0
  70. package/assets/adapters/index.js +7 -0
  71. package/assets/adapters/index.js.map +1 -0
  72. package/assets/adapters/interfaces/IBlobAdapter.d.ts +41 -0
  73. package/assets/adapters/interfaces/IBlobAdapter.d.ts.map +1 -0
  74. package/assets/adapters/interfaces/IBlobAdapter.js +3 -0
  75. package/assets/adapters/interfaces/IBlobAdapter.js.map +1 -0
  76. package/assets/adapters/interfaces/IBlobAdapterConfig.d.ts +16 -0
  77. package/assets/adapters/interfaces/IBlobAdapterConfig.d.ts.map +1 -0
  78. package/assets/adapters/interfaces/IBlobAdapterConfig.js +2 -0
  79. package/assets/adapters/interfaces/IBlobAdapterConfig.js.map +1 -0
  80. package/assets/adapters/interfaces/IBlobUploadResult.d.ts +24 -0
  81. package/assets/adapters/interfaces/IBlobUploadResult.d.ts.map +1 -0
  82. package/assets/adapters/interfaces/IBlobUploadResult.js +2 -0
  83. package/assets/adapters/interfaces/IBlobUploadResult.js.map +1 -0
  84. package/base/BaseSeeder.d.ts +21 -0
  85. package/base/BaseSeeder.d.ts.map +1 -0
  86. package/base/BaseSeeder.js +45 -0
  87. package/base/BaseSeeder.js.map +1 -0
  88. package/base/functionalSeeder.d.ts +31 -0
  89. package/base/functionalSeeder.d.ts.map +1 -0
  90. package/base/functionalSeeder.js +33 -0
  91. package/base/functionalSeeder.js.map +1 -0
  92. package/cli/Cli.d.ts +2 -0
  93. package/cli/Cli.d.ts.map +1 -0
  94. package/cli/Cli.js +32 -0
  95. package/cli/Cli.js.map +1 -0
  96. package/cli/CliArgs.d.ts +2 -0
  97. package/cli/CliArgs.d.ts.map +1 -0
  98. package/cli/CliArgs.js +133 -0
  99. package/cli/CliArgs.js.map +1 -0
  100. package/cli/CliArgsConfig.d.ts +2 -0
  101. package/cli/CliArgsConfig.d.ts.map +1 -0
  102. package/cli/CliArgsConfig.js +15 -0
  103. package/cli/CliArgsConfig.js.map +1 -0
  104. package/cli/CliRun.d.ts +2 -0
  105. package/cli/CliRun.d.ts.map +1 -0
  106. package/cli/CliRun.js +34 -0
  107. package/cli/CliRun.js.map +1 -0
  108. package/cli/commands/SeedCommand.d.ts +2 -0
  109. package/cli/commands/SeedCommand.d.ts.map +1 -0
  110. package/cli/commands/SeedCommand.js +73 -0
  111. package/cli/commands/SeedCommand.js.map +1 -0
  112. package/cli/commands/SeedCommandArgsConfig.d.ts +2 -0
  113. package/cli/commands/SeedCommandArgsConfig.d.ts.map +1 -0
  114. package/cli/commands/SeedCommandArgsConfig.js +31 -0
  115. package/cli/commands/SeedCommandArgsConfig.js.map +1 -0
  116. package/cli/seed.d.ts +2 -0
  117. package/cli/seed.d.ts.map +1 -0
  118. package/cli/seed.js +42 -0
  119. package/cli/seed.js.map +1 -0
  120. package/config/IAssetConfig.d.ts +36 -0
  121. package/config/IAssetConfig.d.ts.map +1 -0
  122. package/config/IAssetConfig.js +3 -0
  123. package/config/IAssetConfig.js.map +1 -0
  124. package/config/IComposedSeedConfig.d.ts +32 -0
  125. package/config/IComposedSeedConfig.d.ts.map +1 -0
  126. package/config/IComposedSeedConfig.js +3 -0
  127. package/config/IComposedSeedConfig.js.map +1 -0
  128. package/config/ISeedConfig.d.ts +75 -0
  129. package/config/ISeedConfig.d.ts.map +1 -0
  130. package/config/ISeedConfig.js +3 -0
  131. package/config/ISeedConfig.js.map +1 -0
  132. package/config/ISeedContext.d.ts +92 -0
  133. package/config/ISeedContext.d.ts.map +1 -0
  134. package/config/ISeedContext.js +3 -0
  135. package/config/ISeedContext.js.map +1 -0
  136. package/config/ISeedDefinition.d.ts +38 -0
  137. package/config/ISeedDefinition.d.ts.map +1 -0
  138. package/config/ISeedDefinition.js +3 -0
  139. package/config/ISeedDefinition.js.map +1 -0
  140. package/config/ISeedFactory.d.ts +15 -0
  141. package/config/ISeedFactory.d.ts.map +1 -0
  142. package/config/ISeedFactory.js +3 -0
  143. package/config/ISeedFactory.js.map +1 -0
  144. package/config/ISeedOptions.d.ts +44 -0
  145. package/config/ISeedOptions.d.ts.map +1 -0
  146. package/config/ISeedOptions.js +2 -0
  147. package/config/ISeedOptions.js.map +1 -0
  148. package/config/ISeedResult.d.ts +44 -0
  149. package/config/ISeedResult.d.ts.map +1 -0
  150. package/config/ISeedResult.js +2 -0
  151. package/config/ISeedResult.js.map +1 -0
  152. package/config/ISeeder.d.ts +37 -0
  153. package/config/ISeeder.d.ts.map +1 -0
  154. package/config/ISeeder.js +3 -0
  155. package/config/ISeeder.js.map +1 -0
  156. package/config/createAdapter.d.ts +13 -0
  157. package/config/createAdapter.d.ts.map +1 -0
  158. package/config/createAdapter.js +16 -0
  159. package/config/createAdapter.js.map +1 -0
  160. package/config/createSeed.d.ts +6 -0
  161. package/config/createSeed.d.ts.map +1 -0
  162. package/config/createSeed.js +16 -0
  163. package/config/createSeed.js.map +1 -0
  164. package/config/defineConfig.d.ts +27 -0
  165. package/config/defineConfig.d.ts.map +1 -0
  166. package/config/defineConfig.js +35 -0
  167. package/config/defineConfig.js.map +1 -0
  168. package/discovery/SeedConfigDiscovery.d.ts +16 -0
  169. package/discovery/SeedConfigDiscovery.d.ts.map +1 -0
  170. package/discovery/SeedConfigDiscovery.js +137 -0
  171. package/discovery/SeedConfigDiscovery.js.map +1 -0
  172. package/index.d.ts +32 -0
  173. package/index.d.ts.map +1 -0
  174. package/index.js +32 -0
  175. package/index.js.map +1 -0
  176. package/json/JsonReferenceResolver.d.ts +23 -0
  177. package/json/JsonReferenceResolver.d.ts.map +1 -0
  178. package/json/JsonReferenceResolver.js +99 -0
  179. package/json/JsonReferenceResolver.js.map +1 -0
  180. package/json/JsonSchemaValidator.d.ts +23 -0
  181. package/json/JsonSchemaValidator.d.ts.map +1 -0
  182. package/json/JsonSchemaValidator.js +98 -0
  183. package/json/JsonSchemaValidator.js.map +1 -0
  184. package/json/JsonSeedLoader.d.ts +33 -0
  185. package/json/JsonSeedLoader.d.ts.map +1 -0
  186. package/json/JsonSeedLoader.js +176 -0
  187. package/json/JsonSeedLoader.js.map +1 -0
  188. package/json/JsonSeedTypes.d.ts +204 -0
  189. package/json/JsonSeedTypes.d.ts.map +1 -0
  190. package/json/JsonSeedTypes.js +3 -0
  191. package/json/JsonSeedTypes.js.map +1 -0
  192. package/json/createJsonSeeder.d.ts +13 -0
  193. package/json/createJsonSeeder.d.ts.map +1 -0
  194. package/json/createJsonSeeder.js +240 -0
  195. package/json/createJsonSeeder.js.map +1 -0
  196. package/json/index.d.ts +6 -0
  197. package/json/index.d.ts.map +1 -0
  198. package/json/index.js +7 -0
  199. package/json/index.js.map +1 -0
  200. package/logging/ISeedLogger.d.ts +55 -0
  201. package/logging/ISeedLogger.d.ts.map +1 -0
  202. package/logging/ISeedLogger.js +3 -0
  203. package/logging/ISeedLogger.js.map +1 -0
  204. package/logging/LogLevel.d.ts +30 -0
  205. package/logging/LogLevel.d.ts.map +1 -0
  206. package/logging/LogLevel.js +37 -0
  207. package/logging/LogLevel.js.map +1 -0
  208. package/logging/SeedLogger.d.ts +24 -0
  209. package/logging/SeedLogger.d.ts.map +1 -0
  210. package/logging/SeedLogger.js +94 -0
  211. package/logging/SeedLogger.js.map +1 -0
  212. package/orchestration/SeedOrchestrator.d.ts +30 -0
  213. package/orchestration/SeedOrchestrator.d.ts.map +1 -0
  214. package/orchestration/SeedOrchestrator.js +262 -0
  215. package/orchestration/SeedOrchestrator.js.map +1 -0
  216. package/package.json +27 -0
  217. package/resolvers/EntityResolver.d.ts +43 -0
  218. package/resolvers/EntityResolver.d.ts.map +1 -0
  219. package/resolvers/EntityResolver.js +95 -0
  220. package/resolvers/EntityResolver.js.map +1 -0
  221. package/utils/AssetReferenceResolver.d.ts +49 -0
  222. package/utils/AssetReferenceResolver.d.ts.map +1 -0
  223. package/utils/AssetReferenceResolver.js +62 -0
  224. package/utils/AssetReferenceResolver.js.map +1 -0
  225. package/utils/EntityLookupCache.d.ts +47 -0
  226. package/utils/EntityLookupCache.d.ts.map +1 -0
  227. package/utils/EntityLookupCache.js +64 -0
  228. package/utils/EntityLookupCache.js.map +1 -0
  229. package/utils/ISeedRandom.d.ts +70 -0
  230. package/utils/ISeedRandom.d.ts.map +1 -0
  231. package/utils/ISeedRandom.js +3 -0
  232. package/utils/ISeedRandom.js.map +1 -0
  233. package/utils/LocalizationToolkit.d.ts +125 -0
  234. package/utils/LocalizationToolkit.d.ts.map +1 -0
  235. package/utils/LocalizationToolkit.js +131 -0
  236. package/utils/LocalizationToolkit.js.map +1 -0
  237. package/utils/SeededRandom.d.ts +15 -0
  238. package/utils/SeededRandom.d.ts.map +1 -0
  239. package/utils/SeededRandom.js +56 -0
  240. package/utils/SeededRandom.js.map +1 -0
  241. package/utils/StringArrayToolkit.d.ts +25 -0
  242. package/utils/StringArrayToolkit.d.ts.map +1 -0
  243. package/utils/StringArrayToolkit.js +56 -0
  244. package/utils/StringArrayToolkit.js.map +1 -0
  245. package/utils/StringValueGuard.d.ts +24 -0
  246. package/utils/StringValueGuard.d.ts.map +1 -0
  247. package/utils/StringValueGuard.js +46 -0
  248. package/utils/StringValueGuard.js.map +1 -0
  249. package/utils/WarningCollector.d.ts +40 -0
  250. package/utils/WarningCollector.d.ts.map +1 -0
  251. package/utils/WarningCollector.js +83 -0
  252. package/utils/WarningCollector.js.map +1 -0
@@ -0,0 +1,460 @@
1
+ // #region Imports
2
+ import { promises as fs } from 'fs';
3
+ import { join, resolve, extname, basename } from 'path';
4
+ import sharp from 'sharp';
5
+ import { bold } from '@breadstone-infrastructure/utilities';
6
+ import { ImageResizeFitValues, ImageOutputFormats } from './IImageTransformOptions.js';
7
+ // #endregion
8
+ // #region Types
9
+ export const AssetImageTransformMatchKinds = {
10
+ Exact: 'exact',
11
+ Prefix: 'prefix',
12
+ Extension: 'extension'
13
+ };
14
+ // #endregion
15
+ /**
16
+ * Manages asset discovery, upload, and URL generation for seed operations.
17
+ *
18
+ * @public
19
+ */
20
+ export class AssetManager {
21
+ // #region Fields
22
+ _options;
23
+ _logger;
24
+ _discoveredAssets = new Map();
25
+ _uploadedAssets = new Map(); // key -> url
26
+ static _validResizeFits = new Set(Object.values(ImageResizeFitValues));
27
+ static _formatContentTypeMap = {
28
+ [ImageOutputFormats.Avif]: 'image/avif',
29
+ [ImageOutputFormats.Jpeg]: 'image/jpeg',
30
+ jpg: 'image/jpeg',
31
+ [ImageOutputFormats.Png]: 'image/png',
32
+ [ImageOutputFormats.Webp]: 'image/webp',
33
+ gif: 'image/gif'
34
+ };
35
+ // #endregion
36
+ // #region Ctor
37
+ /**
38
+ * Constructs a new instance of the AssetManager class.
39
+ *
40
+ * @public
41
+ */
42
+ constructor(logger, options = {}) {
43
+ this._logger = logger;
44
+ this._options = {
45
+ assetsDir: options.assetsDir ?? '.seed/assets',
46
+ uploadToBlob: options.uploadToBlob ?? true,
47
+ blobAdapter: options.blobAdapter ?? null,
48
+ imageTransforms: options.imageTransforms
49
+ };
50
+ }
51
+ // #endregion
52
+ // #region Methods
53
+ /**
54
+ * Reconfigures the blob adapter for this AssetManager instance.
55
+ * This allows switching adapters between different feature asset processing runs.
56
+ *
57
+ * @public
58
+ * @param blobAdapter The new blob adapter to use
59
+ */
60
+ reconfigureBlobAdapter(blobAdapter) {
61
+ this._options.blobAdapter = blobAdapter;
62
+ }
63
+ /**
64
+ * Discovers all assets in the configured assets directory.
65
+ *
66
+ * @public
67
+ * @param seedConfigPath Path to the seed configuration file (for resolving assets directory)
68
+ * @returns Promise that resolves when discovery is complete
69
+ */
70
+ async discoverAssets(seedConfigPath) {
71
+ const configDir = resolve(seedConfigPath, '..');
72
+ const assetsDir = join(configDir, this._options.assetsDir);
73
+ try {
74
+ await fs.access(assetsDir);
75
+ }
76
+ catch {
77
+ this._logger.warn(`Assets directory not found: ${assetsDir}`);
78
+ return;
79
+ }
80
+ await this._discoverAssetsRecursive(assetsDir, assetsDir);
81
+ this._logger.summary(`Discovered ${bold(this._discoveredAssets.size.toString())} asset${this._discoveredAssets.size === 1 ? '' : 's'} in ${bold(assetsDir)} (provider: ${bold(this._options.blobAdapter?.name ?? 'none')})`);
82
+ }
83
+ /**
84
+ * Gets asset information by relative path.
85
+ *
86
+ * @public
87
+ * @param relativePath The relative path of the asset
88
+ * @returns The asset information or undefined if not found
89
+ */
90
+ getAssetInfo(relativePath) {
91
+ return this._discoveredAssets.get(relativePath);
92
+ }
93
+ /**
94
+ * Gets the URL for an uploaded asset by key.
95
+ *
96
+ * @public
97
+ * @param key The asset key
98
+ * @returns The asset URL or undefined if not found
99
+ */
100
+ getAsset(key) {
101
+ const url = this._uploadedAssets.get(key);
102
+ if (!url) {
103
+ this._logger.warn(`Asset not found for key: ${key}`);
104
+ }
105
+ return url;
106
+ }
107
+ /**
108
+ * Resolves an asset URL by its key. Alias for getAsset().
109
+ * Automatically strips @asset: prefix if present.
110
+ *
111
+ * @public
112
+ * @param key The asset key (with or without @asset: prefix)
113
+ * @returns The asset URL or undefined if not found
114
+ */
115
+ resolve(key) {
116
+ if (!key) {
117
+ return undefined;
118
+ }
119
+ // Strip @asset: prefix if present
120
+ const normalizedKey = key.startsWith('@asset:') ? key.slice(7) : key;
121
+ return this.getAsset(normalizedKey);
122
+ }
123
+ /**
124
+ * Gets all assets in a specific subdirectory.
125
+ *
126
+ * @public
127
+ * @param subDir The subdirectory to filter assets by
128
+ * @returns Assets within the specified subdirectory
129
+ */
130
+ getAssetsInDirectory(subDir) {
131
+ const normalizedSubDir = subDir.replace(/\\/g, '/');
132
+ return Array.from(this._discoveredAssets.values())
133
+ .filter((asset) => asset.relativePath.startsWith(normalizedSubDir));
134
+ }
135
+ /**
136
+ * Gets all discovered assets.
137
+ *
138
+ * @public
139
+ * @returns All discovered assets
140
+ */
141
+ getAllAssets() {
142
+ return Array.from(this._discoveredAssets.values());
143
+ }
144
+ /**
145
+ * Uploads assets to blob storage.
146
+ *
147
+ * @public
148
+ * @param assets The assets to upload
149
+ * @returns The upload results
150
+ */
151
+ async uploadAssets(assets) {
152
+ if (!this._options.blobAdapter || !this._options.uploadToBlob) {
153
+ this._logger.warn('No blob adapter configured or upload disabled, skipping asset upload');
154
+ return [];
155
+ }
156
+ const results = [];
157
+ let successCount = 0;
158
+ let failCount = 0;
159
+ this._logger.startGroup(`Uploading ${assets.length} asset${assets.length === 1 ? '' : 's'}`);
160
+ for (const asset of assets) {
161
+ try {
162
+ const originalBuffer = await fs.readFile(asset.absolutePath);
163
+ const optimized = await this._optimizeAssetBuffer(asset, originalBuffer);
164
+ const uploadBuffer = optimized?.buffer ?? originalBuffer;
165
+ const uploadMimeType = optimized?.mimeType ?? asset.mimeType;
166
+ const uploadResult = await this._options.blobAdapter.upload(asset.relativePath, uploadBuffer, uploadMimeType);
167
+ results.push({
168
+ asset: asset,
169
+ key: uploadResult.key,
170
+ url: uploadResult.url,
171
+ metadata: {
172
+ size: uploadResult.size ?? uploadBuffer.byteLength,
173
+ contentType: uploadResult.metadata['contentType'] || uploadMimeType
174
+ }
175
+ });
176
+ successCount++;
177
+ }
178
+ catch (error) {
179
+ failCount++;
180
+ this._logger.error(`Failed to upload ${asset.relativePath}: ${error}`);
181
+ }
182
+ }
183
+ this._logger.summary(`${successCount} uploaded, ${failCount} failed`);
184
+ this._logger.endGroup();
185
+ return results;
186
+ }
187
+ /**
188
+ * Processes asset file mappings - discovers and uploads assets based on configuration.
189
+ *
190
+ * @public
191
+ * @param seedConfigPath Path to the seed configuration file (for resolving assets directory)
192
+ * @param fileMap Optional mapping of keys to asset paths or directories
193
+ * @returns Promise that resolves when processing is complete
194
+ */
195
+ async processAssets(seedConfigPath, fileMap) {
196
+ if (!fileMap || Object.keys(fileMap).length === 0) {
197
+ return;
198
+ }
199
+ this._logger.startGroup('Processing assets');
200
+ await this.discoverAssets(seedConfigPath);
201
+ let registeredCount = 0;
202
+ for (const [key, filePath] of Object.entries(fileMap)) {
203
+ try {
204
+ // Remove the assets directory prefix from the filePath to get the relative path
205
+ // since discovered assets are stored with relative paths from the assets directory
206
+ const assetsPrefix = this._options.assetsDir + '/';
207
+ const normalizedFilePath = filePath.startsWith(assetsPrefix)
208
+ ? filePath.substring(assetsPrefix.length)
209
+ : filePath;
210
+ if (normalizedFilePath.endsWith('/')) {
211
+ const normalizedDir = normalizedFilePath.replace(/\/$/, '');
212
+ const assets = this.getAssetsInDirectory(normalizedDir);
213
+ if (assets.length === 0) {
214
+ this._logger.warn(`No assets found in directory: ${normalizedDir}`);
215
+ continue;
216
+ }
217
+ const uploadResults = await this.uploadAssets(assets);
218
+ for (const result of uploadResults) {
219
+ const assetKey = `${key}${result.asset.relativePath.substring(normalizedDir.length)}`;
220
+ this._uploadedAssets.set(assetKey, result.url);
221
+ registeredCount++;
222
+ }
223
+ }
224
+ else {
225
+ const asset = this.getAssetInfo(normalizedFilePath);
226
+ if (!asset) {
227
+ this._logger.warn(`Asset not found: ${normalizedFilePath} (original: ${filePath})`);
228
+ continue;
229
+ }
230
+ const uploadResults = await this.uploadAssets([asset]);
231
+ if (uploadResults.length > 0) {
232
+ this._uploadedAssets.set(key, uploadResults[0].url);
233
+ registeredCount++;
234
+ }
235
+ }
236
+ }
237
+ catch (error) {
238
+ this._logger.error(`Failed to process asset mapping ${key}: ${filePath} - ${error}`);
239
+ }
240
+ }
241
+ this._logger.success(`${registeredCount} asset${registeredCount === 1 ? '' : 's'} registered`);
242
+ this._logger.endGroup();
243
+ }
244
+ /**
245
+ * Gets a random asset URL from a directory prefix.
246
+ *
247
+ * @public
248
+ * @param directoryPrefix The directory prefix to filter assets by
249
+ * @param random Optional random function (defaults to Math.random)
250
+ * @returns A random asset URL or undefined if none found
251
+ */
252
+ getRandomAssetUrl(directoryPrefix, random = Math.random) {
253
+ const matchingKeys = Array.from(this._uploadedAssets.keys())
254
+ .filter((key) => key.startsWith(directoryPrefix));
255
+ if (matchingKeys.length === 0) {
256
+ this._logger.warn(`No assets found for directory prefix: ${directoryPrefix}`);
257
+ return undefined;
258
+ }
259
+ const randomKey = matchingKeys[Math.floor(random() * matchingKeys.length)];
260
+ return this._uploadedAssets.get(randomKey);
261
+ }
262
+ /**
263
+ * Sets a custom blob adapter for asset uploads.
264
+ *
265
+ * @public
266
+ * @param adapter The blob adapter to use (or null to disable)
267
+ */
268
+ setBlobAdapter(adapter) {
269
+ this._options.blobAdapter = adapter;
270
+ }
271
+ // #endregion
272
+ // #region Private Methods
273
+ async _discoverAssetsRecursive(currentDir, baseDir) {
274
+ const entries = await fs.readdir(currentDir, { withFileTypes: true });
275
+ for (const entry of entries) {
276
+ const fullPath = join(currentDir, entry.name);
277
+ if (entry.isDirectory()) {
278
+ await this._discoverAssetsRecursive(fullPath, baseDir);
279
+ }
280
+ else if (entry.isFile()) {
281
+ const relativePath = fullPath.substring(baseDir.length + 1).replace(/\\/g, '/');
282
+ const stats = await fs.stat(fullPath);
283
+ const assetInfo = {
284
+ relativePath,
285
+ absolutePath: fullPath,
286
+ name: basename(entry.name, extname(entry.name)),
287
+ extension: extname(entry.name),
288
+ size: stats.size,
289
+ mimeType: this._getMimeType(extname(entry.name))
290
+ };
291
+ this._discoveredAssets.set(relativePath, assetInfo);
292
+ }
293
+ }
294
+ }
295
+ _getMimeType(extension) {
296
+ const mimeTypes = {
297
+ '.jpg': 'image/jpeg',
298
+ '.jpeg': 'image/jpeg',
299
+ '.png': 'image/png',
300
+ '.gif': 'image/gif',
301
+ '.webp': 'image/webp',
302
+ '.svg': 'image/svg+xml',
303
+ '.mp4': 'video/mp4',
304
+ '.webm': 'video/webm',
305
+ '.pdf': 'application/pdf',
306
+ '.json': 'application/json',
307
+ '.txt': 'text/plain',
308
+ '.md': 'text/markdown'
309
+ };
310
+ return mimeTypes[extension.toLowerCase()] ?? 'application/octet-stream';
311
+ }
312
+ async _optimizeAssetBuffer(asset, buffer) {
313
+ if (!this._options.imageTransforms || !asset.mimeType.startsWith('image/')) {
314
+ return undefined;
315
+ }
316
+ const transformOptions = this._resolveImageTransformOptions(asset);
317
+ if (!transformOptions) {
318
+ return undefined;
319
+ }
320
+ this._validateImageTransformOptions(transformOptions);
321
+ let pipeline = sharp(buffer);
322
+ if (transformOptions.preserveMetadata) {
323
+ pipeline = pipeline.withMetadata();
324
+ }
325
+ if (transformOptions.resize) {
326
+ const resizeOptions = this._createResizeOptions(transformOptions.resize);
327
+ if (resizeOptions) {
328
+ pipeline = pipeline.resize(resizeOptions);
329
+ }
330
+ }
331
+ if (typeof transformOptions.rotate === 'number') {
332
+ pipeline = pipeline.rotate(transformOptions.rotate);
333
+ }
334
+ if (transformOptions.grayscale) {
335
+ pipeline = pipeline.grayscale();
336
+ }
337
+ if (transformOptions.format) {
338
+ const formatOptions = this._createFormatOptions(transformOptions.format, transformOptions);
339
+ pipeline = formatOptions ? pipeline.toFormat(transformOptions.format, formatOptions) : pipeline.toFormat(transformOptions.format);
340
+ }
341
+ const { data, info } = await pipeline.toBuffer({ resolveWithObject: true });
342
+ const resolvedMimeType = this._resolveImageContentType(transformOptions.format ?? info.format, asset.mimeType);
343
+ return {
344
+ buffer: data,
345
+ mimeType: resolvedMimeType ?? asset.mimeType
346
+ };
347
+ }
348
+ _resolveImageTransformOptions(asset) {
349
+ const configuration = this._options.imageTransforms;
350
+ if (!configuration) {
351
+ return undefined;
352
+ }
353
+ if (!configuration.rules || configuration.rules.length === 0) {
354
+ return configuration.defaultOptions;
355
+ }
356
+ for (const rule of configuration.rules) {
357
+ if (this._doesRuleApply(asset, rule)) {
358
+ return rule.options;
359
+ }
360
+ }
361
+ return configuration.defaultOptions;
362
+ }
363
+ _doesRuleApply(asset, rule) {
364
+ switch (rule.match) {
365
+ case AssetImageTransformMatchKinds.Exact:
366
+ return asset.relativePath === rule.pattern;
367
+ case AssetImageTransformMatchKinds.Prefix:
368
+ return asset.relativePath.startsWith(rule.pattern);
369
+ case AssetImageTransformMatchKinds.Extension: {
370
+ const normalizedPattern = rule.pattern.startsWith('.') ? rule.pattern.toLowerCase() : `.${rule.pattern.toLowerCase()}`;
371
+ return asset.extension.toLowerCase() === normalizedPattern;
372
+ }
373
+ default:
374
+ return false;
375
+ }
376
+ }
377
+ _validateImageTransformOptions(options) {
378
+ if (typeof options.quality === 'number') {
379
+ if (options.quality < 1 || options.quality > 100) {
380
+ throw new Error('Image quality must be between 1 and 100.');
381
+ }
382
+ if (!options.format) {
383
+ throw new Error('Image quality adjustments require specifying a target format.');
384
+ }
385
+ }
386
+ if (typeof options.rotate === 'number' && (options.rotate < 0 || options.rotate >= 360)) {
387
+ throw new Error('Image rotation must be between 0 (inclusive) and 360 (exclusive).');
388
+ }
389
+ if (!options.resize) {
390
+ return;
391
+ }
392
+ const { width, height, fit } = options.resize;
393
+ if (typeof width === 'number' && width <= 0) {
394
+ throw new Error('Image resize width must be greater than zero.');
395
+ }
396
+ if (typeof height === 'number' && height <= 0) {
397
+ throw new Error('Image resize height must be greater than zero.');
398
+ }
399
+ if (fit && !AssetManager._validResizeFits.has(fit)) {
400
+ throw new Error('Unsupported image resize fit option.');
401
+ }
402
+ }
403
+ _createResizeOptions(resizeOptions) {
404
+ if (!resizeOptions) {
405
+ return undefined;
406
+ }
407
+ const { width, height, fit, withoutEnlargement } = resizeOptions;
408
+ if (typeof width === 'undefined' && typeof height === 'undefined' && typeof fit === 'undefined' && typeof withoutEnlargement === 'undefined') {
409
+ return undefined;
410
+ }
411
+ const options = {};
412
+ if (typeof width === 'number') {
413
+ options.width = width;
414
+ }
415
+ if (typeof height === 'number') {
416
+ options.height = height;
417
+ }
418
+ if (fit) {
419
+ options.fit = fit;
420
+ }
421
+ if (typeof withoutEnlargement === 'boolean') {
422
+ options.withoutEnlargement = withoutEnlargement;
423
+ }
424
+ return options;
425
+ }
426
+ _createFormatOptions(format, options) {
427
+ if (typeof options.quality !== 'number') {
428
+ return undefined;
429
+ }
430
+ const quality = Math.round(options.quality);
431
+ switch (format) {
432
+ case ImageOutputFormats.Jpeg: {
433
+ const jpegOptions = { quality };
434
+ return jpegOptions;
435
+ }
436
+ case ImageOutputFormats.Png: {
437
+ const pngOptions = { quality };
438
+ return pngOptions;
439
+ }
440
+ case ImageOutputFormats.Webp: {
441
+ const webpOptions = { quality };
442
+ return webpOptions;
443
+ }
444
+ case ImageOutputFormats.Avif: {
445
+ const avifOptions = { quality };
446
+ return avifOptions;
447
+ }
448
+ default:
449
+ return undefined;
450
+ }
451
+ }
452
+ _resolveImageContentType(format, fallback) {
453
+ const normalizedFormat = format?.toLowerCase();
454
+ if (normalizedFormat && AssetManager._formatContentTypeMap[normalizedFormat]) {
455
+ return AssetManager._formatContentTypeMap[normalizedFormat];
456
+ }
457
+ return fallback;
458
+ }
459
+ }
460
+ //# sourceMappingURL=AssetManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AssetManager.js","sourceRoot":"","sources":["../../src/assets/AssetManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Supported output formats for image transformations.
3
+ */
4
+ export declare const ImageOutputFormats: {
5
+ readonly Avif: "avif";
6
+ readonly Jpeg: "jpeg";
7
+ readonly Png: "png";
8
+ readonly Webp: "webp";
9
+ };
10
+ export type ImageOutputFormat = typeof ImageOutputFormats[keyof typeof ImageOutputFormats];
11
+ /**
12
+ * Resize fit strategies delegating to Sharp's implementation.
13
+ */
14
+ export declare const ImageResizeFitValues: {
15
+ readonly Cover: "cover";
16
+ readonly Contain: "contain";
17
+ readonly Fill: "fill";
18
+ readonly Inside: "inside";
19
+ readonly Outside: "outside";
20
+ };
21
+ export type ImageResizeFit = typeof ImageResizeFitValues[keyof typeof ImageResizeFitValues];
22
+ /**
23
+ * Resize configuration applied before uploading an image asset.
24
+ */
25
+ export interface IImageResizeOptions {
26
+ readonly width?: number;
27
+ readonly height?: number;
28
+ readonly fit?: ImageResizeFit;
29
+ readonly withoutEnlargement?: boolean;
30
+ }
31
+ /**
32
+ * Complete transformation options for image optimization.
33
+ */
34
+ export interface IImageTransformOptions {
35
+ readonly format?: ImageOutputFormat;
36
+ readonly quality?: number;
37
+ readonly resize?: IImageResizeOptions;
38
+ readonly rotate?: number;
39
+ readonly grayscale?: boolean;
40
+ readonly preserveMetadata?: boolean;
41
+ }
42
+ //# sourceMappingURL=IImageTransformOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IImageTransformOptions.d.ts","sourceRoot":"","sources":["../../src/assets/IImageTransformOptions.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;CAKrB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,OAAO,kBAAkB,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC;AAE3F;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;CAMvB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,OAAO,oBAAoB,CAAC,MAAM,OAAO,oBAAoB,CAAC,CAAC;AAE5F;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CACvC"}
@@ -0,0 +1,22 @@
1
+ // #region Types
2
+ /**
3
+ * Supported output formats for image transformations.
4
+ */
5
+ export const ImageOutputFormats = {
6
+ Avif: 'avif',
7
+ Jpeg: 'jpeg',
8
+ Png: 'png',
9
+ Webp: 'webp'
10
+ };
11
+ /**
12
+ * Resize fit strategies delegating to Sharp's implementation.
13
+ */
14
+ export const ImageResizeFitValues = {
15
+ Cover: 'cover',
16
+ Contain: 'contain',
17
+ Fill: 'fill',
18
+ Inside: 'inside',
19
+ Outside: 'outside'
20
+ };
21
+ // #endregion
22
+ //# sourceMappingURL=IImageTransformOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IImageTransformOptions.js","sourceRoot":"","sources":["../../src/assets/IImageTransformOptions.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAEhB;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAC9B,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;CACN,CAAC;AAIX;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAChC,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;CACZ,CAAC;AA0BX,aAAa"}
@@ -0,0 +1,21 @@
1
+ import { type ILocalFileAdapterConfig } from './LocalFileAdapter.js';
2
+ import { type ICloudflareR2AdapterConfig } from './CloudflareR2BlobAdapter.js';
3
+ import { IVercelBlobAdapterConfig } from './VercelBlobAdapter.js';
4
+ /**
5
+ * Configuration for different blob adapter types.
6
+ *
7
+ * @public
8
+ */
9
+ export type BlobAdapterConfiguration = {
10
+ type: 'empty';
11
+ } | {
12
+ type: 'local';
13
+ config: ILocalFileAdapterConfig;
14
+ } | {
15
+ type: 'vercel';
16
+ config: IVercelBlobAdapterConfig;
17
+ } | {
18
+ type: 'cloudflare-r2';
19
+ config: ICloudflareR2AdapterConfig;
20
+ };
21
+ //# sourceMappingURL=BlobAdapterFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlobAdapterFactory.d.ts","sourceRoot":"","sources":["../../../src/assets/adapters/BlobAdapterFactory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAIlE;;;;GAIG;AACH,MAAM,MAAM,wBAAwB,GAAK;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG;IACzD,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,uBAAuB,CAAC;CACnC,GAAG;IACA,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,wBAAwB,CAAC;CACpC,GAAG;IACA,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,0BAA0B,CAAC;CACtC,CAAC"}
@@ -0,0 +1,3 @@
1
+ // #region Imports
2
+ export {};
3
+ //# sourceMappingURL=BlobAdapterFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlobAdapterFactory.js","sourceRoot":"","sources":["../../../src/assets/adapters/BlobAdapterFactory.ts"],"names":[],"mappings":"AAAA,kBAAkB"}