@fxhash/params 0.0.10 → 0.0.12

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 (196) hide show
  1. package/dist/{chunk-7H32FZ35.js → chunk-B3N473DY.js} +45 -37
  2. package/dist/chunk-B3N473DY.js.map +1 -0
  3. package/dist/index.d.ts +249 -3
  4. package/dist/index.js +100 -5
  5. package/dist/index.js.map +1 -1
  6. package/dist/utils-jEvPb5wq.d.ts +141 -0
  7. package/dist/utils.d.ts +1 -50
  8. package/dist/utils.js +2 -32
  9. package/dist/utils.js.map +1 -1
  10. package/package.json +31 -47
  11. package/dist/BaseInput.cjs +0 -13
  12. package/dist/BaseInput.cjs.map +0 -1
  13. package/dist/BaseInput.css +0 -112
  14. package/dist/BaseInput.css.map +0 -1
  15. package/dist/BaseInput.d.ts +0 -12
  16. package/dist/BaseInput.js +0 -13
  17. package/dist/BaseInput.js.map +0 -1
  18. package/dist/Context.cjs +0 -49
  19. package/dist/Context.cjs.map +0 -1
  20. package/dist/Context.d.ts +0 -19
  21. package/dist/Context.js +0 -49
  22. package/dist/Context.js.map +0 -1
  23. package/dist/Controller/BigInt.cjs +0 -10
  24. package/dist/Controller/BigInt.cjs.map +0 -1
  25. package/dist/Controller/BigInt.css +0 -183
  26. package/dist/Controller/BigInt.css.map +0 -1
  27. package/dist/Controller/BigInt.d.ts +0 -8
  28. package/dist/Controller/BigInt.js +0 -10
  29. package/dist/Controller/BigInt.js.map +0 -1
  30. package/dist/Controller/Boolean.cjs +0 -9
  31. package/dist/Controller/Boolean.cjs.map +0 -1
  32. package/dist/Controller/Boolean.css +0 -183
  33. package/dist/Controller/Boolean.css.map +0 -1
  34. package/dist/Controller/Boolean.d.ts +0 -8
  35. package/dist/Controller/Boolean.js +0 -9
  36. package/dist/Controller/Boolean.js.map +0 -1
  37. package/dist/Controller/Bytes.cjs +0 -9
  38. package/dist/Controller/Bytes.cjs.map +0 -1
  39. package/dist/Controller/Bytes.css +0 -191
  40. package/dist/Controller/Bytes.css.map +0 -1
  41. package/dist/Controller/Bytes.d.ts +0 -8
  42. package/dist/Controller/Bytes.js +0 -9
  43. package/dist/Controller/Bytes.js.map +0 -1
  44. package/dist/Controller/Color.cjs +0 -10
  45. package/dist/Controller/Color.cjs.map +0 -1
  46. package/dist/Controller/Color.css +0 -227
  47. package/dist/Controller/Color.css.map +0 -1
  48. package/dist/Controller/Color.d.ts +0 -8
  49. package/dist/Controller/Color.js +0 -10
  50. package/dist/Controller/Color.js.map +0 -1
  51. package/dist/Controller/Controller.cjs +0 -14
  52. package/dist/Controller/Controller.cjs.map +0 -1
  53. package/dist/Controller/Controller.css +0 -183
  54. package/dist/Controller/Controller.css.map +0 -1
  55. package/dist/Controller/Controller.d.ts +0 -41
  56. package/dist/Controller/Controller.js +0 -14
  57. package/dist/Controller/Controller.js.map +0 -1
  58. package/dist/Controller/Invalid.cjs +0 -7
  59. package/dist/Controller/Invalid.cjs.map +0 -1
  60. package/dist/Controller/Invalid.css +0 -48
  61. package/dist/Controller/Invalid.css.map +0 -1
  62. package/dist/Controller/Invalid.d.ts +0 -11
  63. package/dist/Controller/Invalid.js +0 -7
  64. package/dist/Controller/Invalid.js.map +0 -1
  65. package/dist/Controller/Number.cjs +0 -9
  66. package/dist/Controller/Number.cjs.map +0 -1
  67. package/dist/Controller/Number.css +0 -183
  68. package/dist/Controller/Number.css.map +0 -1
  69. package/dist/Controller/Number.d.ts +0 -8
  70. package/dist/Controller/Number.js +0 -9
  71. package/dist/Controller/Number.js.map +0 -1
  72. package/dist/Controller/Param.cjs +0 -21
  73. package/dist/Controller/Param.cjs.map +0 -1
  74. package/dist/Controller/Param.css +0 -283
  75. package/dist/Controller/Param.css.map +0 -1
  76. package/dist/Controller/Param.d.ts +0 -25
  77. package/dist/Controller/Param.js +0 -21
  78. package/dist/Controller/Param.js.map +0 -1
  79. package/dist/Controller/Select.cjs +0 -9
  80. package/dist/Controller/Select.cjs.map +0 -1
  81. package/dist/Controller/Select.css +0 -183
  82. package/dist/Controller/Select.css.map +0 -1
  83. package/dist/Controller/Select.d.ts +0 -8
  84. package/dist/Controller/Select.js +0 -9
  85. package/dist/Controller/Select.js.map +0 -1
  86. package/dist/Controller/String.cjs +0 -9
  87. package/dist/Controller/String.cjs.map +0 -1
  88. package/dist/Controller/String.css +0 -183
  89. package/dist/Controller/String.css.map +0 -1
  90. package/dist/Controller/String.d.ts +0 -8
  91. package/dist/Controller/String.js +0 -9
  92. package/dist/Controller/String.js.map +0 -1
  93. package/dist/Controls.cjs +0 -102
  94. package/dist/Controls.cjs.map +0 -1
  95. package/dist/Controls.css +0 -304
  96. package/dist/Controls.css.map +0 -1
  97. package/dist/Controls.d.ts +0 -17
  98. package/dist/Controls.js +0 -102
  99. package/dist/Controls.js.map +0 -1
  100. package/dist/LockButton/LockButton.cjs +0 -8
  101. package/dist/LockButton/LockButton.cjs.map +0 -1
  102. package/dist/LockButton/LockButton.css +0 -117
  103. package/dist/LockButton/LockButton.css.map +0 -1
  104. package/dist/LockButton/LockButton.d.ts +0 -11
  105. package/dist/LockButton/LockButton.js +0 -8
  106. package/dist/LockButton/LockButton.js.map +0 -1
  107. package/dist/ParamsHistory.cjs +0 -89
  108. package/dist/ParamsHistory.cjs.map +0 -1
  109. package/dist/ParamsHistory.d.ts +0 -22
  110. package/dist/ParamsHistory.js +0 -89
  111. package/dist/ParamsHistory.js.map +0 -1
  112. package/dist/RuntimeContext.cjs +0 -10
  113. package/dist/RuntimeContext.cjs.map +0 -1
  114. package/dist/RuntimeContext.d.ts +0 -44
  115. package/dist/RuntimeContext.js +0 -10
  116. package/dist/RuntimeContext.js.map +0 -1
  117. package/dist/chunk-2SARESCF.js +0 -135
  118. package/dist/chunk-2SARESCF.js.map +0 -1
  119. package/dist/chunk-2XWOWIXK.cjs +0 -23
  120. package/dist/chunk-2XWOWIXK.cjs.map +0 -1
  121. package/dist/chunk-3OF5LR4Y.cjs +0 -110
  122. package/dist/chunk-3OF5LR4Y.cjs.map +0 -1
  123. package/dist/chunk-3QFEC7SK.cjs +0 -39
  124. package/dist/chunk-3QFEC7SK.cjs.map +0 -1
  125. package/dist/chunk-4OKETOHR.js +0 -120
  126. package/dist/chunk-4OKETOHR.js.map +0 -1
  127. package/dist/chunk-7H32FZ35.js.map +0 -1
  128. package/dist/chunk-AMJCUB2I.cjs +0 -46
  129. package/dist/chunk-AMJCUB2I.cjs.map +0 -1
  130. package/dist/chunk-BEDRMOBJ.js +0 -43
  131. package/dist/chunk-BEDRMOBJ.js.map +0 -1
  132. package/dist/chunk-CVLSVTCX.cjs +0 -43
  133. package/dist/chunk-CVLSVTCX.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-GDSG5VLX.js +0 -67
  137. package/dist/chunk-GDSG5VLX.js.map +0 -1
  138. package/dist/chunk-GXCX5YCI.js +0 -46
  139. package/dist/chunk-GXCX5YCI.js.map +0 -1
  140. package/dist/chunk-HIC6NEI2.js +0 -39
  141. package/dist/chunk-HIC6NEI2.js.map +0 -1
  142. package/dist/chunk-JSFJKANM.js +0 -115
  143. package/dist/chunk-JSFJKANM.js.map +0 -1
  144. package/dist/chunk-K22KNCGR.cjs +0 -24
  145. package/dist/chunk-K22KNCGR.cjs.map +0 -1
  146. package/dist/chunk-K6UPSPM5.cjs +0 -115
  147. package/dist/chunk-K6UPSPM5.cjs.map +0 -1
  148. package/dist/chunk-LTIGECX6.cjs +0 -44
  149. package/dist/chunk-LTIGECX6.cjs.map +0 -1
  150. package/dist/chunk-LVN3UGUH.cjs +0 -404
  151. package/dist/chunk-LVN3UGUH.cjs.map +0 -1
  152. package/dist/chunk-M7HJ2CKM.cjs +0 -135
  153. package/dist/chunk-M7HJ2CKM.cjs.map +0 -1
  154. package/dist/chunk-MWP7SJWC.js +0 -103
  155. package/dist/chunk-MWP7SJWC.js.map +0 -1
  156. package/dist/chunk-NBDFYP3Y.js +0 -24
  157. package/dist/chunk-NBDFYP3Y.js.map +0 -1
  158. package/dist/chunk-SOEAQVIE.js +0 -34
  159. package/dist/chunk-SOEAQVIE.js.map +0 -1
  160. package/dist/chunk-TQGOPELV.cjs +0 -67
  161. package/dist/chunk-TQGOPELV.cjs.map +0 -1
  162. package/dist/chunk-WHVPVEYH.cjs +0 -34
  163. package/dist/chunk-WHVPVEYH.cjs.map +0 -1
  164. package/dist/chunk-X4GS3I5P.js +0 -110
  165. package/dist/chunk-X4GS3I5P.js.map +0 -1
  166. package/dist/chunk-XYWE6TCQ.js +0 -37
  167. package/dist/chunk-XYWE6TCQ.js.map +0 -1
  168. package/dist/chunk-YLZI7BR5.cjs +0 -120
  169. package/dist/chunk-YLZI7BR5.cjs.map +0 -1
  170. package/dist/chunk-YNPYJVNU.js +0 -44
  171. package/dist/chunk-YNPYJVNU.js.map +0 -1
  172. package/dist/chunk-Z5Z6AKH7.cjs +0 -37
  173. package/dist/chunk-Z5Z6AKH7.cjs.map +0 -1
  174. package/dist/chunk-ZALRIFOG.js +0 -23
  175. package/dist/chunk-ZALRIFOG.js.map +0 -1
  176. package/dist/hooks.cjs +0 -29
  177. package/dist/hooks.cjs.map +0 -1
  178. package/dist/hooks.d.ts +0 -6
  179. package/dist/hooks.js +0 -29
  180. package/dist/hooks.js.map +0 -1
  181. package/dist/index.cjs +0 -7
  182. package/dist/index.cjs.map +0 -1
  183. package/dist/index.css +0 -112
  184. package/dist/index.css.map +0 -1
  185. package/dist/types.cjs +0 -1
  186. package/dist/types.cjs.map +0 -1
  187. package/dist/types.d.ts +0 -100
  188. package/dist/types.js +0 -1
  189. package/dist/types.js.map +0 -1
  190. package/dist/utils.cjs +0 -33
  191. package/dist/utils.cjs.map +0 -1
  192. package/dist/validation.cjs +0 -9
  193. package/dist/validation.cjs.map +0 -1
  194. package/dist/validation.d.ts +0 -241
  195. package/dist/validation.js +0 -9
  196. package/dist/validation.js.map +0 -1
