@timbenniks/contentstack-platform-sdk 0.1.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 (244) hide show
  1. package/dist/auth/index.cjs +607 -0
  2. package/dist/auth/index.cjs.map +1 -0
  3. package/dist/auth/index.d.cts +108 -0
  4. package/dist/auth/index.d.ts +108 -0
  5. package/dist/auth/index.mjs +25 -0
  6. package/dist/auth/index.mjs.map +1 -0
  7. package/dist/brandkit/index.cjs +525 -0
  8. package/dist/brandkit/index.cjs.map +1 -0
  9. package/dist/brandkit/index.d.cts +95 -0
  10. package/dist/brandkit/index.d.ts +95 -0
  11. package/dist/brandkit/index.mjs +11 -0
  12. package/dist/brandkit/index.mjs.map +1 -0
  13. package/dist/chunk-3C6J2BDB.mjs +84 -0
  14. package/dist/chunk-3C6J2BDB.mjs.map +1 -0
  15. package/dist/chunk-3KE63N3I.mjs +64 -0
  16. package/dist/chunk-3KE63N3I.mjs.map +1 -0
  17. package/dist/chunk-4CJ4IVPJ.mjs +212 -0
  18. package/dist/chunk-4CJ4IVPJ.mjs.map +1 -0
  19. package/dist/chunk-4JFUI7MJ.mjs +368 -0
  20. package/dist/chunk-4JFUI7MJ.mjs.map +1 -0
  21. package/dist/chunk-7VFGD32I.mjs +26 -0
  22. package/dist/chunk-7VFGD32I.mjs.map +1 -0
  23. package/dist/chunk-ARPJDW3A.mjs +44 -0
  24. package/dist/chunk-ARPJDW3A.mjs.map +1 -0
  25. package/dist/chunk-AVJHCFRK.mjs +52 -0
  26. package/dist/chunk-AVJHCFRK.mjs.map +1 -0
  27. package/dist/chunk-BK2IBTQS.mjs +131 -0
  28. package/dist/chunk-BK2IBTQS.mjs.map +1 -0
  29. package/dist/chunk-BUZ6CQHE.mjs +75 -0
  30. package/dist/chunk-BUZ6CQHE.mjs.map +1 -0
  31. package/dist/chunk-CKMAOWBQ.mjs +379 -0
  32. package/dist/chunk-CKMAOWBQ.mjs.map +1 -0
  33. package/dist/chunk-DJQLN4TR.mjs +1 -0
  34. package/dist/chunk-DJQLN4TR.mjs.map +1 -0
  35. package/dist/chunk-DMERADWM.mjs +67 -0
  36. package/dist/chunk-DMERADWM.mjs.map +1 -0
  37. package/dist/chunk-EREPKWTW.mjs +926 -0
  38. package/dist/chunk-EREPKWTW.mjs.map +1 -0
  39. package/dist/chunk-FQP4PB5X.mjs +88 -0
  40. package/dist/chunk-FQP4PB5X.mjs.map +1 -0
  41. package/dist/chunk-GNPQJBFX.mjs +144 -0
  42. package/dist/chunk-GNPQJBFX.mjs.map +1 -0
  43. package/dist/chunk-GOSB24M6.mjs +87 -0
  44. package/dist/chunk-GOSB24M6.mjs.map +1 -0
  45. package/dist/chunk-JL2E3EOT.mjs +255 -0
  46. package/dist/chunk-JL2E3EOT.mjs.map +1 -0
  47. package/dist/chunk-JYGZBKTH.mjs +222 -0
  48. package/dist/chunk-JYGZBKTH.mjs.map +1 -0
  49. package/dist/chunk-JZE2W7VW.mjs +52 -0
  50. package/dist/chunk-JZE2W7VW.mjs.map +1 -0
  51. package/dist/chunk-K76DKSHJ.mjs +18 -0
  52. package/dist/chunk-K76DKSHJ.mjs.map +1 -0
  53. package/dist/chunk-KLVIROVU.mjs +232 -0
  54. package/dist/chunk-KLVIROVU.mjs.map +1 -0
  55. package/dist/chunk-LPVVA5J3.mjs +18 -0
  56. package/dist/chunk-LPVVA5J3.mjs.map +1 -0
  57. package/dist/chunk-NKLOZ5VI.mjs +112 -0
  58. package/dist/chunk-NKLOZ5VI.mjs.map +1 -0
  59. package/dist/chunk-QGA4WBDC.mjs +7 -0
  60. package/dist/chunk-QGA4WBDC.mjs.map +1 -0
  61. package/dist/chunk-QW7TVYOA.mjs +56 -0
  62. package/dist/chunk-QW7TVYOA.mjs.map +1 -0
  63. package/dist/chunk-SU5QEKYW.mjs +83 -0
  64. package/dist/chunk-SU5QEKYW.mjs.map +1 -0
  65. package/dist/chunk-T5A2E2RI.mjs +654 -0
  66. package/dist/chunk-T5A2E2RI.mjs.map +1 -0
  67. package/dist/chunk-T5OIJQK7.mjs +116 -0
  68. package/dist/chunk-T5OIJQK7.mjs.map +1 -0
  69. package/dist/chunk-VW7DD6HV.mjs +253 -0
  70. package/dist/chunk-VW7DD6HV.mjs.map +1 -0
  71. package/dist/chunk-XH7NLHGW.mjs +133 -0
  72. package/dist/chunk-XH7NLHGW.mjs.map +1 -0
  73. package/dist/client-DJ5haQGd.d.cts +22 -0
  74. package/dist/client-DwVGVSQz.d.ts +22 -0
  75. package/dist/cma/index.cjs +1349 -0
  76. package/dist/cma/index.cjs.map +1 -0
  77. package/dist/cma/index.d.cts +22 -0
  78. package/dist/cma/index.d.ts +22 -0
  79. package/dist/cma/index.mjs +70 -0
  80. package/dist/cma/index.mjs.map +1 -0
  81. package/dist/errors-CAw-IRCP.d.cts +65 -0
  82. package/dist/errors-CAw-IRCP.d.ts +65 -0
  83. package/dist/generative-ai/index.cjs +401 -0
  84. package/dist/generative-ai/index.cjs.map +1 -0
  85. package/dist/generative-ai/index.d.cts +31 -0
  86. package/dist/generative-ai/index.d.ts +31 -0
  87. package/dist/generative-ai/index.mjs +10 -0
  88. package/dist/generative-ai/index.mjs.map +1 -0
  89. package/dist/images/index.cjs +185 -0
  90. package/dist/images/index.cjs.map +1 -0
  91. package/dist/images/index.d.cts +27 -0
  92. package/dist/images/index.d.ts +27 -0
  93. package/dist/images/index.mjs +8 -0
  94. package/dist/images/index.mjs.map +1 -0
  95. package/dist/index.cjs +2909 -0
  96. package/dist/index.cjs.map +1 -0
  97. package/dist/index.d.cts +30 -0
  98. package/dist/index.d.ts +30 -0
  99. package/dist/index.mjs +153 -0
  100. package/dist/index.mjs.map +1 -0
  101. package/dist/knowledge-vault/index.cjs +413 -0
  102. package/dist/knowledge-vault/index.cjs.map +1 -0
  103. package/dist/knowledge-vault/index.d.cts +49 -0
  104. package/dist/knowledge-vault/index.d.ts +49 -0
  105. package/dist/knowledge-vault/index.mjs +10 -0
  106. package/dist/knowledge-vault/index.mjs.map +1 -0
  107. package/dist/launch/index.cjs +624 -0
  108. package/dist/launch/index.cjs.map +1 -0
  109. package/dist/launch/index.d.cts +169 -0
  110. package/dist/launch/index.d.ts +169 -0
  111. package/dist/launch/index.mjs +11 -0
  112. package/dist/launch/index.mjs.map +1 -0
  113. package/dist/react/auth/index.cjs +113 -0
  114. package/dist/react/auth/index.cjs.map +1 -0
  115. package/dist/react/auth/index.d.cts +33 -0
  116. package/dist/react/auth/index.d.ts +33 -0
  117. package/dist/react/auth/index.mjs +13 -0
  118. package/dist/react/auth/index.mjs.map +1 -0
  119. package/dist/react/content/index.cjs +113 -0
  120. package/dist/react/content/index.cjs.map +1 -0
  121. package/dist/react/content/index.d.cts +25 -0
  122. package/dist/react/content/index.d.ts +25 -0
  123. package/dist/react/content/index.mjs +7 -0
  124. package/dist/react/content/index.mjs.map +1 -0
  125. package/dist/react/hooks/index.cjs +2097 -0
  126. package/dist/react/hooks/index.cjs.map +1 -0
  127. package/dist/react/hooks/index.d.cts +77 -0
  128. package/dist/react/hooks/index.d.ts +77 -0
  129. package/dist/react/hooks/index.mjs +46 -0
  130. package/dist/react/hooks/index.mjs.map +1 -0
  131. package/dist/react/index.cjs +2307 -0
  132. package/dist/react/index.cjs.map +1 -0
  133. package/dist/react/index.d.cts +16 -0
  134. package/dist/react/index.d.ts +16 -0
  135. package/dist/react/index.mjs +67 -0
  136. package/dist/react/index.mjs.map +1 -0
  137. package/dist/react/provider/index.cjs +83 -0
  138. package/dist/react/provider/index.cjs.map +1 -0
  139. package/dist/react/provider/index.d.cts +30 -0
  140. package/dist/react/provider/index.d.ts +30 -0
  141. package/dist/react/provider/index.mjs +11 -0
  142. package/dist/react/provider/index.mjs.map +1 -0
  143. package/dist/regions/index.cjs +171 -0
  144. package/dist/regions/index.cjs.map +1 -0
  145. package/dist/regions/index.d.cts +55 -0
  146. package/dist/regions/index.d.ts +55 -0
  147. package/dist/regions/index.mjs +13 -0
  148. package/dist/regions/index.mjs.map +1 -0
  149. package/dist/request-builders-BxeolQIw.d.ts +735 -0
  150. package/dist/request-builders-C2IG1LUo.d.cts +735 -0
  151. package/dist/rte/index.cjs +683 -0
  152. package/dist/rte/index.cjs.map +1 -0
  153. package/dist/rte/index.d.cts +33 -0
  154. package/dist/rte/index.d.ts +33 -0
  155. package/dist/rte/index.mjs +17 -0
  156. package/dist/rte/index.mjs.map +1 -0
  157. package/dist/server/index.cjs +917 -0
  158. package/dist/server/index.cjs.map +1 -0
  159. package/dist/server/index.d.cts +6 -0
  160. package/dist/server/index.d.ts +6 -0
  161. package/dist/server/index.mjs +45 -0
  162. package/dist/server/index.mjs.map +1 -0
  163. package/dist/server/middleware/index.cjs +614 -0
  164. package/dist/server/middleware/index.cjs.map +1 -0
  165. package/dist/server/middleware/index.d.cts +77 -0
  166. package/dist/server/middleware/index.d.ts +77 -0
  167. package/dist/server/middleware/index.mjs +27 -0
  168. package/dist/server/middleware/index.mjs.map +1 -0
  169. package/dist/server/proxy/index.cjs +329 -0
  170. package/dist/server/proxy/index.cjs.map +1 -0
  171. package/dist/server/proxy/index.d.cts +143 -0
  172. package/dist/server/proxy/index.d.ts +143 -0
  173. package/dist/server/proxy/index.mjs +29 -0
  174. package/dist/server/proxy/index.mjs.map +1 -0
  175. package/dist/server/webhooks/index.cjs +131 -0
  176. package/dist/server/webhooks/index.cjs.map +1 -0
  177. package/dist/server/webhooks/index.d.cts +230 -0
  178. package/dist/server/webhooks/index.d.ts +230 -0
  179. package/dist/server/webhooks/index.mjs +23 -0
  180. package/dist/server/webhooks/index.mjs.map +1 -0
  181. package/dist/types-6D9VR7pT.d.cts +26 -0
  182. package/dist/types-AelT0rFJ.d.cts +21 -0
  183. package/dist/types-AelT0rFJ.d.ts +21 -0
  184. package/dist/types-Bu5yCgmw.d.ts +26 -0
  185. package/dist/types-DgixK-ll.d.cts +23 -0
  186. package/dist/types-DgixK-ll.d.ts +23 -0
  187. package/dist/types-DrMwdlH9.d.cts +245 -0
  188. package/dist/types-DrMwdlH9.d.ts +245 -0
  189. package/dist/ui/css/index.cjs +31 -0
  190. package/dist/ui/css/index.cjs.map +1 -0
  191. package/dist/ui/css/index.d.cts +15 -0
  192. package/dist/ui/css/index.d.ts +15 -0
  193. package/dist/ui/css/index.mjs +7 -0
  194. package/dist/ui/css/index.mjs.map +1 -0
  195. package/dist/ui/index.cjs +368 -0
  196. package/dist/ui/index.cjs.map +1 -0
  197. package/dist/ui/index.d.cts +4 -0
  198. package/dist/ui/index.d.ts +4 -0
  199. package/dist/ui/index.mjs +33 -0
  200. package/dist/ui/index.mjs.map +1 -0
  201. package/dist/ui/theme/index.cjs +105 -0
  202. package/dist/ui/theme/index.cjs.map +1 -0
  203. package/dist/ui/theme/index.d.cts +33 -0
  204. package/dist/ui/theme/index.d.ts +33 -0
  205. package/dist/ui/theme/index.mjs +15 -0
  206. package/dist/ui/theme/index.mjs.map +1 -0
  207. package/dist/ui/tokens/index.cjs +286 -0
  208. package/dist/ui/tokens/index.cjs.map +1 -0
  209. package/dist/ui/tokens/index.d.cts +54 -0
  210. package/dist/ui/tokens/index.d.ts +54 -0
  211. package/dist/ui/tokens/index.mjs +17 -0
  212. package/dist/ui/tokens/index.mjs.map +1 -0
  213. package/dist/ui/tokens.css +408 -0
  214. package/dist/vue/auth/index.cjs +141 -0
  215. package/dist/vue/auth/index.cjs.map +1 -0
  216. package/dist/vue/auth/index.d.cts +78 -0
  217. package/dist/vue/auth/index.d.ts +78 -0
  218. package/dist/vue/auth/index.mjs +13 -0
  219. package/dist/vue/auth/index.mjs.map +1 -0
  220. package/dist/vue/composables/index.cjs +2108 -0
  221. package/dist/vue/composables/index.cjs.map +1 -0
  222. package/dist/vue/composables/index.d.cts +78 -0
  223. package/dist/vue/composables/index.d.ts +78 -0
  224. package/dist/vue/composables/index.mjs +46 -0
  225. package/dist/vue/composables/index.mjs.map +1 -0
  226. package/dist/vue/content/index.cjs +142 -0
  227. package/dist/vue/content/index.cjs.map +1 -0
  228. package/dist/vue/content/index.d.cts +47 -0
  229. package/dist/vue/content/index.d.ts +47 -0
  230. package/dist/vue/content/index.mjs +7 -0
  231. package/dist/vue/content/index.mjs.map +1 -0
  232. package/dist/vue/index.cjs +2389 -0
  233. package/dist/vue/index.cjs.map +1 -0
  234. package/dist/vue/index.d.cts +16 -0
  235. package/dist/vue/index.d.ts +16 -0
  236. package/dist/vue/index.mjs +69 -0
  237. package/dist/vue/index.mjs.map +1 -0
  238. package/dist/vue/provider/index.cjs +97 -0
  239. package/dist/vue/provider/index.cjs.map +1 -0
  240. package/dist/vue/provider/index.d.cts +90 -0
  241. package/dist/vue/provider/index.d.ts +90 -0
  242. package/dist/vue/provider/index.mjs +13 -0
  243. package/dist/vue/provider/index.mjs.map +1 -0
  244. package/package.json +195 -0
