@leonardo-ai/sdk 4.19.8 → 4.20.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 (239) hide show
  1. package/.devcontainer/devcontainer.json +45 -0
  2. package/docs/sdks/dataset/README.md +8 -8
  3. package/docs/sdks/elements/README.md +2 -14
  4. package/docs/sdks/image/README.md +2 -2
  5. package/docs/sdks/models/README.md +2 -2
  6. package/funcs/datasetCreateDataset.d.ts.map +1 -1
  7. package/funcs/datasetCreateDataset.js +3 -2
  8. package/funcs/datasetCreateDataset.js.map +1 -1
  9. package/funcs/datasetDeleteDatasetById.d.ts.map +1 -1
  10. package/funcs/datasetDeleteDatasetById.js +3 -2
  11. package/funcs/datasetDeleteDatasetById.js.map +1 -1
  12. package/funcs/datasetGetDatasetById.d.ts.map +1 -1
  13. package/funcs/datasetGetDatasetById.js +3 -2
  14. package/funcs/datasetGetDatasetById.js.map +1 -1
  15. package/funcs/datasetUploadDatasetImage.d.ts.map +1 -1
  16. package/funcs/datasetUploadDatasetImage.js +3 -2
  17. package/funcs/datasetUploadDatasetImage.js.map +1 -1
  18. package/funcs/datasetUploadDatasetImageFromGen.d.ts.map +1 -1
  19. package/funcs/datasetUploadDatasetImageFromGen.js +3 -2
  20. package/funcs/datasetUploadDatasetImageFromGen.js.map +1 -1
  21. package/funcs/elementsCreateElement.d.ts.map +1 -1
  22. package/funcs/elementsCreateElement.js +3 -2
  23. package/funcs/elementsCreateElement.js.map +1 -1
  24. package/funcs/elementsDeleteElementById.d.ts.map +1 -1
  25. package/funcs/elementsDeleteElementById.js +3 -2
  26. package/funcs/elementsDeleteElementById.js.map +1 -1
  27. package/funcs/elementsGetCustomElementsByUserId.d.ts.map +1 -1
  28. package/funcs/elementsGetCustomElementsByUserId.js +3 -2
  29. package/funcs/elementsGetCustomElementsByUserId.js.map +1 -1
  30. package/funcs/elementsGetElementById.d.ts.map +1 -1
  31. package/funcs/elementsGetElementById.js +3 -2
  32. package/funcs/elementsGetElementById.js.map +1 -1
  33. package/funcs/elementsListElements.d.ts.map +1 -1
  34. package/funcs/elementsListElements.js +3 -2
  35. package/funcs/elementsListElements.js.map +1 -1
  36. package/funcs/imageCreateGeneration.d.ts.map +1 -1
  37. package/funcs/imageCreateGeneration.js +3 -2
  38. package/funcs/imageCreateGeneration.js.map +1 -1
  39. package/funcs/imageDeleteGenerationById.d.ts.map +1 -1
  40. package/funcs/imageDeleteGenerationById.js +3 -2
  41. package/funcs/imageDeleteGenerationById.js.map +1 -1
  42. package/funcs/imageGetGenerationById.d.ts.map +1 -1
  43. package/funcs/imageGetGenerationById.js +3 -2
  44. package/funcs/imageGetGenerationById.js.map +1 -1
  45. package/funcs/imageGetGenerationsByUserId.d.ts.map +1 -1
  46. package/funcs/imageGetGenerationsByUserId.js +3 -2
  47. package/funcs/imageGetGenerationsByUserId.js.map +1 -1
  48. package/funcs/initImagesDeleteInitImageById.d.ts.map +1 -1
  49. package/funcs/initImagesDeleteInitImageById.js +3 -2
  50. package/funcs/initImagesDeleteInitImageById.js.map +1 -1
  51. package/funcs/initImagesGetInitImageById.d.ts.map +1 -1
  52. package/funcs/initImagesGetInitImageById.js +3 -2
  53. package/funcs/initImagesGetInitImageById.js.map +1 -1
  54. package/funcs/initImagesUploadCanvasInitImage.d.ts.map +1 -1
  55. package/funcs/initImagesUploadCanvasInitImage.js +3 -2
  56. package/funcs/initImagesUploadCanvasInitImage.js.map +1 -1
  57. package/funcs/initImagesUploadInitImage.d.ts.map +1 -1
  58. package/funcs/initImagesUploadInitImage.js +3 -2
  59. package/funcs/initImagesUploadInitImage.js.map +1 -1
  60. package/funcs/modelsCreateModel.d.ts.map +1 -1
  61. package/funcs/modelsCreateModel.js +3 -2
  62. package/funcs/modelsCreateModel.js.map +1 -1
  63. package/funcs/modelsDeleteModelById.d.ts.map +1 -1
  64. package/funcs/modelsDeleteModelById.js +3 -2
  65. package/funcs/modelsDeleteModelById.js.map +1 -1
  66. package/funcs/modelsGetCustomModelsByUserId.d.ts.map +1 -1
  67. package/funcs/modelsGetCustomModelsByUserId.js +3 -2
  68. package/funcs/modelsGetCustomModelsByUserId.js.map +1 -1
  69. package/funcs/modelsGetModelById.d.ts.map +1 -1
  70. package/funcs/modelsGetModelById.js +3 -2
  71. package/funcs/modelsGetModelById.js.map +1 -1
  72. package/funcs/modelsListPlatformModels.d.ts.map +1 -1
  73. package/funcs/modelsListPlatformModels.js +3 -2
  74. package/funcs/modelsListPlatformModels.js.map +1 -1
  75. package/funcs/motionCreateSVDMotionGeneration.d.ts.map +1 -1
  76. package/funcs/motionCreateSVDMotionGeneration.js +3 -2
  77. package/funcs/motionCreateSVDMotionGeneration.js.map +1 -1
  78. package/funcs/pricingCalculatorPricingCalculator.d.ts.map +1 -1
  79. package/funcs/pricingCalculatorPricingCalculator.js +3 -2
  80. package/funcs/pricingCalculatorPricingCalculator.js.map +1 -1
  81. package/funcs/promptPromptImprove.d.ts.map +1 -1
  82. package/funcs/promptPromptImprove.js +3 -2
  83. package/funcs/promptPromptImprove.js.map +1 -1
  84. package/funcs/promptPromptRandom.d.ts.map +1 -1
  85. package/funcs/promptPromptRandom.js +3 -2
  86. package/funcs/promptPromptRandom.js.map +1 -1
  87. package/funcs/realtimeCanvasCreateLCMGeneration.d.ts.map +1 -1
  88. package/funcs/realtimeCanvasCreateLCMGeneration.js +3 -2
  89. package/funcs/realtimeCanvasCreateLCMGeneration.js.map +1 -1
  90. package/funcs/realtimeCanvasPerformAlchemyUpscaleLCM.d.ts.map +1 -1
  91. package/funcs/realtimeCanvasPerformAlchemyUpscaleLCM.js +3 -2
  92. package/funcs/realtimeCanvasPerformAlchemyUpscaleLCM.js.map +1 -1
  93. package/funcs/realtimeCanvasPerformInpaintingLCM.d.ts.map +1 -1
  94. package/funcs/realtimeCanvasPerformInpaintingLCM.js +3 -2
  95. package/funcs/realtimeCanvasPerformInpaintingLCM.js.map +1 -1
  96. package/funcs/realtimeCanvasPerformInstantRefine.d.ts.map +1 -1
  97. package/funcs/realtimeCanvasPerformInstantRefine.js +3 -2
  98. package/funcs/realtimeCanvasPerformInstantRefine.js.map +1 -1
  99. package/funcs/textureCreateTextureGeneration.d.ts.map +1 -1
  100. package/funcs/textureCreateTextureGeneration.js +3 -2
  101. package/funcs/textureCreateTextureGeneration.js.map +1 -1
  102. package/funcs/textureDeleteTextureGenerationById.d.ts.map +1 -1
  103. package/funcs/textureDeleteTextureGenerationById.js +3 -2
  104. package/funcs/textureDeleteTextureGenerationById.js.map +1 -1
  105. package/funcs/threeDModelAssetsDelete3DModelById.d.ts.map +1 -1
  106. package/funcs/threeDModelAssetsDelete3DModelById.js +3 -2
  107. package/funcs/threeDModelAssetsDelete3DModelById.js.map +1 -1
  108. package/funcs/threeDModelAssetsUploadModelAsset.d.ts.map +1 -1
  109. package/funcs/threeDModelAssetsUploadModelAsset.js +3 -2
  110. package/funcs/threeDModelAssetsUploadModelAsset.js.map +1 -1
  111. package/funcs/userGetUserSelf.d.ts.map +1 -1
  112. package/funcs/userGetUserSelf.js +3 -2
  113. package/funcs/userGetUserSelf.js.map +1 -1
  114. package/funcs/variationCreateUniversalUpscalerJob.d.ts.map +1 -1
  115. package/funcs/variationCreateUniversalUpscalerJob.js +3 -2
  116. package/funcs/variationCreateUniversalUpscalerJob.js.map +1 -1
  117. package/funcs/variationCreateVariationNoBG.d.ts.map +1 -1
  118. package/funcs/variationCreateVariationNoBG.js +3 -2
  119. package/funcs/variationCreateVariationNoBG.js.map +1 -1
  120. package/funcs/variationCreateVariationUnzoom.d.ts.map +1 -1
  121. package/funcs/variationCreateVariationUnzoom.js +3 -2
  122. package/funcs/variationCreateVariationUnzoom.js.map +1 -1
  123. package/funcs/variationCreateVariationUpscale.d.ts.map +1 -1
  124. package/funcs/variationCreateVariationUpscale.js +3 -2
  125. package/funcs/variationCreateVariationUpscale.js.map +1 -1
  126. package/funcs/variationGetVariationById.d.ts.map +1 -1
  127. package/funcs/variationGetVariationById.js +3 -2
  128. package/funcs/variationGetVariationById.js.map +1 -1
  129. package/jsr.json +27 -0
  130. package/lib/config.d.ts +3 -3
  131. package/lib/config.js +3 -3
  132. package/lib/encodings.d.ts +10 -9
  133. package/lib/encodings.d.ts.map +1 -1
  134. package/lib/encodings.js +74 -48
  135. package/lib/encodings.js.map +1 -1
  136. package/lib/primitives.d.ts +1 -0
  137. package/lib/primitives.d.ts.map +1 -1
  138. package/lib/primitives.js +11 -1
  139. package/lib/primitives.js.map +1 -1
  140. package/lib/retries.js +0 -1
  141. package/lib/retries.js.map +1 -1
  142. package/lib/schemas.d.ts +1 -1
  143. package/lib/schemas.d.ts.map +1 -1
  144. package/lib/schemas.js +4 -1
  145. package/lib/schemas.js.map +1 -1
  146. package/lib/sdks.d.ts.map +1 -1
  147. package/lib/sdks.js +4 -1
  148. package/lib/sdks.js.map +1 -1
  149. package/package.json +6 -7
  150. package/sdk/models/operations/creategeneration.d.ts +3 -0
  151. package/sdk/models/operations/creategeneration.d.ts.map +1 -1
  152. package/sdk/models/operations/creategeneration.js.map +1 -1
  153. package/sdk/models/operations/createlcmgeneration.d.ts +3 -0
  154. package/sdk/models/operations/createlcmgeneration.d.ts.map +1 -1
  155. package/sdk/models/operations/createlcmgeneration.js.map +1 -1
  156. package/sdk/models/operations/createsvdmotiongeneration.d.ts +2 -2
  157. package/sdk/models/operations/createsvdmotiongeneration.d.ts.map +1 -1
  158. package/sdk/models/operations/createsvdmotiongeneration.js +2 -2
  159. package/sdk/models/operations/createsvdmotiongeneration.js.map +1 -1
  160. package/sdk/models/operations/createtexturegeneration.d.ts +3 -0
  161. package/sdk/models/operations/createtexturegeneration.d.ts.map +1 -1
  162. package/sdk/models/operations/createtexturegeneration.js.map +1 -1
  163. package/sdk/models/operations/getgenerationbyid.d.ts +3 -0
  164. package/sdk/models/operations/getgenerationbyid.d.ts.map +1 -1
  165. package/sdk/models/operations/getgenerationbyid.js.map +1 -1
  166. package/sdk/models/operations/getgenerationsbyuserid.d.ts +3 -0
  167. package/sdk/models/operations/getgenerationsbyuserid.d.ts.map +1 -1
  168. package/sdk/models/operations/getgenerationsbyuserid.js.map +1 -1
  169. package/sdk/models/operations/performalchemyupscalelcm.d.ts +3 -0
  170. package/sdk/models/operations/performalchemyupscalelcm.d.ts.map +1 -1
  171. package/sdk/models/operations/performalchemyupscalelcm.js.map +1 -1
  172. package/sdk/models/operations/performinpaintinglcm.d.ts +3 -0
  173. package/sdk/models/operations/performinpaintinglcm.d.ts.map +1 -1
  174. package/sdk/models/operations/performinpaintinglcm.js.map +1 -1
  175. package/sdk/models/operations/performinstantrefine.d.ts +3 -0
  176. package/sdk/models/operations/performinstantrefine.d.ts.map +1 -1
  177. package/sdk/models/operations/performinstantrefine.js.map +1 -1
  178. package/sdk/models/shared/sdversions.d.ts +3 -1
  179. package/sdk/models/shared/sdversions.d.ts.map +1 -1
  180. package/sdk/models/shared/sdversions.js +2 -0
  181. package/sdk/models/shared/sdversions.js.map +1 -1
  182. package/src/funcs/datasetCreateDataset.ts +3 -2
  183. package/src/funcs/datasetDeleteDatasetById.ts +3 -2
  184. package/src/funcs/datasetGetDatasetById.ts +3 -2
  185. package/src/funcs/datasetUploadDatasetImage.ts +3 -2
  186. package/src/funcs/datasetUploadDatasetImageFromGen.ts +3 -2
  187. package/src/funcs/elementsCreateElement.ts +3 -2
  188. package/src/funcs/elementsDeleteElementById.ts +3 -2
  189. package/src/funcs/elementsGetCustomElementsByUserId.ts +3 -2
  190. package/src/funcs/elementsGetElementById.ts +3 -2
  191. package/src/funcs/elementsListElements.ts +3 -2
  192. package/src/funcs/imageCreateGeneration.ts +3 -2
  193. package/src/funcs/imageDeleteGenerationById.ts +3 -2
  194. package/src/funcs/imageGetGenerationById.ts +3 -2
  195. package/src/funcs/imageGetGenerationsByUserId.ts +3 -2
  196. package/src/funcs/initImagesDeleteInitImageById.ts +3 -2
  197. package/src/funcs/initImagesGetInitImageById.ts +3 -2
  198. package/src/funcs/initImagesUploadCanvasInitImage.ts +3 -2
  199. package/src/funcs/initImagesUploadInitImage.ts +3 -2
  200. package/src/funcs/modelsCreateModel.ts +3 -2
  201. package/src/funcs/modelsDeleteModelById.ts +3 -2
  202. package/src/funcs/modelsGetCustomModelsByUserId.ts +3 -2
  203. package/src/funcs/modelsGetModelById.ts +3 -2
  204. package/src/funcs/modelsListPlatformModels.ts +3 -2
  205. package/src/funcs/motionCreateSVDMotionGeneration.ts +3 -2
  206. package/src/funcs/pricingCalculatorPricingCalculator.ts +3 -2
  207. package/src/funcs/promptPromptImprove.ts +3 -2
  208. package/src/funcs/promptPromptRandom.ts +3 -2
  209. package/src/funcs/realtimeCanvasCreateLCMGeneration.ts +3 -2
  210. package/src/funcs/realtimeCanvasPerformAlchemyUpscaleLCM.ts +3 -2
  211. package/src/funcs/realtimeCanvasPerformInpaintingLCM.ts +3 -2
  212. package/src/funcs/realtimeCanvasPerformInstantRefine.ts +3 -2
  213. package/src/funcs/textureCreateTextureGeneration.ts +3 -2
  214. package/src/funcs/textureDeleteTextureGenerationById.ts +3 -2
  215. package/src/funcs/threeDModelAssetsDelete3DModelById.ts +3 -2
  216. package/src/funcs/threeDModelAssetsUploadModelAsset.ts +3 -2
  217. package/src/funcs/userGetUserSelf.ts +3 -2
  218. package/src/funcs/variationCreateUniversalUpscalerJob.ts +3 -2
  219. package/src/funcs/variationCreateVariationNoBG.ts +3 -2
  220. package/src/funcs/variationCreateVariationUnzoom.ts +3 -2
  221. package/src/funcs/variationCreateVariationUpscale.ts +3 -2
  222. package/src/funcs/variationGetVariationById.ts +3 -2
  223. package/src/lib/config.ts +3 -3
  224. package/src/lib/encodings.ts +95 -61
  225. package/src/lib/primitives.ts +14 -0
  226. package/src/lib/retries.ts +0 -1
  227. package/src/lib/schemas.ts +5 -0
  228. package/src/lib/sdks.ts +4 -1
  229. package/src/sdk/models/operations/creategeneration.ts +3 -0
  230. package/src/sdk/models/operations/createlcmgeneration.ts +3 -0
  231. package/src/sdk/models/operations/createsvdmotiongeneration.ts +7 -4
  232. package/src/sdk/models/operations/createtexturegeneration.ts +3 -0
  233. package/src/sdk/models/operations/getgenerationbyid.ts +3 -0
  234. package/src/sdk/models/operations/getgenerationsbyuserid.ts +3 -0
  235. package/src/sdk/models/operations/performalchemyupscalelcm.ts +3 -0
  236. package/src/sdk/models/operations/performinpaintinglcm.ts +3 -0
  237. package/src/sdk/models/operations/performinstantrefine.ts +3 -0
  238. package/src/sdk/models/shared/sdversions.ts +2 -0
  239. package/tsconfig.json +41 -0
