@smoothcdn/loader 1.0.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.
Files changed (110) hide show
  1. package/dist/astro.d.ts +5 -0
  2. package/dist/astro.d.ts.map +1 -0
  3. package/dist/astro.js +3 -0
  4. package/dist/core/config.d.ts +6 -0
  5. package/dist/core/config.d.ts.map +1 -0
  6. package/dist/core/config.js +78 -0
  7. package/dist/core/createLoader.d.ts +3 -0
  8. package/dist/core/createLoader.d.ts.map +1 -0
  9. package/dist/core/createLoader.js +24 -0
  10. package/dist/core/index.d.ts +5 -0
  11. package/dist/core/index.d.ts.map +1 -0
  12. package/dist/core/index.js +3 -0
  13. package/dist/core/loaders/fetch.d.ts +2 -0
  14. package/dist/core/loaders/fetch.d.ts.map +1 -0
  15. package/dist/core/loaders/fetch.js +10 -0
  16. package/dist/core/loaders/image.d.ts +2 -0
  17. package/dist/core/loaders/image.d.ts.map +1 -0
  18. package/dist/core/loaders/image.js +12 -0
  19. package/dist/core/loaders/script.d.ts +2 -0
  20. package/dist/core/loaders/script.d.ts.map +1 -0
  21. package/dist/core/loaders/script.js +14 -0
  22. package/dist/core/loaders/style.d.ts +2 -0
  23. package/dist/core/loaders/style.d.ts.map +1 -0
  24. package/dist/core/loaders/style.js +14 -0
  25. package/dist/core/runtime.d.ts +2 -0
  26. package/dist/core/runtime.d.ts.map +1 -0
  27. package/dist/core/runtime.js +7 -0
  28. package/dist/core/types.d.ts +72 -0
  29. package/dist/core/types.d.ts.map +1 -0
  30. package/dist/core/types.js +1 -0
  31. package/dist/core/utils.d.ts +7 -0
  32. package/dist/core/utils.d.ts.map +1 -0
  33. package/dist/core/utils.js +50 -0
  34. package/dist/framework/shared.d.ts +7 -0
  35. package/dist/framework/shared.d.ts.map +1 -0
  36. package/dist/framework/shared.js +8 -0
  37. package/dist/index.d.ts +5 -0
  38. package/dist/index.d.ts.map +1 -0
  39. package/dist/index.js +3 -0
  40. package/dist/next/CDNImage.d.ts +8 -0
  41. package/dist/next/CDNImage.d.ts.map +1 -0
  42. package/dist/next/CDNImage.js +6 -0
  43. package/dist/next/Script.d.ts +7 -0
  44. package/dist/next/Script.d.ts.map +1 -0
  45. package/dist/next/Script.js +7 -0
  46. package/dist/next/Style.d.ts +6 -0
  47. package/dist/next/Style.d.ts.map +1 -0
  48. package/dist/next/Style.js +7 -0
  49. package/dist/next/index.d.ts +7 -0
  50. package/dist/next/index.d.ts.map +1 -0
  51. package/dist/next/index.js +6 -0
  52. package/dist/nuxt.d.ts +6 -0
  53. package/dist/nuxt.d.ts.map +1 -0
  54. package/dist/nuxt.js +4 -0
  55. package/dist/react/CDNAudio.d.ts +14 -0
  56. package/dist/react/CDNAudio.d.ts.map +1 -0
  57. package/dist/react/CDNAudio.js +5 -0
  58. package/dist/react/CDNImage.d.ts +11 -0
  59. package/dist/react/CDNImage.d.ts.map +1 -0
  60. package/dist/react/CDNImage.js +28 -0
  61. package/dist/react/CDNVideo.d.ts +12 -0
  62. package/dist/react/CDNVideo.d.ts.map +1 -0
  63. package/dist/react/CDNVideo.js +5 -0
  64. package/dist/react/index.d.ts +8 -0
  65. package/dist/react/index.d.ts.map +1 -0
  66. package/dist/react/index.js +7 -0
  67. package/dist/react/useFetch.d.ts +6 -0
  68. package/dist/react/useFetch.d.ts.map +1 -0
  69. package/dist/react/useFetch.js +14 -0
  70. package/dist/react/useImage.d.ts +6 -0
  71. package/dist/react/useImage.d.ts.map +1 -0
  72. package/dist/react/useImage.js +13 -0
  73. package/dist/react/useScript.d.ts +6 -0
  74. package/dist/react/useScript.d.ts.map +1 -0
  75. package/dist/react/useScript.js +13 -0
  76. package/dist/react/useStyle.d.ts +3 -0
  77. package/dist/react/useStyle.d.ts.map +1 -0
  78. package/dist/react/useStyle.js +7 -0
  79. package/dist/remix.d.ts +11 -0
  80. package/dist/remix.d.ts.map +1 -0
  81. package/dist/remix.js +8 -0
  82. package/dist/sveltekit.d.ts +19 -0
  83. package/dist/sveltekit.d.ts.map +1 -0
  84. package/dist/sveltekit.js +15 -0
  85. package/dist/types-generator.d.ts +20 -0
  86. package/dist/types-generator.d.ts.map +1 -0
  87. package/dist/types-generator.js +209 -0
  88. package/dist/vue/CDNImage.d.ts +39 -0
  89. package/dist/vue/CDNImage.d.ts.map +1 -0
  90. package/dist/vue/CDNImage.js +26 -0
  91. package/dist/vue/index.d.ts +7 -0
  92. package/dist/vue/index.d.ts.map +1 -0
  93. package/dist/vue/index.js +5 -0
  94. package/dist/vue/useCdnFetch.d.ts +6 -0
  95. package/dist/vue/useCdnFetch.d.ts.map +1 -0
  96. package/dist/vue/useCdnFetch.js +14 -0
  97. package/dist/vue/useCdnScript.d.ts +3 -0
  98. package/dist/vue/useCdnScript.d.ts.map +1 -0
  99. package/dist/vue/useCdnScript.js +7 -0
  100. package/dist/vue/useCdnStyle.d.ts +3 -0
  101. package/dist/vue/useCdnStyle.d.ts.map +1 -0
  102. package/dist/vue/useCdnStyle.js +7 -0
  103. package/dist/vue/useFetch.d.ts +6 -0
  104. package/dist/vue/useFetch.d.ts.map +1 -0
  105. package/dist/vue/useFetch.js +19 -0
  106. package/dist/vue/useImage.d.ts +6 -0
  107. package/dist/vue/useImage.d.ts.map +1 -0
  108. package/dist/vue/useImage.js +18 -0
  109. package/package.json +93 -0
  110. package/readme.md +356 -0
