@nitida/sdk 0.32.3 → 0.35.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/AGENTS.md +26 -0
- package/README.md +63 -11
- package/dist/index.d.ts +21 -5
- package/dist/index.js +34 -4
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/server.js +34 -4
- package/dist/server.js.map +1 -1
- package/dist/web.d.ts +1 -1
- package/dist/web.js +34 -4
- package/dist/web.js.map +1 -1
- package/package.json +2 -2
- package/skills/nitida-sdk/SKILL.md +131 -7
- package/src/index.ts +78 -23
- package/src/server/index.ts +7 -0
- package/src/web/index.ts +7 -0
package/dist/web.js
CHANGED
|
@@ -32,6 +32,7 @@ import {
|
|
|
32
32
|
configureSlotResolver as configureSlotResolver2,
|
|
33
33
|
contrastRatio,
|
|
34
34
|
deriveAccessKey,
|
|
35
|
+
deriveTransformKid,
|
|
35
36
|
extractAssetSha,
|
|
36
37
|
getAmbientGradient,
|
|
37
38
|
getAssetDimensions,
|
|
@@ -55,6 +56,9 @@ import {
|
|
|
55
56
|
invalidateSlotCache as invalidateSlotCache2,
|
|
56
57
|
isRequestablePreset as isRequestablePreset2,
|
|
57
58
|
iteratePaletteSwatches,
|
|
59
|
+
MAX_SIGNED_TRANSFORM_TTL_SECONDS,
|
|
60
|
+
MAX_SIGNED_URL_TTL_SECONDS,
|
|
61
|
+
MIN_SIGNED_TRANSFORM_TTL_SECONDS,
|
|
58
62
|
PRESET_EXT,
|
|
59
63
|
PRESET_LONG,
|
|
60
64
|
PRESET_MAX_DIM,
|
|
@@ -70,7 +74,8 @@ import {
|
|
|
70
74
|
signAccessUrl,
|
|
71
75
|
signTransformUrl,
|
|
72
76
|
TRANSFORM_WIDTHS,
|
|
73
|
-
toRequestablePresets as toRequestablePresets2
|
|
77
|
+
toRequestablePresets as toRequestablePresets2,
|
|
78
|
+
transformMessage
|
|
74
79
|
} from "@nitida/asset-client";
|
|
75
80
|
function endpointUrl(opts, path, searchParams) {
|
|
76
81
|
const endpoint = opts.endpoint.replace(/\/+$/, "");
|
|
@@ -508,6 +513,13 @@ function mimeFromFileName(fileName) {
|
|
|
508
513
|
return ext ? MIME_BY_EXT[ext] ?? null : null;
|
|
509
514
|
}
|
|
510
515
|
var DEFAULT_UPLOAD_PRESETS = ["original"];
|
|
516
|
+
function kindForMime(mime) {
|
|
517
|
+
const m = (mime ?? "").toLowerCase();
|
|
518
|
+
if (m.startsWith("video/")) return "video";
|
|
519
|
+
if (m.startsWith("audio/")) return "audio";
|
|
520
|
+
if (m.startsWith("image/")) return "image";
|
|
521
|
+
return "other";
|
|
522
|
+
}
|
|
511
523
|
async function computeSha256(bytes) {
|
|
512
524
|
const buf = bytes instanceof Blob ? await bytes.arrayBuffer() : bytes instanceof Uint8Array ? bytes.buffer : bytes;
|
|
513
525
|
const digest = await crypto.subtle.digest("SHA-256", buf);
|
|
@@ -593,7 +605,11 @@ var NitidaClient = class {
|
|
|
593
605
|
"aq.transform({ sign: true }) requires `signingKey` in NitidaClientOptions. No signingKey on this client. It is returned ONCE, in the response that creates your project (POST /admin/projects \u2192 `signingKey`, next to the three API keys; the console shows it in the same panel). If you never saw one \u2014 projects created before 2026-08-23 were not handed it \u2014 ask the platform operator to rotate: with no signed URLs in flight that invalidates nothing and is free. If you DO have signed URLs circulating, ask for the current key instead, because rotating would kill them. Then pass it to the SDK constructor on a SERVER-side instance only."
|
|
594
606
|
);
|
|
595
607
|
}
|
|
596
|
-
return getSignedTransformUrl(asset, opts, this.opts.signingKey
|
|
608
|
+
return getSignedTransformUrl(asset, opts, this.opts.signingKey, {
|
|
609
|
+
expiresInSeconds: signOpts.expiresInSeconds,
|
|
610
|
+
tenantId: signOpts.tenantId ?? this.opts.tenantId,
|
|
611
|
+
nowSeconds: signOpts.nowSeconds
|
|
612
|
+
}) ?? Promise.resolve(this.urlFor(asset, "lg"));
|
|
597
613
|
}
|
|
598
614
|
transformSrcSet(asset, widths, extraOpts = {}, signOpts) {
|
|
599
615
|
if (!signOpts?.sign) return getTransformSrcSet(asset, widths, extraOpts);
|
|
@@ -603,12 +619,18 @@ var NitidaClient = class {
|
|
|
603
619
|
);
|
|
604
620
|
}
|
|
605
621
|
const key = this.opts.signingKey;
|
|
622
|
+
const sign = {
|
|
623
|
+
expiresInSeconds: signOpts.expiresInSeconds,
|
|
624
|
+
tenantId: signOpts.tenantId ?? this.opts.tenantId,
|
|
625
|
+
nowSeconds: signOpts.nowSeconds
|
|
626
|
+
};
|
|
606
627
|
return Promise.all(
|
|
607
628
|
widths.map(async (w) => {
|
|
608
629
|
const signed = await getSignedTransformUrl(
|
|
609
630
|
asset,
|
|
610
631
|
{ ...extraOpts, width: w },
|
|
611
|
-
key
|
|
632
|
+
key,
|
|
633
|
+
sign
|
|
612
634
|
);
|
|
613
635
|
return signed ? `${signed} ${w}w` : null;
|
|
614
636
|
})
|
|
@@ -777,6 +799,7 @@ var NitidaClient = class {
|
|
|
777
799
|
// Same shape as the presign branch below, for the same reason. This
|
|
778
800
|
// DTO does carry `sha` today — but relying on that is how the other
|
|
779
801
|
// branch broke, and the value we hashed ourselves is authoritative.
|
|
802
|
+
kind: existing.kind ?? kindForMime(mime),
|
|
780
803
|
visibility: existing.visibility ?? "public",
|
|
781
804
|
presets: existing.presets ?? "",
|
|
782
805
|
variants: existing.variants ?? [],
|
|
@@ -837,6 +860,7 @@ var NitidaClient = class {
|
|
|
837
860
|
// ACTUALLY has, now that we waited for it — not from
|
|
838
861
|
// `defaultPresetForMime`, which is a guess made before anything exists.
|
|
839
862
|
// Guessing was safe only while this branch never ran.
|
|
863
|
+
kind: settled.kind ?? kindForMime(mime),
|
|
840
864
|
visibility: settled.visibility ?? "public",
|
|
841
865
|
presets: settled.presets ?? "",
|
|
842
866
|
variants: settled.variants ?? [],
|
|
@@ -888,6 +912,7 @@ var NitidaClient = class {
|
|
|
888
912
|
sha: sha.slice(0, 16),
|
|
889
913
|
mime: final.mime ?? mime,
|
|
890
914
|
oext: final.oext ?? null,
|
|
915
|
+
kind: final.kind ?? kindForMime(final.mime ?? mime),
|
|
891
916
|
visibility: final.visibility ?? "public",
|
|
892
917
|
presets: final.presets ?? "",
|
|
893
918
|
variants: final.variants ?? [],
|
|
@@ -1005,6 +1030,9 @@ async function compressImages(files, opts = {}) {
|
|
|
1005
1030
|
}
|
|
1006
1031
|
export {
|
|
1007
1032
|
DEFAULT_COMPRESSION_OPTIONS,
|
|
1033
|
+
MAX_SIGNED_TRANSFORM_TTL_SECONDS,
|
|
1034
|
+
MAX_SIGNED_URL_TTL_SECONDS,
|
|
1035
|
+
MIN_SIGNED_TRANSFORM_TTL_SECONDS,
|
|
1008
1036
|
NitidaClient2 as NitidaClient,
|
|
1009
1037
|
PRESET_EXT,
|
|
1010
1038
|
PRESET_LONG,
|
|
@@ -1022,6 +1050,7 @@ export {
|
|
|
1022
1050
|
configureSlotResolver2 as configureSlotResolver,
|
|
1023
1051
|
contrastRatio,
|
|
1024
1052
|
deriveAccessKey,
|
|
1053
|
+
deriveTransformKid,
|
|
1025
1054
|
extractAssetSha,
|
|
1026
1055
|
getAmbientGradient,
|
|
1027
1056
|
getAssetDimensions,
|
|
@@ -1056,6 +1085,7 @@ export {
|
|
|
1056
1085
|
setTenantId2 as setTenantId,
|
|
1057
1086
|
signAccessUrl,
|
|
1058
1087
|
signTransformUrl,
|
|
1059
|
-
toRequestablePresets2 as toRequestablePresets
|
|
1088
|
+
toRequestablePresets2 as toRequestablePresets,
|
|
1089
|
+
transformMessage
|
|
1060
1090
|
};
|
|
1061
1091
|
//# sourceMappingURL=web.js.map
|