@@ -0,0 +1,185 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/images/index.ts
21
+ var images_exports = {};
22
+ __export(images_exports, {
23
+ imageTransform: () => imageTransform
24
+ });
25
+ module.exports = __toCommonJS(images_exports);
26
+
27
+ // src/http/errors.ts
28
+ var ContentstackError = class extends Error {
29
+ name = "ContentstackError";
30
+ status;
31
+ errorCode;
32
+ errors;
33
+ requestPath;
34
+ constructor(message, options) {
35
+ super(message, options?.cause ? { cause: options.cause } : void 0);
36
+ this.status = options?.status;
37
+ this.errorCode = options?.errorCode;
38
+ this.errors = options?.errors;
39
+ this.requestPath = options?.requestPath;
40
+ }
41
+ };
42
+ var ContentstackConfigError = class extends ContentstackError {
43
+ name = "ContentstackConfigError";
44
+ };
45
+
46
+ // src/images/builder.ts
47
+ var VALID_FORMATS = /* @__PURE__ */ new Set(["webp", "jpg", "png", "gif", "avif", "pjpg"]);
48
+ var VALID_FITS = /* @__PURE__ */ new Set(["bounds", "crop", "cover"]);
49
+ var VALID_FILTERS = /* @__PURE__ */ new Set([
50
+ "nearest",
51
+ "bilinear",
52
+ "bicubic",
53
+ "lanczos2",
54
+ "lanczos3"
55
+ ]);
56
+ var ImageTransformBuilderImpl = class _ImageTransformBuilderImpl {
57
+ constructor(assetUrl, params = {}) {
58
+ this.assetUrl = assetUrl;
59
+ this.params = params;
60
+ }
61
+ width(px) {
62
+ assertPositiveInteger("width", px);
63
+ return this.with("width", String(px));
64
+ }
65
+ height(px) {
66
+ assertPositiveInteger("height", px);
67
+ return this.with("height", String(px));
68
+ }
69
+ quality(q) {
70
+ if (!Number.isInteger(q) || q < 1 || q > 100) {
71
+ throw new ContentstackConfigError("quality() expects an integer between 1 and 100");
72
+ }
73
+ return this.with("quality", String(q));
74
+ }
75
+ format(fmt) {
76
+ if (!VALID_FORMATS.has(fmt)) {
77
+ throw new ContentstackConfigError(`Unsupported image format: ${fmt}`);
78
+ }
79
+ return this.with("format", fmt);
80
+ }
81
+ fit(mode) {
82
+ if (!VALID_FITS.has(mode)) {
83
+ throw new ContentstackConfigError(`Unsupported fit mode: ${mode}`);
84
+ }
85
+ return this.with("fit", mode);
86
+ }
87
+ crop(params) {
88
+ return this.withNonEmptyString("crop", params);
89
+ }
90
+ trim(edges) {
91
+ return this.withNonEmptyString("trim", edges);
92
+ }
93
+ orient(angle) {
94
+ if (!Number.isInteger(angle) || angle < 1 || angle > 8) {
95
+ throw new ContentstackConfigError("orient() expects a value between 1 and 8");
96
+ }
97
+ return this.with("orient", String(angle));
98
+ }
99
+ overlay(params) {
100
+ const entries = Object.entries(params).filter(([, value2]) => value2.trim().length > 0).sort(([a], [b]) => a.localeCompare(b));
101
+ if (entries.length === 0) {
102
+ throw new ContentstackConfigError("overlay() requires at least one non-empty key/value pair");
103
+ }
104
+ const value = entries.map(([key, val]) => `${key}:${val}`).join(",");
105
+ return this.with("overlay", value);
106
+ }
107
+ pad(pixels) {
108
+ return this.withNonEmptyString("pad", pixels);
109
+ }
110
+ bgColor(hex) {
111
+ const normalized = hex.trim().replace(/^#/, "");
112
+ if (!/^[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/.test(normalized)) {
113
+ throw new ContentstackConfigError("bgColor() expects a 3 or 6 character hex value");
114
+ }
115
+ return this.with("bg-color", normalized.toLowerCase());
116
+ }
117
+ dpr(ratio) {
118
+ if (!Number.isFinite(ratio) || ratio <= 0) {
119
+ throw new ContentstackConfigError("dpr() expects a positive number");
120
+ }
121
+ return this.with("dpr", String(ratio));
122
+ }
123
+ disableUpscale() {
124
+ return this.with("disable", "upscale");
125
+ }
126
+ resizeFilter(filter) {
127
+ if (!VALID_FILTERS.has(filter)) {
128
+ throw new ContentstackConfigError(`Unsupported resize filter: ${filter}`);
129
+ }
130
+ return this.with("resize-filter", filter);
131
+ }
132
+ toURL() {
133
+ if (Object.keys(this.params).length === 0) {
134
+ return this.assetUrl;
135
+ }
136
+ const query = new URLSearchParams(this.params);
137
+ try {
138
+ const url = new URL(this.assetUrl);
139
+ for (const [key, value] of query.entries()) {
140
+ url.searchParams.set(key, value);
141
+ }
142
+ return url.toString();
143
+ } catch {
144
+ const separator = this.assetUrl.includes("?") ? "&" : "?";
145
+ return `${this.assetUrl}${separator}${query.toString()}`;
146
+ }
147
+ }
148
+ toSrcSet(widths) {
149
+ return widths.map((width) => {
150
+ assertPositiveInteger("toSrcSet width", width);
151
+ return `${this.width(width).toURL()} ${width}w`;
152
+ }).join(", ");
153
+ }
154
+ toParams() {
155
+ return { ...this.params };
156
+ }
157
+ with(key, value) {
158
+ return new _ImageTransformBuilderImpl(this.assetUrl, {
159
+ ...this.params,
160
+ [key]: value
161
+ });
162
+ }
163
+ withNonEmptyString(key, value) {
164
+ if (!value.trim()) {
165
+ throw new ContentstackConfigError(`${key}() requires a non-empty string value`);
166
+ }
167
+ return this.with(key, value);
168
+ }
169
+ };
170
+ function imageTransform(assetUrl) {
171
+ if (!assetUrl.trim()) {
172
+ throw new ContentstackConfigError("imageTransform() requires a non-empty asset URL");
173
+ }
174
+ return new ImageTransformBuilderImpl(assetUrl);
175
+ }
176
+ function assertPositiveInteger(name, value) {
177
+ if (!Number.isInteger(value) || value <= 0) {
178
+ throw new ContentstackConfigError(`${name} expects a positive integer`);
179
+ }
180
+ }
181
+ // Annotate the CommonJS export names for ESM import in node:
182
+ 0 && (module.exports = {
183
+ imageTransform
184
+ });
185
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/images/index.ts","../../src/http/errors.ts","../../src/images/builder.ts"],"sourcesContent":["export { imageTransform } from \"./builder.js\"\nexport type {\n ImageFitMode,\n ImageFormat,\n ImageOrientation,\n ImageResizeFilter,\n ImageTransformBuilder,\n} from \"./types.js\"\n","/**\n * Base error class for all Contentstack SDK errors.\n * Every error includes an actionable message and relevant context.\n */\nexport class ContentstackError extends Error {\n override readonly name: string = \"ContentstackError\"\n readonly status?: number\n readonly errorCode?: number\n readonly errors?: Record<string, string[]>\n readonly requestPath?: string\n\n constructor(\n message: string,\n options?: {\n status?: number\n errorCode?: number\n errors?: Record<string, string[]>\n requestPath?: string\n cause?: Error\n },\n ) {\n super(message, options?.cause ? { cause: options.cause } : undefined)\n this.status = options?.status\n this.errorCode = options?.errorCode\n this.errors = options?.errors\n this.requestPath = options?.requestPath\n }\n}\n\nexport class ContentstackAuthError extends ContentstackError {\n override readonly name = \"ContentstackAuthError\"\n override readonly status = 401\n}\n\nexport class ContentstackForbiddenError extends ContentstackError {\n override readonly name = \"ContentstackForbiddenError\"\n override readonly status = 403\n}\n\nexport class ContentstackNotFoundError extends ContentstackError {\n override readonly name = \"ContentstackNotFoundError\"\n override readonly status = 404\n}\n\nexport class ContentstackValidationError extends ContentstackError {\n override readonly name = \"ContentstackValidationError\"\n override readonly status: number\n\n constructor(\n message: string,\n options?: {\n status?: number\n errorCode?: number\n errors?: Record<string, string[]>\n requestPath?: string\n cause?: Error\n },\n ) {\n super(message, options)\n this.status = options?.status ?? 400\n }\n}\n\nexport class ContentstackInvalidApiKeyError extends ContentstackError {\n override readonly name = \"ContentstackInvalidApiKeyError\"\n override readonly status = 412\n}\n\nexport class ContentstackRateLimitError extends ContentstackError {\n override readonly name = \"ContentstackRateLimitError\"\n override readonly status = 429\n readonly retryAfter?: number\n\n constructor(\n message: string,\n options?: {\n errorCode?: number\n errors?: Record<string, string[]>\n requestPath?: string\n cause?: Error\n retryAfter?: number\n },\n ) {\n super(message, { ...options, status: 429 })\n this.retryAfter = options?.retryAfter\n }\n}\n\nexport class ContentstackServerError extends ContentstackError {\n override readonly name = \"ContentstackServerError\"\n}\n\nexport class ContentstackConfigError extends ContentstackError {\n override readonly name = \"ContentstackConfigError\"\n}\n","import { ContentstackConfigError } from \"../http/errors.js\"\nimport type {\n ImageFitMode,\n ImageFormat,\n ImageOrientation,\n ImageResizeFilter,\n ImageTransformBuilder,\n} from \"./types.js\"\n\nconst VALID_FORMATS = new Set<ImageFormat>([\"webp\", \"jpg\", \"png\", \"gif\", \"avif\", \"pjpg\"])\nconst VALID_FITS = new Set<ImageFitMode>([\"bounds\", \"crop\", \"cover\"])\nconst VALID_FILTERS = new Set<ImageResizeFilter>([\n \"nearest\",\n \"bilinear\",\n \"bicubic\",\n \"lanczos2\",\n \"lanczos3\",\n])\n\nclass ImageTransformBuilderImpl implements ImageTransformBuilder {\n constructor(\n private readonly assetUrl: string,\n private readonly params: Record<string, string> = {},\n ) {}\n\n width(px: number): ImageTransformBuilder {\n assertPositiveInteger(\"width\", px)\n return this.with(\"width\", String(px))\n }\n\n height(px: number): ImageTransformBuilder {\n assertPositiveInteger(\"height\", px)\n return this.with(\"height\", String(px))\n }\n\n quality(q: number): ImageTransformBuilder {\n if (!Number.isInteger(q) || q < 1 || q > 100) {\n throw new ContentstackConfigError(\"quality() expects an integer between 1 and 100\")\n }\n return this.with(\"quality\", String(q))\n }\n\n format(fmt: ImageFormat): ImageTransformBuilder {\n if (!VALID_FORMATS.has(fmt)) {\n throw new ContentstackConfigError(`Unsupported image format: ${fmt}`)\n }\n return this.with(\"format\", fmt)\n }\n\n fit(mode: ImageFitMode): ImageTransformBuilder {\n if (!VALID_FITS.has(mode)) {\n throw new ContentstackConfigError(`Unsupported fit mode: ${mode}`)\n }\n return this.with(\"fit\", mode)\n }\n\n crop(params: string): ImageTransformBuilder {\n return this.withNonEmptyString(\"crop\", params)\n }\n\n trim(edges: string): ImageTransformBuilder {\n return this.withNonEmptyString(\"trim\", edges)\n }\n\n orient(angle: ImageOrientation): ImageTransformBuilder {\n if (!Number.isInteger(angle) || angle < 1 || angle > 8) {\n throw new ContentstackConfigError(\"orient() expects a value between 1 and 8\")\n }\n return this.with(\"orient\", String(angle))\n }\n\n overlay(params: Record<string, string>): ImageTransformBuilder {\n const entries = Object.entries(params)\n .filter(([, value]) => value.trim().length > 0)\n .sort(([a], [b]) => a.localeCompare(b))\n\n if (entries.length === 0) {\n throw new ContentstackConfigError(\"overlay() requires at least one non-empty key/value pair\")\n }\n\n const value = entries.map(([key, val]) => `${key}:${val}`).join(\",\")\n return this.with(\"overlay\", value)\n }\n\n pad(pixels: string): ImageTransformBuilder {\n return this.withNonEmptyString(\"pad\", pixels)\n }\n\n bgColor(hex: string): ImageTransformBuilder {\n const normalized = hex.trim().replace(/^#/, \"\")\n if (!/^[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/.test(normalized)) {\n throw new ContentstackConfigError(\"bgColor() expects a 3 or 6 character hex value\")\n }\n return this.with(\"bg-color\", normalized.toLowerCase())\n }\n\n dpr(ratio: number): ImageTransformBuilder {\n if (!Number.isFinite(ratio) || ratio <= 0) {\n throw new ContentstackConfigError(\"dpr() expects a positive number\")\n }\n return this.with(\"dpr\", String(ratio))\n }\n\n disableUpscale(): ImageTransformBuilder {\n return this.with(\"disable\", \"upscale\")\n }\n\n resizeFilter(filter: ImageResizeFilter): ImageTransformBuilder {\n if (!VALID_FILTERS.has(filter)) {\n throw new ContentstackConfigError(`Unsupported resize filter: ${filter}`)\n }\n return this.with(\"resize-filter\", filter)\n }\n\n toURL(): string {\n if (Object.keys(this.params).length === 0) {\n return this.assetUrl\n }\n\n const query = new URLSearchParams(this.params)\n\n try {\n const url = new URL(this.assetUrl)\n for (const [key, value] of query.entries()) {\n url.searchParams.set(key, value)\n }\n return url.toString()\n } catch {\n const separator = this.assetUrl.includes(\"?\") ? \"&\" : \"?\"\n return `${this.assetUrl}${separator}${query.toString()}`\n }\n }\n\n toSrcSet(widths: number[]): string {\n return widths\n .map((width) => {\n assertPositiveInteger(\"toSrcSet width\", width)\n return `${this.width(width).toURL()} ${width}w`\n })\n .join(\", \")\n }\n\n toParams(): Record<string, string> {\n return { ...this.params }\n }\n\n private with(key: string, value: string): ImageTransformBuilder {\n return new ImageTransformBuilderImpl(this.assetUrl, {\n ...this.params,\n [key]: value,\n })\n }\n\n private withNonEmptyString(key: string, value: string): ImageTransformBuilder {\n if (!value.trim()) {\n throw new ContentstackConfigError(`${key}() requires a non-empty string value`)\n }\n return this.with(key, value)\n }\n}\n\nexport function imageTransform(assetUrl: string): ImageTransformBuilder {\n if (!assetUrl.trim()) {\n throw new ContentstackConfigError(\"imageTransform() requires a non-empty asset URL\")\n }\n\n return new ImageTransformBuilderImpl(assetUrl)\n}\n\nfunction assertPositiveInteger(name: string, value: number): void {\n if (!Number.isInteger(value) || value <= 0) {\n throw new ContentstackConfigError(`${name} expects a positive integer`)\n }\n}\n"],"mappings":"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","names":["value"]}
@@ -0,0 +1,27 @@
1
+ type ImageFormat = "webp" | "jpg" | "png" | "gif" | "avif" | "pjpg";
2
+ type ImageFitMode = "bounds" | "crop" | "cover";
3
+ type ImageOrientation = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;
4
+ type ImageResizeFilter = "nearest" | "bilinear" | "bicubic" | "lanczos2" | "lanczos3";
5
+ interface ImageTransformBuilder {
6
+ width(px: number): ImageTransformBuilder;
7
+ height(px: number): ImageTransformBuilder;
8
+ quality(q: number): ImageTransformBuilder;
9
+ format(fmt: ImageFormat): ImageTransformBuilder;
10
+ fit(mode: ImageFitMode): ImageTransformBuilder;
11
+ crop(params: string): ImageTransformBuilder;
12
+ trim(edges: string): ImageTransformBuilder;
13
+ orient(angle: ImageOrientation): ImageTransformBuilder;
14
+ overlay(params: Record<string, string>): ImageTransformBuilder;
15
+ pad(pixels: string): ImageTransformBuilder;
16
+ bgColor(hex: string): ImageTransformBuilder;
17
+ dpr(ratio: number): ImageTransformBuilder;
18
+ disableUpscale(): ImageTransformBuilder;
19
+ resizeFilter(filter: ImageResizeFilter): ImageTransformBuilder;
20
+ toURL(): string;
21
+ toSrcSet(widths: number[]): string;
22
+ toParams(): Record<string, string>;
23
+ }
24
+
25
+ declare function imageTransform(assetUrl: string): ImageTransformBuilder;
26
+
27
+ export { type ImageFitMode, type ImageFormat, type ImageOrientation, type ImageResizeFilter, type ImageTransformBuilder, imageTransform };
@@ -0,0 +1,27 @@
1
+ type ImageFormat = "webp" | "jpg" | "png" | "gif" | "avif" | "pjpg";
2
+ type ImageFitMode = "bounds" | "crop" | "cover";
3
+ type ImageOrientation = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;
4
+ type ImageResizeFilter = "nearest" | "bilinear" | "bicubic" | "lanczos2" | "lanczos3";
5
+ interface ImageTransformBuilder {
6
+ width(px: number): ImageTransformBuilder;
7
+ height(px: number): ImageTransformBuilder;
8
+ quality(q: number): ImageTransformBuilder;
9
+ format(fmt: ImageFormat): ImageTransformBuilder;
10
+ fit(mode: ImageFitMode): ImageTransformBuilder;
11
+ crop(params: string): ImageTransformBuilder;
12
+ trim(edges: string): ImageTransformBuilder;
13
+ orient(angle: ImageOrientation): ImageTransformBuilder;
14
+ overlay(params: Record<string, string>): ImageTransformBuilder;
15
+ pad(pixels: string): ImageTransformBuilder;
16
+ bgColor(hex: string): ImageTransformBuilder;
17
+ dpr(ratio: number): ImageTransformBuilder;
18
+ disableUpscale(): ImageTransformBuilder;
19
+ resizeFilter(filter: ImageResizeFilter): ImageTransformBuilder;
20
+ toURL(): string;
21
+ toSrcSet(widths: number[]): string;
22
+ toParams(): Record<string, string>;
23
+ }
24
+
25
+ declare function imageTransform(assetUrl: string): ImageTransformBuilder;
26
+
27
+ export { type ImageFitMode, type ImageFormat, type ImageOrientation, type ImageResizeFilter, type ImageTransformBuilder, imageTransform };
@@ -0,0 +1,8 @@
1
+ import {
2
+ imageTransform
3
+ } from "../chunk-GNPQJBFX.mjs";
4
+ import "../chunk-DMERADWM.mjs";
5
+ export {
6
+ imageTransform
7
+ };
8
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}