@@ -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,10 +301,8 @@ 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
  }
@@ -317,8 +318,7 @@ function deserializeParams(bytes, definition, options) {
317
318
  return params;
318
319
  }
319
320
  function consolidateParams(params, data) {
320
- if (!params)
321
- return [];
321
+ if (!params) return [];
322
322
  const rtn = [...params];
323
323
  for (const p in rtn) {
324
324
  const definition = rtn[p];
@@ -328,21 +328,42 @@ function consolidateParams(params, data) {
328
328
  } else {
329
329
  const processor = ParameterProcessors[type];
330
330
  let v;
331
- if (typeof def === "undefined")
332
- v = processor.random(definition);
333
- else
334
- v = def;
331
+ if (typeof def === "undefined") v = processor.random(definition);
332
+ else v = def;
335
333
  rtn[p].value = processor.transform?.(v) || v;
336
334
  }
337
335
  }
338
336
  return rtn;
339
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
+ }
340
356
  function getRandomParamValues(params, options) {
341
357
  return params.reduce(
342
358
  (acc, definition) => {
343
359
  const processor = ParameterProcessors[definition.type];
344
- const v = processor.random(definition);
345
- acc[definition.id] = options?.noTransform ? v : processor.transform?.(v) || v;
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
+ }
346
367
  return acc;
347
368
  },
348
369
  {}
@@ -356,20 +377,21 @@ function sumBytesParams(definitions) {
356
377
  }
357
378
  function stringifyParamsData(data) {
358
379
  return JSON.stringify(data, (key, value) => {
359
- if (typeof value === "bigint")
360
- return value.toString();
380
+ if (typeof value === "bigint") return value.toString();
361
381
  return value;
362
382
  });
363
383
  }
364
384
  function jsonStringifyBigint(data) {
365
385
  return JSON.stringify(data, (key, value) => {
366
- if (typeof value === "bigint")
367
- return value.toString();
386
+ if (typeof value === "bigint") return value.toString();
368
387
  return value;
369
388
  });
370
389
  }
371
390
  var processParam = (paramId, value, definitions, transformType) => {
372
391
  const definition = definitions.find((d) => d.id === paramId);
392
+ if (!definition) {
393
+ throw new Error(`No definition found for param ${paramId}`);
394
+ }
373
395
  const processor = ParameterProcessors[definition.type];
374
396
  const transformer = processor[transformType];
375
397
  return transformer?.(value, definition) || value;
@@ -385,20 +407,6 @@ var processParams = (values, definitions, transformType) => {
385
407
  return paramValues;
386
408
  };
387
409
 
388
- export {
389
- rgbaToHex,
390
- hexToRgba,
391
- MIN_SAFE_INT64,
392
- MAX_SAFE_INT64,
393
- ParameterProcessors,
394
- serializeParams,
395
- deserializeParams,
396
- consolidateParams,
397
- getRandomParamValues,
398
- sumBytesParams,
399
- stringifyParamsData,
400
- jsonStringifyBigint,
401
- processParam,
402
- processParams
403
- };
404
- //# sourceMappingURL=chunk-7H32FZ35.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-BEDRMOBJ.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"]}