@@ -0,0 +1,5 @@
1
+ export { createFrameworkLoader as createSmoothLoader } from "./framework/shared.js";
2
+ export { createLoader } from "./core/createLoader.js";
3
+ export { buildUrl } from "./core/utils.js";
4
+ export type * from "./core/types.js";
5
+ //# sourceMappingURL=astro.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"astro.d.ts","sourceRoot":"","sources":["../src/astro.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,qBAAqB,IAAI,kBAAkB,EAAC,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAC,YAAY,EAAC,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAC,QAAQ,EAAC,MAAM,iBAAiB,CAAC;AACzC,mBAAmB,iBAAiB,CAAC"}
package/dist/astro.js ADDED
@@ -0,0 +1,3 @@
1
+ export { createFrameworkLoader as createSmoothLoader } from "./framework/shared.js";
2
+ export { createLoader } from "./core/createLoader.js";
3
+ export { buildUrl } from "./core/utils.js";
@@ -0,0 +1,6 @@
1
+ import type { LoaderConfig } from "./types";
2
+ export declare function initConfig(scdnConfig: LoaderConfig): void;
3
+ export declare function getConfig(): LoaderConfig;
4
+ export declare function tryGetConfig(): LoaderConfig | null;
5
+ export declare function normalizeConfig(scdnConfig: LoaderConfig): LoaderConfig;
6
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAI5C,wBAAgB,UAAU,CAAC,UAAU,EAAE,YAAY,QAElD;AAED,wBAAgB,SAAS,IAAI,YAAY,CASxC;AAED,wBAAgB,YAAY,IAAI,YAAY,GAAG,IAAI,CAGlD;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,YAAY,GAAG,YAAY,CA0BtE"}
@@ -0,0 +1,78 @@
1
+ let config = null;
2
+ export function initConfig(scdnConfig) {
3
+ config = normalizeConfig(scdnConfig);
4
+ }
5
+ export function getConfig() {
6
+ config = config || loadConfigFromProjectRoot();
7
+ if (!config) {
8
+ throw new Error("Smooth CDN: loader not configured. Call initConfig() first.");
9
+ }
10
+ return config;
11
+ }
12
+ export function tryGetConfig() {
13
+ config = config || loadConfigFromProjectRoot();
14
+ return config;
15
+ }
16
+ export function normalizeConfig(scdnConfig) {
17
+ if (!scdnConfig?.userSlug) {
18
+ throw new Error("Smooth CDN: config requires userSlug.");
19
+ }
20
+ if (!scdnConfig.projectSlug) {
21
+ throw new Error("Smooth CDN: config requires projectSlug.");
22
+ }
23
+ return {
24
+ ...scdnConfig,
25
+ cdnUrl: scdnConfig.cdnUrl || resolveCdnUrl(scdnConfig),
26
+ version: scdnConfig.version || "latest",
27
+ replacePath: scdnConfig.replacePath || scdnConfig.replacePaths,
28
+ variants: scdnConfig.variants || [
29
+ {
30
+ name: "default",
31
+ variantSlug: "default",
32
+ sources: scdnConfig.sources,
33
+ excludes: scdnConfig.excludes,
34
+ is_public: true,
35
+ block_bots: scdnConfig.blockBots,
36
+ block_headless: scdnConfig.blockHeadless
37
+ }
38
+ ]
39
+ };
40
+ }
41
+ const resolveCdnUrl = (scdnConfig) => {
42
+ if (scdnConfig.customSubdomain) {
43
+ return `https://${scdnConfig.customSubdomain}.smoothcdn.com`;
44
+ }
45
+ return "https://cdn.smoothcdn.com";
46
+ };
47
+ const loadConfigFromProjectRoot = () => {
48
+ if (typeof process === "undefined" || typeof process.cwd !== "function") {
49
+ return null;
50
+ }
51
+ try {
52
+ const fs = getNodeBuiltin("fs");
53
+ if (!fs) {
54
+ return null;
55
+ }
56
+ const configPath = `${process.cwd()}/.scdn.json`;
57
+ if (!fs.existsSync(configPath)) {
58
+ return null;
59
+ }
60
+ return normalizeConfig(JSON.parse(fs.readFileSync(configPath, "utf8")));
61
+ }
62
+ catch {
63
+ return null;
64
+ }
65
+ };
66
+ const getNodeBuiltin = (name) => {
67
+ const getBuiltinModule = globalThis.process?.getBuiltinModule;
68
+ if (getBuiltinModule) {
69
+ return getBuiltinModule(name);
70
+ }
71
+ try {
72
+ const requireFn = Function("return typeof require === 'function' ? require : undefined")();
73
+ return requireFn ? requireFn(`node:${name}`) : null;
74
+ }
75
+ catch {
76
+ return null;
77
+ }
78
+ };
@@ -0,0 +1,3 @@
1
+ import type { LoaderAssetMap, LoaderDefaultAssetMap, SmoothLoader } from "./types.js";
2
+ export declare function createLoader<TAssets extends Partial<LoaderAssetMap> | undefined = LoaderDefaultAssetMap>(): SmoothLoader<TAssets>;
3
+ //# sourceMappingURL=createLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createLoader.d.ts","sourceRoot":"","sources":["../../src/core/createLoader.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACR,cAAc,EAAE,qBAAqB,EAOrC,YAAY,EACf,MAAM,YAAY,CAAC;AAEpB,wBAAgB,YAAY,CAAC,OAAO,SAAS,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,GAAG,qBAAqB,KAAK,YAAY,CAAC,OAAO,CAAC,CAkBjI"}
@@ -0,0 +1,24 @@
1
+ import { buildUrl } from "./utils.js";
2
+ import { loadScript } from "./loaders/script.js";
3
+ import { loadStyle } from "./loaders/style.js";
4
+ import { loadImage } from "./loaders/image.js";
5
+ import { fetchAsset } from "./loaders/fetch.js";
6
+ export function createLoader() {
7
+ return {
8
+ url(assetPath, variantSlug) {
9
+ return buildUrl(assetPath, variantSlug);
10
+ },
11
+ script(assetPath, variantSlug) {
12
+ return loadScript(buildUrl(assetPath, variantSlug));
13
+ },
14
+ style(assetPath, variantSlug) {
15
+ return loadStyle(buildUrl(assetPath, variantSlug));
16
+ },
17
+ image(assetPath, variantSlug) {
18
+ return loadImage(buildUrl(assetPath, variantSlug));
19
+ },
20
+ fetch(assetPath, variantSlug, init) {
21
+ return fetchAsset(buildUrl(assetPath, variantSlug), init);
22
+ }
23
+ };
24
+ }
@@ -0,0 +1,5 @@
1
+ export { createLoader } from "./createLoader.js";
2
+ export { getConfig, initConfig, normalizeConfig } from "./config.js";
3
+ export { buildUrl, normalizePath, resolveDefaultVariantSlug } from "./utils.js";
4
+ export type * from "./types.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAC,SAAS,EAAE,UAAU,EAAE,eAAe,EAAC,MAAM,aAAa,CAAC;AACnE,OAAO,EAAC,QAAQ,EAAE,aAAa,EAAE,yBAAyB,EAAC,MAAM,YAAY,CAAC;AAC9E,mBAAmB,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { createLoader } from "./createLoader.js";
2
+ export { getConfig, initConfig, normalizeConfig } from "./config.js";
3
+ export { buildUrl, normalizePath, resolveDefaultVariantSlug } from "./utils.js";
@@ -0,0 +1,2 @@
1
+ export declare function fetchAsset(url: string, init?: RequestInit): Promise<Response>;
2
+ //# sourceMappingURL=fetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../src/core/loaders/fetch.ts"],"names":[],"mappings":"AAAA,wBAAsB,UAAU,CAC5B,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,QAAQ,CAAC,CAWnB"}
@@ -0,0 +1,10 @@
1
+ export async function fetchAsset(url, init) {
2
+ const res = await fetch(url, {
3
+ credentials: "omit",
4
+ ...init,
5
+ });
6
+ if (!res.ok) {
7
+ throw new Error(`Smooth CDN: fetch failed (${res.status})`);
8
+ }
9
+ return res;
10
+ }
@@ -0,0 +1,2 @@
1
+ export declare function loadImage(src: string): Promise<HTMLImageElement>;
2
+ //# sourceMappingURL=image.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../../src/core/loaders/image.ts"],"names":[],"mappings":"AAEA,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAahE"}
@@ -0,0 +1,12 @@
1
+ import { isBrowser } from "../utils.js";
2
+ export function loadImage(src) {
3
+ if (!isBrowser()) {
4
+ return Promise.reject(new Error("Smooth CDN: image loader requires browser"));
5
+ }
6
+ return new Promise((resolve, reject) => {
7
+ const img = new Image();
8
+ img.src = src;
9
+ img.onload = () => resolve(img);
10
+ img.onerror = () => reject(new Error(`Smooth CDN: failed to load image ${src}`));
11
+ });
12
+ }
@@ -0,0 +1,2 @@
1
+ export declare function loadScript(src: string, async?: boolean): Promise<void>;
2
+ //# sourceMappingURL=script.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../../../src/core/loaders/script.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAe5E"}
@@ -0,0 +1,14 @@
1
+ import { isBrowser } from "../utils.js";
2
+ export function loadScript(src, async = true) {
3
+ if (!isBrowser())
4
+ return Promise.resolve();
5
+ return new Promise((resolve, reject) => {
6
+ const script = document.createElement("script");
7
+ script.src = src;
8
+ script.async = async;
9
+ script.crossOrigin = "anonymous";
10
+ script.onload = () => resolve();
11
+ script.onerror = () => reject(new Error(`Smooth CDN: failed to load script ${src}`));
12
+ document.head.appendChild(script);
13
+ });
14
+ }
@@ -0,0 +1,2 @@
1
+ export declare function loadStyle(href: string): Promise<void>;
2
+ //# sourceMappingURL=style.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../../src/core/loaders/style.ts"],"names":[],"mappings":"AAEA,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAerD"}
@@ -0,0 +1,14 @@
1
+ import { isBrowser } from "../utils.js";
2
+ export function loadStyle(href) {
3
+ if (!isBrowser())
4
+ return Promise.resolve();
5
+ return new Promise((resolve, reject) => {
6
+ const link = document.createElement("link");
7
+ link.rel = "stylesheet";
8
+ link.href = href;
9
+ link.crossOrigin = "anonymous";
10
+ link.onload = () => resolve();
11
+ link.onerror = () => reject(new Error(`Smooth CDN: failed to load style ${href}`));
12
+ document.head.appendChild(link);
13
+ });
14
+ }
@@ -0,0 +1,2 @@
1
+ export declare function getManifest(cdnUrl: string, project: string, variant: string): Promise<any>;
2
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/core/runtime.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,CACvB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,gBASlB"}
@@ -0,0 +1,7 @@
1
+ let manifestPromise = null;
2
+ export function getManifest(cdnUrl, project, variant) {
3
+ if (!manifestPromise) {
4
+ manifestPromise = fetch(`${cdnUrl}/${project}/${variant}/manifest.json`, { cache: "force-cache" }).then(r => (r.ok ? r.json() : null));
5
+ }
6
+ return manifestPromise;
7
+ }
@@ -0,0 +1,72 @@
1
+ export type AssetPath = string;
2
+ export type AssetVariant = string;
3
+ export interface LoaderVariantConfig {
4
+ name?: string;
5
+ variantId?: string;
6
+ variantSlug?: string;
7
+ slug?: string;
8
+ fallback?: string;
9
+ is_public?: boolean;
10
+ block_bots?: boolean;
11
+ block_headless?: boolean;
12
+ sources?: string[];
13
+ excludes?: string[];
14
+ }
15
+ export interface LoaderConfig {
16
+ userSlug: string;
17
+ project?: string;
18
+ projectId?: string;
19
+ projectSlug: string;
20
+ customSubdomain?: string;
21
+ cdnUrl?: string;
22
+ version?: string;
23
+ plan?: number;
24
+ blockBots?: boolean;
25
+ blockHeadless?: boolean;
26
+ sources?: string[];
27
+ excludes?: string[];
28
+ protected?: string[];
29
+ imageVariants?: Record<string, number>;
30
+ replacePath?: Record<string, string>;
31
+ replacePaths?: Record<string, string>;
32
+ variants?: LoaderVariantConfig[];
33
+ }
34
+ export interface BuildUrlOptions<TVariant extends string = AssetVariant> {
35
+ variantSlug?: TVariant;
36
+ version?: string;
37
+ }
38
+ export interface LoaderAssetMap {
39
+ assets: AssetPath;
40
+ images: AssetPath;
41
+ audio: AssetPath;
42
+ video: AssetPath;
43
+ scripts: AssetPath;
44
+ styles: AssetPath;
45
+ endpoints: AssetPath;
46
+ variants: AssetVariant;
47
+ }
48
+ declare global {
49
+ namespace SmoothCDN {
50
+ interface Assets extends Partial<LoaderAssetMap> {
51
+ }
52
+ }
53
+ }
54
+ export type LoaderDefaultAssetMap = SmoothCDN.Assets extends {
55
+ assets: string;
56
+ } ? SmoothCDN.Assets : undefined;
57
+ export type LoaderAssetPath<TAssets extends Partial<LoaderAssetMap> | undefined> = TAssets extends Partial<LoaderAssetMap> ? TAssets["assets"] extends string ? TAssets["assets"] : AssetPath : AssetPath;
58
+ export type LoaderImagePath<TAssets extends Partial<LoaderAssetMap> | undefined> = TAssets extends Partial<LoaderAssetMap> ? TAssets["images"] extends string ? TAssets["images"] : LoaderAssetPath<TAssets> : AssetPath;
59
+ export type LoaderScriptPath<TAssets extends Partial<LoaderAssetMap> | undefined> = TAssets extends Partial<LoaderAssetMap> ? TAssets["scripts"] extends string ? TAssets["scripts"] : LoaderAssetPath<TAssets> : AssetPath;
60
+ export type LoaderAudioPath<TAssets extends Partial<LoaderAssetMap> | undefined> = TAssets extends Partial<LoaderAssetMap> ? TAssets["audio"] extends string ? TAssets["audio"] : LoaderAssetPath<TAssets> : AssetPath;
61
+ export type LoaderVideoPath<TAssets extends Partial<LoaderAssetMap> | undefined> = TAssets extends Partial<LoaderAssetMap> ? TAssets["video"] extends string ? TAssets["video"] : LoaderAssetPath<TAssets> : AssetPath;
62
+ export type LoaderStylePath<TAssets extends Partial<LoaderAssetMap> | undefined> = TAssets extends Partial<LoaderAssetMap> ? TAssets["styles"] extends string ? TAssets["styles"] : LoaderAssetPath<TAssets> : AssetPath;
63
+ export type LoaderEndpointPath<TAssets extends Partial<LoaderAssetMap> | undefined> = TAssets extends Partial<LoaderAssetMap> ? TAssets["endpoints"] extends string ? TAssets["endpoints"] : LoaderAssetPath<TAssets> : AssetPath;
64
+ export type LoaderVariantSlug<TAssets extends Partial<LoaderAssetMap> | undefined> = TAssets extends Partial<LoaderAssetMap> ? TAssets["variants"] extends string ? TAssets["variants"] : AssetVariant : AssetVariant;
65
+ export interface SmoothLoader<TAssets extends Partial<LoaderAssetMap> | undefined = LoaderDefaultAssetMap> {
66
+ url(assetPath: LoaderAssetPath<TAssets>, variantSlug?: LoaderVariantSlug<TAssets>): string;
67
+ script(assetPath: LoaderScriptPath<TAssets>, variantSlug?: LoaderVariantSlug<TAssets>): Promise<void>;
68
+ style(assetPath: LoaderStylePath<TAssets>, variantSlug?: LoaderVariantSlug<TAssets>): Promise<void>;
69
+ image(assetPath: LoaderImagePath<TAssets>, variantSlug?: LoaderVariantSlug<TAssets>): Promise<HTMLImageElement>;
70
+ fetch(assetPath: LoaderEndpointPath<TAssets>, variantSlug?: LoaderVariantSlug<TAssets>, init?: RequestInit): Promise<Response>;
71
+ }
72
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAC/B,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAElC,MAAM,WAAW,mBAAmB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,eAAe,CAAC,QAAQ,SAAS,MAAM,GAAG,YAAY;IACnE,WAAW,CAAC,EAAE,QAAQ,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,SAAS,CAAC;IACnB,MAAM,EAAE,SAAS,CAAC;IAClB,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,YAAY,CAAC;CAC1B;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,SAAS,CAAC;QAChB,UAAU,MAAO,SAAQ,OAAO,CAAC,cAAc,CAAC;SAAG;KACtD;CACJ;AAED,MAAM,MAAM,qBAAqB,GAC7B,SAAS,CAAC,MAAM,SAAS;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GACrC,SAAS,CAAC,MAAM,GAChB,SAAS,CAAC;AAEpB,MAAM,MAAM,eAAe,CAAC,OAAO,SAAS,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,IAC3E,OAAO,SAAS,OAAO,CAAC,cAAc,CAAC,GACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,MAAM,GAC5B,OAAO,CAAC,QAAQ,CAAC,GACjB,SAAS,GACb,SAAS,CAAC;AAEpB,MAAM,MAAM,eAAe,CAAC,OAAO,SAAS,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,IAC3E,OAAO,SAAS,OAAO,CAAC,cAAc,CAAC,GACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,MAAM,GAC5B,OAAO,CAAC,QAAQ,CAAC,GACjB,eAAe,CAAC,OAAO,CAAC,GAC5B,SAAS,CAAC;AAEpB,MAAM,MAAM,gBAAgB,CAAC,OAAO,SAAS,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,IAC5E,OAAO,SAAS,OAAO,CAAC,cAAc,CAAC,GACjC,OAAO,CAAC,SAAS,CAAC,SAAS,MAAM,GAC7B,OAAO,CAAC,SAAS,CAAC,GAClB,eAAe,CAAC,OAAO,CAAC,GAC5B,SAAS,CAAC;AAEpB,MAAM,MAAM,eAAe,CAAC,OAAO,SAAS,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,IAC3E,OAAO,SAAS,OAAO,CAAC,cAAc,CAAC,GACjC,OAAO,CAAC,OAAO,CAAC,SAAS,MAAM,GAC3B,OAAO,CAAC,OAAO,CAAC,GAChB,eAAe,CAAC,OAAO,CAAC,GAC5B,SAAS,CAAC;AAEpB,MAAM,MAAM,eAAe,CAAC,OAAO,SAAS,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,IAC3E,OAAO,SAAS,OAAO,CAAC,cAAc,CAAC,GACjC,OAAO,CAAC,OAAO,CAAC,SAAS,MAAM,GAC3B,OAAO,CAAC,OAAO,CAAC,GAChB,eAAe,CAAC,OAAO,CAAC,GAC5B,SAAS,CAAC;AAEpB,MAAM,MAAM,eAAe,CAAC,OAAO,SAAS,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,IAC3E,OAAO,SAAS,OAAO,CAAC,cAAc,CAAC,GACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,MAAM,GAC5B,OAAO,CAAC,QAAQ,CAAC,GACjB,eAAe,CAAC,OAAO,CAAC,GAC5B,SAAS,CAAC;AAEpB,MAAM,MAAM,kBAAkB,CAAC,OAAO,SAAS,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,IAC9E,OAAO,SAAS,OAAO,CAAC,cAAc,CAAC,GACjC,OAAO,CAAC,WAAW,CAAC,SAAS,MAAM,GAC/B,OAAO,CAAC,WAAW,CAAC,GACpB,eAAe,CAAC,OAAO,CAAC,GAC5B,SAAS,CAAC;AAEpB,MAAM,MAAM,iBAAiB,CAAC,OAAO,SAAS,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,IAC7E,OAAO,SAAS,OAAO,CAAC,cAAc,CAAC,GACjC,OAAO,CAAC,UAAU,CAAC,SAAS,MAAM,GAC9B,OAAO,CAAC,UAAU,CAAC,GACnB,YAAY,GAChB,YAAY,CAAC;AAEvB,MAAM,WAAW,YAAY,CAAC,OAAO,SAAS,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,GAAG,qBAAqB;IACrG,GAAG,CAAC,SAAS,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;IAC3F,MAAM,CAAC,SAAS,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtG,KAAK,CAAC,SAAS,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpG,KAAK,CAAC,SAAS,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAChH,KAAK,CAAC,SAAS,EAAE,kBAAkB,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,iBAAiB,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CAClI"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ import type { BuildUrlOptions } from "./types.js";
2
+ export declare function isBrowser(): boolean;
3
+ export declare function normalizePath(path: string): string;
4
+ export declare function applyReplacePath(assetPath: string, replacePath?: Record<string, string>): string;
5
+ export declare function resolveDefaultVariantSlug(): string;
6
+ export declare function buildUrl(assetPath: string, variantSlugOrOptions?: string | BuildUrlOptions): string;
7
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/core/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKlD;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAgBhG;AAED,wBAAgB,yBAAyB,IAAI,MAAM,CAKlD;AAED,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,oBAAoB,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,MAAM,CAuBnG"}
@@ -0,0 +1,50 @@
1
+ import { getConfig, tryGetConfig } from "./config.js";
2
+ export function isBrowser() {
3
+ return typeof window !== "undefined" && typeof document !== "undefined";
4
+ }
5
+ export function normalizePath(path) {
6
+ return path
7
+ .replace(/\\/g, "/")
8
+ .replace(/^\/+/, "")
9
+ .replace(/\/{2,}/g, "/");
10
+ }
11
+ export function applyReplacePath(assetPath, replacePath) {
12
+ if (!replacePath) {
13
+ return assetPath;
14
+ }
15
+ const hasLeadingSlash = assetPath.startsWith("/");
16
+ let resolvedPath = hasLeadingSlash ? assetPath : `/${assetPath}`;
17
+ for (const [from, to] of Object.entries(replacePath)) {
18
+ if (resolvedPath.startsWith(from)) {
19
+ resolvedPath = `${to}${resolvedPath.slice(from.length)}`;
20
+ break;
21
+ }
22
+ }
23
+ return hasLeadingSlash ? resolvedPath : resolvedPath.replace(/^\/+/, "");
24
+ }
25
+ export function resolveDefaultVariantSlug() {
26
+ const config = getConfig();
27
+ const variant = config.variants?.[0];
28
+ return variant?.variantSlug || variant?.slug || variant?.name || "default";
29
+ }
30
+ export function buildUrl(assetPath, variantSlugOrOptions) {
31
+ const config = tryGetConfig();
32
+ if (!config) {
33
+ return toLocalAssetPath(assetPath);
34
+ }
35
+ const options = typeof variantSlugOrOptions === "string"
36
+ ? { variantSlug: variantSlugOrOptions }
37
+ : variantSlugOrOptions || {};
38
+ const variantSlug = options.variantSlug || resolveDefaultVariantSlug();
39
+ const version = options.version ?? config.version ?? "latest";
40
+ const normalizedAssetPath = normalizePath(applyReplacePath(assetPath, config.replacePath));
41
+ const pathname = config.customSubdomain
42
+ ? `/${normalizedAssetPath}`
43
+ : `/${config.userSlug}/${config.projectSlug}/${version}/${variantSlug}/${normalizedAssetPath}`;
44
+ const url = new URL(pathname, config.cdnUrl || "https://cdn.smoothcdn.com");
45
+ return url.toString();
46
+ }
47
+ const toLocalAssetPath = (assetPath) => {
48
+ const normalizedAssetPath = normalizePath(assetPath);
49
+ return `/${normalizedAssetPath.replace(/^public\//, "")}`;
50
+ };
@@ -0,0 +1,7 @@
1
+ import type { LoaderAssetMap, LoaderDefaultAssetMap, SmoothLoader } from "../core/types.js";
2
+ export interface FrameworkLoader<TAssets extends Partial<LoaderAssetMap> | undefined = LoaderDefaultAssetMap> {
3
+ loader: SmoothLoader<TAssets>;
4
+ url: SmoothLoader<TAssets>["url"];
5
+ }
6
+ export declare const createFrameworkLoader: <TAssets extends Partial<LoaderAssetMap> | undefined = LoaderDefaultAssetMap>() => FrameworkLoader<TAssets>;
7
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/framework/shared.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,cAAc,EAAE,qBAAqB,EAAE,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE1F,MAAM,WAAW,eAAe,CAAC,OAAO,SAAS,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,GAAG,qBAAqB;IACxG,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IAC9B,GAAG,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC;CACrC;AAED,eAAO,MAAM,qBAAqB,GAC9B,OAAO,SAAS,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,GAAG,qBAAqB,OAC1E,eAAe,CAAC,OAAO,CAO3B,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { createLoader } from "../core/createLoader.js";
2
+ export const createFrameworkLoader = () => {
3
+ const loader = createLoader();
4
+ return {
5
+ loader,
6
+ url: loader.url
7
+ };
8
+ };
@@ -0,0 +1,5 @@
1
+ export { createLoader } from "./core/createLoader.js";
2
+ export { initConfig, normalizeConfig } from "./core/config.js";
3
+ export { buildUrl } from "./core/utils.js";
4
+ export type * from "./core/types.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,mBAAmB,iBAAiB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export { createLoader } from "./core/createLoader.js";
2
+ export { initConfig, normalizeConfig } from "./core/config.js";
3
+ export { buildUrl } from "./core/utils.js";
@@ -0,0 +1,8 @@
1
+ import { ImageProps } from "next/image";
2
+ import type { LoaderAssetMap, LoaderDefaultAssetMap, LoaderImagePath, LoaderVariantSlug } from "../core/types.js";
3
+ export type CDNImageProps<TAssets extends Partial<LoaderAssetMap> | undefined = LoaderDefaultAssetMap> = {
4
+ assetPath: LoaderImagePath<TAssets>;
5
+ variantSlug?: LoaderVariantSlug<TAssets>;
6
+ } & Omit<ImageProps, "src">;
7
+ export declare function CDNImage<TAssets extends Partial<LoaderAssetMap> | undefined = LoaderDefaultAssetMap>({ assetPath, variantSlug, ...props }: CDNImageProps<TAssets>): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=CDNImage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CDNImage.d.ts","sourceRoot":"","sources":["../../src/next/CDNImage.tsx"],"names":[],"mappings":"AACA,OAAc,EAAC,UAAU,EAAC,MAAM,YAAY,CAAC;AAE7C,OAAO,KAAK,EAAC,cAAc,EAAE,qBAAqB,EAAE,eAAe,EAAE,iBAAiB,EAAC,MAAM,kBAAkB,CAAC;AAEhH,MAAM,MAAM,aAAa,CAAC,OAAO,SAAS,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,GAAG,qBAAqB,IAAI;IACrG,SAAS,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IACpC,WAAW,CAAC,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;CAC5C,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AAE5B,wBAAgB,QAAQ,CAAC,OAAO,SAAS,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,GAAG,qBAAqB,EAChG,EACI,SAAS,EACT,WAAW,EACX,GAAG,KAAK,EACX,EAAE,aAAa,CAAC,OAAO,CAAC,2CAE5B"}
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import Image from "next/image";
3
+ import { buildUrl } from "../core/utils.js";
4
+ export function CDNImage({ assetPath, variantSlug, ...props }) {
5
+ return _jsx(Image, { src: buildUrl(assetPath, variantSlug), ...props });
6
+ }
@@ -0,0 +1,7 @@
1
+ import type { LoaderAssetMap, LoaderDefaultAssetMap, LoaderScriptPath, LoaderVariantSlug } from "../core/types.js";
2
+ export declare function Script<TAssets extends Partial<LoaderAssetMap> | undefined = LoaderDefaultAssetMap>({ assetPath, variantSlug, strategy }: {
3
+ assetPath: LoaderScriptPath<TAssets>;
4
+ variantSlug?: LoaderVariantSlug<TAssets>;
5
+ strategy?: "afterInteractive" | "lazyOnload";
6
+ }): import("react/jsx-runtime").JSX.Element;
7
+ //# sourceMappingURL=Script.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Script.d.ts","sourceRoot":"","sources":["../../src/next/Script.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,cAAc,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,iBAAiB,EAAC,MAAM,kBAAkB,CAAC;AAEjH,wBAAgB,MAAM,CAAC,OAAO,SAAS,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,GAAG,qBAAqB,EAC9F,EACI,SAAS,EACT,WAAW,EACX,QAA6B,EAChC,EAAE;IACC,SAAS,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,kBAAkB,GAAG,YAAY,CAAC;CAChD,2CAOJ"}
@@ -0,0 +1,7 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import NextScript from "next/script";
4
+ import { buildUrl } from "../core/utils.js";
5
+ export function Script({ assetPath, variantSlug, strategy = "afterInteractive" }) {
6
+ return (_jsx(NextScript, { src: buildUrl(assetPath, variantSlug), strategy: strategy }));
7
+ }
@@ -0,0 +1,6 @@
1
+ import type { LoaderAssetMap, LoaderDefaultAssetMap, LoaderStylePath, LoaderVariantSlug } from "../core/types.js";
2
+ export declare function Style<TAssets extends Partial<LoaderAssetMap> | undefined = LoaderDefaultAssetMap>({ assetPath, variantSlug, }: {
3
+ assetPath: LoaderStylePath<TAssets>;
4
+ variantSlug?: LoaderVariantSlug<TAssets>;
5
+ }): import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=Style.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Style.d.ts","sourceRoot":"","sources":["../../src/next/Style.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,cAAc,EAAE,qBAAqB,EAAE,eAAe,EAAE,iBAAiB,EAAC,MAAM,kBAAkB,CAAC;AAEhH,wBAAgB,KAAK,CAAC,OAAO,SAAS,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,GAAG,qBAAqB,EAC7F,EACI,SAAS,EACT,WAAW,GACd,EAAE;IACC,SAAS,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IACpC,WAAW,CAAC,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;CAC5C,2CAMJ"}
@@ -0,0 +1,7 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import Head from "next/head";
4
+ import { buildUrl } from "../core/utils.js";
5
+ export function Style({ assetPath, variantSlug, }) {
6
+ return (_jsx(Head, { children: _jsx("link", { rel: "stylesheet", href: buildUrl(assetPath, variantSlug) }) }));
7
+ }
@@ -0,0 +1,7 @@
1
+ export { CDNImage } from "../react/CDNImage.js";
2
+ export { CDNAudio } from "../react/CDNAudio.js";
3
+ export { CDNVideo } from "../react/CDNVideo.js";
4
+ export { Script } from "./Script.js";
5
+ export { Style } from "./Style.js";
6
+ export { useFetch, useImage, useScript, useStyle, } from "../react";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/next/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EACH,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,QAAQ,GACX,MAAM,UAAU,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { CDNImage } from "../react/CDNImage.js";
2
+ export { CDNAudio } from "../react/CDNAudio.js";
3
+ export { CDNVideo } from "../react/CDNVideo.js";
4
+ export { Script } from "./Script.js";
5
+ export { Style } from "./Style.js";
6
+ export { useFetch, useImage, useScript, useStyle, } from "../react";
package/dist/nuxt.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ export { createFrameworkLoader as createSmoothLoader } from "./framework/shared.js";
2
+ export { CDNImage, useFetch, useImage } from "./vue/index.js";
3
+ export { createLoader } from "./core/createLoader.js";
4
+ export { buildUrl } from "./core/utils.js";
5
+ export type * from "./core/types.js";
6
+ //# sourceMappingURL=nuxt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nuxt.d.ts","sourceRoot":"","sources":["../src/nuxt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,qBAAqB,IAAI,kBAAkB,EAAC,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAC,YAAY,EAAC,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAC,QAAQ,EAAC,MAAM,iBAAiB,CAAC;AACzC,mBAAmB,iBAAiB,CAAC"}
package/dist/nuxt.js ADDED
@@ -0,0 +1,4 @@
1
+ export { createFrameworkLoader as createSmoothLoader } from "./framework/shared.js";
2
+ export { CDNImage, useFetch, useImage } from "./vue/index.js";
3
+ export { createLoader } from "./core/createLoader.js";
4
+ export { buildUrl } from "./core/utils.js";
@@ -0,0 +1,14 @@
1
+ import React from "react";
2
+ import type { LoaderAssetMap, LoaderDefaultAssetMap, LoaderAudioPath, LoaderVariantSlug } from "../core/types.js";
3
+ export interface CDNMediaSource<TAssetPath extends string, TVariant extends string> {
4
+ assetPath: TAssetPath;
5
+ variantSlug?: TVariant;
6
+ type?: string;
7
+ }
8
+ export type CDNAudioProps<TAssets extends Partial<LoaderAssetMap> | undefined = LoaderDefaultAssetMap> = {
9
+ assetPath: LoaderAudioPath<TAssets>;
10
+ variantSlug?: LoaderVariantSlug<TAssets>;
11
+ sources?: Array<CDNMediaSource<LoaderAudioPath<TAssets>, LoaderVariantSlug<TAssets>>>;
12
+ } & Omit<React.AudioHTMLAttributes<HTMLAudioElement>, "src">;
13
+ export declare function CDNAudio<TAssets extends Partial<LoaderAssetMap> | undefined = LoaderDefaultAssetMap>({ assetPath, variantSlug, sources, children, ...props }: CDNAudioProps<TAssets>): import("react/jsx-runtime").JSX.Element;
14
+ //# sourceMappingURL=CDNAudio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CDNAudio.d.ts","sourceRoot":"","sources":["../../src/react/CDNAudio.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAC,cAAc,EAAE,qBAAqB,EAAE,eAAe,EAAE,iBAAiB,EAAC,MAAM,kBAAkB,CAAC;AAEhH,MAAM,WAAW,cAAc,CAAC,UAAU,SAAS,MAAM,EAAE,QAAQ,SAAS,MAAM;IAC9E,SAAS,EAAE,UAAU,CAAC;IACtB,WAAW,CAAC,EAAE,QAAQ,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,aAAa,CAAC,OAAO,SAAS,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,GAAG,qBAAqB,IAAI;IACrG,SAAS,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IACpC,WAAW,CAAC,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACzC,OAAO,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CACzF,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,KAAK,CAAC,CAAC;AAE7D,wBAAgB,QAAQ,CAAC,OAAO,SAAS,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,GAAG,qBAAqB,EAChG,EACI,SAAS,EACT,WAAW,EACX,OAAO,EACP,QAAQ,EACR,GAAG,KAAK,EACX,EAAE,aAAa,CAAC,OAAO,CAAC,2CAa5B"}
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { buildUrl } from "../core/utils.js";
3
+ export function CDNAudio({ assetPath, variantSlug, sources, children, ...props }) {
4
+ return (_jsxs("audio", { src: sources?.length ? undefined : buildUrl(assetPath, variantSlug), ...props, children: [sources?.map((source) => (_jsx("source", { src: buildUrl(source.assetPath, source.variantSlug), type: source.type }, `${source.assetPath}:${source.variantSlug || ""}:${source.type || ""}`))), children] }));
5
+ }
@@ -0,0 +1,11 @@
1
+ import React from "react";
2
+ import type { LoaderAssetMap, LoaderDefaultAssetMap, LoaderImagePath, LoaderVariantSlug } from "../core/types.js";
3
+ export type CDNImageProps<TAssets extends Partial<LoaderAssetMap> | undefined = LoaderDefaultAssetMap> = {
4
+ assetPath: LoaderImagePath<TAssets>;
5
+ variantSlug?: LoaderVariantSlug<TAssets>;
6
+ alt: string;
7
+ responsive?: boolean;
8
+ variants?: number[];
9
+ } & Omit<React.ImgHTMLAttributes<HTMLImageElement>, "src" | "srcSet">;
10
+ export declare function CDNImage<TAssets extends Partial<LoaderAssetMap> | undefined = LoaderDefaultAssetMap>({ assetPath, variantSlug, alt, responsive, variants, sizes, ...props }: CDNImageProps<TAssets>): import("react/jsx-runtime").JSX.Element;
11
+ //# sourceMappingURL=CDNImage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CDNImage.d.ts","sourceRoot":"","sources":["../../src/react/CDNImage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAC,cAAc,EAAE,qBAAqB,EAAE,eAAe,EAAE,iBAAiB,EAAC,MAAM,kBAAkB,CAAC;AAIhH,MAAM,MAAM,aAAa,CAAC,OAAO,SAAS,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,GAAG,qBAAqB,IAAI;IACrG,SAAS,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IACpC,WAAW,CAAC,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,CAAC;AAEtE,wBAAgB,QAAQ,CAAC,OAAO,SAAS,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,GAAG,qBAAqB,EAChG,EACI,SAAS,EACT,WAAW,EACX,GAAQ,EACR,UAAkB,EAClB,QAAQ,EACR,KAAK,EACL,GAAG,KAAK,EACX,EAAE,aAAa,CAAC,OAAO,CAAC,2CAsB5B"}