@fxhash/params 0.0.9 → 0.0.11

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 (197) hide show
  1. package/README.md +2 -2
  2. package/dist/{chunk-FZWZHHQ2.js → chunk-B3N473DY.js} +56 -42
  3. package/dist/chunk-B3N473DY.js.map +1 -0
  4. package/dist/index.d.ts +249 -3
  5. package/dist/index.js +100 -5
  6. package/dist/index.js.map +1 -1
  7. package/dist/utils-jEvPb5wq.d.ts +141 -0
  8. package/dist/utils.d.ts +1 -50
  9. package/dist/utils.js +2 -32
  10. package/dist/utils.js.map +1 -1
  11. package/package.json +31 -48
  12. package/dist/BaseInput.cjs +0 -13
  13. package/dist/BaseInput.cjs.map +0 -1
  14. package/dist/BaseInput.css +0 -112
  15. package/dist/BaseInput.css.map +0 -1
  16. package/dist/BaseInput.d.ts +0 -12
  17. package/dist/BaseInput.js +0 -13
  18. package/dist/BaseInput.js.map +0 -1
  19. package/dist/Context.cjs +0 -49
  20. package/dist/Context.cjs.map +0 -1
  21. package/dist/Context.d.ts +0 -19
  22. package/dist/Context.js +0 -49
  23. package/dist/Context.js.map +0 -1
  24. package/dist/Controller/BigInt.cjs +0 -10
  25. package/dist/Controller/BigInt.cjs.map +0 -1
  26. package/dist/Controller/BigInt.css +0 -183
  27. package/dist/Controller/BigInt.css.map +0 -1
  28. package/dist/Controller/BigInt.d.ts +0 -8
  29. package/dist/Controller/BigInt.js +0 -10
  30. package/dist/Controller/BigInt.js.map +0 -1
  31. package/dist/Controller/Boolean.cjs +0 -9
  32. package/dist/Controller/Boolean.cjs.map +0 -1
  33. package/dist/Controller/Boolean.css +0 -183
  34. package/dist/Controller/Boolean.css.map +0 -1
  35. package/dist/Controller/Boolean.d.ts +0 -8
  36. package/dist/Controller/Boolean.js +0 -9
  37. package/dist/Controller/Boolean.js.map +0 -1
  38. package/dist/Controller/Bytes.cjs +0 -9
  39. package/dist/Controller/Bytes.cjs.map +0 -1
  40. package/dist/Controller/Bytes.css +0 -191
  41. package/dist/Controller/Bytes.css.map +0 -1
  42. package/dist/Controller/Bytes.d.ts +0 -8
  43. package/dist/Controller/Bytes.js +0 -9
  44. package/dist/Controller/Bytes.js.map +0 -1
  45. package/dist/Controller/Color.cjs +0 -10
  46. package/dist/Controller/Color.cjs.map +0 -1
  47. package/dist/Controller/Color.css +0 -227
  48. package/dist/Controller/Color.css.map +0 -1
  49. package/dist/Controller/Color.d.ts +0 -8
  50. package/dist/Controller/Color.js +0 -10
  51. package/dist/Controller/Color.js.map +0 -1
  52. package/dist/Controller/Controller.cjs +0 -14
  53. package/dist/Controller/Controller.cjs.map +0 -1
  54. package/dist/Controller/Controller.css +0 -183
  55. package/dist/Controller/Controller.css.map +0 -1
  56. package/dist/Controller/Controller.d.ts +0 -41
  57. package/dist/Controller/Controller.js +0 -14
  58. package/dist/Controller/Controller.js.map +0 -1
  59. package/dist/Controller/Invalid.cjs +0 -7
  60. package/dist/Controller/Invalid.cjs.map +0 -1
  61. package/dist/Controller/Invalid.css +0 -48
  62. package/dist/Controller/Invalid.css.map +0 -1
  63. package/dist/Controller/Invalid.d.ts +0 -11
  64. package/dist/Controller/Invalid.js +0 -7
  65. package/dist/Controller/Invalid.js.map +0 -1
  66. package/dist/Controller/Number.cjs +0 -9
  67. package/dist/Controller/Number.cjs.map +0 -1
  68. package/dist/Controller/Number.css +0 -183
  69. package/dist/Controller/Number.css.map +0 -1
  70. package/dist/Controller/Number.d.ts +0 -8
  71. package/dist/Controller/Number.js +0 -9
  72. package/dist/Controller/Number.js.map +0 -1
  73. package/dist/Controller/Param.cjs +0 -21
  74. package/dist/Controller/Param.cjs.map +0 -1
  75. package/dist/Controller/Param.css +0 -283
  76. package/dist/Controller/Param.css.map +0 -1
  77. package/dist/Controller/Param.d.ts +0 -25
  78. package/dist/Controller/Param.js +0 -21
  79. package/dist/Controller/Param.js.map +0 -1
  80. package/dist/Controller/Select.cjs +0 -9
  81. package/dist/Controller/Select.cjs.map +0 -1
  82. package/dist/Controller/Select.css +0 -183
  83. package/dist/Controller/Select.css.map +0 -1
  84. package/dist/Controller/Select.d.ts +0 -8
  85. package/dist/Controller/Select.js +0 -9
  86. package/dist/Controller/Select.js.map +0 -1
  87. package/dist/Controller/String.cjs +0 -9
  88. package/dist/Controller/String.cjs.map +0 -1
  89. package/dist/Controller/String.css +0 -183
  90. package/dist/Controller/String.css.map +0 -1
  91. package/dist/Controller/String.d.ts +0 -8
  92. package/dist/Controller/String.js +0 -9
  93. package/dist/Controller/String.js.map +0 -1
  94. package/dist/Controls.cjs +0 -102
  95. package/dist/Controls.cjs.map +0 -1
  96. package/dist/Controls.css +0 -304
  97. package/dist/Controls.css.map +0 -1
  98. package/dist/Controls.d.ts +0 -17
  99. package/dist/Controls.js +0 -102
  100. package/dist/Controls.js.map +0 -1
  101. package/dist/LockButton/LockButton.cjs +0 -8
  102. package/dist/LockButton/LockButton.cjs.map +0 -1
  103. package/dist/LockButton/LockButton.css +0 -117
  104. package/dist/LockButton/LockButton.css.map +0 -1
  105. package/dist/LockButton/LockButton.d.ts +0 -11
  106. package/dist/LockButton/LockButton.js +0 -8
  107. package/dist/LockButton/LockButton.js.map +0 -1
  108. package/dist/ParamsHistory.cjs +0 -89
  109. package/dist/ParamsHistory.cjs.map +0 -1
  110. package/dist/ParamsHistory.d.ts +0 -22
  111. package/dist/ParamsHistory.js +0 -89
  112. package/dist/ParamsHistory.js.map +0 -1
  113. package/dist/RuntimeContext.cjs +0 -10
  114. package/dist/RuntimeContext.cjs.map +0 -1
  115. package/dist/RuntimeContext.d.ts +0 -44
  116. package/dist/RuntimeContext.js +0 -10
  117. package/dist/RuntimeContext.js.map +0 -1
  118. package/dist/chunk-2BHABOFI.js +0 -43
  119. package/dist/chunk-2BHABOFI.js.map +0 -1
  120. package/dist/chunk-2QIAF3U7.js +0 -39
  121. package/dist/chunk-2QIAF3U7.js.map +0 -1
  122. package/dist/chunk-4OV7OX5A.js +0 -37
  123. package/dist/chunk-4OV7OX5A.js.map +0 -1
  124. package/dist/chunk-57UENWLF.js +0 -110
  125. package/dist/chunk-57UENWLF.js.map +0 -1
  126. package/dist/chunk-6VMIOQSE.js +0 -34
  127. package/dist/chunk-6VMIOQSE.js.map +0 -1
  128. package/dist/chunk-C6GTVBY6.cjs +0 -46
  129. package/dist/chunk-C6GTVBY6.cjs.map +0 -1
  130. package/dist/chunk-CE3TPOSO.js +0 -135
  131. package/dist/chunk-CE3TPOSO.js.map +0 -1
  132. package/dist/chunk-D4RVVQC7.cjs +0 -23
  133. package/dist/chunk-D4RVVQC7.cjs.map +0 -1
  134. package/dist/chunk-EACKNC6C.cjs +0 -103
  135. package/dist/chunk-EACKNC6C.cjs.map +0 -1
  136. package/dist/chunk-FZWZHHQ2.js.map +0 -1
  137. package/dist/chunk-H5IMTNFG.js +0 -44
  138. package/dist/chunk-H5IMTNFG.js.map +0 -1
  139. package/dist/chunk-HJBHIE5T.cjs +0 -135
  140. package/dist/chunk-HJBHIE5T.cjs.map +0 -1
  141. package/dist/chunk-JAU4ONF2.cjs +0 -24
  142. package/dist/chunk-JAU4ONF2.cjs.map +0 -1
  143. package/dist/chunk-K4EW6YY3.cjs +0 -34
  144. package/dist/chunk-K4EW6YY3.cjs.map +0 -1
  145. package/dist/chunk-KZMSUHQX.cjs +0 -120
  146. package/dist/chunk-KZMSUHQX.cjs.map +0 -1
  147. package/dist/chunk-LX23UR4X.cjs +0 -115
  148. package/dist/chunk-LX23UR4X.cjs.map +0 -1
  149. package/dist/chunk-MWP7SJWC.js +0 -103
  150. package/dist/chunk-MWP7SJWC.js.map +0 -1
  151. package/dist/chunk-OFUKQ2TB.cjs +0 -43
  152. package/dist/chunk-OFUKQ2TB.cjs.map +0 -1
  153. package/dist/chunk-P77D7XSP.js +0 -46
  154. package/dist/chunk-P77D7XSP.js.map +0 -1
  155. package/dist/chunk-PTXBICTZ.js +0 -67
  156. package/dist/chunk-PTXBICTZ.js.map +0 -1
  157. package/dist/chunk-QDLMFMLL.cjs +0 -398
  158. package/dist/chunk-QDLMFMLL.cjs.map +0 -1
  159. package/dist/chunk-QM6EKPI6.cjs +0 -67
  160. package/dist/chunk-QM6EKPI6.cjs.map +0 -1
  161. package/dist/chunk-TKKYM77A.cjs +0 -44
  162. package/dist/chunk-TKKYM77A.cjs.map +0 -1
  163. package/dist/chunk-VED7SCYX.cjs +0 -39
  164. package/dist/chunk-VED7SCYX.cjs.map +0 -1
  165. package/dist/chunk-X4O42D2P.cjs +0 -37
  166. package/dist/chunk-X4O42D2P.cjs.map +0 -1
  167. package/dist/chunk-YOS2HCIS.js +0 -23
  168. package/dist/chunk-YOS2HCIS.js.map +0 -1
  169. package/dist/chunk-YXDLGCFJ.cjs +0 -110
  170. package/dist/chunk-YXDLGCFJ.cjs.map +0 -1
  171. package/dist/chunk-YYEIYDDF.js +0 -24
  172. package/dist/chunk-YYEIYDDF.js.map +0 -1
  173. package/dist/chunk-Z7K2LNS2.js +0 -115
  174. package/dist/chunk-Z7K2LNS2.js.map +0 -1
  175. package/dist/chunk-ZG3OT7LF.js +0 -120
  176. package/dist/chunk-ZG3OT7LF.js.map +0 -1
  177. package/dist/hooks.cjs +0 -29
  178. package/dist/hooks.cjs.map +0 -1
  179. package/dist/hooks.d.ts +0 -6
  180. package/dist/hooks.js +0 -29
  181. package/dist/hooks.js.map +0 -1
  182. package/dist/index.cjs +0 -7
  183. package/dist/index.cjs.map +0 -1
  184. package/dist/index.css +0 -112
  185. package/dist/index.css.map +0 -1
  186. package/dist/types.cjs +0 -1
  187. package/dist/types.cjs.map +0 -1
  188. package/dist/types.d.ts +0 -100
  189. package/dist/types.js +0 -1
  190. package/dist/types.js.map +0 -1
  191. package/dist/utils.cjs +0 -33
  192. package/dist/utils.cjs.map +0 -1
  193. package/dist/validation.cjs +0 -9
  194. package/dist/validation.cjs.map +0 -1
  195. package/dist/validation.d.ts +0 -241
  196. package/dist/validation.js +0 -9
  197. package/dist/validation.js.map +0 -1
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # fx(params)
2
2
 