@@ -16,12 +16,16 @@ export function encodeMatrix(
16
16
  key: string,
17
17
  value: unknown,
18
18
  options?: { explode?: boolean; charEncoding?: "percent" | "none" },
19
- ): string {
19
+ ): string | undefined {
20
20
  let out = "";
21
21
  const pairs: [string, unknown][] = options?.explode
22
22
  ? explode(key, value)
23
23
  : [[key, value]];
24
24
 
25
+ if (pairs.every(([_, v]) => v == null)) {
26
+ return;
27
+ }
28
+
25
29
  const encodeString = (v: string) => {
26
30
  return options?.charEncoding === "percent" ? encodeURIComponent(v) : v;
27
31
  };
@@ -29,21 +33,25 @@ export function encodeMatrix(
29
33
 
30
34
  pairs.forEach(([pk, pv]) => {
31
35
  let tmp = "";
32
- let encValue = "";
36
+ let encValue: string | null | undefined = null;
33
37
 
34
- if (pv === undefined) {
38
+ if (pv == null) {
35
39
  return;
36
40
  } else if (Array.isArray(pv)) {
37
- encValue = mapDefined(pv, (v) => `${encodeValue(v)}`).join(",");
41
+ encValue = mapDefined(pv, (v) => `${encodeValue(v)}`)?.join(",");
38
42
  } else if (isPlainObject(pv)) {
39
- encValue = mapDefinedEntries(Object.entries(pv), ([k, v]) => {
43
+ const mapped = mapDefinedEntries(Object.entries(pv), ([k, v]) => {
40
44
  return `,${encodeString(k)},${encodeValue(v)}`;
41
- }).join("");
42
- encValue = encValue.slice(1);
45
+ });
46
+ encValue = mapped?.join("").slice(1);
43
47
  } else {
44
48
  encValue = `${encodeValue(pv)}`;
45
49
  }
46
50
 
51
+ if (encValue == null) {
52
+ return;
53
+ }
54
+
47
55
  const keyPrefix = encodeString(pk);
48
56
  tmp = `${keyPrefix}=${encValue}`;
49
57
  // trim trailing '=' if value was empty
@@ -66,36 +74,40 @@ export function encodeLabel(
66
74
  key: string,
67
75
  value: unknown,
68
76
  options?: { explode?: boolean; charEncoding?: "percent" | "none" },
69
- ): string {
77
+ ): string | undefined {
70
78
  let out = "";
71
79
  const pairs: [string, unknown][] = options?.explode
72
80
  ? explode(key, value)
73
81
  : [[key, value]];
74
82
 
83
+ if (pairs.every(([_, v]) => v == null)) {
84
+ return;
85
+ }
86
+
75
87
  const encodeString = (v: string) => {
76
88
  return options?.charEncoding === "percent" ? encodeURIComponent(v) : v;
77
89
  };
78
90
  const encodeValue = (v: unknown) => encodeString(serializeValue(v));
79
91
 
80
92
  pairs.forEach(([pk, pv]) => {
81
- let encValue = "";
93
+ let encValue: string | null | undefined = "";
82
94
 
83
- if (pv === undefined) {
95
+ if (pv == null) {
84
96
  return;
85
97
  } else if (Array.isArray(pv)) {
86
- encValue = mapDefined(pv, (v) => `${encodeValue(v)}`).join(".");
98
+ encValue = mapDefined(pv, (v) => `${encodeValue(v)}`)?.join(".");
87
99
  } else if (isPlainObject(pv)) {
88
- encValue = mapDefinedEntries(Object.entries(pv), ([k, v]) => {
100
+ const mapped = mapDefinedEntries(Object.entries(pv), ([k, v]) => {
89
101
  return `.${encodeString(k)}.${encodeValue(v)}`;
90
- }).join("");
91
- encValue = encValue.slice(1);
102
+ });
103
+ encValue = mapped?.join("").slice(1);
92
104
  } else {
93
105
  const k =
94
106
  options?.explode && isPlainObject(value) ? `${encodeString(pk)}=` : "";
95
107
  encValue = `${k}${encodeValue(pv)}`;
96
108
  }
97
109
 
98
- out += `.${encValue}`;
110
+ out += encValue == null ? "" : `.${encValue}`;
99
111
  });
100
112
 
101
113
  return out;
@@ -105,7 +117,7 @@ type FormEncoder = (
105
117
  key: string,
106
118
  value: unknown,
107
119
  options?: { explode?: boolean; charEncoding?: "percent" | "none" },
108
- ) => string;
120
+ ) => string | undefined;
109
121
 
110
122
  function formEncoder(sep: string): FormEncoder {
111
123
  return (
@@ -118,6 +130,10 @@ function formEncoder(sep: string): FormEncoder {
118
130
  ? explode(key, value)
119
131
  : [[key, value]];
120
132
 
133
+ if (pairs.every(([_, v]) => v == null)) {
134
+ return;
135
+ }
136
+
121
137
  const encodeString = (v: string) => {
122
138
  return options?.charEncoding === "percent" ? encodeURIComponent(v) : v;
123
139
  };
@@ -128,20 +144,24 @@ function formEncoder(sep: string): FormEncoder {
128
144
 
129
145
  pairs.forEach(([pk, pv]) => {
130
146
  let tmp = "";
131
- let encValue = "";
147
+ let encValue: string | null | undefined = null;
132
148
 
133
- if (pv === undefined) {
149
+ if (pv == null) {
134
150
  return;
135
151
  } else if (Array.isArray(pv)) {
136
- encValue = mapDefined(pv, (v) => `${encodeValue(v)}`).join(encodedSep);
152
+ encValue = mapDefined(pv, (v) => `${encodeValue(v)}`)?.join(encodedSep);
137
153
  } else if (isPlainObject(pv)) {
138
154
  encValue = mapDefinedEntries(Object.entries(pv), ([k, v]) => {
139
155
  return `${encodeString(k)}${encodedSep}${encodeValue(v)}`;
140
- }).join(encodedSep);
156
+ })?.join(encodedSep);
141
157
  } else {
142
158
  encValue = `${encodeValue(pv)}`;
143
159
  }
144
160
 
161
+ if (encValue == null) {
162
+ return;
163
+ }
164
+
145
165
  tmp = `${encodeString(pk)}=${encValue}`;
146
166
 
147
167
  // If we end up with the nothing then skip forward
@@ -180,7 +200,7 @@ export function encodeBodyForm(
180
200
  let tmp = "";
181
201
  let encValue = "";
182
202
 
183
- if (pv === undefined) {
203
+ if (pv == null) {
184
204
  return;
185
205
  } else if (Array.isArray(pv)) {
186
206
  encValue = JSON.stringify(pv, jsonReplacer);
@@ -207,14 +227,14 @@ export function encodeDeepObject(
207
227
  key: string,
208
228
  value: unknown,
209
229
  options?: { charEncoding?: "percent" | "none" },
210
- ): string {
230
+ ): string | undefined {
211
231
  if (value == null) {
212
- return "";
232
+ return;
213
233
  }
214
234
 
215
235
  if (!isPlainObject(value)) {
216
236
  throw new EncodingError(
217
- `Value of parameter '${key}' which uses deepObject encoding must be an object`,
237
+ `Value of parameter '${key}' which uses deepObject encoding must be an object or null`,
218
238
  );
219
239
  }
220
240
 
@@ -225,9 +245,9 @@ export function encodeDeepObjectObject(
225
245
  key: string,
226
246
  value: unknown,
227
247
  options?: { charEncoding?: "percent" | "none" },
228
- ): string {
248
+ ): string | undefined {
229
249
  if (value == null) {
230
- return "";
250
+ return;
231
251
  }
232
252
 
233
253
  let out = "";
@@ -241,7 +261,7 @@ export function encodeDeepObjectObject(
241
261
  }
242
262
 
243
263
  Object.entries(value).forEach(([ck, cv]) => {
244
- if (cv === undefined) {
264
+ if (cv == null) {
245
265
  return;
246
266
  }
247
267
 
@@ -250,19 +270,17 @@ export function encodeDeepObjectObject(
250
270
  if (isPlainObject(cv)) {
251
271
  const objOut = encodeDeepObjectObject(pk, cv, options);
252
272
 
253
- out += `&${objOut}`;
273
+ out += objOut == null ? "" : `&${objOut}`;
254
274
 
255
275
  return;
256
276
  }
257
277
 
258
278
  const pairs: unknown[] = Array.isArray(cv) ? cv : [cv];
259
- let encoded = "";
260
-
261
- encoded = mapDefined(pairs, (v) => {
279
+ const encoded = mapDefined(pairs, (v) => {
262
280
  return `${encodeString(pk)}=${encodeString(serializeValue(v))}`;
263
- }).join("&");
281
+ })?.join("&");
264
282
 
265
- out += `&${encoded}`;
283
+ out += encoded == null ? "" : `&${encoded}`;
266
284
  });
267
285
 
268
286
  return out.slice(1);
@@ -272,9 +290,9 @@ export function encodeJSON(
272
290
  key: string,
273
291
  value: unknown,
274
292
  options?: { explode?: boolean; charEncoding?: "percent" | "none" },
275
- ): string {
293
+ ): string | undefined {
276
294
  if (typeof value === "undefined") {
277
- return "";
295
+ return;
278
296
  }
279
297
 
280
298
  const encodeString = (v: string) => {
@@ -290,40 +308,39 @@ export const encodeSimple = (
290
308
  key: string,
291
309
  value: unknown,
292
310
  options?: { explode?: boolean; charEncoding?: "percent" | "none" },
293
- ): string => {
311
+ ): string | undefined => {
294
312
  let out = "";
295
313
  const pairs: [string, unknown][] = options?.explode
296
314
  ? explode(key, value)
297
315
  : [[key, value]];
298
316
 
317
+ if (pairs.every(([_, v]) => v == null)) {
318
+ return;
319
+ }
320
+
299
321
  const encodeString = (v: string) => {
300
322
  return options?.charEncoding === "percent" ? encodeURIComponent(v) : v;
301
323
  };
302
324
  const encodeValue = (v: unknown) => encodeString(serializeValue(v));
303
325
 
304
326
  pairs.forEach(([pk, pv]) => {
305
- let tmp = "";
327
+ let tmp: string | null | undefined = "";
306
328
 
307
- if (pv === undefined) {
329
+ if (pv == null) {
308
330
  return;
309
331
  } else if (Array.isArray(pv)) {
310
- tmp = mapDefined(pv, (v) => `${encodeValue(v)}`).join(",");
332
+ tmp = mapDefined(pv, (v) => `${encodeValue(v)}`)?.join(",");
311
333
  } else if (isPlainObject(pv)) {
312
- tmp = mapDefinedEntries(Object.entries(pv), ([k, v]) => {
334
+ const mapped = mapDefinedEntries(Object.entries(pv), ([k, v]) => {
313
335
  return `,${encodeString(k)},${encodeValue(v)}`;
314
- }).join("");
315
- tmp = tmp.slice(1);
336
+ });
337
+ tmp = mapped?.join("").slice(1);
316
338
  } else {
317
339
  const k = options?.explode && isPlainObject(value) ? `${pk}=` : "";
318
340
  tmp = `${k}${encodeValue(pv)}`;
319
341
  }
320
342
 
321
- // If we end up with the nothing then skip forward
322
- if (!tmp) {
323
- return;
324
- }
325
-
326
- out += `,${tmp}`;
343
+ out += tmp ? `,${tmp}` : "";
327
344
  });
328
345
 
329
346
  return out.slice(1);
@@ -341,9 +358,7 @@ function explode(key: string, value: unknown): [string, unknown][] {
341
358
  }
342
359
 
343
360
  function serializeValue(value: unknown): string {
344
- if (value === null) {
345
- return "null";
346
- } else if (typeof value === "undefined") {
361
+ if (value == null) {
347
362
  return "";
348
363
  } else if (value instanceof Date) {
349
364
  return value.toISOString();
@@ -364,14 +379,14 @@ function jsonReplacer(_: string, value: unknown): unknown {
364
379
  }
365
380
  }
366
381
 
367
- function mapDefined<T, R>(inp: T[], mapper: (v: T) => R): R[] {
368
- return inp.reduce<R[]>((acc, v) => {
369
- if (v === undefined) {
382
+ function mapDefined<T, R>(inp: T[], mapper: (v: T) => R): R[] | null {
383
+ const res = inp.reduce<R[]>((acc, v) => {
384
+ if (v == null) {
370
385
  return acc;
371
386
  }
372
387
 
373
388
  const m = mapper(v);
374
- if (m === undefined) {
389
+ if (m == null) {
375
390
  return acc;
376
391
  }
377
392
 
@@ -379,30 +394,32 @@ function mapDefined<T, R>(inp: T[], mapper: (v: T) => R): R[] {
379
394
 
380
395
  return acc;
381
396
  }, []);
397
+
398
+ return res.length ? res : null;
382
399
  }
383
400
 
384
401
  function mapDefinedEntries<K, V, R>(
385
402
  inp: Iterable<[K, V]>,
386
403
  mapper: (v: [K, V]) => R,
387
- ): R[] {
404
+ ): R[] | null {
388
405
  const acc: R[] = [];
389
406
  for (const [k, v] of inp) {
390
- if (v === undefined) {
407
+ if (v == null) {
391
408
  continue;
392
409
  }
393
410
 
394
411
  const m = mapper([k, v]);
395
- if (m === undefined) {
412
+ if (m == null) {
396
413
  continue;
397
414
  }
398
415
 
399
416
  acc.push(m);
400
417
  }
401
418
 
402
- return acc;
419
+ return acc.length ? acc : null;
403
420
  }
404
421
 
405
- export function queryJoin(...args: string[]): string {
422
+ export function queryJoin(...args: (string | undefined)[]): string {
406
423
  return args.filter(Boolean).join("&");
407
424
  }
408
425
 
@@ -415,7 +432,7 @@ type QueryEncoder = (
415
432
  key: string,
416
433
  value: unknown,
417
434
  options?: QueryEncoderOptions,
418
- ) => string;
435
+ ) => string | undefined;
419
436
 
420
437
  type BulkQueryEncoder = (
421
438
  values: Record<string, unknown>,
@@ -447,3 +464,20 @@ export const encodeFormQuery = queryEncoder(encodeForm);
447
464
  export const encodeSpaceDelimitedQuery = queryEncoder(encodeSpaceDelimited);
448
465
  export const encodePipeDelimitedQuery = queryEncoder(encodePipeDelimited);
449
466
  export const encodeDeepObjectQuery = queryEncoder(encodeDeepObject);
467
+
468
+ export function appendForm(
469
+ fd: FormData,
470
+ key: string,
471
+ value: unknown,
472
+ fileName?: string,
473
+ ): void {
474
+ if (value == null) {
475
+ return;
476
+ } else if (value instanceof Blob && fileName) {
477
+ fd.append(key, value, fileName);
478
+ } else if (value instanceof Blob) {
479
+ fd.append(key, value);
480
+ } else {
481
+ fd.append(key, String(value));
482
+ }
483
+ }
@@ -120,3 +120,17 @@ export function abortSignalAny(signals: AbortSignal[]): AbortSignal {
120
120
 
121
121
  return result;
122
122
  }
123
+
124
+ export function compactMap<T>(
125
+ values: Record<string, T | undefined>,
126
+ ): Record<string, T> {
127
+ const out: Record<string, T> = {};
128
+
129
+ for (const [k, v] of Object.entries(values)) {
130
+ if (typeof v !== "undefined") {
131
+ out[k] = v;
132
+ }
133
+ }
134
+
135
+ return out;
136
+ }
@@ -158,7 +158,6 @@ async function retryBackoff(
158
158
  const start = Date.now();
159
159
  let x = 0;
160
160
 
161
- // eslint-disable-next-line no-constant-condition
162
161
  while (true) {
163
162
  try {
164
163
  const res = await fn();
@@ -57,6 +57,7 @@ export function collectExtraKeys<
57
57
  >(
58
58
  obj: ZodObject<Shape, "strip", Catchall>,
59
59
  extrasKey: K,
60
+ optional: boolean,
60
61
  ): ZodEffects<
61
62
  typeof obj,
62
63
  & output<ZodObject<Shape, "strict">>
@@ -81,6 +82,10 @@ export function collectExtraKeys<
81
82
  delete val[key];
82
83
  }
83
84
 
85
+ if (optional && Object.keys(extras).length === 0) {
86
+ return val;
87
+ }
88
+
84
89
  return { ...val, [extrasKey]: extras };
85
90
  });
86
91
  }
package/src/lib/sdks.ts CHANGED
@@ -131,7 +131,10 @@ export class ClientSDK {
131
131
 
132
132
  const secQuery: string[] = [];
133
133
  for (const [k, v] of Object.entries(security?.queryParams || {})) {
134
- secQuery.push(encodeForm(k, v, { charEncoding: "percent" }));
134
+ const q = encodeForm(k, v, { charEncoding: "percent" });
135
+ if (typeof q !== "undefined") {
136
+ secQuery.push(q);
137
+ }
135
138
  }
136
139
  if (secQuery.length) {
137
140
  finalQuery += `&${secQuery.join("&")}`;
@@ -165,6 +165,9 @@ export type CreateGenerationRequestBody = {
165
165
  * The base version of stable diffusion to use if not using a custom model. v1_5 is 1.5, v2 is 2.1, if not specified it will default to v1_5. Also includes SDXL and SDXL Lightning models
166
166
  */
167
167
  sdVersion?: shared.SdVersions | undefined;
168
+ /**
169
+ * Apply a fixed seed to maintain consistency across generation sets. The maximum seed value is 2147483637 for Flux and 9999999998 for other models
170
+ */
168
171
  seed?: number | null | undefined;
169
172
  /**
170
173
  * Whether the generated images should tile on all axis.
@@ -30,6 +30,9 @@ export type CreateLCMGenerationRequestBody = {
30
30
  */
31
31
  prompt: string;
32
32
  requestTimestamp?: string | undefined;
33
+ /**
34
+ * Apply a fixed seed to maintain consistency across generation sets. The maximum seed value is 2147483637 for Flux and 9999999998 for other models
35
+ */
33
36
  seed?: number | null | undefined;
34
37
  /**
35
38
  * The number of steps to use for the generation. Must be between 4 and 16.
@@ -46,7 +46,7 @@ export type MotionSvdGenerationOutput = {
46
46
  * Responses for POST /generations-motion-svd
47
47
  */
48
48
  export type CreateSVDMotionGenerationResponseBody = {
49
- sdGenerationJob?: MotionSvdGenerationOutput | null | undefined;
49
+ motionSvdGenerationJob?: MotionSvdGenerationOutput | null | undefined;
50
50
  };
51
51
 
52
52
  export type CreateSVDMotionGenerationResponse = {
@@ -202,14 +202,17 @@ export const CreateSVDMotionGenerationResponseBody$inboundSchema: z.ZodType<
202
202
  z.ZodTypeDef,
203
203
  unknown
204
204
  > = z.object({
205
- sdGenerationJob: z.nullable(
205
+ motionSvdGenerationJob: z.nullable(
206
206
  z.lazy(() => MotionSvdGenerationOutput$inboundSchema),
207
207
  ).optional(),
208
208
  });
209
209
 
210
210
  /** @internal */
211
211
  export type CreateSVDMotionGenerationResponseBody$Outbound = {
212
- sdGenerationJob?: MotionSvdGenerationOutput$Outbound | null | undefined;
212
+ motionSvdGenerationJob?:
213
+ | MotionSvdGenerationOutput$Outbound
214
+ | null
215
+ | undefined;
213
216
  };
214
217
 
215
218
  /** @internal */
@@ -218,7 +221,7 @@ export const CreateSVDMotionGenerationResponseBody$outboundSchema: z.ZodType<
218
221
  z.ZodTypeDef,
219
222
  CreateSVDMotionGenerationResponseBody
220
223
  > = z.object({
221
- sdGenerationJob: z.nullable(
224
+ motionSvdGenerationJob: z.nullable(
222
225
  z.lazy(() => MotionSvdGenerationOutput$outboundSchema),
223
226
  ).optional(),
224
227
  });
@@ -19,6 +19,9 @@ export type CreateTextureGenerationRequestBody = {
19
19
  previewDirection?: string | null | undefined;
20
20
  prompt?: string | undefined;
21
21
  sdVersion?: string | null | undefined;
22
+ /**
23
+ * Apply a fixed seed to maintain consistency across generation sets. The maximum seed value is 2147483637 for Flux and 9999999998 for other models
24
+ */
22
25
  seed?: number | null | undefined;
23
26
  };
24
27
 
@@ -168,6 +168,9 @@ export type GetGenerationByIdGenerations = {
168
168
  * The base version of stable diffusion to use if not using a custom model. v1_5 is 1.5, v2 is 2.1, if not specified it will default to v1_5. Also includes SDXL and SDXL Lightning models
169
169
  */
170
170
  sdVersion?: shared.SdVersions | undefined;
171
+ /**
172
+ * Apply a fixed seed to maintain consistency across generation sets. The maximum seed value is 2147483637 for Flux and 9999999998 for other models
173
+ */
171
174
  seed?: number | null | undefined;
172
175
  /**
173
176
  * The status of the current task.
@@ -165,6 +165,9 @@ export type GetGenerationsByUserIdGenerations = {
165
165
  * The base version of stable diffusion to use if not using a custom model. v1_5 is 1.5, v2 is 2.1, if not specified it will default to v1_5. Also includes SDXL and SDXL Lightning models
166
166
  */
167
167
  sdVersion?: shared.SdVersions | undefined;
168
+ /**
169
+ * Apply a fixed seed to maintain consistency across generation sets. The maximum seed value is 2147483637 for Flux and 9999999998 for other models
170
+ */
168
171
  seed?: number | null | undefined;
169
172
  /**
170
173
  * The status of the current task.
@@ -38,6 +38,9 @@ export type PerformAlchemyUpscaleLCMRequestBody = {
38
38
  */
39
39
  refineStrength?: number | null | undefined;
40
40
  requestTimestamp?: string | undefined;
41
+ /**
42
+ * Apply a fixed seed to maintain consistency across generation sets. The maximum seed value is 2147483637 for Flux and 9999999998 for other models
43
+ */
41
44
  seed?: number | null | undefined;
42
45
  /**
43
46
  * The number of steps to use for the generation. Must be between 4 and 16.
@@ -34,6 +34,9 @@ export type PerformInpaintingLCMRequestBody = {
34
34
  */
35
35
  prompt: string;
36
36
  requestTimestamp?: string | undefined;
37
+ /**
38
+ * Apply a fixed seed to maintain consistency across generation sets. The maximum seed value is 2147483637 for Flux and 9999999998 for other models
39
+ */
37
40
  seed?: number | null | undefined;
38
41
  /**
39
42
  * The number of steps to use for the generation. Must be between 4 and 16.
@@ -30,6 +30,9 @@ export type PerformInstantRefineRequestBody = {
30
30
  */
31
31
  prompt: string;
32
32
  requestTimestamp?: string | undefined;
33
+ /**
34
+ * Apply a fixed seed to maintain consistency across generation sets. The maximum seed value is 2147483637 for Flux and 9999999998 for other models
35
+ */
33
36
  seed?: number | null | undefined;
34
37
  /**
35
38
  * The number of steps to use for the generation. Must be between 4 and 16.
@@ -16,6 +16,8 @@ export enum SdVersions {
16
16
  Sdxl10 = "SDXL_1_0",
17
17
  SdxlLightning = "SDXL_LIGHTNING",
18
18
  Phoenix = "PHOENIX",
19
+ Flux = "FLUX",
20
+ FluxDev = "FLUX_DEV",
19
21
  }
20
22
 
21
23
  /** @internal */
package/tsconfig.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "compilerOptions": {
3
+ "incremental": true,
4
+ "tsBuildInfoFile": ".tsbuildinfo",
5
+ "target": "ES2020",
6
+ "lib": ["ES2022", "DOM", "DOM.Iterable"],
7
+ "jsx": "react-jsx",
8
+
9
+ "module": "Node16",
10
+ "moduleResolution": "Node16",
11
+
12
+ "allowJs": true,
13
+
14
+ "declaration": true,
15
+ "declarationMap": true,
16
+ "sourceMap": true,
17
+ "outDir": ".",
18
+
19
+
20
+ // https://github.com/tsconfig/bases/blob/a1bf7c0fa2e094b068ca3e1448ca2ece4157977e/bases/strictest.json
21
+ "strict": true,
22
+ "allowUnusedLabels": false,
23
+ "allowUnreachableCode": false,
24
+ "exactOptionalPropertyTypes": true,
25
+ "useUnknownInCatchVariables": true,
26
+ "noFallthroughCasesInSwitch": true,
27
+ "noImplicitOverride": true,
28
+ "noImplicitReturns": true,
29
+ "noPropertyAccessFromIndexSignature": true,
30
+ "noUncheckedIndexedAccess": true,
31
+ "noUnusedLocals": true,
32
+ "noUnusedParameters": true,
33
+ "isolatedModules": true,
34
+ "checkJs": true,
35
+ "esModuleInterop": true,
36
+ "skipLibCheck": true,
37
+ "forceConsistentCasingInFileNames": true
38
+ },
39
+ "include": ["src"],
40
+ "exclude": ["node_modules"]
41
+ }