@frybynite/image-cloud 0.5.0 → 0.6.0
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/README.md +46 -13
- package/dist/composite-CtUxtN2l.js +96 -0
- package/dist/composite-CtUxtN2l.js.map +1 -0
- package/dist/google-drive-CC-qFSV1.js +260 -0
- package/dist/google-drive-CC-qFSV1.js.map +1 -0
- package/dist/image-cloud-auto-init.js +399 -842
- package/dist/image-cloud-auto-init.js.map +1 -1
- package/dist/image-cloud.js +1356 -1341
- package/dist/image-cloud.js.map +1 -1
- package/dist/image-cloud.umd.js +5 -5
- package/dist/image-cloud.umd.js.map +1 -1
- package/dist/index.d.ts +17 -0
- package/dist/loaders/all.d.ts +1654 -0
- package/dist/loaders/all.js +496 -0
- package/dist/loaders/all.js.map +1 -0
- package/dist/loaders/composite.d.ts +1654 -0
- package/dist/loaders/composite.js +96 -0
- package/dist/loaders/composite.js.map +1 -0
- package/dist/loaders/google-drive.d.ts +1654 -0
- package/dist/loaders/google-drive.js +260 -0
- package/dist/loaders/google-drive.js.map +1 -0
- package/dist/loaders/static.d.ts +1654 -0
- package/dist/loaders/static.js +219 -0
- package/dist/loaders/static.js.map +1 -0
- package/dist/react.d.ts +17 -0
- package/dist/react.js +575 -1018
- package/dist/react.js.map +1 -1
- package/dist/static-ejylHtQ4.js +219 -0
- package/dist/static-ejylHtQ4.js.map +1 -0
- package/dist/vue.d.ts +17 -0
- package/dist/vue.js +507 -950
- package/dist/vue.js.map +1 -1
- package/dist/web-component.d.ts +17 -0
- package/dist/web-component.js +513 -956
- package/dist/web-component.js.map +1 -1
- package/package.json +24 -5
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
const s = class s {
|
|
2
|
+
/**
|
|
3
|
+
* Register a loader implementation with the registry
|
|
4
|
+
* @param name - Loader identifier (e.g., 'static', 'google-drive', 'composite')
|
|
5
|
+
* @param Loader - Loader class constructor to register
|
|
6
|
+
*/
|
|
7
|
+
static registerLoader(e, r) {
|
|
8
|
+
s.registry.set(e, r);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Get a registered loader implementation
|
|
12
|
+
* @param name - Loader identifier
|
|
13
|
+
* @returns Loader class constructor
|
|
14
|
+
* @throws Error if loader is not registered
|
|
15
|
+
*/
|
|
16
|
+
static getLoader(e) {
|
|
17
|
+
const r = s.registry.get(e);
|
|
18
|
+
if (!r)
|
|
19
|
+
throw new Error(
|
|
20
|
+
`Loader "${e}" is not registered. Import "@frybynite/image-cloud/loaders/${e}" or "@frybynite/image-cloud/loaders/all".`
|
|
21
|
+
);
|
|
22
|
+
return r;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Check if a loader is registered
|
|
26
|
+
* @param name - Loader identifier
|
|
27
|
+
* @returns True if the loader is registered, false otherwise
|
|
28
|
+
*/
|
|
29
|
+
static isRegistered(e) {
|
|
30
|
+
return s.registry.has(e);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
s.registry = /* @__PURE__ */ new Map();
|
|
34
|
+
let i = s;
|
|
35
|
+
class d {
|
|
36
|
+
constructor(e) {
|
|
37
|
+
if (this._prepared = !1, this._discoveredUrls = [], this.loaders = e.loaders, this.debugLogging = e.debugLogging ?? !1, !this.loaders || this.loaders.length === 0)
|
|
38
|
+
throw new Error("CompositeLoader requires at least one loader to be configured");
|
|
39
|
+
this.log(`CompositeLoader initialized with ${this.loaders.length} loader(s)`);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Prepare all loaders in parallel and combine their results
|
|
43
|
+
* @param filter - Filter to apply to discovered images
|
|
44
|
+
*/
|
|
45
|
+
async prepare(e) {
|
|
46
|
+
this._discoveredUrls = [], this.log(`Preparing ${this.loaders.length} loader(s) in parallel`);
|
|
47
|
+
const r = this.loaders.map((t, o) => t.prepare(e).then(() => {
|
|
48
|
+
this.log(`Loader ${o} prepared with ${t.imagesLength()} images`);
|
|
49
|
+
}).catch((a) => {
|
|
50
|
+
console.warn(`Loader ${o} failed to prepare:`, a);
|
|
51
|
+
}));
|
|
52
|
+
await Promise.all(r);
|
|
53
|
+
for (const t of this.loaders)
|
|
54
|
+
if (t.isPrepared()) {
|
|
55
|
+
const o = t.imageURLs();
|
|
56
|
+
this._discoveredUrls.push(...o);
|
|
57
|
+
}
|
|
58
|
+
this._prepared = !0, this.log(`CompositeLoader prepared with ${this._discoveredUrls.length} total images`);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Get the combined number of discovered images
|
|
62
|
+
* @throws Error if called before prepare()
|
|
63
|
+
*/
|
|
64
|
+
imagesLength() {
|
|
65
|
+
if (!this._prepared)
|
|
66
|
+
throw new Error("CompositeLoader.imagesLength() called before prepare()");
|
|
67
|
+
return this._discoveredUrls.length;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Get the combined ordered list of image URLs
|
|
71
|
+
* @throws Error if called before prepare()
|
|
72
|
+
*/
|
|
73
|
+
imageURLs() {
|
|
74
|
+
if (!this._prepared)
|
|
75
|
+
throw new Error("CompositeLoader.imageURLs() called before prepare()");
|
|
76
|
+
return [...this._discoveredUrls];
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Check if the loader has been prepared
|
|
80
|
+
*/
|
|
81
|
+
isPrepared() {
|
|
82
|
+
return this._prepared;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Debug logging helper
|
|
86
|
+
* @param args - Arguments to log
|
|
87
|
+
*/
|
|
88
|
+
log(...e) {
|
|
89
|
+
this.debugLogging && typeof console < "u" && console.log("[CompositeLoader]", ...e);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
i.registerLoader("composite", d);
|
|
93
|
+
export {
|
|
94
|
+
d as CompositeLoader
|
|
95
|
+
};
|
|
96
|
+
//# sourceMappingURL=composite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composite.js","sources":["../../src/engines/LoaderRegistry.ts","../../src/loaders/CompositeLoader.ts","../../src/loaders/index-composite.ts"],"sourcesContent":["/**\n * Loader Registry - Manages registration and lookup of image loader implementations\n *\n * This registry enables dynamic loading of loaders through separate bundles\n * while maintaining a central registry of available loaders. It mirrors the\n * LayoutEngine registry pattern for consistency.\n *\n * Public API:\n * - registerLoader(name, LoaderClass)\n * - getLoader(name)\n * - isRegistered(name)\n */\n\nimport type { ImageLoader, StaticLoaderInnerConfig, GoogleDriveLoaderInnerConfig } from '../config/types';\n\n/**\n * Constructor signature for loader classes\n * Supports both simple loaders and composite loaders with their respective config types\n */\nexport type LoaderConstructor =\n | (new (config: StaticLoaderInnerConfig) => ImageLoader)\n | (new (config: GoogleDriveLoaderInnerConfig) => ImageLoader)\n | (new (config: any) => ImageLoader);\n\nexport class LoaderRegistry {\n private static readonly registry = new Map<string, LoaderConstructor>();\n\n /**\n * Register a loader implementation with the registry\n * @param name - Loader identifier (e.g., 'static', 'google-drive', 'composite')\n * @param Loader - Loader class constructor to register\n */\n static registerLoader(name: string, Loader: LoaderConstructor): void {\n LoaderRegistry.registry.set(name, Loader);\n }\n\n /**\n * Get a registered loader implementation\n * @param name - Loader identifier\n * @returns Loader class constructor\n * @throws Error if loader is not registered\n */\n static getLoader(name: string): LoaderConstructor {\n const Loader = LoaderRegistry.registry.get(name);\n\n if (!Loader) {\n throw new Error(\n `Loader \"${name}\" is not registered. ` +\n `Import \"@frybynite/image-cloud/loaders/${name}\" or \"@frybynite/image-cloud/loaders/all\".`\n );\n }\n\n return Loader;\n }\n\n /**\n * Check if a loader is registered\n * @param name - Loader identifier\n * @returns True if the loader is registered, false otherwise\n */\n static isRegistered(name: string): boolean {\n return LoaderRegistry.registry.has(name);\n }\n}\n","/**\n * CompositeLoader.ts\n * Combines multiple image loaders and loads them in parallel\n *\n * Public API:\n * - prepare(filter) - Async discovery of images from all loaders in parallel\n * - imagesLength() - Get combined count of discovered images\n * - imageURLs() - Get combined ordered list of image URLs\n * - isPrepared() - Check if loader has been prepared\n */\n\nimport type { ImageLoader, IImageFilter } from '../config/types';\n\nexport interface CompositeLoaderConfig {\n loaders: ImageLoader[];\n debugLogging?: boolean;\n}\n\nexport class CompositeLoader implements ImageLoader {\n private loaders: ImageLoader[];\n private debugLogging: boolean;\n\n // State for interface\n private _prepared: boolean = false;\n private _discoveredUrls: string[] = [];\n\n constructor(config: CompositeLoaderConfig) {\n this.loaders = config.loaders;\n this.debugLogging = config.debugLogging ?? false;\n\n // Validate that we have at least one loader\n if (!this.loaders || this.loaders.length === 0) {\n throw new Error('CompositeLoader requires at least one loader to be configured');\n }\n\n this.log(`CompositeLoader initialized with ${this.loaders.length} loader(s)`);\n }\n\n /**\n * Prepare all loaders in parallel and combine their results\n * @param filter - Filter to apply to discovered images\n */\n async prepare(filter: IImageFilter): Promise<void> {\n this._discoveredUrls = [];\n\n this.log(`Preparing ${this.loaders.length} loader(s) in parallel`);\n\n // Prepare all loaders in parallel\n const preparePromises = this.loaders.map((loader, index) => {\n return loader.prepare(filter).then(() => {\n this.log(`Loader ${index} prepared with ${loader.imagesLength()} images`);\n }).catch(error => {\n console.warn(`Loader ${index} failed to prepare:`, error);\n // Continue with other loaders even if one fails\n });\n });\n\n await Promise.all(preparePromises);\n\n // Combine URLs from all prepared loaders (preserves order of loaders array)\n for (const loader of this.loaders) {\n if (loader.isPrepared()) {\n const urls = loader.imageURLs();\n this._discoveredUrls.push(...urls);\n }\n }\n\n this._prepared = true;\n this.log(`CompositeLoader prepared with ${this._discoveredUrls.length} total images`);\n }\n\n /**\n * Get the combined number of discovered images\n * @throws Error if called before prepare()\n */\n imagesLength(): number {\n if (!this._prepared) {\n throw new Error('CompositeLoader.imagesLength() called before prepare()');\n }\n return this._discoveredUrls.length;\n }\n\n /**\n * Get the combined ordered list of image URLs\n * @throws Error if called before prepare()\n */\n imageURLs(): string[] {\n if (!this._prepared) {\n throw new Error('CompositeLoader.imageURLs() called before prepare()');\n }\n return [...this._discoveredUrls];\n }\n\n /**\n * Check if the loader has been prepared\n */\n isPrepared(): boolean {\n return this._prepared;\n }\n\n /**\n * Debug logging helper\n * @param args - Arguments to log\n */\n private log(...args: unknown[]): void {\n if (this.debugLogging && typeof console !== 'undefined') {\n console.log('[CompositeLoader]', ...args);\n }\n }\n}\n","import { LoaderRegistry } from '../engines/LoaderRegistry';\nimport { CompositeLoader } from './CompositeLoader';\n\nLoaderRegistry.registerLoader('composite', CompositeLoader);\n\nexport { CompositeLoader };\nexport type { CompositeLoaderConfig } from './CompositeLoader';\n"],"names":["_LoaderRegistry","name","Loader","LoaderRegistry","CompositeLoader","config","filter","preparePromises","loader","index","error","urls","args"],"mappings":"AAwBO,MAAMA,IAAN,MAAMA,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ1B,OAAO,eAAeC,GAAcC,GAAiC;AACnE,IAAAF,EAAe,SAAS,IAAIC,GAAMC,CAAM;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,UAAUD,GAAiC;AAChD,UAAMC,IAASF,EAAe,SAAS,IAAIC,CAAI;AAE/C,QAAI,CAACC;AACH,YAAM,IAAI;AAAA,QACR,WAAWD,CAAI,+DAC2BA,CAAI;AAAA,MAAA;AAIlD,WAAOC;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,aAAaD,GAAuB;AACzC,WAAOD,EAAe,SAAS,IAAIC,CAAI;AAAA,EACzC;AACF;AAtCED,EAAwB,+BAAe,IAAA;AADlC,IAAMG,IAANH;ACNA,MAAMI,EAAuC;AAAA,EAQlD,YAAYC,GAA+B;AAKzC,QARF,KAAQ,YAAqB,IAC7B,KAAQ,kBAA4B,CAAA,GAGlC,KAAK,UAAUA,EAAO,SACtB,KAAK,eAAeA,EAAO,gBAAgB,IAGvC,CAAC,KAAK,WAAW,KAAK,QAAQ,WAAW;AAC3C,YAAM,IAAI,MAAM,+DAA+D;AAGjF,SAAK,IAAI,oCAAoC,KAAK,QAAQ,MAAM,YAAY;AAAA,EAC9E;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,QAAQC,GAAqC;AACjD,SAAK,kBAAkB,CAAA,GAEvB,KAAK,IAAI,aAAa,KAAK,QAAQ,MAAM,wBAAwB;AAGjE,UAAMC,IAAkB,KAAK,QAAQ,IAAI,CAACC,GAAQC,MACzCD,EAAO,QAAQF,CAAM,EAAE,KAAK,MAAM;AACvC,WAAK,IAAI,UAAUG,CAAK,kBAAkBD,EAAO,cAAc,SAAS;AAAA,IAC1E,CAAC,EAAE,MAAM,CAAAE,MAAS;AAChB,cAAQ,KAAK,UAAUD,CAAK,uBAAuBC,CAAK;AAAA,IAE1D,CAAC,CACF;AAED,UAAM,QAAQ,IAAIH,CAAe;AAGjC,eAAWC,KAAU,KAAK;AACxB,UAAIA,EAAO,cAAc;AACvB,cAAMG,IAAOH,EAAO,UAAA;AACpB,aAAK,gBAAgB,KAAK,GAAGG,CAAI;AAAA,MACnC;AAGF,SAAK,YAAY,IACjB,KAAK,IAAI,iCAAiC,KAAK,gBAAgB,MAAM,eAAe;AAAA,EACtF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,eAAuB;AACrB,QAAI,CAAC,KAAK;AACR,YAAM,IAAI,MAAM,wDAAwD;AAE1E,WAAO,KAAK,gBAAgB;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAAsB;AACpB,QAAI,CAAC,KAAK;AACR,YAAM,IAAI,MAAM,qDAAqD;AAEvE,WAAO,CAAC,GAAG,KAAK,eAAe;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA,EAKA,aAAsB;AACpB,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,OAAOC,GAAuB;AACpC,IAAI,KAAK,gBAAgB,OAAO,UAAY,OAC1C,QAAQ,IAAI,qBAAqB,GAAGA,CAAI;AAAA,EAE5C;AACF;AC1GAT,EAAe,eAAe,aAAaC,CAAe;"}
|