3
- `@fxhash/params` contains all code related to fx(params) feature
3
+ `@fxhash/params` contains all code related to fx(params) feature
4
4
 
5
5
  ## Installation
6
6
 
@@ -10,4 +10,4 @@
10
10
 
11
11
  ```
12
12
  import { BaseButton, BaseInput } from "@fxhash/params/BaseInput"
13
- ```
13
+ ```
@@ -45,8 +45,7 @@ var hexToString = function(h) {
45
45
  let rtn = "";
46
46
  for (let i = 0; i < hx.length; i++) {
47
47
  const int = parseInt(hx[i], 16);
48
- if (int === 0)
49
- break;
48
+ if (int === 0) break;
50
49
  rtn += String.fromCharCode(int);
51
50
  }
52
51
  return rtn;
@@ -279,8 +278,7 @@ var ParameterProcessors = {
279
278
  };
280
279
  function serializeParams(params, definition) {
281
280
  let bytes = "";
282
- if (!definition)
283
- return bytes;
281
+ if (!definition) return bytes;
284
282
  for (const def of definition) {
285
283
  const { id, type } = def;
286
284
  const processor = ParameterProcessors[type];
@@ -291,6 +289,11 @@ function serializeParams(params, definition) {
291
289
  }
292
290
  return bytes;
293
291
  }
292
+ function serializeParamsOrNull(params, definition) {
293
+ const serialized = serializeParams(params, definition || []);
294
+ if (serialized.length === 0) return null;
295
+ return serialized;
296
+ }
294
297
  function deserializeParams(bytes, definition, options) {
295
298
  const params = {};
296
299
  for (const def of definition) {
@@ -298,24 +301,24 @@ function deserializeParams(bytes, definition, options) {
298
301
  const transformer = options.withTransform && processor[options.transformType || "transform"];
299
302
  if (!bytes) {
300
303
  let v;
301
- if (typeof def.default === "undefined")
302
- v = processor.random(def);
303
- else
304
- v = def.default;
304
+ if (typeof def.default === "undefined") v = processor.random(def);
305
+ else v = def.default;
305
306
  params[def.id] = transformer ? transformer(v, def) : v;
306
307
  continue;
307
308
  }
308
309
  const bytesLen = processor.bytesLength(def);
309
310
  const valueBytes = bytes.substring(0, bytesLen * 2);
310
311
  bytes = bytes.substring(bytesLen * 2);
311
- const val = processor.deserialize(valueBytes, def);
312
+ const val = processor.deserialize(
313
+ valueBytes,
314
+ def
315
+ );
312
316
  params[def.id] = transformer ? transformer(val, def) : val;
313
317
  }
314
318
  return params;
315
319
  }
316
320
  function consolidateParams(params, data) {
317
- if (!params)
318
- return [];
321
+ if (!params) return [];
319
322
  const rtn = [...params];
320
323
  for (const p in rtn) {
321
324
  const definition = rtn[p];
@@ -325,22 +328,46 @@ function consolidateParams(params, data) {
325
328
  } else {
326
329
  const processor = ParameterProcessors[type];
327
330
  let v;
328
- if (typeof def === "undefined")
329
- v = processor.random(definition);
330
- else
331
- v = def;
331
+ if (typeof def === "undefined") v = processor.random(definition);
332
+ else v = def;
332
333
  rtn[p].value = processor.transform?.(v) || v;
333
334
  }
334
335
  }
335
336
  return rtn;
336
337
  }
338
+ function buildParamsObject(definition, data) {
339
+ if (!definition) return {};
340
+ const out = {};
341
+ for (const def of definition) {
342
+ if (data?.hasOwnProperty(def.id)) {
343
+ out[def.id] = data[def.id];
344
+ continue;
345
+ }
346
+ if (def.hasOwnProperty("default")) {
347
+ out[def.id] = def.default;
348
+ continue;
349
+ }
350
+ const processor = ParameterProcessors[def.type];
351
+ const rand = processor.random(def);
352
+ out[def.id] = processor.transform?.(rand) || rand;
353
+ }
354
+ return out;
355
+ }
337
356
  function getRandomParamValues(params, options) {
338
- return params.reduce((acc, definition) => {
339
- const processor = ParameterProcessors[definition.type];
340
- const v = processor.random(definition);
341
- acc[definition.id] = options?.noTransform ? v : processor.transform?.(v) || v;
342
- return acc;
343
- }, {});
357
+ return params.reduce(
358
+ (acc, definition) => {
359
+ const processor = ParameterProcessors[definition.type];
360
+ let v = definition.value || definition.default;
361
+ if (definition.update !== "code-driven" || options?.randomizeAll) {
362
+ v = processor.random(definition);
363
+ }
364
+ if (v) {
365
+ acc[definition.id] = options?.noTransform ? v : processor.transform?.(v) || v;
366
+ }
367
+ return acc;
368
+ },
369
+ {}
370
+ );
344
371
  }
345
372
  function sumBytesParams(definitions) {
346
373
  return definitions?.reduce(
@@ -350,20 +377,21 @@ function sumBytesParams(definitions) {
350
377
  }
351
378
  function stringifyParamsData(data) {
352
379
  return JSON.stringify(data, (key, value) => {
353
- if (typeof value === "bigint")
354
- return value.toString();
380
+ if (typeof value === "bigint") return value.toString();
355
381
  return value;
356
382
  });
357
383
  }
358
384
  function jsonStringifyBigint(data) {
359
385
  return JSON.stringify(data, (key, value) => {
360
- if (typeof value === "bigint")
361
- return value.toString();
386
+ if (typeof value === "bigint") return value.toString();
362
387
  return value;
363
388
  });
364
389
  }
365
390
  var processParam = (paramId, value, definitions, transformType) => {
366
391
  const definition = definitions.find((d) => d.id === paramId);
392
+ if (!definition) {
393
+ throw new Error(`No definition found for param ${paramId}`);
394
+ }
367
395
  const processor = ParameterProcessors[definition.type];
368
396
  const transformer = processor[transformType];
369
397
  return transformer?.(value, definition) || value;
@@ -379,20 +407,6 @@ var processParams = (values, definitions, transformType) => {
379
407
  return paramValues;
380
408
  };
381
409
 
382
- export {
383
- rgbaToHex,
384
- hexToRgba,
385
- MIN_SAFE_INT64,
386
- MAX_SAFE_INT64,
387
- ParameterProcessors,
388
- serializeParams,
389
- deserializeParams,
390
- consolidateParams,
391
- getRandomParamValues,
392
- sumBytesParams,
393
- stringifyParamsData,
394
- jsonStringifyBigint,
395
- processParam,
396
- processParams
397
- };
398
- //# sourceMappingURL=chunk-FZWZHHQ2.js.map
410
+ export { MAX_SAFE_INT64, MIN_SAFE_INT64, ParameterProcessors, buildParamsObject, consolidateParams, deserializeParams, getRandomParamValues, hexToRgba, jsonStringifyBigint, processParam, processParams, rgbaToHex, serializeParams, serializeParamsOrNull, stringifyParamsData, sumBytesParams };
411
+ //# sourceMappingURL=chunk-B3N473DY.js.map
412
+ //# sourceMappingURL=chunk-B3N473DY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils.ts"],"names":["hex"],"mappings":"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","file":"chunk-B3N473DY.js","sourcesContent":["import {\n hexString,\n FxParamDefinition,\n FxParamProcessor,\n FxParamProcessors,\n FxParamTypeMap,\n FxParamType,\n FxParamsData,\n FxParamValue,\n FxParamTranformType,\n FxParamProcessorTransformer,\n FxParamTransformation,\n FxParamsRaw,\n FxParamsTransformed,\n FxParamDefinitions,\n} from \"./types\"\n\nexport function rgbaToHex(r: number, g: number, b: number, a: number): string {\n const outParts = [\n r.toString(16),\n g.toString(16),\n b.toString(16),\n Math.round(a * 255)\n .toString(16)\n .substring(0, 2),\n ]\n\n // Pad single-digit output values\n outParts.forEach(function (part, i) {\n if (part.length === 1) {\n outParts[i] = \"0\" + part\n }\n })\n\n return \"#\" + outParts.join(\"\")\n}\n\nfunction completeHexColor(hexCode: hexString | string): string {\n let hex = hexCode.replace(\"#\", \"\")\n if (hex.length === 6) {\n hex = `${hex}ff`\n }\n if (hex.length === 3) {\n hex = `${hex[0]}${hex[0]}${hex[1]}${hex[1]}${hex[2]}${hex[2]}ff`\n }\n return hex\n}\n\nexport function hexToRgba(hexCode: hexString) {\n const hex = completeHexColor(hexCode)\n\n const r = parseInt(hex.substring(0, 2), 16)\n const g = parseInt(hex.substring(2, 4), 16)\n const b = parseInt(hex.substring(4, 6), 16)\n const a =\n Math.round(\n (parseInt(hex.substring(6, 8), 16) / 255 + Number.EPSILON) * 100\n ) / 100\n\n return { r, g, b, a }\n}\n\nconst stringToHex = function (s: string) {\n let rtn = \"\"\n for (let i = 0; i < s.length; i++) {\n rtn += s.charCodeAt(i).toString(16).padStart(4, \"0\")\n }\n return rtn\n}\nconst hexToString = function (h: string) {\n const hx = h.match(/.{1,4}/g) || []\n let rtn = \"\"\n for (let i = 0; i < hx.length; i++) {\n const int = parseInt(hx[i], 16)\n if (int === 0) break\n rtn += String.fromCharCode(int)\n }\n return rtn\n}\n\nexport const MIN_SAFE_INT64 = BigInt(\"-9223372036854775808\")\nexport const MAX_SAFE_INT64 = BigInt(\"9223372036854775807\")\n\nexport const ParameterProcessors: FxParamProcessors = {\n number: {\n serialize: input => {\n const view = new DataView(new ArrayBuffer(8))\n view.setFloat64(0, input)\n return view.getBigUint64(0).toString(16).padStart(16, \"0\")\n },\n deserialize: input => {\n const view = new DataView(new ArrayBuffer(8))\n for (let i = 0; i < 8; i++) {\n view.setUint8(i, parseInt(input.substring(i * 2, i * 2 + 2), 16))\n }\n return view.getFloat64(0)\n },\n bytesLength: () => 8,\n constrain: (value, definition) => {\n let min = Number.MIN_SAFE_INTEGER\n if (typeof definition.options?.min !== \"undefined\")\n min = Number(definition.options.min)\n let max = Number.MAX_SAFE_INTEGER\n if (typeof definition.options?.max !== \"undefined\")\n max = Number(definition.options.max)\n max = Math.min(max, Number.MAX_SAFE_INTEGER)\n min = Math.max(min, Number.MIN_SAFE_INTEGER)\n const v = Math.min(Math.max(value, min), max)\n if (definition?.options?.step) {\n const t = 1.0 / definition?.options?.step\n return Math.round(v * t) / t\n }\n return v\n },\n random: definition => {\n let min = Number.MIN_SAFE_INTEGER\n if (typeof definition.options?.min !== \"undefined\")\n min = Number(definition.options.min)\n let max = Number.MAX_SAFE_INTEGER\n if (typeof definition.options?.max !== \"undefined\")\n max = Number(definition.options.max)\n max = Math.min(max, Number.MAX_SAFE_INTEGER)\n min = Math.max(min, Number.MIN_SAFE_INTEGER)\n const v = Math.random() * (max - min) + min\n if (definition?.options?.step) {\n const t = 1.0 / definition?.options?.step\n return Math.round(v * t) / t\n }\n return v\n },\n },\n bigint: {\n serialize: (input: any) => {\n const view = new DataView(new ArrayBuffer(8))\n view.setBigInt64(0, BigInt(input))\n return view.getBigUint64(0).toString(16).padStart(16, \"0\")\n },\n deserialize: (input: any) => {\n const view = new DataView(new ArrayBuffer(8))\n for (let i = 0; i < 8; i++) {\n view.setUint8(i, parseInt(input.substring(i * 2, i * 2 + 2), 16))\n }\n return view.getBigInt64(0)\n },\n bytesLength: () => 8,\n random: definition => {\n let min = MIN_SAFE_INT64\n let max = MAX_SAFE_INT64\n if (typeof definition.options?.min !== \"undefined\")\n min = BigInt(definition.options.min)\n if (typeof definition.options?.max !== \"undefined\")\n max = BigInt(definition.options.max)\n const range = max - min\n const bits = range.toString(2).length\n let random\n do {\n random = BigInt(\n \"0b\" +\n Array.from(\n crypto.getRandomValues(new Uint8Array(Math.ceil(bits / 8)))\n )\n .map(b => b.toString(2).padStart(8, \"0\"))\n .join(\"\")\n )\n } while (random > range)\n return random + min\n },\n },\n boolean: {\n serialize: input => {\n return typeof input === \"boolean\"\n ? input\n ? \"01\"\n : \"00\"\n : typeof input === \"string\"\n ? input === \"true\"\n ? \"01\"\n : \"00\"\n : \"00\"\n },\n deserialize: input => {\n return input === \"00\" ? false : true\n },\n bytesLength: () => 1,\n random: () => Math.random() < 0.5,\n },\n\n color: {\n serialize: (input: string) => {\n return completeHexColor(input)\n },\n\n deserialize: (input): hexString => {\n return input as hexString\n },\n bytesLength: () => 4,\n transform: (input: string) => {\n const color = completeHexColor(input)\n const r = parseInt(color.slice(0, 2), 16)\n const g = parseInt(color.slice(2, 4), 16)\n const b = parseInt(color.slice(4, 6), 16)\n const a = parseInt(color.slice(6, 8), 16)\n return {\n hex: {\n rgb: \"#\" + input.slice(0, 6),\n rgba: \"#\" + input,\n },\n obj: {\n rgb: { r, g, b },\n rgba: { r, g, b, a },\n },\n arr: {\n rgb: [r, g, b],\n rgba: [r, g, b, a],\n },\n }\n },\n constrain: value => {\n const hex = value.replace(\"#\", \"\")\n return hex.slice(0, 8).padEnd(8, \"f\")\n },\n random: () =>\n `${[...Array(8)]\n .map(() => Math.floor(Math.random() * 16).toString(16))\n .join(\"\")}`,\n },\n\n string: {\n serialize: (input, def) => {\n if (!def.version) {\n let hex = stringToHex(input.substring(0, 64))\n hex = hex.padEnd(64 * 4, \"0\")\n return hex\n }\n let max = 64\n if (typeof def.options?.maxLength !== \"undefined\")\n max = Number(def.options.maxLength)\n let hex = stringToHex(input.substring(0, max))\n hex = hex.padEnd(max * 4, \"0\")\n return hex\n },\n deserialize: input => {\n return hexToString(input)\n },\n\n bytesLength: def => {\n if (!def.version) {\n return 64 * 2\n }\n if (typeof def.options?.maxLength !== \"undefined\")\n return Number(def.options.maxLength) * 2\n return 64 * 2\n },\n random: definition => {\n let min = 0\n if (typeof definition.options?.minLength !== \"undefined\")\n min = definition.options.minLength\n let max = 64\n if (typeof definition.options?.maxLength !== \"undefined\")\n max = definition.options.maxLength\n const length = Math.round(Math.random() * (max - min) + min)\n return [...Array(length)]\n .map(i => (~~(Math.random() * 36)).toString(36))\n .join(\"\")\n },\n constrain: (value, definition) => {\n let min = 0\n if (typeof definition.options?.minLength !== \"undefined\")\n min = definition.options.minLength\n let max = 64\n if (typeof definition.options?.maxLength !== \"undefined\")\n max = definition.options.maxLength\n const v = value.slice(0, max)\n if (v.length < min) {\n return v.padEnd(min)\n }\n return v\n },\n },\n\n bytes: {\n serialize: (input, def) => {\n return Array.from(input)\n .map(i => i.toString(16).padStart(2, \"0\"))\n .join(\"\")\n },\n deserialize: (input, def) => {\n const len = input.length / 2\n const uint8 = new Uint8Array(len)\n let idx\n for (let i = 0; i < len; i++) {\n idx = i * 2\n uint8[i] = parseInt(`${input[idx]}${input[idx + 1]}`, 16)\n }\n return uint8\n },\n bytesLength: def => def.options.length,\n random: def => {\n const len = def.options?.length || 0\n const uint8 = new Uint8Array(len)\n for (let i = 0; i < len; i++) {\n uint8[i] = (Math.random() * 255) | 0\n }\n return uint8\n },\n },\n\n select: {\n serialize: (input, def) => {\n // find the index of the input in the array of options\n return Math.min(255, def.options?.options?.indexOf(input) || 0)\n .toString(16)\n .padStart(2, \"0\")\n },\n\n deserialize: (input, def) => {\n // get the index, which is the input\n const idx = parseInt(input, 16)\n return def.options?.options?.[idx] || def.options?.options?.[0] || \"\"\n },\n\n bytesLength: () => 1, // index between 0 and 255\n constrain: (value, definition) => {\n if (definition.options.options.includes(value)) {\n return value\n }\n return definition.options.options[0]\n },\n random: definition => {\n const index = Math.round(\n Math.random() * (definition.options.options.length - 1) + 0\n )\n return definition?.options?.options[index]\n },\n },\n}\n\n// params are injected into the piece using the binary representation of the\n// numbers, to keep precision\nexport function serializeParams(\n params: any,\n definition: FxParamDefinition<any>[]\n) {\n // a single hex string will be used for all the params\n let bytes = \"\"\n if (!definition) return bytes\n // loop through each parameter from the definition to find the associated\n // parameter as set on the UI\n for (const def of definition) {\n const { id, type } = def\n const processor = ParameterProcessors[\n type as FxParamType\n ] as FxParamProcessor<any>\n // if the param is definined in the object\n\n const v = params[id] as FxParamTypeMap[]\n const val =\n typeof v !== \"undefined\"\n ? v\n : typeof def.default !== \"undefined\"\n ? def.default\n : processor.random(def)\n const serialized = processor.serialize(val, def)\n bytes += serialized\n }\n\n return bytes\n}\n\n// call seralizeParams(), returns nullif no params\nexport function serializeParamsOrNull(\n params: FxParamsData,\n definition: FxParamDefinition<any>[]\n) {\n const serialized = serializeParams(params, definition || [])\n if (serialized.length === 0) return null\n return serialized\n}\n\n// takes an array of bytes, in hexadecimal format, and a parametric space\n// definition and outputs an array of parameters, mapping the definition and\n// validating input based on the definition constraints\nexport function deserializeParams(\n bytes: string,\n definition: FxParamDefinition<FxParamType>[],\n options: { withTransform?: boolean; transformType?: FxParamTranformType }\n) {\n const params: FxParamsRaw | FxParamsTransformed = {}\n for (const def of definition) {\n const processor = ParameterProcessors[\n def.type as FxParamType\n ] as FxParamProcessor<FxParamType>\n const transformer =\n options.withTransform &&\n (processor[\n options.transformType || \"transform\"\n ] as FxParamProcessorTransformer<FxParamType>)\n if (!bytes) {\n let v\n if (typeof def.default === \"undefined\") v = processor.random(def)\n else v = def.default\n params[def.id] = transformer ? transformer(v, def) : v\n continue\n }\n // extract the length from the bytes & shift the initial bytes string\n const bytesLen = processor.bytesLength(def)\n const valueBytes = bytes.substring(0, bytesLen * 2)\n bytes = bytes.substring(bytesLen * 2)\n // deserialize the bytes into the params\n const val = processor.deserialize(\n valueBytes,\n def\n ) as FxParamValue<FxParamType>\n params[def.id] = transformer ? transformer(val, def) : val\n }\n return params\n}\n\n// Consolidates parameters from both a params object provided by the token\n// and the dat object of params, which is stored by the controls component.\nexport function consolidateParams(params: any, data: any) {\n if (!params) return []\n\n const rtn = [...params]\n\n for (const p in rtn) {\n const definition = rtn[p]\n const { id, type, default: def } = definition\n if (data && data.hasOwnProperty(id)) {\n rtn[p].value = data[id]\n } else {\n const processor = ParameterProcessors[\n type as FxParamType\n ] as FxParamProcessor<any>\n let v\n if (typeof def === \"undefined\") v = processor.random(definition)\n else v = def\n rtn[p].value = processor.transform?.(v) || v\n }\n }\n\n return rtn\n}\n\n/**\n * Given a definition and some params data, builds a clean params object where\n * the values are first found in the data object, then in the definition if a\n * default value exists, otherwise in randomizes the value using the param\n * associated processor.\n *\n * @param definition an array of parameter definition\n * @param data the params data used to reconstruct the final values\n */\nexport function buildParamsObject(\n definition: FxParamDefinitions,\n data: FxParamsData | null\n) {\n if (!definition) return {}\n\n const out: FxParamsData = {}\n for (const def of definition) {\n // find if the data object has the propery\n if (data?.hasOwnProperty(def.id)) {\n out[def.id] = data[def.id]\n continue\n }\n // find if the definition object has a default value\n if (def.hasOwnProperty(\"default\")) {\n out[def.id] = def.default\n continue\n }\n // otherwise use the param processor randomizer\n const processor = ParameterProcessors[def.type] as FxParamProcessor<any>\n const rand = processor.random(def)\n out[def.id] = processor.transform?.(rand) || rand\n }\n return out\n}\n\nexport function getRandomParamValues(\n params: FxParamDefinition<FxParamType>[],\n options?: { noTransform?: boolean; randomizeAll?: boolean }\n): any {\n return params.reduce(\n (acc, definition) => {\n const processor = ParameterProcessors[\n definition.type as FxParamType\n ] as FxParamProcessor<FxParamType>\n let v = (definition.value || definition.default) as FxParamType\n if (definition.update !== \"code-driven\" || options?.randomizeAll) {\n v = processor.random(definition) as FxParamType\n }\n if (v) {\n acc[definition.id] = options?.noTransform\n ? v\n : processor.transform?.(v) || v\n }\n return acc\n },\n {} as Record<string, any>\n )\n}\n\nexport function sumBytesParams(\n definitions: FxParamDefinition<FxParamType>[]\n): number {\n return (\n definitions?.reduce(\n (acc, def) =>\n acc +\n (\n ParameterProcessors[\n def.type as FxParamType\n ] as FxParamProcessor<FxParamType>\n ).bytesLength(def),\n 0\n ) || 0\n )\n}\n\nexport function stringifyParamsData(data: FxParamsData) {\n return JSON.stringify(data, (key, value) => {\n if (typeof value === \"bigint\") return value.toString()\n return value\n })\n}\n\nexport function jsonStringifyBigint(data: any): string {\n return JSON.stringify(data, (key, value) => {\n if (typeof value === \"bigint\") return value.toString()\n return value\n })\n}\n\nexport const processParam = (\n paramId: string,\n value: FxParamValue<FxParamType>,\n definitions: FxParamDefinition<FxParamType>[],\n transformType: FxParamTranformType\n): FxParamValue<FxParamType> | FxParamTransformation => {\n const definition = definitions.find(d => d.id === paramId)\n if (!definition) {\n throw new Error(`No definition found for param ${paramId}`)\n }\n const processor = ParameterProcessors[definition.type]\n const transformer = processor[\n transformType\n ] as FxParamProcessorTransformer<FxParamType>\n return transformer?.(value, definition) || value\n}\n\nexport const processParams = (\n values: FxParamsData,\n definitions: FxParamDefinition<FxParamType>[],\n transformType: FxParamTranformType\n): Record<string, FxParamValue<FxParamType>> => {\n const paramValues: Record<string, FxParamValue<FxParamType>> = {}\n for (const definition of definitions) {\n const processor = ParameterProcessors[definition.type]\n const value = values[definition.id]\n // deserialize the bytes into the params\n const transformer = processor[\n transformType\n ] as FxParamProcessorTransformer<FxParamType>\n paramValues[definition.id] = transformer?.(value, definition) || value\n }\n return paramValues\n}\n"]}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,249 @@
1
- export { BaseInput } from './BaseInput.js';
2
- import 'react/jsx-runtime';
3
- import 'react';
1
+ import { F as FxParamDefinition, a as FxParamType } from './utils-jEvPb5wq.js';
2
+ export { u as FxParamDefinitions, m as FxParamOptionsMap, y as FxParamProcessor, x as FxParamProcessorConstrainer, w as FxParamProcessorTransformer, z as FxParamProcessors, A as FxParamTranformType, D as FxParamTransformation, o as FxParamTransformationTypeMap, n as FxParamTypeMap, q as FxParamUpdateMode, t as FxParamValue, B as FxParamsData, C as FxParamsRaw, E as FxParamsTransformed, b as MAX_SAFE_INT64, M as MIN_SAFE_INT64, P as ParameterProcessors, f as buildParamsObject, e as consolidateParams, d as deserializeParams, g as getRandomParamValues, v as hexString, h as hexToRgba, k as jsonStringifyBigint, p as processParam, l as processParams, r as rgbaToHex, s as serializeParams, c as serializeParamsOrNull, j as stringifyParamsData, i as sumBytesParams } from './utils-jEvPb5wq.js';
3
+ import { z, SafeParseError, SafeParseSuccess } from 'zod';
4
+
5
+ declare const BaseControllerDefinitionSchema: z.ZodObject<{
6
+ id: z.ZodString;
7
+ name: z.ZodOptional<z.ZodString>;
8
+ exposedAsFeature: z.ZodOptional<z.ZodBoolean>;
9
+ }, "strip", z.ZodTypeAny, {
10
+ id: string;
11
+ name?: string | undefined;
12
+ exposedAsFeature?: boolean | undefined;
13
+ }, {
14
+ id: string;
15
+ name?: string | undefined;
16
+ exposedAsFeature?: boolean | undefined;
17
+ }>;
18
+ declare const ControllerDefinitionSchema: z.ZodUnion<[z.ZodObject<{
19
+ id: z.ZodString;
20
+ name: z.ZodOptional<z.ZodString>;
21
+ exposedAsFeature: z.ZodOptional<z.ZodBoolean>;
22
+ } & {
23
+ type: z.ZodLiteral<"string">;
24
+ options: z.ZodOptional<z.ZodObject<{
25
+ minLength: z.ZodOptional<z.ZodNumber>;
26
+ maxLength: z.ZodOptional<z.ZodNumber>;
27
+ }, "strip", z.ZodTypeAny, {
28
+ minLength?: number | undefined;
29
+ maxLength?: number | undefined;
30
+ }, {
31
+ minLength?: number | undefined;
32
+ maxLength?: number | undefined;
33
+ }>>;
34
+ default: z.ZodOptional<z.ZodString>;
35
+ }, "strip", z.ZodTypeAny, {
36
+ id: string;
37
+ type: "string";
38
+ default?: string | undefined;
39
+ options?: {
40
+ minLength?: number | undefined;
41
+ maxLength?: number | undefined;
42
+ } | undefined;
43
+ name?: string | undefined;
44
+ exposedAsFeature?: boolean | undefined;
45
+ }, {
46
+ id: string;
47
+ type: "string";
48
+ default?: string | undefined;
49
+ options?: {
50
+ minLength?: number | undefined;
51
+ maxLength?: number | undefined;
52
+ } | undefined;
53
+ name?: string | undefined;
54
+ exposedAsFeature?: boolean | undefined;
55
+ }>, z.ZodObject<{
56
+ id: z.ZodString;
57
+ name: z.ZodOptional<z.ZodString>;
58
+ exposedAsFeature: z.ZodOptional<z.ZodBoolean>;
59
+ } & {
60
+ type: z.ZodLiteral<"number">;
61
+ options: z.ZodOptional<z.ZodObject<{
62
+ min: z.ZodOptional<z.ZodNumber>;
63
+ max: z.ZodOptional<z.ZodNumber>;
64
+ step: z.ZodOptional<z.ZodNumber>;
65
+ }, "strip", z.ZodTypeAny, {
66
+ min?: number | undefined;
67
+ max?: number | undefined;
68
+ step?: number | undefined;
69
+ }, {
70
+ min?: number | undefined;
71
+ max?: number | undefined;
72
+ step?: number | undefined;
73
+ }>>;
74
+ default: z.ZodOptional<z.ZodNumber>;
75
+ }, "strip", z.ZodTypeAny, {
76
+ id: string;
77
+ type: "number";
78
+ default?: number | undefined;
79
+ options?: {
80
+ min?: number | undefined;
81
+ max?: number | undefined;
82
+ step?: number | undefined;
83
+ } | undefined;
84
+ name?: string | undefined;
85
+ exposedAsFeature?: boolean | undefined;
86
+ }, {
87
+ id: string;
88
+ type: "number";
89
+ default?: number | undefined;
90
+ options?: {
91
+ min?: number | undefined;
92
+ max?: number | undefined;
93
+ step?: number | undefined;
94
+ } | undefined;
95
+ name?: string | undefined;
96
+ exposedAsFeature?: boolean | undefined;
97
+ }>, z.ZodObject<{
98
+ id: z.ZodString;
99
+ name: z.ZodOptional<z.ZodString>;
100
+ exposedAsFeature: z.ZodOptional<z.ZodBoolean>;
101
+ } & {
102
+ type: z.ZodLiteral<"bigint">;
103
+ options: z.ZodOptional<z.ZodObject<{
104
+ min: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodBigInt]>>;
105
+ max: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodBigInt]>>;
106
+ }, "strip", z.ZodTypeAny, {
107
+ min?: number | bigint | undefined;
108
+ max?: number | bigint | undefined;
109
+ }, {
110
+ min?: number | bigint | undefined;
111
+ max?: number | bigint | undefined;
112
+ }>>;
113
+ default: z.ZodOptional<z.ZodBigInt>;
114
+ }, "strip", z.ZodTypeAny, {
115
+ id: string;
116
+ type: "bigint";
117
+ default?: bigint | undefined;
118
+ options?: {
119
+ min?: number | bigint | undefined;
120
+ max?: number | bigint | undefined;
121
+ } | undefined;
122
+ name?: string | undefined;
123
+ exposedAsFeature?: boolean | undefined;
124
+ }, {
125
+ id: string;
126
+ type: "bigint";
127
+ default?: bigint | undefined;
128
+ options?: {
129
+ min?: number | bigint | undefined;
130
+ max?: number | bigint | undefined;
131
+ } | undefined;
132
+ name?: string | undefined;
133
+ exposedAsFeature?: boolean | undefined;
134
+ }>, z.ZodObject<{
135
+ id: z.ZodString;
136
+ name: z.ZodOptional<z.ZodString>;
137
+ exposedAsFeature: z.ZodOptional<z.ZodBoolean>;
138
+ } & {
139
+ type: z.ZodLiteral<"select">;
140
+ options: z.ZodObject<{
141
+ options: z.ZodArray<z.ZodString, "atleastone">;
142
+ }, "strip", z.ZodTypeAny, {
143
+ options: [string, ...string[]];
144
+ }, {
145
+ options: [string, ...string[]];
146
+ }>;
147
+ default: z.ZodOptional<z.ZodString>;
148
+ }, "strip", z.ZodTypeAny, {
149
+ id: string;
150
+ type: "select";
151
+ options: {
152
+ options: [string, ...string[]];
153
+ };
154
+ default?: string | undefined;
155
+ name?: string | undefined;
156
+ exposedAsFeature?: boolean | undefined;
157
+ }, {
158
+ id: string;
159
+ type: "select";
160
+ options: {
161
+ options: [string, ...string[]];
162
+ };
163
+ default?: string | undefined;
164
+ name?: string | undefined;
165
+ exposedAsFeature?: boolean | undefined;
166
+ }>, z.ZodObject<{
167
+ id: z.ZodString;
168
+ name: z.ZodOptional<z.ZodString>;
169
+ exposedAsFeature: z.ZodOptional<z.ZodBoolean>;
170
+ } & {
171
+ type: z.ZodLiteral<"bytes">;
172
+ options: z.ZodObject<{
173
+ length: z.ZodNumber;
174
+ }, "strip", z.ZodTypeAny, {
175
+ length: number;
176
+ }, {
177
+ length: number;
178
+ }>;
179
+ default: z.ZodOptional<z.ZodAny>;
180
+ update: z.ZodLiteral<"code-driven">;
181
+ }, "strip", z.ZodTypeAny, {
182
+ id: string;
183
+ type: "bytes";
184
+ options: {
185
+ length: number;
186
+ };
187
+ update: "code-driven";
188
+ default?: any;
189
+ name?: string | undefined;
190
+ exposedAsFeature?: boolean | undefined;
191
+ }, {
192
+ id: string;
193
+ type: "bytes";
194
+ options: {
195
+ length: number;
196
+ };
197
+ update: "code-driven";
198
+ default?: any;
199
+ name?: string | undefined;
200
+ exposedAsFeature?: boolean | undefined;
201
+ }>, z.ZodObject<{
202
+ id: z.ZodString;
203
+ name: z.ZodOptional<z.ZodString>;
204
+ exposedAsFeature: z.ZodOptional<z.ZodBoolean>;
205
+ } & {
206
+ type: z.ZodLiteral<"boolean">;
207
+ options: z.ZodUndefined;
208
+ default: z.ZodOptional<z.ZodBoolean>;
209
+ }, "strip", z.ZodTypeAny, {
210
+ id: string;
211
+ type: "boolean";
212
+ default?: boolean | undefined;
213
+ options?: undefined;
214
+ name?: string | undefined;
215
+ exposedAsFeature?: boolean | undefined;
216
+ }, {
217
+ id: string;
218
+ type: "boolean";
219
+ default?: boolean | undefined;
220
+ options?: undefined;
221
+ name?: string | undefined;
222
+ exposedAsFeature?: boolean | undefined;
223
+ }>, z.ZodObject<{
224
+ id: z.ZodString;
225
+ name: z.ZodOptional<z.ZodString>;
226
+ exposedAsFeature: z.ZodOptional<z.ZodBoolean>;
227
+ } & {
228
+ type: z.ZodLiteral<"color">;
229
+ options: z.ZodUndefined;
230
+ default: z.ZodOptional<z.ZodString>;
231
+ }, "strip", z.ZodTypeAny, {
232
+ id: string;
233
+ type: "color";
234
+ default?: string | undefined;
235
+ options?: undefined;
236
+ name?: string | undefined;
237
+ exposedAsFeature?: boolean | undefined;
238
+ }, {
239
+ id: string;
240
+ type: "color";
241
+ default?: string | undefined;
242
+ options?: undefined;
243
+ name?: string | undefined;
244
+ exposedAsFeature?: boolean | undefined;
245
+ }>]>;
246
+ type ControllerDefinitionSchemaType = z.infer<typeof ControllerDefinitionSchema>;
247
+ declare function validateParameterDefinition(parameterDefinition: FxParamDefinition<FxParamType>): SafeParseError<ControllerDefinitionSchemaType> | SafeParseSuccess<ControllerDefinitionSchemaType> | undefined;
248
+
249
+ export { BaseControllerDefinitionSchema, type ControllerDefinitionSchemaType, FxParamDefinition, FxParamType, validateParameterDefinition };
package/dist/index.js CHANGED
@@ -1,7 +1,102 @@
1
- import {
2
- BaseInput
3
- } from "./chunk-2BHABOFI.js";
4
- export {
5
- BaseInput
1
+ export { MAX_SAFE_INT64, MIN_SAFE_INT64, ParameterProcessors, buildParamsObject, consolidateParams, deserializeParams, getRandomParamValues, hexToRgba, jsonStringifyBigint, processParam, processParams, rgbaToHex, serializeParams, serializeParamsOrNull, stringifyParamsData, sumBytesParams } from './chunk-B3N473DY.js';
2
+ import { z } from 'zod';
3
+
4
+ var ControllerTypeSchema = z.enum([
5
+ "number",
6
+ "bigint",
7
+ "color",
8
+ "string",
9
+ "bytes",
10
+ "boolean",
11
+ "select"
12
+ ]);
13
+ var FxParamOptions_bigintSchema = z.object({
14
+ min: z.number().or(z.bigint()).optional(),
15
+ max: z.number().or(z.bigint()).optional()
16
+ });
17
+ var FxParamOptions_numberSchema = z.object({
18
+ min: z.number().gte(Number.MIN_SAFE_INTEGER).optional(),
19
+ max: z.number().lte(Number.MAX_SAFE_INTEGER).optional(),
20
+ step: z.number().optional()
21
+ });
22
+ var FxParamOptions_stringSchema = z.object({
23
+ minLength: z.number().gte(0).optional(),
24
+ maxLength: z.number().optional()
25
+ });
26
+ var FxParamOptions_bytesSchema = z.object({
27
+ length: z.number().gt(0)
28
+ });
29
+ var FxParamOptions_selectSchema = z.object({
30
+ options: z.string().array().nonempty()
31
+ });
32
+ var BaseControllerDefinitionSchema = z.object({
33
+ id: z.string(),
34
+ name: z.string().optional(),
35
+ exposedAsFeature: z.boolean().optional()
36
+ });
37
+ var StringControllerSchema = BaseControllerDefinitionSchema.extend({
38
+ type: z.literal(ControllerTypeSchema.enum.string),
39
+ options: FxParamOptions_stringSchema.optional(),
40
+ default: z.string().optional()
41
+ });
42
+ var BytesControllerSchema = BaseControllerDefinitionSchema.extend({
43
+ type: z.literal(ControllerTypeSchema.enum.bytes),
44
+ options: FxParamOptions_bytesSchema,
45
+ default: z.any().optional(),
46
+ update: z.literal("code-driven", {
47
+ invalid_type_error: "Bytes parameters must be code-driven",
48
+ required_error: "Bytes parameters must be code-driven"
49
+ })
50
+ });
51
+ var NumberControllerSchema = BaseControllerDefinitionSchema.extend({
52
+ type: z.literal(ControllerTypeSchema.enum.number),
53
+ options: FxParamOptions_numberSchema.optional(),
54
+ default: z.number().gte(Number.MIN_SAFE_INTEGER).lte(Number.MAX_SAFE_INTEGER).optional()
55
+ });
56
+ var BigIntControllerSchema = BaseControllerDefinitionSchema.extend({
57
+ type: z.literal(ControllerTypeSchema.enum.bigint),
58
+ options: FxParamOptions_bigintSchema.optional(),
59
+ default: z.bigint().optional()
60
+ });
61
+ var SelectControllerSchema = BaseControllerDefinitionSchema.extend({
62
+ type: z.literal(ControllerTypeSchema.enum.select),
63
+ options: FxParamOptions_selectSchema,
64
+ default: z.string().optional()
65
+ });
66
+ var BooleanControllerSchema = BaseControllerDefinitionSchema.extend({
67
+ type: z.literal(ControllerTypeSchema.enum.boolean),
68
+ options: z.undefined(),
69
+ default: z.boolean().optional()
70
+ });
71
+ var ColorControllerSchema = BaseControllerDefinitionSchema.extend({
72
+ type: z.literal(ControllerTypeSchema.enum.color),
73
+ options: z.undefined(),
74
+ default: z.string().optional()
75
+ });
76
+ z.union([
77
+ StringControllerSchema,
78
+ NumberControllerSchema,
79
+ BigIntControllerSchema,
80
+ SelectControllerSchema,
81
+ BytesControllerSchema,
82
+ BooleanControllerSchema,
83
+ ColorControllerSchema
84
+ ]);
85
+ var controllerSchema = {
86
+ number: NumberControllerSchema,
87
+ bigint: BigIntControllerSchema,
88
+ color: ColorControllerSchema,
89
+ string: StringControllerSchema,
90
+ bytes: BytesControllerSchema,
91
+ boolean: BooleanControllerSchema,
92
+ select: SelectControllerSchema
6
93
  };
94
+ function validateParameterDefinition(parameterDefinition) {
95
+ return controllerSchema[parameterDefinition.type]?.safeParse(
96
+ parameterDefinition
97
+ );
98
+ }
99
+
100
+ export { BaseControllerDefinitionSchema, validateParameterDefinition };
101
+ //# sourceMappingURL=index.js.map
7
102
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
1
+ {"version":3,"sources":["../src/validation.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { SafeParseError, SafeParseSuccess, z } from \"zod\"\nimport { FxParamDefinition, FxParamType } from \"./types\"\n\nconst ControllerTypeSchema = z.enum([\n \"number\",\n \"bigint\",\n \"color\",\n \"string\",\n \"bytes\",\n \"boolean\",\n \"select\",\n])\n\nconst FxParamOptions_bigintSchema = z.object({\n min: z.number().or(z.bigint()).optional(),\n max: z.number().or(z.bigint()).optional(),\n})\n\nconst FxParamOptions_numberSchema = z.object({\n min: z.number().gte(Number.MIN_SAFE_INTEGER).optional(),\n max: z.number().lte(Number.MAX_SAFE_INTEGER).optional(),\n step: z.number().optional(),\n})\n\nconst FxParamOptions_stringSchema = z.object({\n minLength: z.number().gte(0).optional(),\n maxLength: z.number().optional(),\n})\n\nconst FxParamOptions_bytesSchema = z.object({\n length: z.number().gt(0),\n})\n\nconst FxParamOptions_selectSchema = z.object({\n options: z.string().array().nonempty(),\n})\n\nexport const BaseControllerDefinitionSchema = z.object({\n id: z.string(),\n name: z.string().optional(),\n exposedAsFeature: z.boolean().optional(),\n})\n\nconst StringControllerSchema = BaseControllerDefinitionSchema.extend({\n type: z.literal(ControllerTypeSchema.enum.string),\n options: FxParamOptions_stringSchema.optional(),\n default: z.string().optional(),\n})\n\nconst BytesControllerSchema = BaseControllerDefinitionSchema.extend({\n type: z.literal(ControllerTypeSchema.enum.bytes),\n options: FxParamOptions_bytesSchema,\n default: z.any().optional(),\n update: z.literal(\"code-driven\", {\n invalid_type_error: \"Bytes parameters must be code-driven\",\n required_error: \"Bytes parameters must be code-driven\",\n }),\n})\n\nconst NumberControllerSchema = BaseControllerDefinitionSchema.extend({\n type: z.literal(ControllerTypeSchema.enum.number),\n options: FxParamOptions_numberSchema.optional(),\n default: z\n .number()\n .gte(Number.MIN_SAFE_INTEGER)\n .lte(Number.MAX_SAFE_INTEGER)\n .optional(),\n})\n\nconst BigIntControllerSchema = BaseControllerDefinitionSchema.extend({\n type: z.literal(ControllerTypeSchema.enum.bigint),\n options: FxParamOptions_bigintSchema.optional(),\n default: z.bigint().optional(),\n})\n\nconst SelectControllerSchema = BaseControllerDefinitionSchema.extend({\n type: z.literal(ControllerTypeSchema.enum.select),\n options: FxParamOptions_selectSchema,\n default: z.string().optional(),\n})\n\nconst BooleanControllerSchema = BaseControllerDefinitionSchema.extend({\n type: z.literal(ControllerTypeSchema.enum.boolean),\n options: z.undefined(),\n default: z.boolean().optional(),\n})\n\nconst ColorControllerSchema = BaseControllerDefinitionSchema.extend({\n type: z.literal(ControllerTypeSchema.enum.color),\n options: z.undefined(),\n default: z.string().optional(),\n})\n\nconst ControllerDefinitionSchema = z.union([\n StringControllerSchema,\n NumberControllerSchema,\n BigIntControllerSchema,\n SelectControllerSchema,\n BytesControllerSchema,\n BooleanControllerSchema,\n ColorControllerSchema,\n])\n\nexport type ControllerDefinitionSchemaType = z.infer<\n typeof ControllerDefinitionSchema\n>\n\nconst controllerSchema = {\n number: NumberControllerSchema,\n bigint: BigIntControllerSchema,\n color: ColorControllerSchema,\n string: StringControllerSchema,\n bytes: BytesControllerSchema,\n boolean: BooleanControllerSchema,\n select: SelectControllerSchema,\n}\n\nexport function validateParameterDefinition(\n parameterDefinition: FxParamDefinition<FxParamType>\n):\n | SafeParseError<ControllerDefinitionSchemaType>\n | SafeParseSuccess<ControllerDefinitionSchemaType>\n | undefined {\n return controllerSchema[parameterDefinition.type]?.safeParse(\n parameterDefinition\n )\n}\n"]}