@nitida/asset-client 0.23.0 → 0.24.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/dist/index.cjs +35 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +89 -38
- package/dist/index.d.ts +89 -38
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +2 -0
- package/src/transform.ts +154 -38
package/dist/index.cjs
CHANGED
|
@@ -43,6 +43,7 @@ __export(index_exports, {
|
|
|
43
43
|
getAssetDimensions: () => getAssetDimensions,
|
|
44
44
|
getAssetSrcSet: () => getAssetSrcSet,
|
|
45
45
|
getAssetUrl: () => getAssetUrl,
|
|
46
|
+
getByteBudgetTransformUrl: () => getByteBudgetTransformUrl,
|
|
46
47
|
getCdnBase: () => getCdnBase,
|
|
47
48
|
getHlsLadder: () => getHlsLadder,
|
|
48
49
|
getHlsStreamingUrl: () => getHlsStreamingUrl,
|
|
@@ -57,6 +58,7 @@ __export(index_exports, {
|
|
|
57
58
|
getTransformUrl: () => getTransformUrl,
|
|
58
59
|
getVideoTransformUrl: () => getVideoTransformUrl,
|
|
59
60
|
hasPreset: () => hasPreset,
|
|
61
|
+
hasSizeLadder: () => hasSizeLadder,
|
|
60
62
|
hlsLadderAlignment: () => hlsLadderAlignment,
|
|
61
63
|
invalidateSlotCache: () => invalidateSlotCache,
|
|
62
64
|
isRequestablePreset: () => isRequestablePreset,
|
|
@@ -373,6 +375,37 @@ function getTransformUrl(asset, opts) {
|
|
|
373
375
|
);
|
|
374
376
|
return buildTransformUrl(asset, opts);
|
|
375
377
|
}
|
|
378
|
+
var LADDER_PRESETS = ["thumb", "sm", "md", "lg", "xl"];
|
|
379
|
+
function hasSizeLadder(asset) {
|
|
380
|
+
const raw = asset.presets;
|
|
381
|
+
if (raw == null || raw.trim() === "") return null;
|
|
382
|
+
return LADDER_PRESETS.some((preset) => hasPreset(asset, preset));
|
|
383
|
+
}
|
|
384
|
+
function getByteBudgetTransformUrl(asset, opts) {
|
|
385
|
+
assertSha(asset, "getByteBudgetTransformUrl");
|
|
386
|
+
assertPublic(
|
|
387
|
+
asset,
|
|
388
|
+
"getByteBudgetTransformUrl",
|
|
389
|
+
"getPrivateTransformUrl(asset, opts, signingKey, { expiresInSeconds: 300 })"
|
|
390
|
+
);
|
|
391
|
+
if (!Number.isInteger(opts.quality) || opts.quality < 1 || opts.quality > 100) {
|
|
392
|
+
throw new Error(
|
|
393
|
+
`getByteBudgetTransformUrl: quality must be an integer 1..100, got ${String(opts.quality)}. If you do not have a measured byte budget, use getTransformUrl and omit quality entirely.`
|
|
394
|
+
);
|
|
395
|
+
}
|
|
396
|
+
const ladder = hasSizeLadder(asset);
|
|
397
|
+
if (ladder === null) {
|
|
398
|
+
throw new Error(
|
|
399
|
+
`getByteBudgetTransformUrl: asset ${asset.sha} carries no 'presets', so whether a pinned quality would re-compress it is UNKNOWN \u2014 and unknown is not permission. Fetch the full DTO (assets.get / assets.byHash) and pass it, or use getTransformUrl with no quality.`
|
|
400
|
+
);
|
|
401
|
+
}
|
|
402
|
+
if (ladder) {
|
|
403
|
+
throw new Error(
|
|
404
|
+
`getByteBudgetTransformUrl: asset ${asset.sha} has stored size variants (presets="${asset.presets}"). A pinned quality there does not set the encoder \u2014 it makes /t/ decode one of those already-compressed variants, so the output is a SECOND lossy generation: measured +2..+8% HEAVIER and -0.50..-0.85 dB. Use getTransformUrl with no quality (one pass from the master), or upload this asset with presets: ["original"] if the byte budget is real.`
|
|
405
|
+
);
|
|
406
|
+
}
|
|
407
|
+
return buildTransformUrl(asset, opts);
|
|
408
|
+
}
|
|
376
409
|
function getSignedTransformUrl(asset, opts, signingKey, signOpts) {
|
|
377
410
|
assertSha(asset, "getSignedTransformUrl");
|
|
378
411
|
assertPublic(
|
|
@@ -827,6 +860,7 @@ function getAssetDimensions(asset) {
|
|
|
827
860
|
getAssetDimensions,
|
|
828
861
|
getAssetSrcSet,
|
|
829
862
|
getAssetUrl,
|
|
863
|
+
getByteBudgetTransformUrl,
|
|
830
864
|
getCdnBase,
|
|
831
865
|
getHlsLadder,
|
|
832
866
|
getHlsStreamingUrl,
|
|
@@ -841,6 +875,7 @@ function getAssetDimensions(asset) {
|
|
|
841
875
|
getTransformUrl,
|
|
842
876
|
getVideoTransformUrl,
|
|
843
877
|
hasPreset,
|
|
878
|
+
hasSizeLadder,
|
|
844
879
|
hlsLadderAlignment,
|
|
845
880
|
invalidateSlotCache,
|
|
846
881
|
isRequestablePreset,
|