@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.
- package/CHANGELOG.md +9 -0
- package/LICENSE +21 -0
- package/README.md +284 -0
- package/ai/AISeedGenerator.d.ts +127 -0
- package/ai/AISeedGenerator.d.ts.map +1 -0
- package/ai/AISeedGenerator.js +438 -0
- package/ai/AISeedGenerator.js.map +1 -0
- package/ai/AISeedTypes.d.ts +138 -0
- package/ai/AISeedTypes.d.ts.map +1 -0
- package/ai/AISeedTypes.js +3 -0
- package/ai/AISeedTypes.js.map +1 -0
- package/ai/PrismaModelAnalyzer.d.ts +36 -0
- package/ai/PrismaModelAnalyzer.d.ts.map +1 -0
- package/ai/PrismaModelAnalyzer.js +110 -0
- package/ai/PrismaModelAnalyzer.js.map +1 -0
- package/ai/PrismaTypeSchemaGenerator.d.ts +38 -0
- package/ai/PrismaTypeSchemaGenerator.d.ts.map +1 -0
- package/ai/PrismaTypeSchemaGenerator.js +71 -0
- package/ai/PrismaTypeSchemaGenerator.js.map +1 -0
- package/ai/createAISeeder.d.ts +11 -0
- package/ai/createAISeeder.d.ts.map +1 -0
- package/ai/createAISeeder.js +72 -0
- package/ai/createAISeeder.js.map +1 -0
- package/ai/index.d.ts +6 -0
- package/ai/index.d.ts.map +1 -0
- package/ai/index.js +5 -0
- package/ai/index.js.map +1 -0
- package/assets/AssetManager.d.ts +213 -0
- package/assets/AssetManager.d.ts.map +1 -0
- package/assets/AssetManager.js +460 -0
- package/assets/AssetManager.js.map +1 -0
- package/assets/IImageTransformOptions.d.ts +42 -0
- package/assets/IImageTransformOptions.d.ts.map +1 -0
- package/assets/IImageTransformOptions.js +22 -0
- package/assets/IImageTransformOptions.js.map +1 -0
- package/assets/adapters/BlobAdapterFactory.d.ts +21 -0
- package/assets/adapters/BlobAdapterFactory.d.ts.map +1 -0
- package/assets/adapters/BlobAdapterFactory.js +3 -0
- package/assets/adapters/BlobAdapterFactory.js.map +1 -0
- package/assets/adapters/CloudflareR2BlobAdapter.d.ts +97 -0
- package/assets/adapters/CloudflareR2BlobAdapter.d.ts.map +1 -0
- package/assets/adapters/CloudflareR2BlobAdapter.js +265 -0
- package/assets/adapters/CloudflareR2BlobAdapter.js.map +1 -0
- package/assets/adapters/EmptyBlobAdapter.d.ts +42 -0
- package/assets/adapters/EmptyBlobAdapter.d.ts.map +1 -0
- package/assets/adapters/EmptyBlobAdapter.js +65 -0
- package/assets/adapters/EmptyBlobAdapter.js.map +1 -0
- package/assets/adapters/LocalFileAdapter.d.ts +34 -0
- package/assets/adapters/LocalFileAdapter.d.ts.map +1 -0
- package/assets/adapters/LocalFileAdapter.js +74 -0
- package/assets/adapters/LocalFileAdapter.js.map +1 -0
- package/assets/adapters/VercelBlobAdapter.d.ts +73 -0
- package/assets/adapters/VercelBlobAdapter.d.ts.map +1 -0
- package/assets/adapters/VercelBlobAdapter.js +168 -0
- package/assets/adapters/VercelBlobAdapter.js.map +1 -0
- package/assets/adapters/abstracts/BlobAdapterBase.d.ts +62 -0
- package/assets/adapters/abstracts/BlobAdapterBase.d.ts.map +1 -0
- package/assets/adapters/abstracts/BlobAdapterBase.js +58 -0
- package/assets/adapters/abstracts/BlobAdapterBase.js.map +1 -0
- package/assets/adapters/abstracts/HttpBlobAdapterBase.d.ts +43 -0
- package/assets/adapters/abstracts/HttpBlobAdapterBase.d.ts.map +1 -0
- package/assets/adapters/abstracts/HttpBlobAdapterBase.js +88 -0
- package/assets/adapters/abstracts/HttpBlobAdapterBase.js.map +1 -0
- package/assets/adapters/createBlobAdapter.d.ts +47 -0
- package/assets/adapters/createBlobAdapter.d.ts.map +1 -0
- package/assets/adapters/createBlobAdapter.js +63 -0
- package/assets/adapters/createBlobAdapter.js.map +1 -0
- package/assets/adapters/index.d.ts +11 -0
- package/assets/adapters/index.d.ts.map +1 -0
- package/assets/adapters/index.js +7 -0
- package/assets/adapters/index.js.map +1 -0
- package/assets/adapters/interfaces/IBlobAdapter.d.ts +41 -0
- package/assets/adapters/interfaces/IBlobAdapter.d.ts.map +1 -0
- package/assets/adapters/interfaces/IBlobAdapter.js +3 -0
- package/assets/adapters/interfaces/IBlobAdapter.js.map +1 -0
- package/assets/adapters/interfaces/IBlobAdapterConfig.d.ts +16 -0
- package/assets/adapters/interfaces/IBlobAdapterConfig.d.ts.map +1 -0
- package/assets/adapters/interfaces/IBlobAdapterConfig.js +2 -0
- package/assets/adapters/interfaces/IBlobAdapterConfig.js.map +1 -0
- package/assets/adapters/interfaces/IBlobUploadResult.d.ts +24 -0
- package/assets/adapters/interfaces/IBlobUploadResult.d.ts.map +1 -0
- package/assets/adapters/interfaces/IBlobUploadResult.js +2 -0
- package/assets/adapters/interfaces/IBlobUploadResult.js.map +1 -0
- package/base/BaseSeeder.d.ts +21 -0
- package/base/BaseSeeder.d.ts.map +1 -0
- package/base/BaseSeeder.js +45 -0
- package/base/BaseSeeder.js.map +1 -0
- package/base/functionalSeeder.d.ts +31 -0
- package/base/functionalSeeder.d.ts.map +1 -0
- package/base/functionalSeeder.js +33 -0
- package/base/functionalSeeder.js.map +1 -0
- package/cli/Cli.d.ts +2 -0
- package/cli/Cli.d.ts.map +1 -0
- package/cli/Cli.js +32 -0
- package/cli/Cli.js.map +1 -0
- package/cli/CliArgs.d.ts +2 -0
- package/cli/CliArgs.d.ts.map +1 -0
- package/cli/CliArgs.js +133 -0
- package/cli/CliArgs.js.map +1 -0
- package/cli/CliArgsConfig.d.ts +2 -0
- package/cli/CliArgsConfig.d.ts.map +1 -0
- package/cli/CliArgsConfig.js +15 -0
- package/cli/CliArgsConfig.js.map +1 -0
- package/cli/CliRun.d.ts +2 -0
- package/cli/CliRun.d.ts.map +1 -0
- package/cli/CliRun.js +34 -0
- package/cli/CliRun.js.map +1 -0
- package/cli/commands/SeedCommand.d.ts +2 -0
- package/cli/commands/SeedCommand.d.ts.map +1 -0
- package/cli/commands/SeedCommand.js +73 -0
- package/cli/commands/SeedCommand.js.map +1 -0
- package/cli/commands/SeedCommandArgsConfig.d.ts +2 -0
- package/cli/commands/SeedCommandArgsConfig.d.ts.map +1 -0
- package/cli/commands/SeedCommandArgsConfig.js +31 -0
- package/cli/commands/SeedCommandArgsConfig.js.map +1 -0
- package/cli/seed.d.ts +2 -0
- package/cli/seed.d.ts.map +1 -0
- package/cli/seed.js +42 -0
- package/cli/seed.js.map +1 -0
- package/config/IAssetConfig.d.ts +36 -0
- package/config/IAssetConfig.d.ts.map +1 -0
- package/config/IAssetConfig.js +3 -0
- package/config/IAssetConfig.js.map +1 -0
- package/config/IComposedSeedConfig.d.ts +32 -0
- package/config/IComposedSeedConfig.d.ts.map +1 -0
- package/config/IComposedSeedConfig.js +3 -0
- package/config/IComposedSeedConfig.js.map +1 -0
- package/config/ISeedConfig.d.ts +75 -0
- package/config/ISeedConfig.d.ts.map +1 -0
- package/config/ISeedConfig.js +3 -0
- package/config/ISeedConfig.js.map +1 -0
- package/config/ISeedContext.d.ts +92 -0
- package/config/ISeedContext.d.ts.map +1 -0
- package/config/ISeedContext.js +3 -0
- package/config/ISeedContext.js.map +1 -0
- package/config/ISeedDefinition.d.ts +38 -0
- package/config/ISeedDefinition.d.ts.map +1 -0
- package/config/ISeedDefinition.js +3 -0
- package/config/ISeedDefinition.js.map +1 -0
- package/config/ISeedFactory.d.ts +15 -0
- package/config/ISeedFactory.d.ts.map +1 -0
- package/config/ISeedFactory.js +3 -0
- package/config/ISeedFactory.js.map +1 -0
- package/config/ISeedOptions.d.ts +44 -0
- package/config/ISeedOptions.d.ts.map +1 -0
- package/config/ISeedOptions.js +2 -0
- package/config/ISeedOptions.js.map +1 -0
- package/config/ISeedResult.d.ts +44 -0
- package/config/ISeedResult.d.ts.map +1 -0
- package/config/ISeedResult.js +2 -0
- package/config/ISeedResult.js.map +1 -0
- package/config/ISeeder.d.ts +37 -0
- package/config/ISeeder.d.ts.map +1 -0
- package/config/ISeeder.js +3 -0
- package/config/ISeeder.js.map +1 -0
- package/config/createAdapter.d.ts +13 -0
- package/config/createAdapter.d.ts.map +1 -0
- package/config/createAdapter.js +16 -0
- package/config/createAdapter.js.map +1 -0
- package/config/createSeed.d.ts +6 -0
- package/config/createSeed.d.ts.map +1 -0
- package/config/createSeed.js +16 -0
- package/config/createSeed.js.map +1 -0
- package/config/defineConfig.d.ts +27 -0
- package/config/defineConfig.d.ts.map +1 -0
- package/config/defineConfig.js +35 -0
- package/config/defineConfig.js.map +1 -0
- package/discovery/SeedConfigDiscovery.d.ts +16 -0
- package/discovery/SeedConfigDiscovery.d.ts.map +1 -0
- package/discovery/SeedConfigDiscovery.js +137 -0
- package/discovery/SeedConfigDiscovery.js.map +1 -0
- package/index.d.ts +32 -0
- package/index.d.ts.map +1 -0
- package/index.js +32 -0
- package/index.js.map +1 -0
- package/json/JsonReferenceResolver.d.ts +23 -0
- package/json/JsonReferenceResolver.d.ts.map +1 -0
- package/json/JsonReferenceResolver.js +99 -0
- package/json/JsonReferenceResolver.js.map +1 -0
- package/json/JsonSchemaValidator.d.ts +23 -0
- package/json/JsonSchemaValidator.d.ts.map +1 -0
- package/json/JsonSchemaValidator.js +98 -0
- package/json/JsonSchemaValidator.js.map +1 -0
- package/json/JsonSeedLoader.d.ts +33 -0
- package/json/JsonSeedLoader.d.ts.map +1 -0
- package/json/JsonSeedLoader.js +176 -0
- package/json/JsonSeedLoader.js.map +1 -0
- package/json/JsonSeedTypes.d.ts +204 -0
- package/json/JsonSeedTypes.d.ts.map +1 -0
- package/json/JsonSeedTypes.js +3 -0
- package/json/JsonSeedTypes.js.map +1 -0
- package/json/createJsonSeeder.d.ts +13 -0
- package/json/createJsonSeeder.d.ts.map +1 -0
- package/json/createJsonSeeder.js +240 -0
- package/json/createJsonSeeder.js.map +1 -0
- package/json/index.d.ts +6 -0
- package/json/index.d.ts.map +1 -0
- package/json/index.js +7 -0
- package/json/index.js.map +1 -0
- package/logging/ISeedLogger.d.ts +55 -0
- package/logging/ISeedLogger.d.ts.map +1 -0
- package/logging/ISeedLogger.js +3 -0
- package/logging/ISeedLogger.js.map +1 -0
- package/logging/LogLevel.d.ts +30 -0
- package/logging/LogLevel.d.ts.map +1 -0
- package/logging/LogLevel.js +37 -0
- package/logging/LogLevel.js.map +1 -0
- package/logging/SeedLogger.d.ts +24 -0
- package/logging/SeedLogger.d.ts.map +1 -0
- package/logging/SeedLogger.js +94 -0
- package/logging/SeedLogger.js.map +1 -0
- package/orchestration/SeedOrchestrator.d.ts +30 -0
- package/orchestration/SeedOrchestrator.d.ts.map +1 -0
- package/orchestration/SeedOrchestrator.js +262 -0
- package/orchestration/SeedOrchestrator.js.map +1 -0
- package/package.json +27 -0
- package/resolvers/EntityResolver.d.ts +43 -0
- package/resolvers/EntityResolver.d.ts.map +1 -0
- package/resolvers/EntityResolver.js +95 -0
- package/resolvers/EntityResolver.js.map +1 -0
- package/utils/AssetReferenceResolver.d.ts +49 -0
- package/utils/AssetReferenceResolver.d.ts.map +1 -0
- package/utils/AssetReferenceResolver.js +62 -0
- package/utils/AssetReferenceResolver.js.map +1 -0
- package/utils/EntityLookupCache.d.ts +47 -0
- package/utils/EntityLookupCache.d.ts.map +1 -0
- package/utils/EntityLookupCache.js +64 -0
- package/utils/EntityLookupCache.js.map +1 -0
- package/utils/ISeedRandom.d.ts +70 -0
- package/utils/ISeedRandom.d.ts.map +1 -0
- package/utils/ISeedRandom.js +3 -0
- package/utils/ISeedRandom.js.map +1 -0
- package/utils/LocalizationToolkit.d.ts +125 -0
- package/utils/LocalizationToolkit.d.ts.map +1 -0
- package/utils/LocalizationToolkit.js +131 -0
- package/utils/LocalizationToolkit.js.map +1 -0
- package/utils/SeededRandom.d.ts +15 -0
- package/utils/SeededRandom.d.ts.map +1 -0
- package/utils/SeededRandom.js +56 -0
- package/utils/SeededRandom.js.map +1 -0
- package/utils/StringArrayToolkit.d.ts +25 -0
- package/utils/StringArrayToolkit.d.ts.map +1 -0
- package/utils/StringArrayToolkit.js +56 -0
- package/utils/StringArrayToolkit.js.map +1 -0
- package/utils/StringValueGuard.d.ts +24 -0
- package/utils/StringValueGuard.d.ts.map +1 -0
- package/utils/StringValueGuard.js +46 -0
- package/utils/StringValueGuard.js.map +1 -0
- package/utils/WarningCollector.d.ts +40 -0
- package/utils/WarningCollector.d.ts.map +1 -0
- package/utils/WarningCollector.js +83 -0
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"BlobAdapterFactory.js","sourceRoot":"","sources":["../../../src/assets/adapters/BlobAdapterFactory.ts"],"names":[],"mappings":"AAAA,kBAAkB"}
|