@nordcraft/std-lib 1.0.22 → 1.0.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/lib.ts CHANGED
@@ -1,378 +1,231 @@
1
1
 
2
2
  export const formulas = {
3
- "@toddle/string": {
4
- "name": "String",
5
- "description": "Convert a value of any type to a String.",
3
+ "@toddle/every": {
4
+ "name": "Every",
5
+ "description": "Run a formula returns for all items in an Array.",
6
6
  "arguments": [
7
7
  {
8
- "name": "Input",
9
- "description": "Value of any type.",
10
- "type": {
11
- "type": "Any"
12
- },
8
+ "name": "Array",
13
9
  "formula": {
14
10
  "type": "value",
15
- "value": "1"
16
- }
17
- }
18
- ],
19
- "output": {
20
- "description": "The input value converted to a String",
21
- "type": {
22
- "type": "String"
23
- }
24
- }
25
- },
26
- "@toddle/append": {
27
- "name": "Append",
28
- "description": "Add an element to the end of an Array.",
29
- "arguments": [
30
- {
31
- "name": "Array",
11
+ "value": null
12
+ },
13
+ "description": "The array of items to evaluate.",
32
14
  "type": {
33
15
  "type": "Array"
34
- },
35
- "description": "The Array to append to.",
36
- "formula": {
37
- "type": "array",
38
- "arguments": []
39
16
  }
40
17
  },
41
18
  {
42
- "name": "Item",
43
- "type": {
44
- "type": "Any"
45
- },
46
- "description": "The item to append to the Array.",
19
+ "name": "Formula",
20
+ "isFunction": true,
47
21
  "formula": {
48
- "type": "value",
49
- "value": "Item"
22
+ "type": "path",
23
+ "path": [
24
+ "Args",
25
+ "item"
26
+ ]
27
+ },
28
+ "description": "Predicate formula for evaluating each item.",
29
+ "type": {
30
+ "type": "Formula"
50
31
  }
51
32
  }
52
33
  ],
53
34
  "output": {
54
- "description": "A new Array containing all elements from the input Array, including the new item.",
35
+ "description": "Returns True if the predicate formula returns true for all items in the Array, otherwise False.",
55
36
  "type": {
56
37
  "type": "Array"
57
38
  }
58
39
  }
59
40
  },
60
- "@toddle/first": {
61
- "name": "First",
62
- "description": "Return the first item in an Array.",
63
- "arguments": [
64
- {
65
- "name": "Array",
66
- "formula": {
67
- "type": "value",
68
- "value": []
69
- },
70
- "type": {
71
- "type": "Array"
72
- },
73
- "description": "An Array of items."
74
- }
75
- ],
41
+ "@toddle/userAgent": {
42
+ "name": "User Agent",
43
+ "description": "Get the user agent for the browser or from the User-Agent header on the server",
44
+ "arguments": [],
76
45
  "output": {
77
- "description": "The first item in the Array.",
46
+ "description": "The user agent string.",
78
47
  "type": {
79
- "type": "Any"
48
+ "type": "String"
80
49
  }
81
50
  }
82
51
  },
83
- "@toddle/deleteKey": {
84
- "name": "Delete",
85
- "description": "Return a copy of the input Object or Array without the specified key.",
52
+ "@toddle/string": {
53
+ "name": "String",
54
+ "description": "Convert a value of any type to a String.",
86
55
  "arguments": [
87
56
  {
88
- "name": "Object",
89
- "formula": {
90
- "type": "value",
91
- "value": null
92
- },
93
- "description": "The input record.",
57
+ "name": "Input",
58
+ "description": "Value of any type.",
94
59
  "type": {
95
- "type": "Array \\| Object"
96
- }
97
- },
98
- {
99
- "name": "Path",
60
+ "type": "Any"
61
+ },
100
62
  "formula": {
101
63
  "type": "value",
102
- "value": "Item"
103
- },
104
- "description": "The path can be either a Number (if the first argument is an array), a String, or an Array of strings. If an Array is given, the property at that path will be removed.",
105
- "type": {
106
- "type": "Array<Number \\| String> \\| Number \\| String"
64
+ "value": "1"
107
65
  }
108
66
  }
109
67
  ],
110
68
  "output": {
111
- "description": "A copy of the record without the property specified in the Path.",
69
+ "description": "The input value converted to a String",
112
70
  "type": {
113
- "type": "Object"
71
+ "type": "String"
114
72
  }
115
73
  }
116
74
  },
117
- "@toddle/sort_by": {
118
- "name": "Sort by",
119
- "description": "Sort an Array using a formula.",
120
- "arguments": [
121
- {
122
- "name": "Array",
123
- "formula": {
124
- "type": "value",
125
- "value": []
126
- },
127
- "type": {
128
- "type": "Array"
129
- },
130
- "description": "The input Array."
131
- },
132
- {
133
- "name": "Formula",
134
- "formula": {
135
- "type": "path",
136
- "path": [
137
- "Args",
138
- "item"
139
- ]
140
- },
141
- "type": {
142
- "type": "Formula"
143
- },
144
- "isFunction": true,
145
- "description": "The sorting formula. The output of this formula will determine the sort order of the items. If the formula returns an Array, the items will first be sorted by the first item, then the second, etc."
146
- },
147
- {
148
- "name": "Ascending?",
149
- "formula": {
150
- "type": "value",
151
- "value": true
152
- },
153
- "type": {
154
- "type": "Boolean"
155
- },
156
- "description": "Should the list be sorted in ascending order?"
157
- }
158
- ],
75
+ "@toddle/currentURL": {
76
+ "name": "Current URL",
77
+ "description": "Return the current URL of the browser. Use the \"Parse URL\" formula for working with the URL.",
78
+ "arguments": [],
79
+ "cache": false,
159
80
  "output": {
160
- "description": "The input Array sorted by the value returned by the sorting formula.",
81
+ "description": "The browser's current URL.",
161
82
  "type": {
162
- "type": "Number"
83
+ "type": "String"
163
84
  }
164
85
  }
165
86
  },
166
- "@toddle/join": {
167
- "name": "Join",
168
- "description": "Combine an Array of Strings in to a single String.",
87
+ "@toddle/encodeJSON": {
88
+ "name": "Encode JSON",
89
+ "description": "Encode data as JSON.",
169
90
  "arguments": [
170
91
  {
171
- "name": "Array",
92
+ "name": "Data",
172
93
  "formula": {
173
94
  "type": "value",
174
95
  "value": null
175
96
  },
176
- "description": "An array of Strings.",
97
+ "description": "The data to convert.",
177
98
  "type": {
178
- "type": "Array"
99
+ "type": "Any"
179
100
  }
180
101
  },
181
102
  {
182
- "name": "Separator",
103
+ "name": "Indent",
183
104
  "formula": {
184
105
  "type": "value",
185
- "value": ", "
106
+ "value": 2
186
107
  },
187
- "description": "A separator String that is inserted in between each item in the Array to join.",
108
+ "description": "How many characters the encoded value will be indented.",
188
109
  "type": {
189
- "type": "String"
110
+ "type": "Number"
190
111
  }
191
112
  }
192
113
  ],
193
114
  "output": {
194
- "description": "A String combining each item in the input Array separated by the separator String, e.g. joining [\"a\", \"b\", \"c\"] with a \",\" separator will return \"a,b,c\".",
115
+ "description": "The encoded JSON value.",
195
116
  "type": {
196
117
  "type": "String"
197
118
  }
198
119
  }
199
120
  },
200
- "@toddle/userAgent": {
201
- "name": "User Agent",
202
- "description": "Get the user agent for the browser or from the User-Agent header on the server",
121
+ "@toddle/isServer": {
122
+ "name": "Is Server",
123
+ "description": "Get information about whether formulas are currently evaluated server-side or client-side.",
203
124
  "arguments": [],
204
125
  "output": {
205
- "description": "The user agent string.",
126
+ "description": "Returns True if formulas are evaluated server-side, and False if formulas are evaluated client-side.",
206
127
  "type": {
207
- "type": "String"
128
+ "type": "Boolean"
208
129
  }
209
130
  }
210
131
  },
211
- "@toddle/entries": {
212
- "name": "Entries",
213
- "description": "Get an Array of entries from a given Object.",
132
+ "@toddle/unique": {
133
+ "name": "Unique",
134
+ "description": "Remove duplicate values from an Array.",
214
135
  "arguments": [
215
136
  {
216
- "name": "Object",
137
+ "name": "Array",
217
138
  "formula": {
218
139
  "type": "value",
219
- "value": null
140
+ "value": []
220
141
  },
221
- "description": "Input record",
222
- "type": {
223
- "type": "Object"
224
- }
225
- }
226
- ],
227
- "output": {
228
- "description": "Returns an Array of entries for the given input record. The entries are Objects with a “Key” and “Value” property.",
229
- "type": {
230
- "type": "Array"
231
- }
232
- }
233
- },
234
- "@toddle/dateFromString": {
235
- "name": "Date From String",
236
- "arguments": [
237
- {
238
- "name": "Date string",
239
- "description": "A String representing a date, for example \"January 1, 1970\".",
240
142
  "type": {
241
- "type": "String"
143
+ "type": "Array"
242
144
  },
243
- "formula": {
244
- "type": "value",
245
- "value": "January 1, 1970"
246
- }
145
+ "description": "The input Array."
247
146
  }
248
147
  ],
249
- "description": "Convert a string to a Date.",
250
- "output": {
251
- "description": "The input value converted to a Date.",
252
- "type": {
253
- "type": "Date"
254
- }
255
- }
256
- },
257
- "@toddle/languages": {
258
- "name": "Languages",
259
- "description": "An array of the preferred languages for the user, based on the Navigator.languages property (on the client) or the Accept-Language header (on the server).",
260
- "arguments": [],
261
148
  "output": {
262
- "description": "An array with the preferred languages for the user.",
149
+ "description": "The input Array with all duplicate values removed.",
263
150
  "type": {
264
151
  "type": "Array"
265
152
  }
266
153
  }
267
154
  },
268
- "@toddle/now": {
269
- "name": "Now",
270
- "description": "Get a Date representing \"Now\"",
271
- "arguments": [],
272
- "cache": false,
273
- "output": {
274
- "description": "A Date object initialized at the current date/time.",
275
- "type": {
276
- "type": "Date"
277
- }
278
- }
279
- },
280
- "@toddle/typeOf": {
281
- "name": "Type of",
282
- "description": "Get the type of a given input.",
155
+ "@toddle/lowercase": {
156
+ "name": "Lower case",
157
+ "description": "Convert a string to lowercase.",
283
158
  "arguments": [
284
159
  {
285
- "name": "Input",
160
+ "name": "String",
286
161
  "formula": {
287
162
  "type": "value",
288
- "value": 1
163
+ "value": "string"
289
164
  },
290
- "description": "The input value.",
165
+ "description": "Input String",
291
166
  "type": {
292
- "type": "Any"
293
- }
294
- }
295
- ],
296
- "output": {
297
- "description": "The type of the input value. Types can be one of: String, Boolean, Number, Array, Object, or Null.",
298
- "type": {
299
- "type": "Any"
300
- }
301
- }
302
- },
303
- "@toddle/branchName": {
304
- "name": "Branch Name",
305
- "description": "Get the name of the current branch. For production, the branch name is 'main'.",
306
- "arguments": [],
167
+ "type": "String"
168
+ }
169
+ }
170
+ ],
307
171
  "output": {
308
- "description": "Returns the name of the current branch.",
172
+ "description": "The input String with all characters converted to lowercase.",
309
173
  "type": {
310
174
  "type": "String"
311
175
  }
312
176
  }
313
177
  },
314
- "@toddle/set": {
315
- "name": "Set",
316
- "description": "Set a value in an Object or Array based on a specified path.",
178
+ "@toddle/divide": {
179
+ "name": "Divide",
180
+ "description": "Perform a division calculation.",
317
181
  "arguments": [
318
182
  {
319
- "name": "Object",
320
- "formula": {
321
- "type": "value",
322
- "value": null
323
- },
324
- "description": "The input Object.",
183
+ "name": "Dividend",
184
+ "description": "The number to be divided.",
325
185
  "type": {
326
- "type": "Object"
327
- }
328
- },
329
- {
330
- "name": "Path",
186
+ "type": "Number"
187
+ },
331
188
  "formula": {
332
189
  "type": "value",
333
- "value": "Key"
334
- },
335
- "description": "The Path can be either a Number, a String or an Array of Strings.",
336
- "type": {
337
- "type": "Array \\| Number \\| String"
190
+ "value": 1
338
191
  }
339
192
  },
340
193
  {
341
- "name": "Value",
194
+ "name": "Divisor",
195
+ "description": "The number to divide by.",
196
+ "type": {
197
+ "type": "Number"
198
+ },
342
199
  "formula": {
343
200
  "type": "value",
344
- "value": "Item"
345
- },
346
- "description": "The value to set.",
347
- "type": {
348
- "type": "Any"
201
+ "value": 1
349
202
  }
350
203
  }
351
204
  ],
352
205
  "output": {
353
- "description": "The input Object with the new field.",
206
+ "description": "The result of dividing the dividend with the divisor.",
354
207
  "type": {
355
- "type": "Object"
208
+ "type": "Number"
356
209
  }
357
210
  }
358
211
  },
359
- "@toddle/formatNumber": {
360
- "name": "Format Number",
212
+ "@toddle/formatDate": {
213
+ "name": "Format Date",
361
214
  "arguments": [
362
215
  {
363
- "name": "Input",
364
- "description": "Number to format.",
216
+ "name": "Date",
217
+ "description": "Date to format",
365
218
  "type": {
366
- "type": "Number"
219
+ "type": "Date"
367
220
  },
368
221
  "formula": {
369
- "type": "Number",
370
- "value": 100
222
+ "type": "Date",
223
+ "value": null
371
224
  }
372
225
  },
373
226
  {
374
227
  "name": "Locale(s)",
375
- "description": "Optional locale to use for formatting the Number, e.g. \"en\" or \"fr\". Multiple locales can be provided (as an Array of Strings) to provide a fallback locale. The default value is the runtime's locale.",
228
+ "description": "Optional locale to use for formatting the Date, e.g. \"en\" or \"fr\". Multiple locales can be provided (as an Array of Strings) to provide a fallback locale. The default value is the runtime's locale.",
376
229
  "type": {
377
230
  "type": "Array \\| String"
378
231
  },
@@ -383,7 +236,7 @@
383
236
  },
384
237
  {
385
238
  "name": "Options",
386
- "description": "Optional Object for configuring the formatting of the output. See the [NumberFormat locale options on MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#locale_options).",
239
+ "description": "Optional Object for configuring the formatting of the output. See the [DateTimeFormat syntax on MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#syntax).",
387
240
  "type": {
388
241
  "type": "Object"
389
242
  },
@@ -393,40 +246,78 @@
393
246
  }
394
247
  }
395
248
  ],
396
- "description": "Format a Number using the Intl.NumberFormat API. See the [NumberFormat docs on MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat).",
249
+ "description": "Format a date using the Intl.DateTimeFormat API. See the [DateTimeFormat docs on MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat).",
397
250
  "output": {
398
- "description": "The Number input formatted as a String.",
251
+ "description": "The Date input formatted as a String.",
399
252
  "type": {
400
253
  "type": "String"
401
254
  }
402
255
  }
403
256
  },
404
- "@toddle/lowercase": {
405
- "name": "Lower case",
406
- "description": "Convert a string to lowercase.",
257
+ "@toddle/replaceAll": {
258
+ "name": "Replace all",
259
+ "description": "Replace all occurrences of a substring in a String.",
407
260
  "arguments": [
408
261
  {
409
- "name": "String",
262
+ "name": "Input",
263
+ "description": "The input String to search in.",
264
+ "type": {
265
+ "type": "String"
266
+ },
267
+ "required": true
268
+ },
269
+ {
270
+ "name": "Search",
271
+ "description": "The substring to search for.",
272
+ "type": {
273
+ "type": "String"
274
+ },
275
+ "required": true
276
+ },
277
+ {
278
+ "name": "Replace with",
279
+ "description": "The replacement value.",
280
+ "type": {
281
+ "type": "String"
282
+ },
283
+ "required": true
284
+ }
285
+ ],
286
+ "output": {
287
+ "type": {
288
+ "type": "String"
289
+ },
290
+ "name": "Output",
291
+ "description": "The resulting String."
292
+ }
293
+ },
294
+ "@toddle/getFromLocalStorage": {
295
+ "name": "Get from Local Storage",
296
+ "description": "Read a value from local storage with the provided key.",
297
+ "cache": false,
298
+ "arguments": [
299
+ {
300
+ "name": "Key",
410
301
  "formula": {
411
302
  "type": "value",
412
- "value": "string"
303
+ "value": null
413
304
  },
414
- "description": "Input String",
305
+ "description": "The key to read from local storage.",
415
306
  "type": {
416
307
  "type": "String"
417
308
  }
418
309
  }
419
310
  ],
420
311
  "output": {
421
- "description": "The input String with all characters converted to lowercase.",
312
+ "description": "The value found in local storage. If no value is found, this will return Null.",
422
313
  "type": {
423
- "type": "String"
314
+ "type": "Any"
424
315
  }
425
316
  }
426
317
  },
427
- "@toddle/findIndex": {
428
- "name": "Find index",
429
- "description": "Search through an Array of items and apply a formula to each item, to return the index of the first item where the formula returns True.",
318
+ "@toddle/filter": {
319
+ "name": "Filter",
320
+ "description": "Return a new Array containing only the elements for which the provided formula evaluates to True.",
430
321
  "arguments": [
431
322
  {
432
323
  "name": "Array",
@@ -434,7 +325,7 @@
434
325
  "type": "value",
435
326
  "value": null
436
327
  },
437
- "description": "The array to search.",
328
+ "description": "The array of items to be filtered.",
438
329
  "type": {
439
330
  "type": "Array"
440
331
  }
@@ -449,16 +340,16 @@
449
340
  "item"
450
341
  ]
451
342
  },
452
- "description": "The predicate formula that each item in the Array is passed to.",
343
+ "description": "Predicate formula for filtering items.",
453
344
  "type": {
454
345
  "type": "Formula"
455
346
  }
456
347
  }
457
348
  ],
458
349
  "output": {
459
- "description": "The index of the first item in the Array where the predicate formula returns True. Returns -1 if the predicate formula did not return True for any item.",
350
+ "description": "New Array containing only the items for which the Formula evaluated to True.",
460
351
  "type": {
461
- "type": "Any"
352
+ "type": "Array"
462
353
  }
463
354
  }
464
355
  },
@@ -492,82 +383,203 @@
492
383
  "output": {
493
384
  "description": "The last items from the Array or String.",
494
385
  "type": {
495
- "type": "Array \\| String"
386
+ "type": "Array \\| String"
387
+ }
388
+ }
389
+ },
390
+ "@toddle/size": {
391
+ "name": "Size",
392
+ "description": "Get the size of an Array, Object or String.",
393
+ "arguments": [
394
+ {
395
+ "name": "Collection",
396
+ "formula": {
397
+ "type": "value",
398
+ "value": [
399
+ 1,
400
+ 2,
401
+ 3
402
+ ]
403
+ },
404
+ "description": "The collection to get the size of.",
405
+ "type": {
406
+ "type": "Array \\| Object \\| String"
407
+ }
408
+ }
409
+ ],
410
+ "output": {
411
+ "description": "The size of the collection.",
412
+ "type": {
413
+ "type": "Number"
414
+ }
415
+ }
416
+ },
417
+ "@toddle/matches": {
418
+ "name": "Matches",
419
+ "description": "Finds the (global) matches in a String based on a regular expression.",
420
+ "arguments": [
421
+ {
422
+ "name": "Input",
423
+ "formula": {
424
+ "type": "value",
425
+ "value": ""
426
+ },
427
+ "description": "The string to search for matches in.",
428
+ "type": {
429
+ "type": "String"
430
+ }
431
+ },
432
+ {
433
+ "name": "Regular expression",
434
+ "formula": {
435
+ "type": "value",
436
+ "value": ""
437
+ },
438
+ "description": "The regular expression to use for matching.",
439
+ "type": {
440
+ "type": "String"
441
+ }
442
+ },
443
+ {
444
+ "name": "Global search",
445
+ "formula": {
446
+ "type": "value",
447
+ "value": true
448
+ },
449
+ "description": "Test the regular expression against all possible matches in a string.",
450
+ "type": {
451
+ "type": "Boolean"
452
+ }
453
+ },
454
+ {
455
+ "name": "Case insensitive",
456
+ "formula": {
457
+ "type": "value",
458
+ "value": false
459
+ },
460
+ "description": "Ignore case while attempting a match in a string.",
461
+ "type": {
462
+ "type": "Boolean"
463
+ }
464
+ },
465
+ {
466
+ "name": "Multi line",
467
+ "formula": {
468
+ "type": "value",
469
+ "value": false
470
+ },
471
+ "description": "Treat multiline strings as multiple lines.",
472
+ "type": {
473
+ "type": "Boolean"
474
+ }
475
+ }
476
+ ],
477
+ "output": {
478
+ "description": "An Array of Strings",
479
+ "type": {
480
+ "type": "Array"
481
+ }
482
+ }
483
+ },
484
+ "@toddle/dateFromString": {
485
+ "name": "Date From String",
486
+ "arguments": [
487
+ {
488
+ "name": "Date string",
489
+ "description": "A String representing a date, for example \"January 1, 1970\".",
490
+ "type": {
491
+ "type": "String"
492
+ },
493
+ "formula": {
494
+ "type": "value",
495
+ "value": "January 1, 1970"
496
+ }
497
+ }
498
+ ],
499
+ "description": "Convert a string to a Date.",
500
+ "output": {
501
+ "description": "The input value converted to a Date.",
502
+ "type": {
503
+ "type": "Date"
496
504
  }
497
505
  }
498
506
  },
499
- "@toddle/trim": {
500
- "name": "Trim",
501
- "description": "Remove any leading and trailing white spaces from a String.",
507
+ "@toddle/number": {
508
+ "name": "Number",
509
+ "description": "Convert a value of any type to a Number.",
502
510
  "arguments": [
503
511
  {
504
- "name": "String",
512
+ "name": "Input",
513
+ "description": "Value of any type",
514
+ "type": {
515
+ "type": "Any"
516
+ },
505
517
  "formula": {
506
518
  "type": "value",
507
- "value": ""
508
- },
509
- "description": "The String to trim.",
510
- "type": {
511
- "type": "String"
519
+ "value": "1"
512
520
  }
513
521
  }
514
522
  ],
515
523
  "output": {
516
- "description": "The trimmed String.",
524
+ "description": "The input value converted to a Number.",
517
525
  "type": {
518
- "type": "String"
526
+ "type": "Number"
519
527
  }
520
528
  }
521
529
  },
522
- "@toddle/uppercase": {
523
- "name": "Uppercase",
524
- "description": "Convert a String to uppercase.",
530
+ "@toddle/randomNumber": {
531
+ "name": "Random number",
532
+ "description": "return a random Number between 0 and 1.",
533
+ "arguments": [],
534
+ "cache": false,
535
+ "output": {
536
+ "description": "A random Number between 0 and 1.",
537
+ "type": {
538
+ "type": "Number"
539
+ }
540
+ }
541
+ },
542
+ "@toddle/split": {
543
+ "name": "Split",
544
+ "description": "Split a String into an Array of smaller strings each time a delimiter occurs. The delimiter will not be part of the output",
525
545
  "arguments": [
526
546
  {
527
- "name": "String",
547
+ "name": "Input",
528
548
  "formula": {
529
549
  "type": "value",
530
- "value": "string"
550
+ "value": ""
531
551
  },
532
- "description": "Input String.",
552
+ "description": "The String to split.",
533
553
  "type": {
534
554
  "type": "String"
535
555
  }
536
- }
537
- ],
538
- "output": {
539
- "description": "The input String with all characters converted to uppercase.",
540
- "type": {
541
- "type": "String"
542
- }
543
- }
544
- },
545
- "@toddle/logarithm": {
546
- "name": "Logarithm",
547
- "description": "Return the logarithm of a Number.",
548
- "arguments": [
556
+ },
549
557
  {
550
- "name": "Number",
558
+ "name": "Delimiter",
551
559
  "formula": {
552
560
  "type": "value",
553
- "value": 1
561
+ "value": ""
554
562
  },
555
- "description": "A Number greater than or equal to 0.",
563
+ "description": "The string to split by.",
556
564
  "type": {
557
- "type": "Number"
565
+ "type": "String"
558
566
  }
559
567
  }
560
568
  ],
561
569
  "output": {
570
+ "description": "An array of Strings.",
562
571
  "type": {
563
- "type": "Number"
564
- },
565
- "description": "The natural logarithm of the Number."
572
+ "type": "Array",
573
+ "ofType": {
574
+ "type": "String"
575
+ }
576
+ }
566
577
  }
567
578
  },
568
- "@toddle/dropLast": {
569
- "name": "Drop last",
570
- "description": "Remove item(s) from the end of an Array or String.",
579
+ "@toddle/shuffle": {
580
+ "name": "Shuffle",
581
+ "description": "Shuffle items in an Array or String.",
582
+ "cache": false,
571
583
  "arguments": [
572
584
  {
573
585
  "name": "Array",
@@ -579,21 +591,10 @@
579
591
  "type": {
580
592
  "type": "Array \\| String"
581
593
  }
582
- },
583
- {
584
- "name": "Count",
585
- "formula": {
586
- "type": "value",
587
- "value": 1
588
- },
589
- "type": {
590
- "type": "Number"
591
- },
592
- "description": "Number of items to remove."
593
594
  }
594
595
  ],
595
596
  "output": {
596
- "description": "A copy of the list without the last item(s).",
597
+ "description": "The shuffled Array or String.",
597
598
  "type": {
598
599
  "type": "Array \\| String"
599
600
  }
@@ -633,56 +634,6 @@
633
634
  }
634
635
  }
635
636
  },
636
- "@toddle/dateFromTimestamp": {
637
- "name": "Date From Timestamp",
638
- "arguments": [
639
- {
640
- "name": "Timestamp",
641
- "description": "A Number in milliseconds since 1st January, 1970 (EPOCH).",
642
- "type": {
643
- "type": "Number"
644
- },
645
- "formula": {
646
- "type": "value",
647
- "value": 1687787245933
648
- }
649
- }
650
- ],
651
- "description": "Convert a timestamp (milliseconds) to a Date.",
652
- "output": {
653
- "description": "The input value converted to a Date.",
654
- "type": {
655
- "type": "Date"
656
- }
657
- }
658
- },
659
- "@toddle/size": {
660
- "name": "Size",
661
- "description": "Get the size of an Array, Object or String.",
662
- "arguments": [
663
- {
664
- "name": "Collection",
665
- "formula": {
666
- "type": "value",
667
- "value": [
668
- 1,
669
- 2,
670
- 3
671
- ]
672
- },
673
- "description": "The collection to get the size of.",
674
- "type": {
675
- "type": "Array \\| Object \\| String"
676
- }
677
- }
678
- ],
679
- "output": {
680
- "description": "The size of the collection.",
681
- "type": {
682
- "type": "Number"
683
- }
684
- }
685
- },
686
637
  "@toddle/lessOrEqual": {
687
638
  "name": "Less or equal",
688
639
  "description": "Compute if a value is smaller than or equal to another value.",
@@ -717,412 +668,411 @@
717
668
  }
718
669
  }
719
670
  },
720
- "@toddle/encodeBase64": {
721
- "name": "Encode to base64",
671
+ "@toddle/sort_by": {
672
+ "name": "Sort by",
673
+ "description": "Sort an Array using a formula.",
722
674
  "arguments": [
723
675
  {
724
- "name": "Value",
676
+ "name": "Array",
725
677
  "formula": {
726
678
  "type": "value",
727
- "value": "Input value"
679
+ "value": []
728
680
  },
729
681
  "type": {
730
- "type": "String"
682
+ "type": "Array"
731
683
  },
732
- "description": "The input string to be encoded."
733
- }
734
- ],
735
- "description": "Encode a string to base64.",
736
- "output": {
737
- "description": "The base 64 encoded string.",
738
- "type": {
739
- "type": "String"
740
- }
741
- }
742
- },
743
- "@toddle/json": {
744
- "name": "JSON",
745
- "description": "Convert a value into a JSON String.",
746
- "arguments": [
684
+ "description": "The input Array."
685
+ },
747
686
  {
748
- "name": "Input",
687
+ "name": "Formula",
749
688
  "formula": {
750
- "type": "value",
751
- "value": null
689
+ "type": "path",
690
+ "path": [
691
+ "Args",
692
+ "item"
693
+ ]
752
694
  },
753
- "description": "The input value.",
754
695
  "type": {
755
- "type": "Any"
756
- }
696
+ "type": "Formula"
697
+ },
698
+ "isFunction": true,
699
+ "description": "The sorting formula. The output of this formula will determine the sort order of the items. If the formula returns an Array, the items will first be sorted by the first item, then the second, etc."
757
700
  },
758
701
  {
759
- "name": "Indentation",
702
+ "name": "Ascending?",
760
703
  "formula": {
761
704
  "type": "value",
762
- "value": 0
705
+ "value": true
763
706
  },
764
- "description": "The number of spaces used for indentation in the JSON String.",
765
707
  "type": {
766
- "type": "Number"
767
- }
708
+ "type": "Boolean"
709
+ },
710
+ "description": "Should the list be sorted in ascending order?"
768
711
  }
769
712
  ],
770
713
  "output": {
771
- "description": "The JSON String.",
714
+ "description": "The input Array sorted by the value returned by the sorting formula.",
772
715
  "type": {
773
- "type": "String"
716
+ "type": "Number"
774
717
  }
775
718
  }
776
719
  },
777
- "@toddle/boolean": {
778
- "name": "Boolean",
779
- "description": "Convert a value of any type to a Boolean.",
720
+ "@toddle/groupBy": {
721
+ "name": "Group by",
722
+ "description": "Group an Array of items into an Object based on a grouping formula.",
780
723
  "arguments": [
781
724
  {
782
- "name": "Input",
783
- "description": "Value of any type.",
784
- "type": {
785
- "type": "Any"
786
- },
725
+ "name": "Array",
787
726
  "formula": {
788
727
  "type": "value",
789
- "value": "1"
728
+ "value": null
729
+ },
730
+ "description": "Array of items to be grouped.",
731
+ "type": {
732
+ "type": "Array"
790
733
  }
791
- }
792
- ],
793
- "output": {
794
- "description": "The input value converted to a Boolean. False and Null will return False, all other values will return True.",
795
- "type": {
796
- "type": "Boolean"
797
- }
798
- }
799
- },
800
- "@toddle/number": {
801
- "name": "Number",
802
- "description": "Convert a value of any type to a Number.",
803
- "arguments": [
734
+ },
804
735
  {
805
- "name": "Input",
806
- "description": "Value of any type",
807
- "type": {
808
- "type": "Any"
809
- },
736
+ "name": "Formula",
737
+ "isFunction": true,
810
738
  "formula": {
811
739
  "type": "value",
812
- "value": "1"
740
+ "value": null
741
+ },
742
+ "description": "The grouping formula used to group the items. The String returned from the formula will match the key in the output Oject.",
743
+ "type": {
744
+ "type": "Formula"
813
745
  }
814
746
  }
815
747
  ],
816
748
  "output": {
817
- "description": "The input value converted to a Number.",
749
+ "description": "An Object where each key matches a value returned by the grouping formula, and each value is the list of items that share the return value.",
818
750
  "type": {
819
- "type": "Number"
751
+ "type": "Object"
820
752
  }
821
753
  }
822
754
  },
823
- "@toddle/power": {
824
- "name": "Power",
825
- "description": "Raise a number to a power.",
755
+ "@toddle/notEqual": {
756
+ "name": "Not equal",
757
+ "description": "Compute if values are not identical.",
826
758
  "arguments": [
827
759
  {
828
- "name": "Base",
760
+ "name": "First",
829
761
  "formula": {
830
762
  "type": "value",
831
- "value": 3
763
+ "value": ""
832
764
  },
833
- "description": "The number to be raised to the exponent.",
765
+ "description": "First value.",
834
766
  "type": {
835
- "type": "Number"
767
+ "type": "Any"
836
768
  }
837
769
  },
838
770
  {
839
- "name": "Exponent",
771
+ "name": "Second",
840
772
  "formula": {
841
773
  "type": "value",
842
- "value": 2
774
+ "value": ""
843
775
  },
844
- "description": "The exponent to raise the base to.",
776
+ "description": "Second value.",
845
777
  "type": {
846
- "type": "Number"
778
+ "type": "Any"
847
779
  }
848
780
  }
849
781
  ],
850
782
  "output": {
783
+ "description": "Returns True if the values are not identical, otherwise False.",
851
784
  "type": {
852
- "type": "Number"
853
- },
854
- "description": "The result of raising the base to the exponent."
785
+ "type": "Any"
786
+ }
855
787
  }
856
788
  },
857
- "@toddle/matches": {
858
- "name": "Matches",
859
- "description": "Finds the (global) matches in a String based on a regular expression.",
789
+ "@toddle/greaterOrEqueal": {
790
+ "name": "Greater or equal",
791
+ "description": "Compute whether a value is larger than or equal to another value.",
860
792
  "arguments": [
861
793
  {
862
- "name": "Input",
794
+ "name": "First",
863
795
  "formula": {
864
796
  "type": "value",
865
797
  "value": ""
866
798
  },
867
- "description": "The string to search for matches in.",
799
+ "description": "First value to be compared.",
868
800
  "type": {
869
- "type": "String"
801
+ "type": "Number"
870
802
  }
871
803
  },
872
804
  {
873
- "name": "Regular expression",
805
+ "name": "Second",
874
806
  "formula": {
875
807
  "type": "value",
876
808
  "value": ""
877
809
  },
878
- "description": "The regular expression to use for matching.",
810
+ "description": "Second value to be compared.",
879
811
  "type": {
880
- "type": "String"
812
+ "type": "Number"
881
813
  }
882
- },
814
+ }
815
+ ],
816
+ "output": {
817
+ "description": "Returns True if the first Number is larger than or equal to the second Number.",
818
+ "type": {
819
+ "type": "Boolean"
820
+ }
821
+ }
822
+ },
823
+ "@toddle/capitalize": {
824
+ "name": "Capitalize",
825
+ "description": "Capitalize a string: make the first letter uppercase whilst keeping the rest lowercase.",
826
+ "arguments": [
883
827
  {
884
- "name": "Global search",
828
+ "name": "String",
885
829
  "formula": {
886
830
  "type": "value",
887
- "value": true
831
+ "value": "string"
888
832
  },
889
- "description": "Test the regular expression against all possible matches in a string.",
833
+ "description": "An input String.",
890
834
  "type": {
891
- "type": "Boolean"
835
+ "type": "String"
892
836
  }
893
- },
837
+ }
838
+ ],
839
+ "output": {
840
+ "description": "The capitalized String.",
841
+ "type": {
842
+ "type": "String"
843
+ }
844
+ }
845
+ },
846
+ "@toddle/dropLast": {
847
+ "name": "Drop last",
848
+ "description": "Remove item(s) from the end of an Array or String.",
849
+ "arguments": [
894
850
  {
895
- "name": "Case insensitive",
851
+ "name": "Array",
896
852
  "formula": {
897
853
  "type": "value",
898
- "value": false
854
+ "value": null
899
855
  },
900
- "description": "Ignore case while attempting a match in a string.",
856
+ "description": "The input value.",
901
857
  "type": {
902
- "type": "Boolean"
858
+ "type": "Array \\| String"
903
859
  }
904
860
  },
905
861
  {
906
- "name": "Multi line",
862
+ "name": "Count",
907
863
  "formula": {
908
864
  "type": "value",
909
- "value": false
865
+ "value": 1
910
866
  },
911
- "description": "Treat multiline strings as multiple lines.",
912
867
  "type": {
913
- "type": "Boolean"
914
- }
868
+ "type": "Number"
869
+ },
870
+ "description": "Number of items to remove."
915
871
  }
916
872
  ],
917
873
  "output": {
918
- "description": "An Array of Strings",
874
+ "description": "A copy of the list without the last item(s).",
919
875
  "type": {
920
- "type": "Array"
876
+ "type": "Array \\| String"
921
877
  }
922
878
  }
923
879
  },
924
- "@toddle/fromEntries": {
925
- "name": "From entries",
926
- "description": "Transform an Array of key-value pairs into an Object. This formula is the reverse of Entries.",
880
+ "@toddle/prepend": {
881
+ "name": "Prepend",
882
+ "description": "Add an element to the start of an Array.",
927
883
  "arguments": [
928
884
  {
929
885
  "name": "Array",
930
- "formula": {
931
- "type": "value",
932
- "value": null
933
- },
934
- "description": "An Array of Objects. Each Object should have a `key` and `value` property named `key` and `value` respectively e.g. `[{ key: 'yourKey', value: 'yourValue' }]`.",
935
886
  "type": {
936
887
  "type": "Array"
888
+ },
889
+ "description": "The Array to prepend to.",
890
+ "formula": {
891
+ "type": "array",
892
+ "arguments": []
893
+ }
894
+ },
895
+ {
896
+ "name": "Item",
897
+ "type": {
898
+ "type": "Any"
899
+ },
900
+ "description": "The item to prepend to the Array.",
901
+ "formula": {
902
+ "type": "value",
903
+ "value": "Item"
937
904
  }
938
905
  }
939
906
  ],
940
907
  "output": {
941
- "description": "An Object containing all entries from the input Array in the format `{yourKey: yourValue}`.",
908
+ "description": "A new Array containing the new item and all the elements from the input Array.",
942
909
  "type": {
943
- "type": "Object"
910
+ "type": "Array"
944
911
  }
945
912
  }
946
913
  },
947
- "@toddle/concatenate": {
948
- "name": "Concatenate",
949
- "description": "Concatenate two or more values.",
914
+ "@toddle/deleteKey": {
915
+ "name": "Delete",
916
+ "description": "Return a copy of the input Object or Array without the specified key.",
950
917
  "arguments": [
951
918
  {
952
- "name": "0",
919
+ "name": "Object",
953
920
  "formula": {
954
921
  "type": "value",
955
- "value": ""
922
+ "value": null
956
923
  },
924
+ "description": "The input record.",
957
925
  "type": {
958
- "type": "Array \\| String"
926
+ "type": "Array \\| Object"
959
927
  }
960
- }
961
- ],
962
- "variableArguments": true,
963
- "output": {
964
- "type": {
965
- "type": "Array \\| String"
966
928
  },
967
- "description": "Returns a String or Array containing all the specified input values."
968
- }
969
- },
970
- "@toddle/encodeURIComponent": {
971
- "name": "Encode URI Component",
972
- "description": "Encode a URI component, escaping certain characters to their UTF-8 representation.",
973
- "arguments": [
974
929
  {
975
- "name": "URIComponent",
930
+ "name": "Path",
976
931
  "formula": {
977
932
  "type": "value",
978
- "value": null
933
+ "value": "Item"
979
934
  },
980
- "description": "The URI component to encode.",
935
+ "description": "The path can be either a Number (if the first argument is an array), a String, or an Array of strings. If an Array is given, the property at that path will be removed.",
981
936
  "type": {
982
- "type": "String"
937
+ "type": "Array<Number \\| String> \\| Number \\| String"
983
938
  }
984
939
  }
985
940
  ],
986
941
  "output": {
987
- "description": "The encoded URI component.",
942
+ "description": "A copy of the record without the property specified in the Path.",
988
943
  "type": {
989
- "type": "String"
944
+ "type": "Object"
990
945
  }
991
946
  }
992
947
  },
993
- "@toddle/sum": {
994
- "name": "Sum",
995
- "description": "Return the sum of an Array of numbers",
948
+ "@toddle/getCookie": {
949
+ "name": "Get Cookie",
950
+ "description": "Get the value of a cookie by name. This formula is available both server-side and client-side. Http-Only cookies will only be available server-side.",
996
951
  "arguments": [
997
952
  {
998
- "name": "Array",
999
- "type": {
1000
- "type": "Array"
1001
- },
1002
- "description": "The array of numbers to sum.",
953
+ "name": "Cookie name",
1003
954
  "formula": {
1004
- "type": "array",
1005
- "arguments": []
955
+ "type": "value",
956
+ "value": null
957
+ },
958
+ "description": "The name of the cookie you want to get the value of.",
959
+ "type": {
960
+ "type": "String"
1006
961
  }
1007
962
  }
1008
963
  ],
1009
964
  "output": {
1010
- "description": "The total sum from adding all the numbers in the Array.",
965
+ "description": "The value of the cookie. If a value is not found, this return value will be Null.",
1011
966
  "type": {
1012
- "type": "Number"
967
+ "type": "String"
1013
968
  }
1014
969
  }
1015
970
  },
1016
- "@toddle/max": {
1017
- "name": "Max",
1018
- "description": "Find the largest Number from a list of inputs.",
971
+ "@toddle/modulo": {
972
+ "name": "Modulo",
973
+ "description": "Get the remainder when dividing two Numbers.",
1019
974
  "arguments": [
1020
975
  {
1021
- "name": "0",
976
+ "name": "Dividend",
1022
977
  "formula": {
1023
978
  "type": "value",
1024
- "value": null
979
+ "value": 1
1025
980
  },
1026
- "description": "Input Number.",
981
+ "description": "The number to be divided.",
1027
982
  "type": {
1028
983
  "type": "Number"
1029
984
  }
1030
985
  },
1031
986
  {
1032
- "name": "1",
987
+ "name": "Divider",
1033
988
  "formula": {
1034
989
  "type": "value",
1035
- "value": null
990
+ "value": 1
1036
991
  },
1037
- "description": "Input Number.",
992
+ "description": "The number to divide by.",
1038
993
  "type": {
1039
994
  "type": "Number"
1040
995
  }
1041
996
  }
1042
997
  ],
1043
- "variableArguments": true,
1044
998
  "output": {
1045
- "description": "The largest of the input Numbers.",
999
+ "description": "The remainder when the Dividend is divided by the Divider.",
1046
1000
  "type": {
1047
1001
  "type": "Number"
1048
1002
  }
1049
1003
  }
1050
1004
  },
1051
- "@toddle/encodeJSON": {
1052
- "name": "Encode JSON",
1053
- "description": "Encode data as JSON.",
1005
+ "@toddle/clamp": {
1006
+ "name": "Clamp",
1007
+ "description": "Limit a value to a specified Min and Max value.",
1054
1008
  "arguments": [
1055
1009
  {
1056
- "name": "Data",
1010
+ "name": "Value",
1011
+ "type": {
1012
+ "type": "Number"
1013
+ },
1057
1014
  "formula": {
1058
1015
  "type": "value",
1059
1016
  "value": null
1060
1017
  },
1061
- "description": "The data to convert.",
1062
- "type": {
1063
- "type": "Any"
1064
- }
1018
+ "description": "Number to round."
1065
1019
  },
1066
1020
  {
1067
- "name": "Indent",
1021
+ "name": "Min",
1022
+ "type": {
1023
+ "type": "Number"
1024
+ },
1025
+ "description": "The smallest allowed Number.",
1068
1026
  "formula": {
1069
1027
  "type": "value",
1070
- "value": 2
1071
- },
1072
- "description": "How many characters the encoded value will be indented.",
1028
+ "value": 0
1029
+ }
1030
+ },
1031
+ {
1032
+ "name": "Max",
1073
1033
  "type": {
1074
1034
  "type": "Number"
1035
+ },
1036
+ "description": "The largest allowed Number.",
1037
+ "formula": {
1038
+ "type": "value",
1039
+ "value": 100
1075
1040
  }
1076
1041
  }
1077
1042
  ],
1078
1043
  "output": {
1079
- "description": "The encoded JSON value.",
1080
1044
  "type": {
1081
- "type": "String"
1082
- }
1045
+ "type": "Number"
1046
+ },
1047
+ "description": "Returns the input value if between the specified Min and Max. Otherwise, it returns the Min or Max value."
1083
1048
  }
1084
1049
  },
1085
- "@toddle/map": {
1086
- "name": "Map",
1087
- "description": "Run a formula on each item of an Array to return a new Array.",
1050
+ "@toddle/flatten": {
1051
+ "name": "Flatten",
1052
+ "description": "Flatten a nested Array.",
1088
1053
  "arguments": [
1089
1054
  {
1090
1055
  "name": "Array",
1091
- "formula": {
1092
- "type": "value",
1093
- "value": null
1094
- },
1095
- "description": "The Array of items.",
1056
+ "description": "An Array containing one or more Arrays.",
1096
1057
  "type": {
1097
1058
  "type": "Array"
1098
- }
1099
- },
1100
- {
1101
- "name": "Formula",
1102
- "isFunction": true,
1103
- "formula": {
1104
- "type": "path",
1105
- "path": [
1106
- "Args",
1107
- "item"
1108
- ]
1109
1059
  },
1110
- "description": "The formula to run on each item of the Array.",
1111
- "type": {
1112
- "type": "Formula"
1060
+ "formula": {
1061
+ "type": "array",
1062
+ "arguments": []
1113
1063
  }
1114
1064
  }
1115
1065
  ],
1116
1066
  "output": {
1117
- "description": "A new Array containing all the values returned from running the provided formula on each item in the provided input Array.",
1067
+ "description": "A flattened Array where all items in the original array are concatenated.",
1118
1068
  "type": {
1119
1069
  "type": "Array"
1120
1070
  }
1121
1071
  }
1122
1072
  },
1123
- "@toddle/find": {
1124
- "name": "Find",
1125
- "description": "Search through an Array of items and apply a formula to each item, to return the first item where the provided formula returns True.",
1073
+ "@toddle/reverse": {
1074
+ "name": "Reverse",
1075
+ "description": "Reverse the order of an Array.",
1126
1076
  "arguments": [
1127
1077
  {
1128
1078
  "name": "Array",
@@ -1130,244 +1080,220 @@
1130
1080
  "type": "value",
1131
1081
  "value": null
1132
1082
  },
1133
- "description": "The array to search through",
1083
+ "description": "The Array to be reversed.",
1134
1084
  "type": {
1135
1085
  "type": "Array"
1136
1086
  }
1137
- },
1138
- {
1139
- "name": "Formula",
1140
- "isFunction": true,
1141
- "formula": {
1142
- "type": "path",
1143
- "path": [
1144
- "Args",
1145
- "item"
1146
- ]
1147
- },
1148
- "description": "The predicate formula that each item in the array is passed to.",
1149
- "type": {
1150
- "type": "Formula"
1151
- }
1152
1087
  }
1153
1088
  ],
1154
1089
  "output": {
1155
- "description": "The first item in the Array where the formula returns True. Returns Null if the predicate formula did not return True for any item.",
1156
1090
  "type": {
1157
- "type": "Any"
1158
- }
1091
+ "type": "Array"
1092
+ },
1093
+ "description": "The reversed Array."
1159
1094
  }
1160
1095
  },
1161
- "@toddle/squareRoot": {
1162
- "name": "Square root",
1163
- "description": "Get the square root of a Number.",
1096
+ "@toddle/timestamp": {
1097
+ "name": "Timestamp",
1098
+ "description": "Get the timestamp from a Date, e.g. 1633462980000.",
1164
1099
  "arguments": [
1165
1100
  {
1166
- "name": "Number",
1101
+ "name": "Date",
1102
+ "description": "The date to get the timestamp from.",
1103
+ "type": {
1104
+ "type": "Date"
1105
+ },
1167
1106
  "formula": {
1168
1107
  "type": "value",
1169
- "value": 1
1170
- },
1171
- "description": "The input Number.",
1172
- "type": {
1173
- "type": "Number"
1108
+ "value": null
1174
1109
  }
1175
1110
  }
1176
1111
  ],
1177
1112
  "output": {
1178
- "description": "The square root of the input Number.",
1113
+ "description": "The timestamp from the date input.",
1179
1114
  "type": {
1180
1115
  "type": "Number"
1181
1116
  }
1182
1117
  }
1183
1118
  },
1184
- "@toddle/greaterOrEqueal": {
1185
- "name": "Greater or equal",
1186
- "description": "Compute whether a value is larger than or equal to another value.",
1119
+ "@toddle/decodeBase64": {
1120
+ "name": "Decode base64",
1187
1121
  "arguments": [
1188
1122
  {
1189
- "name": "First",
1123
+ "name": "Base64 value",
1190
1124
  "formula": {
1191
1125
  "type": "value",
1192
- "value": ""
1126
+ "value": "Input value"
1193
1127
  },
1194
- "description": "First value to be compared.",
1195
1128
  "type": {
1196
- "type": "Number"
1197
- }
1198
- },
1199
- {
1200
- "name": "Second",
1201
- "formula": {
1202
- "type": "value",
1203
- "value": ""
1129
+ "type": "String"
1204
1130
  },
1205
- "description": "Second value to be compared.",
1206
- "type": {
1207
- "type": "Number"
1208
- }
1131
+ "description": "The input data encoded as base64."
1209
1132
  }
1210
1133
  ],
1134
+ "description": "Deocde a base64 string to utf-8.",
1211
1135
  "output": {
1212
- "description": "Returns True if the first Number is larger than or equal to the second Number.",
1136
+ "description": "The decoded string.",
1213
1137
  "type": {
1214
- "type": "Boolean"
1138
+ "type": "String"
1215
1139
  }
1216
1140
  }
1217
1141
  },
1218
- "@toddle/parseJSON": {
1219
- "name": "Parse JSON",
1220
- "description": "Parse a String to JSON.",
1221
- "arguments": [
1222
- {
1223
- "name": "JSON string",
1224
- "formula": {
1225
- "type": "value",
1226
- "value": null
1227
- },
1228
- "description": "The String to be parsed.",
1229
- "type": {
1230
- "type": "String"
1231
- }
1232
- }
1233
- ],
1142
+ "@toddle/branchName": {
1143
+ "name": "Branch Name",
1144
+ "description": "Get the name of the current branch. For production, the branch name is 'main'.",
1145
+ "arguments": [],
1234
1146
  "output": {
1235
- "description": "The parsed JSON value. If the input is not a valid String, this returns Null.",
1147
+ "description": "Returns the name of the current branch.",
1236
1148
  "type": {
1237
- "type": "Any"
1149
+ "type": "String"
1238
1150
  }
1239
1151
  }
1240
1152
  },
1241
- "@toddle/getHttpOnlyCookie": {
1242
- "name": "Get Http-Only Cookie",
1243
- "description": "Get the value of an Http-Only cookie by name. This formula will is only intended to be used server-side for SSR/proxied API requests to read Http-Only cookies.",
1153
+ "@toddle/typeOf": {
1154
+ "name": "Type of",
1155
+ "description": "Get the type of a given input.",
1244
1156
  "arguments": [
1245
1157
  {
1246
- "name": "Cookie name",
1158
+ "name": "Input",
1247
1159
  "formula": {
1248
1160
  "type": "value",
1249
- "value": null
1161
+ "value": 1
1250
1162
  },
1251
- "description": "The name of the Http-Only cookie you want to get the value of.",
1163
+ "description": "The input value.",
1252
1164
  "type": {
1253
- "type": "String"
1165
+ "type": "Any"
1254
1166
  }
1255
1167
  }
1256
1168
  ],
1257
1169
  "output": {
1258
- "description": "The value of the cookie. If no cookie is found, this will return Null. If you use this formula client-side, it will return a placeholder template string.",
1170
+ "description": "The type of the input value. Types can be one of: String, Boolean, Number, Array, Object, or Null.",
1259
1171
  "type": {
1260
- "type": "String"
1172
+ "type": "Any"
1261
1173
  }
1262
1174
  }
1263
1175
  },
1264
- "@toddle/prepend": {
1265
- "name": "Prepend",
1266
- "description": "Add an element to the start of an Array.",
1176
+ "@toddle/defaultTo": {
1177
+ "name": "Default to",
1178
+ "description": "Return the first value that is not False or Null.",
1267
1179
  "arguments": [
1268
1180
  {
1269
- "name": "Array",
1270
- "type": {
1271
- "type": "Array"
1272
- },
1273
- "description": "The Array to prepend to.",
1181
+ "name": "0",
1274
1182
  "formula": {
1275
- "type": "array",
1276
- "arguments": []
1183
+ "type": "value",
1184
+ "value": null
1185
+ },
1186
+ "description": "The inital value.",
1187
+ "type": {
1188
+ "type": "Any"
1277
1189
  }
1278
1190
  },
1279
1191
  {
1280
- "name": "Item",
1192
+ "name": "1",
1193
+ "description": "The first fallback value to be used if the primary value is Null or False.",
1281
1194
  "type": {
1282
1195
  "type": "Any"
1283
1196
  },
1284
- "description": "The item to prepend to the Array.",
1285
1197
  "formula": {
1286
1198
  "type": "value",
1287
- "value": "Item"
1199
+ "value": "default"
1288
1200
  }
1289
1201
  }
1290
1202
  ],
1203
+ "variableArguments": true,
1291
1204
  "output": {
1292
- "description": "A new Array containing the new item and all the elements from the input Array.",
1205
+ "description": "Returns the first value that is not False or Null. Returns Null if no valid values is given.",
1293
1206
  "type": {
1294
- "type": "Array"
1207
+ "type": "Any"
1295
1208
  }
1296
1209
  }
1297
1210
  },
1298
- "@toddle/getElementById": {
1299
- "name": "Get element by id",
1300
- "description": "Return a DOM element with a given id.",
1301
- "cache": false,
1302
- "arguments": [
1303
- {
1304
- "name": "Id",
1305
- "formula": {
1306
- "type": "value",
1307
- "value": "element-id"
1308
- },
1309
- "type": {
1310
- "type": "String"
1311
- },
1312
- "description": "The id of the DOM element to return."
1313
- }
1314
- ],
1211
+ "@toddle/languages": {
1212
+ "name": "Languages",
1213
+ "description": "An array of the preferred languages for the user, based on the Navigator.languages property (on the client) or the Accept-Language header (on the server).",
1214
+ "arguments": [],
1315
1215
  "output": {
1316
- "description": "The DOM element with the given id. If no DOM element is found, this will return Null.",
1216
+ "description": "An array with the preferred languages for the user.",
1317
1217
  "type": {
1318
- "type": "Element"
1218
+ "type": "Array"
1319
1219
  }
1320
1220
  }
1321
1221
  },
1322
- "@toddle/decodeURIComponent": {
1323
- "name": "Decode URI Component",
1324
- "description": "Decode a URI component that was previously encoded with the Encode URI Component formula.",
1222
+ "@toddle/findIndex": {
1223
+ "name": "Find index",
1224
+ "description": "Search through an Array of items and apply a formula to each item, to return the index of the first item where the formula returns True.",
1325
1225
  "arguments": [
1326
1226
  {
1327
- "name": "EncodedURI",
1227
+ "name": "Array",
1328
1228
  "formula": {
1329
1229
  "type": "value",
1330
1230
  "value": null
1331
1231
  },
1232
+ "description": "The array to search.",
1332
1233
  "type": {
1333
- "type": "String"
1234
+ "type": "Array"
1235
+ }
1236
+ },
1237
+ {
1238
+ "name": "Formula",
1239
+ "isFunction": true,
1240
+ "formula": {
1241
+ "type": "path",
1242
+ "path": [
1243
+ "Args",
1244
+ "item"
1245
+ ]
1334
1246
  },
1335
- "description": "The encoded URI to decode."
1247
+ "description": "The predicate formula that each item in the Array is passed to.",
1248
+ "type": {
1249
+ "type": "Formula"
1250
+ }
1336
1251
  }
1337
1252
  ],
1338
1253
  "output": {
1339
- "description": "The decoded URI component.",
1254
+ "description": "The index of the first item in the Array where the predicate formula returns True. Returns -1 if the predicate formula did not return True for any item.",
1340
1255
  "type": {
1341
- "type": "String"
1256
+ "type": "Any"
1342
1257
  }
1343
1258
  }
1344
1259
  },
1345
- "@toddle/not": {
1346
- "name": "Not",
1347
- "description": "Get the Boolean opposite of an input value.",
1260
+ "@toddle/range": {
1261
+ "name": "Range",
1262
+ "description": "Create an Array of numbers between a Min and Max value.",
1348
1263
  "arguments": [
1349
1264
  {
1350
- "name": "Input",
1351
1265
  "formula": {
1352
1266
  "type": "value",
1353
- "value": true
1267
+ "value": 0
1268
+ },
1269
+ "name": "Min",
1270
+ "description": "The smallest value in the list.",
1271
+ "type": {
1272
+ "type": "Number"
1273
+ }
1274
+ },
1275
+ {
1276
+ "name": "Max",
1277
+ "formula": {
1278
+ "type": "value",
1279
+ "value": 10
1354
1280
  },
1355
- "description": "The input value.",
1281
+ "description": "The largest value in the list.",
1356
1282
  "type": {
1357
- "type": "Boolean"
1283
+ "type": "Number"
1358
1284
  }
1359
1285
  }
1360
1286
  ],
1361
1287
  "output": {
1362
- "description": "Returns True if the input value is False, and False if the input value is True.",
1288
+ "description": "An Array containing all the numbers between Min and Max, inclusive.",
1363
1289
  "type": {
1364
- "type": "Boolean"
1290
+ "type": "Array"
1365
1291
  }
1366
1292
  }
1367
1293
  },
1368
- "@toddle/reduce": {
1369
- "name": "Reduce",
1370
- "description": "Reduce a group of items to a single value by applying each item to a reducer formula.",
1294
+ "@toddle/join": {
1295
+ "name": "Join",
1296
+ "description": "Combine an Array of Strings in to a single String.",
1371
1297
  "arguments": [
1372
1298
  {
1373
1299
  "name": "Array",
@@ -1375,77 +1301,85 @@
1375
1301
  "type": "value",
1376
1302
  "value": null
1377
1303
  },
1378
- "description": "The Array or Object of items to be reduced.",
1379
- "type": {
1380
- "type": "Array \\| Object"
1381
- }
1382
- },
1383
- {
1384
- "name": "Formula",
1385
- "isFunction": true,
1386
- "formula": {
1387
- "type": "value",
1388
- "value": null
1389
- },
1390
- "description": "The reducer formula. Each item in the Array is applied to the formula along with the accumulator. The result of this formula will be a new accumulator used for the next item.",
1304
+ "description": "An array of Strings.",
1391
1305
  "type": {
1392
- "type": "Formula"
1306
+ "type": "Array"
1393
1307
  }
1394
1308
  },
1395
1309
  {
1396
- "name": "Accumulator",
1310
+ "name": "Separator",
1397
1311
  "formula": {
1398
1312
  "type": "value",
1399
- "value": null
1313
+ "value": ", "
1400
1314
  },
1401
- "description": "The initial value of the accumulator. This value is passed to the reducer formula along with the first item in the Array, and the result is used as the accumulator for the next item.",
1315
+ "description": "A separator String that is inserted in between each item in the Array to join.",
1402
1316
  "type": {
1403
- "type": "Any"
1317
+ "type": "String"
1404
1318
  }
1405
1319
  }
1406
1320
  ],
1407
1321
  "output": {
1408
- "description": "The value returned from applying the last item to the reducer formula.",
1322
+ "description": "A String combining each item in the input Array separated by the separator String, e.g. joining [\"a\", \"b\", \"c\"] with a \",\" separator will return \"a,b,c\".",
1409
1323
  "type": {
1410
- "type": "Any"
1324
+ "type": "String"
1411
1325
  }
1412
1326
  }
1413
1327
  },
1414
- "@toddle/replaceAll": {
1415
- "name": "Replace all",
1416
- "description": "Replace all occurrences of a substring in a String.",
1328
+ "@toddle/roundUp": {
1329
+ "name": "Round up",
1330
+ "description": "Round a Number up to the nearest decimal point.",
1417
1331
  "arguments": [
1418
1332
  {
1419
1333
  "name": "Input",
1420
- "description": "The input String to search in.",
1334
+ "description": "Number to round up.",
1421
1335
  "type": {
1422
- "type": "String"
1336
+ "type": "Number"
1423
1337
  },
1424
- "required": true
1338
+ "formula": {
1339
+ "type": "value",
1340
+ "value": 1
1341
+ }
1425
1342
  },
1426
1343
  {
1427
- "name": "Search",
1428
- "description": "The substring to search for.",
1344
+ "name": "Decimals",
1345
+ "description": "Number of decimals to round to.",
1429
1346
  "type": {
1430
- "type": "String"
1347
+ "type": "Number"
1431
1348
  },
1432
- "required": true
1349
+ "formula": {
1350
+ "type": "value",
1351
+ "value": 0
1352
+ }
1353
+ }
1354
+ ],
1355
+ "output": {
1356
+ "type": {
1357
+ "type": "Number"
1433
1358
  },
1359
+ "description": "The rounded Number."
1360
+ }
1361
+ },
1362
+ "@toddle/encodeURIComponent": {
1363
+ "name": "Encode URI Component",
1364
+ "description": "Encode a URI component, escaping certain characters to their UTF-8 representation.",
1365
+ "arguments": [
1434
1366
  {
1435
- "name": "Replace with",
1436
- "description": "The replacement value.",
1367
+ "name": "URIComponent",
1368
+ "formula": {
1369
+ "type": "value",
1370
+ "value": null
1371
+ },
1372
+ "description": "The URI component to encode.",
1437
1373
  "type": {
1438
1374
  "type": "String"
1439
- },
1440
- "required": true
1375
+ }
1441
1376
  }
1442
1377
  ],
1443
1378
  "output": {
1379
+ "description": "The encoded URI component.",
1444
1380
  "type": {
1445
1381
  "type": "String"
1446
- },
1447
- "name": "Output",
1448
- "description": "The resulting String."
1382
+ }
1449
1383
  }
1450
1384
  },
1451
1385
  "@toddle/last": {
@@ -1471,35 +1405,35 @@
1471
1405
  }
1472
1406
  }
1473
1407
  },
1474
- "@toddle/modulo": {
1475
- "name": "Modulo",
1476
- "description": "Get the remainder when dividing two Numbers.",
1408
+ "@toddle/lastIndexOf": {
1409
+ "name": "Last Index of",
1410
+ "description": "Search an Array or String to find the index of the last occurrence of a specified item or substring.",
1477
1411
  "arguments": [
1478
1412
  {
1479
- "name": "Dividend",
1413
+ "name": "Array",
1480
1414
  "formula": {
1481
1415
  "type": "value",
1482
- "value": 1
1416
+ "value": ""
1483
1417
  },
1484
- "description": "The number to be divided.",
1418
+ "description": "The value to search.",
1485
1419
  "type": {
1486
- "type": "Number"
1420
+ "type": "Array \\| String"
1487
1421
  }
1488
1422
  },
1489
1423
  {
1490
- "name": "Divider",
1424
+ "name": "Item",
1491
1425
  "formula": {
1492
1426
  "type": "value",
1493
- "value": 1
1427
+ "value": ""
1494
1428
  },
1495
- "description": "The number to divide by.",
1429
+ "description": "The item or substring to search for.",
1496
1430
  "type": {
1497
- "type": "Number"
1431
+ "type": "Any"
1498
1432
  }
1499
1433
  }
1500
1434
  ],
1501
1435
  "output": {
1502
- "description": "The remainder when the Dividend is divided by the Divider.",
1436
+ "description": "If the item or substring exists in the Array, the last index of that item is returned. If the item is not found, -1 is returned.",
1503
1437
  "type": {
1504
1438
  "type": "Number"
1505
1439
  }
@@ -1539,58 +1473,148 @@
1539
1473
  }
1540
1474
  }
1541
1475
  },
1542
- "@toddle/every": {
1543
- "name": "Every",
1544
- "description": "Run a formula returns for all items in an Array.",
1476
+ "@toddle/max": {
1477
+ "name": "Max",
1478
+ "description": "Find the largest Number from a list of inputs.",
1545
1479
  "arguments": [
1546
1480
  {
1547
- "name": "Array",
1481
+ "name": "0",
1548
1482
  "formula": {
1549
1483
  "type": "value",
1550
1484
  "value": null
1551
1485
  },
1552
- "description": "The array of items to evaluate.",
1486
+ "description": "Input Number.",
1553
1487
  "type": {
1554
- "type": "Array"
1488
+ "type": "Number"
1555
1489
  }
1556
1490
  },
1557
1491
  {
1558
- "name": "Formula",
1559
- "isFunction": true,
1492
+ "name": "1",
1560
1493
  "formula": {
1561
- "type": "path",
1562
- "path": [
1563
- "Args",
1564
- "item"
1565
- ]
1494
+ "type": "value",
1495
+ "value": null
1566
1496
  },
1567
- "description": "Predicate formula for evaluating each item.",
1497
+ "description": "Input Number.",
1568
1498
  "type": {
1569
- "type": "Formula"
1499
+ "type": "Number"
1500
+ }
1501
+ }
1502
+ ],
1503
+ "variableArguments": true,
1504
+ "output": {
1505
+ "description": "The largest of the input Numbers.",
1506
+ "type": {
1507
+ "type": "Number"
1508
+ }
1509
+ }
1510
+ },
1511
+ "@toddle/squareRoot": {
1512
+ "name": "Square root",
1513
+ "description": "Get the square root of a Number.",
1514
+ "arguments": [
1515
+ {
1516
+ "name": "Number",
1517
+ "formula": {
1518
+ "type": "value",
1519
+ "value": 1
1520
+ },
1521
+ "description": "The input Number.",
1522
+ "type": {
1523
+ "type": "Number"
1524
+ }
1525
+ }
1526
+ ],
1527
+ "output": {
1528
+ "description": "The square root of the input Number.",
1529
+ "type": {
1530
+ "type": "Number"
1531
+ }
1532
+ }
1533
+ },
1534
+ "@toddle/getFromSessionStorage": {
1535
+ "name": "Get from Session Storage",
1536
+ "description": "Read a value from session storage with the provided key.",
1537
+ "cache": false,
1538
+ "arguments": [
1539
+ {
1540
+ "name": "Key",
1541
+ "formula": {
1542
+ "type": "value",
1543
+ "value": null
1544
+ },
1545
+ "description": "The key to read from session storage.",
1546
+ "type": {
1547
+ "type": "String"
1548
+ }
1549
+ }
1550
+ ],
1551
+ "output": {
1552
+ "description": "The value found in session storage.",
1553
+ "type": {
1554
+ "type": "Any"
1555
+ }
1556
+ }
1557
+ },
1558
+ "@toddle/absolute": {
1559
+ "name": "Absolute",
1560
+ "description": "Get the absolute value of a Number.",
1561
+ "arguments": [
1562
+ {
1563
+ "name": "Value",
1564
+ "formula": {
1565
+ "type": "value",
1566
+ "value": -1
1567
+ },
1568
+ "type": {
1569
+ "type": "Number"
1570
+ },
1571
+ "description": "The input Number."
1572
+ }
1573
+ ],
1574
+ "output": {
1575
+ "description": "The absolute value of the input.",
1576
+ "type": {
1577
+ "type": "Number"
1578
+ }
1579
+ }
1580
+ },
1581
+ "@toddle/minus": {
1582
+ "name": "Minus",
1583
+ "description": "Subtract a Number from a Number.",
1584
+ "arguments": [
1585
+ {
1586
+ "name": "Minuend",
1587
+ "formula": {
1588
+ "type": "value",
1589
+ "value": 1
1590
+ },
1591
+ "description": "The number to subtract from.",
1592
+ "type": {
1593
+ "type": "Number"
1594
+ }
1595
+ },
1596
+ {
1597
+ "name": "Substrahend",
1598
+ "formula": {
1599
+ "type": "value",
1600
+ "value": 1
1601
+ },
1602
+ "description": "The number to subtract.",
1603
+ "type": {
1604
+ "type": "Number"
1570
1605
  }
1571
1606
  }
1572
1607
  ],
1573
1608
  "output": {
1574
- "description": "Returns True if the predicate formula returns true for all items in the Array, otherwise False.",
1575
- "type": {
1576
- "type": "Array"
1577
- }
1578
- }
1579
- },
1580
- "@toddle/isServer": {
1581
- "name": "Is Server",
1582
- "description": "Get information about whether formulas are currently evaluated server-side or client-side.",
1583
- "arguments": [],
1584
- "output": {
1585
- "description": "Returns True if formulas are evaluated server-side, and False if formulas are evaluated client-side.",
1609
+ "description": "The result of subtracting the Substrahend from the Minuend.",
1586
1610
  "type": {
1587
- "type": "Boolean"
1611
+ "type": "Number"
1588
1612
  }
1589
1613
  }
1590
1614
  },
1591
- "@toddle/groupBy": {
1592
- "name": "Group by",
1593
- "description": "Group an Array of items into an Object based on a grouping formula.",
1615
+ "@toddle/keyBy": {
1616
+ "name": "Key by",
1617
+ "description": "Organize an Array of items into an Object based on a Key formula.",
1594
1618
  "arguments": [
1595
1619
  {
1596
1620
  "name": "Array",
@@ -1598,7 +1622,7 @@
1598
1622
  "type": "value",
1599
1623
  "value": null
1600
1624
  },
1601
- "description": "Array of items to be grouped.",
1625
+ "description": "Array of items.",
1602
1626
  "type": {
1603
1627
  "type": "Array"
1604
1628
  }
@@ -1610,174 +1634,177 @@
1610
1634
  "type": "value",
1611
1635
  "value": null
1612
1636
  },
1613
- "description": "The grouping formula used to group the items. The String returned from the formula will match the key in the output Oject.",
1637
+ "description": "The key formula used to index the items. The String returned from the formula will match the key in the output Object.",
1614
1638
  "type": {
1615
1639
  "type": "Formula"
1616
1640
  }
1617
1641
  }
1618
1642
  ],
1619
1643
  "output": {
1620
- "description": "An Object where each key matches a value returned by the grouping formula, and each value is the list of items that share the return value.",
1644
+ "description": "An Object where each key matches a value returned by the key formula, and each value is the item that String was returned for.",
1621
1645
  "type": {
1622
1646
  "type": "Object"
1623
1647
  }
1624
1648
  }
1625
1649
  },
1626
- "@toddle/filter": {
1627
- "name": "Filter",
1628
- "description": "Return a new Array containing only the elements for which the provided formula evaluates to True.",
1650
+ "@toddle/power": {
1651
+ "name": "Power",
1652
+ "description": "Raise a number to a power.",
1629
1653
  "arguments": [
1630
1654
  {
1631
- "name": "Array",
1655
+ "name": "Base",
1632
1656
  "formula": {
1633
1657
  "type": "value",
1634
- "value": null
1658
+ "value": 3
1635
1659
  },
1636
- "description": "The array of items to be filtered.",
1660
+ "description": "The number to be raised to the exponent.",
1637
1661
  "type": {
1638
- "type": "Array"
1662
+ "type": "Number"
1639
1663
  }
1640
1664
  },
1641
1665
  {
1642
- "name": "Formula",
1643
- "isFunction": true,
1666
+ "name": "Exponent",
1644
1667
  "formula": {
1645
- "type": "path",
1646
- "path": [
1647
- "Args",
1648
- "item"
1649
- ]
1668
+ "type": "value",
1669
+ "value": 2
1650
1670
  },
1651
- "description": "Predicate formula for filtering items.",
1671
+ "description": "The exponent to raise the base to.",
1652
1672
  "type": {
1653
- "type": "Formula"
1673
+ "type": "Number"
1654
1674
  }
1655
1675
  }
1656
1676
  ],
1657
1677
  "output": {
1658
- "description": "New Array containing only the items for which the Formula evaluated to True.",
1659
- "type": {
1660
- "type": "Array"
1661
- }
1662
- }
1663
- },
1664
- "@toddle/randomNumber": {
1665
- "name": "Random number",
1666
- "description": "return a random Number between 0 and 1.",
1667
- "arguments": [],
1668
- "cache": false,
1669
- "output": {
1670
- "description": "A random Number between 0 and 1.",
1671
1678
  "type": {
1672
1679
  "type": "Number"
1673
- }
1674
- }
1675
- },
1676
- "@toddle/currentURL": {
1677
- "name": "Current URL",
1678
- "description": "Return the current URL of the browser. Use the \"Parse URL\" formula for working with the URL.",
1679
- "arguments": [],
1680
- "cache": false,
1681
- "output": {
1682
- "description": "The browser's current URL.",
1683
- "type": {
1684
- "type": "String"
1685
- }
1680
+ },
1681
+ "description": "The result of raising the base to the exponent."
1686
1682
  }
1687
1683
  },
1688
- "@toddle/some": {
1689
- "name": "Some",
1690
- "description": "Run a formula on all items of an Array to determine if any item matches a set of conditions.",
1684
+ "@toddle/greaterThan": {
1685
+ "name": "Greater than",
1686
+ "description": "Compute if a value is larger than another value.",
1691
1687
  "arguments": [
1692
1688
  {
1693
- "name": "Array",
1689
+ "name": "First",
1694
1690
  "formula": {
1695
1691
  "type": "value",
1696
- "value": null
1692
+ "value": ""
1697
1693
  },
1698
- "description": "The Array of items to evaluate.",
1694
+ "description": "First value to be compared.",
1699
1695
  "type": {
1700
- "type": "Array"
1696
+ "type": "Number"
1701
1697
  }
1702
1698
  },
1703
1699
  {
1704
- "name": "Formula",
1705
- "isFunction": true,
1700
+ "name": "Second",
1706
1701
  "formula": {
1707
- "type": "path",
1708
- "path": [
1709
- "Args",
1710
- "item"
1711
- ]
1702
+ "type": "value",
1703
+ "value": ""
1712
1704
  },
1713
- "description": "Predicate formula for evaluating each item.",
1705
+ "description": "Second value to be compared.",
1714
1706
  "type": {
1715
- "type": "Formula"
1707
+ "type": "Number"
1716
1708
  }
1717
1709
  }
1718
1710
  ],
1719
1711
  "output": {
1720
- "description": "Returns True if the predicate formula returns True for any items in the Array, otherwise False.",
1712
+ "description": "Returns True if the first Number is larger than the second Number.",
1721
1713
  "type": {
1722
1714
  "type": "Boolean"
1723
1715
  }
1724
1716
  }
1725
1717
  },
1726
- "@toddle/lastIndexOf": {
1727
- "name": "Last Index of",
1728
- "description": "Search an Array or String to find the index of the last occurrence of a specified item or substring.",
1718
+ "@toddle/append": {
1719
+ "name": "Append",
1720
+ "description": "Add an element to the end of an Array.",
1729
1721
  "arguments": [
1730
1722
  {
1731
1723
  "name": "Array",
1732
- "formula": {
1733
- "type": "value",
1734
- "value": ""
1735
- },
1736
- "description": "The value to search.",
1737
1724
  "type": {
1738
- "type": "Array \\| String"
1725
+ "type": "Array"
1726
+ },
1727
+ "description": "The Array to append to.",
1728
+ "formula": {
1729
+ "type": "array",
1730
+ "arguments": []
1739
1731
  }
1740
1732
  },
1741
1733
  {
1742
1734
  "name": "Item",
1743
- "formula": {
1744
- "type": "value",
1745
- "value": ""
1746
- },
1747
- "description": "The item or substring to search for.",
1748
1735
  "type": {
1749
1736
  "type": "Any"
1737
+ },
1738
+ "description": "The item to append to the Array.",
1739
+ "formula": {
1740
+ "type": "value",
1741
+ "value": "Item"
1750
1742
  }
1751
1743
  }
1752
1744
  ],
1753
1745
  "output": {
1754
- "description": "If the item or substring exists in the Array, the last index of that item is returned. If the item is not found, -1 is returned.",
1746
+ "description": "A new Array containing all elements from the input Array, including the new item.",
1755
1747
  "type": {
1756
- "type": "Number"
1748
+ "type": "Array"
1757
1749
  }
1758
1750
  }
1759
1751
  },
1760
- "@toddle/reverse": {
1761
- "name": "Reverse",
1762
- "description": "Reverse the order of an Array.",
1752
+ "@toddle/encodeBase64": {
1753
+ "name": "Encode to base64",
1763
1754
  "arguments": [
1764
1755
  {
1765
- "name": "Array",
1756
+ "name": "Value",
1766
1757
  "formula": {
1767
1758
  "type": "value",
1768
- "value": null
1759
+ "value": "Input value"
1769
1760
  },
1770
- "description": "The Array to be reversed.",
1771
1761
  "type": {
1772
- "type": "Array"
1773
- }
1762
+ "type": "String"
1763
+ },
1764
+ "description": "The input string to be encoded."
1774
1765
  }
1775
1766
  ],
1767
+ "description": "Encode a string to base64.",
1776
1768
  "output": {
1769
+ "description": "The base 64 encoded string.",
1777
1770
  "type": {
1778
- "type": "Array"
1771
+ "type": "String"
1772
+ }
1773
+ }
1774
+ },
1775
+ "@toddle/add": {
1776
+ "name": "Add",
1777
+ "arguments": [
1778
+ {
1779
+ "name": "0",
1780
+ "description": "Number to be added.",
1781
+ "type": {
1782
+ "type": "Number"
1783
+ },
1784
+ "formula": {
1785
+ "type": "value",
1786
+ "value": 1
1787
+ }
1779
1788
  },
1780
- "description": "The reversed Array."
1789
+ {
1790
+ "name": "1",
1791
+ "type": {
1792
+ "type": "Number"
1793
+ },
1794
+ "description": "Number to be added.",
1795
+ "formula": {
1796
+ "type": "value",
1797
+ "value": 1
1798
+ }
1799
+ }
1800
+ ],
1801
+ "variableArguments": true,
1802
+ "description": "Get the sum of multiple numbers.",
1803
+ "output": {
1804
+ "description": "The sum of all the input numbers.",
1805
+ "type": {
1806
+ "type": "Number"
1807
+ }
1781
1808
  }
1782
1809
  },
1783
1810
  "@toddle/multiply": {
@@ -1815,47 +1842,85 @@
1815
1842
  }
1816
1843
  }
1817
1844
  },
1818
- "@toddle/indexOf": {
1819
- "name": "Index of",
1820
- "description": "Find the index of a specific item in an Array or String.",
1845
+ "@toddle/drop": {
1846
+ "name": "Drop",
1847
+ "description": "Remove items from the beginning of an Array or String.",
1821
1848
  "arguments": [
1822
1849
  {
1823
1850
  "name": "Array",
1824
1851
  "formula": {
1825
1852
  "type": "value",
1826
- "value": ""
1853
+ "value": null
1827
1854
  },
1828
- "description": "The value to search.",
1855
+ "description": "The input value.",
1829
1856
  "type": {
1830
1857
  "type": "Array \\| String"
1831
1858
  }
1832
1859
  },
1833
1860
  {
1834
- "name": "Item",
1861
+ "name": "Count",
1862
+ "description": "Number of items to remove.",
1863
+ "type": {
1864
+ "type": "Number"
1865
+ },
1835
1866
  "formula": {
1836
1867
  "type": "value",
1837
- "value": ""
1868
+ "value": 1
1869
+ }
1870
+ }
1871
+ ],
1872
+ "output": {
1873
+ "description": "A copy of the list without the first items.",
1874
+ "type": {
1875
+ "type": "Array \\| String"
1876
+ }
1877
+ }
1878
+ },
1879
+ "@toddle/some": {
1880
+ "name": "Some",
1881
+ "description": "Run a formula on all items of an Array to determine if any item matches a set of conditions.",
1882
+ "arguments": [
1883
+ {
1884
+ "name": "Array",
1885
+ "formula": {
1886
+ "type": "value",
1887
+ "value": null
1838
1888
  },
1839
- "description": "The items to search for.",
1889
+ "description": "The Array of items to evaluate.",
1840
1890
  "type": {
1841
- "type": "Any"
1891
+ "type": "Array"
1892
+ }
1893
+ },
1894
+ {
1895
+ "name": "Formula",
1896
+ "isFunction": true,
1897
+ "formula": {
1898
+ "type": "path",
1899
+ "path": [
1900
+ "Args",
1901
+ "item"
1902
+ ]
1903
+ },
1904
+ "description": "Predicate formula for evaluating each item.",
1905
+ "type": {
1906
+ "type": "Formula"
1842
1907
  }
1843
1908
  }
1844
1909
  ],
1845
1910
  "output": {
1846
- "description": "If the item exists in the Array, the index of that item is returned. If the item is not found, -1 is returned.",
1911
+ "description": "Returns True if the predicate formula returns True for any items in the Array, otherwise False.",
1847
1912
  "type": {
1848
- "type": "Number"
1913
+ "type": "Boolean"
1849
1914
  }
1850
1915
  }
1851
1916
  },
1852
- "@toddle/roundUp": {
1853
- "name": "Round up",
1854
- "description": "Round a Number up to the nearest decimal point.",
1917
+ "@toddle/round": {
1918
+ "name": "Round",
1919
+ "description": "Round a Number to the nearest decimal point.",
1855
1920
  "arguments": [
1856
1921
  {
1857
1922
  "name": "Input",
1858
- "description": "Number to round up.",
1923
+ "description": "Number to round.",
1859
1924
  "type": {
1860
1925
  "type": "Number"
1861
1926
  },
@@ -1883,169 +1948,135 @@
1883
1948
  "description": "The rounded Number."
1884
1949
  }
1885
1950
  },
1886
- "@toddle/timestamp": {
1887
- "name": "Timestamp",
1888
- "description": "Get the timestamp from a Date, e.g. 1633462980000.",
1951
+ "@toddle/roundDown": {
1952
+ "name": "Round down",
1953
+ "description": "Round a Number down to the nearest decimal point.",
1889
1954
  "arguments": [
1890
1955
  {
1891
- "name": "Date",
1892
- "description": "The date to get the timestamp from.",
1956
+ "name": "Input",
1957
+ "description": "Number to round down.",
1893
1958
  "type": {
1894
- "type": "Date"
1959
+ "type": "Number"
1895
1960
  },
1896
1961
  "formula": {
1897
1962
  "type": "value",
1898
- "value": null
1963
+ "value": 1
1964
+ }
1965
+ },
1966
+ {
1967
+ "name": "Decimals",
1968
+ "description": "Number of decimals to round to.",
1969
+ "type": {
1970
+ "type": "Number"
1971
+ },
1972
+ "formula": {
1973
+ "type": "value",
1974
+ "value": 0
1899
1975
  }
1900
1976
  }
1901
1977
  ],
1902
1978
  "output": {
1903
- "description": "The timestamp from the date input.",
1904
1979
  "type": {
1905
1980
  "type": "Number"
1906
- }
1981
+ },
1982
+ "description": "The rounded Number."
1907
1983
  }
1908
1984
  },
1909
- "@toddle/absolute": {
1910
- "name": "Absolute",
1911
- "description": "Get the absolute value of a Number.",
1985
+ "@toddle/not": {
1986
+ "name": "Not",
1987
+ "description": "Get the Boolean opposite of an input value.",
1912
1988
  "arguments": [
1913
1989
  {
1914
- "name": "Value",
1990
+ "name": "Input",
1915
1991
  "formula": {
1916
1992
  "type": "value",
1917
- "value": -1
1993
+ "value": true
1918
1994
  },
1995
+ "description": "The input value.",
1919
1996
  "type": {
1920
- "type": "Number"
1921
- },
1922
- "description": "The input Number."
1997
+ "type": "Boolean"
1998
+ }
1923
1999
  }
1924
2000
  ],
1925
2001
  "output": {
1926
- "description": "The absolute value of the input.",
2002
+ "description": "Returns True if the input value is False, and False if the input value is True.",
1927
2003
  "type": {
1928
- "type": "Number"
2004
+ "type": "Boolean"
1929
2005
  }
1930
2006
  }
1931
2007
  },
1932
- "@toddle/min": {
1933
- "name": "Min",
1934
- "description": "Find the smallest Number from a list of inputs.",
2008
+ "@toddle/trim": {
2009
+ "name": "Trim",
2010
+ "description": "Remove any leading and trailing white spaces from a String.",
1935
2011
  "arguments": [
1936
2012
  {
1937
- "name": "0",
1938
- "formula": {
1939
- "type": "value",
1940
- "value": null
1941
- },
1942
- "description": "Input number",
1943
- "type": {
1944
- "type": "Number"
1945
- }
1946
- },
1947
- {
1948
- "name": "1",
2013
+ "name": "String",
1949
2014
  "formula": {
1950
2015
  "type": "value",
1951
- "value": null
2016
+ "value": ""
1952
2017
  },
1953
- "description": "Input number",
2018
+ "description": "The String to trim.",
1954
2019
  "type": {
1955
- "type": "Number"
2020
+ "type": "String"
1956
2021
  }
1957
2022
  }
1958
2023
  ],
1959
- "variableArguments": true,
1960
2024
  "output": {
1961
- "description": "The smallest of the input Numbers.",
2025
+ "description": "The trimmed String.",
1962
2026
  "type": {
1963
- "type": "Number"
2027
+ "type": "String"
1964
2028
  }
1965
2029
  }
1966
2030
  },
1967
- "@toddle/clamp": {
1968
- "name": "Clamp",
1969
- "description": "Limit a value to a specified Min and Max value.",
2031
+ "@toddle/concatenate": {
2032
+ "name": "Concatenate",
2033
+ "description": "Concatenate two or more values.",
1970
2034
  "arguments": [
1971
2035
  {
1972
- "name": "Value",
1973
- "type": {
1974
- "type": "Number"
1975
- },
2036
+ "name": "0",
1976
2037
  "formula": {
1977
2038
  "type": "value",
1978
- "value": null
1979
- },
1980
- "description": "Number to round."
1981
- },
1982
- {
1983
- "name": "Min",
1984
- "type": {
1985
- "type": "Number"
2039
+ "value": ""
1986
2040
  },
1987
- "description": "The smallest allowed Number.",
1988
- "formula": {
1989
- "type": "value",
1990
- "value": 0
1991
- }
1992
- },
1993
- {
1994
- "name": "Max",
1995
2041
  "type": {
1996
- "type": "Number"
1997
- },
1998
- "description": "The largest allowed Number.",
1999
- "formula": {
2000
- "type": "value",
2001
- "value": 100
2042
+ "type": "Array \\| String"
2002
2043
  }
2003
2044
  }
2004
2045
  ],
2046
+ "variableArguments": true,
2005
2047
  "output": {
2006
2048
  "type": {
2007
- "type": "Number"
2049
+ "type": "Array \\| String"
2008
2050
  },
2009
- "description": "Returns the input value if between the specified Min and Max. Otherwise, it returns the Min or Max value."
2051
+ "description": "Returns a String or Array containing all the specified input values."
2010
2052
  }
2011
2053
  },
2012
- "@toddle/lessThan": {
2013
- "name": "Less than",
2014
- "description": "Compute if a value is smaller than another value.",
2054
+ "@toddle/logarithm": {
2055
+ "name": "Logarithm",
2056
+ "description": "Return the logarithm of a Number.",
2015
2057
  "arguments": [
2016
2058
  {
2017
- "name": "First",
2018
- "formula": {
2019
- "type": "value",
2020
- "value": ""
2021
- },
2022
- "description": "First Number to be compared.",
2023
- "type": {
2024
- "type": "Number"
2025
- }
2026
- },
2027
- {
2028
- "name": "Second",
2059
+ "name": "Number",
2029
2060
  "formula": {
2030
2061
  "type": "value",
2031
- "value": ""
2062
+ "value": 1
2032
2063
  },
2033
- "description": "Second Number to be compared.",
2064
+ "description": "A Number greater than or equal to 0.",
2034
2065
  "type": {
2035
2066
  "type": "Number"
2036
2067
  }
2037
2068
  }
2038
2069
  ],
2039
2070
  "output": {
2040
- "description": "Returns True if the First Number is smaller than the second Number, otherwise it returns False.",
2041
2071
  "type": {
2042
- "type": "Boolean"
2043
- }
2072
+ "type": "Number"
2073
+ },
2074
+ "description": "The natural logarithm of the Number."
2044
2075
  }
2045
2076
  },
2046
- "@toddle/keyBy": {
2047
- "name": "Key by",
2048
- "description": "Organize an Array of items into an Object based on a Key formula.",
2077
+ "@toddle/findLast": {
2078
+ "name": "Find Last",
2079
+ "description": "Search through an Array of items and apply a formula to each item, to return the last item where the formula returns True.",
2049
2080
  "arguments": [
2050
2081
  {
2051
2082
  "name": "Array",
@@ -2053,7 +2084,7 @@
2053
2084
  "type": "value",
2054
2085
  "value": null
2055
2086
  },
2056
- "description": "Array of items.",
2087
+ "description": "The array to search.",
2057
2088
  "type": {
2058
2089
  "type": "Array"
2059
2090
  }
@@ -2062,168 +2093,178 @@
2062
2093
  "name": "Formula",
2063
2094
  "isFunction": true,
2064
2095
  "formula": {
2065
- "type": "value",
2066
- "value": null
2096
+ "type": "path",
2097
+ "path": [
2098
+ "Args",
2099
+ "item"
2100
+ ]
2067
2101
  },
2068
- "description": "The key formula used to index the items. The String returned from the formula will match the key in the output Object.",
2102
+ "description": "The predicate formula that each item in the Array is passed to.",
2069
2103
  "type": {
2070
2104
  "type": "Formula"
2071
2105
  }
2072
2106
  }
2073
2107
  ],
2074
2108
  "output": {
2075
- "description": "An Object where each key matches a value returned by the key formula, and each value is the item that String was returned for.",
2109
+ "description": "The last item in the Array where the formula returns True. Returns Null if the predicate formula did not return True for any item.",
2076
2110
  "type": {
2077
- "type": "Object"
2111
+ "type": "Any"
2078
2112
  }
2079
2113
  }
2080
2114
  },
2081
- "@toddle/round": {
2082
- "name": "Round",
2083
- "description": "Round a Number to the nearest decimal point.",
2115
+ "@toddle/indexOf": {
2116
+ "name": "Index of",
2117
+ "description": "Find the index of a specific item in an Array or String.",
2084
2118
  "arguments": [
2085
2119
  {
2086
- "name": "Input",
2087
- "description": "Number to round.",
2088
- "type": {
2089
- "type": "Number"
2090
- },
2120
+ "name": "Array",
2091
2121
  "formula": {
2092
2122
  "type": "value",
2093
- "value": 1
2123
+ "value": ""
2124
+ },
2125
+ "description": "The value to search.",
2126
+ "type": {
2127
+ "type": "Array \\| String"
2094
2128
  }
2095
2129
  },
2096
2130
  {
2097
- "name": "Decimals",
2098
- "description": "Number of decimals to round to.",
2099
- "type": {
2100
- "type": "Number"
2101
- },
2131
+ "name": "Item",
2102
2132
  "formula": {
2103
2133
  "type": "value",
2104
- "value": 0
2134
+ "value": ""
2135
+ },
2136
+ "description": "The items to search for.",
2137
+ "type": {
2138
+ "type": "Any"
2105
2139
  }
2106
2140
  }
2107
2141
  ],
2108
2142
  "output": {
2143
+ "description": "If the item exists in the Array, the index of that item is returned. If the item is not found, -1 is returned.",
2109
2144
  "type": {
2110
2145
  "type": "Number"
2111
- },
2112
- "description": "The rounded Number."
2146
+ }
2113
2147
  }
2114
2148
  },
2115
- "@toddle/range": {
2116
- "name": "Range",
2117
- "description": "Create an Array of numbers between a Min and Max value.",
2149
+ "@toddle/get": {
2150
+ "name": "Get",
2151
+ "description": "Extract a value from an Object, Array or String at the specified path.",
2118
2152
  "arguments": [
2119
2153
  {
2154
+ "name": "Object",
2120
2155
  "formula": {
2121
2156
  "type": "value",
2122
- "value": 0
2157
+ "value": null
2123
2158
  },
2124
- "name": "Min",
2125
- "description": "The smallest value in the list.",
2159
+ "description": "The Object, Array or String you want to extract an item from.",
2126
2160
  "type": {
2127
- "type": "Number"
2161
+ "type": "Array \\| Object \\| String"
2128
2162
  }
2129
2163
  },
2130
2164
  {
2131
- "name": "Max",
2165
+ "name": "Path",
2132
2166
  "formula": {
2133
2167
  "type": "value",
2134
- "value": 10
2168
+ "value": "Item"
2135
2169
  },
2136
- "description": "The largest value in the list.",
2170
+ "description": "The Path can be either a Number, a String, or an Array.",
2137
2171
  "type": {
2138
- "type": "Number"
2172
+ "type": "Array<String> \\| Number \\| String"
2139
2173
  }
2140
2174
  }
2141
2175
  ],
2142
2176
  "output": {
2143
- "description": "An Array containing all the numbers between Min and Max, inclusive.",
2177
+ "description": "The value found at the Path. If no value is found, this value of the output is Null.",
2144
2178
  "type": {
2145
- "type": "Array"
2179
+ "type": "Any"
2146
2180
  }
2147
2181
  }
2148
2182
  },
2149
- "@toddle/flatten": {
2150
- "name": "Flatten",
2151
- "description": "Flatten a nested Array.",
2183
+ "@toddle/lessThan": {
2184
+ "name": "Less than",
2185
+ "description": "Compute if a value is smaller than another value.",
2152
2186
  "arguments": [
2153
2187
  {
2154
- "name": "Array",
2155
- "description": "An Array containing one or more Arrays.",
2156
- "type": {
2157
- "type": "Array"
2188
+ "name": "First",
2189
+ "formula": {
2190
+ "type": "value",
2191
+ "value": ""
2158
2192
  },
2193
+ "description": "First Number to be compared.",
2194
+ "type": {
2195
+ "type": "Number"
2196
+ }
2197
+ },
2198
+ {
2199
+ "name": "Second",
2159
2200
  "formula": {
2160
- "type": "array",
2161
- "arguments": []
2201
+ "type": "value",
2202
+ "value": ""
2203
+ },
2204
+ "description": "Second Number to be compared.",
2205
+ "type": {
2206
+ "type": "Number"
2162
2207
  }
2163
2208
  }
2164
2209
  ],
2165
2210
  "output": {
2166
- "description": "A flattened Array where all items in the original array are concatenated.",
2211
+ "description": "Returns True if the First Number is smaller than the second Number, otherwise it returns False.",
2167
2212
  "type": {
2168
- "type": "Array"
2213
+ "type": "Boolean"
2169
2214
  }
2170
2215
  }
2171
2216
  },
2172
- "@toddle/findLast": {
2173
- "name": "Find Last",
2174
- "description": "Search through an Array of items and apply a formula to each item, to return the last item where the formula returns True.",
2217
+ "@toddle/includes": {
2218
+ "name": "Includes",
2219
+ "description": "Test if an Array or String includes a specific item or value.",
2175
2220
  "arguments": [
2176
2221
  {
2177
2222
  "name": "Array",
2178
2223
  "formula": {
2179
2224
  "type": "value",
2180
- "value": null
2225
+ "value": ""
2181
2226
  },
2182
- "description": "The array to search.",
2227
+ "description": "The value to search.",
2183
2228
  "type": {
2184
- "type": "Array"
2229
+ "type": "Array \\| String"
2185
2230
  }
2186
2231
  },
2187
2232
  {
2188
- "name": "Formula",
2189
- "isFunction": true,
2233
+ "name": "Item",
2190
2234
  "formula": {
2191
- "type": "path",
2192
- "path": [
2193
- "Args",
2194
- "item"
2195
- ]
2235
+ "type": "value",
2236
+ "value": ""
2196
2237
  },
2197
- "description": "The predicate formula that each item in the Array is passed to.",
2238
+ "description": "The item or value to search for.",
2198
2239
  "type": {
2199
- "type": "Formula"
2240
+ "type": "Any"
2200
2241
  }
2201
2242
  }
2202
2243
  ],
2203
2244
  "output": {
2204
- "description": "The last item in the Array where the formula returns True. Returns Null if the predicate formula did not return True for any item.",
2245
+ "description": "Returns True if the item or value exists in the Array or string. Returns False if no match is found.",
2205
2246
  "type": {
2206
- "type": "Any"
2247
+ "type": "Boolean"
2207
2248
  }
2208
2249
  }
2209
2250
  },
2210
- "@toddle/formatDate": {
2211
- "name": "Format Date",
2251
+ "@toddle/formatNumber": {
2252
+ "name": "Format Number",
2212
2253
  "arguments": [
2213
2254
  {
2214
- "name": "Date",
2215
- "description": "Date to format",
2255
+ "name": "Input",
2256
+ "description": "Number to format.",
2216
2257
  "type": {
2217
- "type": "Date"
2258
+ "type": "Number"
2218
2259
  },
2219
2260
  "formula": {
2220
- "type": "Date",
2221
- "value": null
2261
+ "type": "Number",
2262
+ "value": 100
2222
2263
  }
2223
2264
  },
2224
2265
  {
2225
2266
  "name": "Locale(s)",
2226
- "description": "Optional locale to use for formatting the Date, e.g. \"en\" or \"fr\". Multiple locales can be provided (as an Array of Strings) to provide a fallback locale. The default value is the runtime's locale.",
2267
+ "description": "Optional locale to use for formatting the Number, e.g. \"en\" or \"fr\". Multiple locales can be provided (as an Array of Strings) to provide a fallback locale. The default value is the runtime's locale.",
2227
2268
  "type": {
2228
2269
  "type": "Array \\| String"
2229
2270
  },
@@ -2234,7 +2275,7 @@
2234
2275
  },
2235
2276
  {
2236
2277
  "name": "Options",
2237
- "description": "Optional Object for configuring the formatting of the output. See the [DateTimeFormat syntax on MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#syntax).",
2278
+ "description": "Optional Object for configuring the formatting of the output. See the [NumberFormat locale options on MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#locale_options).",
2238
2279
  "type": {
2239
2280
  "type": "Object"
2240
2281
  },
@@ -2244,188 +2285,158 @@
2244
2285
  }
2245
2286
  }
2246
2287
  ],
2247
- "description": "Format a date using the Intl.DateTimeFormat API. See the [DateTimeFormat docs on MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat).",
2288
+ "description": "Format a Number using the Intl.NumberFormat API. See the [NumberFormat docs on MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat).",
2248
2289
  "output": {
2249
- "description": "The Date input formatted as a String.",
2290
+ "description": "The Number input formatted as a String.",
2250
2291
  "type": {
2251
2292
  "type": "String"
2252
2293
  }
2253
2294
  }
2254
2295
  },
2255
- "@toddle/minus": {
2256
- "name": "Minus",
2257
- "description": "Subtract a Number from a Number.",
2296
+ "@toddle/find": {
2297
+ "name": "Find",
2298
+ "description": "Search through an Array of items and apply a formula to each item, to return the first item where the provided formula returns True.",
2258
2299
  "arguments": [
2259
2300
  {
2260
- "name": "Minuend",
2301
+ "name": "Array",
2261
2302
  "formula": {
2262
2303
  "type": "value",
2263
- "value": 1
2304
+ "value": null
2264
2305
  },
2265
- "description": "The number to subtract from.",
2306
+ "description": "The array to search through",
2266
2307
  "type": {
2267
- "type": "Number"
2308
+ "type": "Array"
2268
2309
  }
2269
2310
  },
2270
2311
  {
2271
- "name": "Substrahend",
2312
+ "name": "Formula",
2313
+ "isFunction": true,
2272
2314
  "formula": {
2273
- "type": "value",
2274
- "value": 1
2315
+ "type": "path",
2316
+ "path": [
2317
+ "Args",
2318
+ "item"
2319
+ ]
2275
2320
  },
2276
- "description": "The number to subtract.",
2321
+ "description": "The predicate formula that each item in the array is passed to.",
2277
2322
  "type": {
2278
- "type": "Number"
2323
+ "type": "Formula"
2279
2324
  }
2280
2325
  }
2281
2326
  ],
2282
2327
  "output": {
2283
- "description": "The result of subtracting the Substrahend from the Minuend.",
2328
+ "description": "The first item in the Array where the formula returns True. Returns Null if the predicate formula did not return True for any item.",
2284
2329
  "type": {
2285
- "type": "Number"
2330
+ "type": "Any"
2286
2331
  }
2287
2332
  }
2288
2333
  },
2289
- "@toddle/roundDown": {
2290
- "name": "Round down",
2291
- "description": "Round a Number down to the nearest decimal point.",
2334
+ "@toddle/min": {
2335
+ "name": "Min",
2336
+ "description": "Find the smallest Number from a list of inputs.",
2292
2337
  "arguments": [
2293
2338
  {
2294
- "name": "Input",
2295
- "description": "Number to round down.",
2296
- "type": {
2297
- "type": "Number"
2298
- },
2339
+ "name": "0",
2299
2340
  "formula": {
2300
2341
  "type": "value",
2301
- "value": 1
2342
+ "value": null
2343
+ },
2344
+ "description": "Input number",
2345
+ "type": {
2346
+ "type": "Number"
2302
2347
  }
2303
2348
  },
2304
2349
  {
2305
- "name": "Decimals",
2306
- "description": "Number of decimals to round to.",
2307
- "type": {
2308
- "type": "Number"
2309
- },
2350
+ "name": "1",
2310
2351
  "formula": {
2311
2352
  "type": "value",
2312
- "value": 0
2353
+ "value": null
2354
+ },
2355
+ "description": "Input number",
2356
+ "type": {
2357
+ "type": "Number"
2313
2358
  }
2314
2359
  }
2315
2360
  ],
2361
+ "variableArguments": true,
2316
2362
  "output": {
2363
+ "description": "The smallest of the input Numbers.",
2317
2364
  "type": {
2318
2365
  "type": "Number"
2319
- },
2320
- "description": "The rounded Number."
2366
+ }
2321
2367
  }
2322
2368
  },
2323
- "@toddle/equals": {
2324
- "name": "Equals",
2325
- "description": "Compute if values are identical.",
2369
+ "@toddle/set": {
2370
+ "name": "Set",
2371
+ "description": "Set a value in an Object or Array based on a specified path.",
2326
2372
  "arguments": [
2327
2373
  {
2328
- "name": "First",
2374
+ "name": "Object",
2329
2375
  "formula": {
2330
2376
  "type": "value",
2331
- "value": ""
2377
+ "value": null
2332
2378
  },
2333
- "description": "First Value",
2379
+ "description": "The input Object.",
2334
2380
  "type": {
2335
- "type": "Any"
2381
+ "type": "Object"
2336
2382
  }
2337
2383
  },
2338
2384
  {
2339
- "name": "Second",
2385
+ "name": "Path",
2340
2386
  "formula": {
2341
2387
  "type": "value",
2342
- "value": ""
2388
+ "value": "Key"
2343
2389
  },
2344
- "description": "Second Value",
2390
+ "description": "The Path can be either a Number, a String or an Array of Strings.",
2345
2391
  "type": {
2346
- "type": "Any"
2392
+ "type": "Array \\| Number \\| String"
2347
2393
  }
2348
- }
2349
- ],
2350
- "output": {
2351
- "description": "Returns True if the input values are identical, otherwise False.",
2352
- "type": {
2353
- "type": "Boolean"
2354
- }
2355
- }
2356
- },
2357
- "@toddle/defaultTo": {
2358
- "name": "Default to",
2359
- "description": "Return the first value that is not False or Null.",
2360
- "arguments": [
2394
+ },
2361
2395
  {
2362
- "name": "0",
2396
+ "name": "Value",
2363
2397
  "formula": {
2364
2398
  "type": "value",
2365
- "value": null
2399
+ "value": "Item"
2366
2400
  },
2367
- "description": "The inital value.",
2368
- "type": {
2369
- "type": "Any"
2370
- }
2371
- },
2372
- {
2373
- "name": "1",
2374
- "description": "The first fallback value to be used if the primary value is Null or False.",
2401
+ "description": "The value to set.",
2375
2402
  "type": {
2376
2403
  "type": "Any"
2377
- },
2378
- "formula": {
2379
- "type": "value",
2380
- "value": "default"
2381
2404
  }
2382
2405
  }
2383
2406
  ],
2384
- "variableArguments": true,
2385
2407
  "output": {
2386
- "description": "Returns the first value that is not False or Null. Returns Null if no valid values is given.",
2408
+ "description": "The input Object with the new field.",
2387
2409
  "type": {
2388
- "type": "Any"
2410
+ "type": "Object"
2389
2411
  }
2390
2412
  }
2391
2413
  },
2392
- "@toddle/get": {
2393
- "name": "Get",
2394
- "description": "Extract a value from an Object, Array or String at the specified path.",
2414
+ "@toddle/parseJSON": {
2415
+ "name": "Parse JSON",
2416
+ "description": "Parse a String to JSON.",
2395
2417
  "arguments": [
2396
2418
  {
2397
- "name": "Object",
2419
+ "name": "JSON string",
2398
2420
  "formula": {
2399
2421
  "type": "value",
2400
2422
  "value": null
2401
2423
  },
2402
- "description": "The Object, Array or String you want to extract an item from.",
2403
- "type": {
2404
- "type": "Array \\| Object \\| String"
2405
- }
2406
- },
2407
- {
2408
- "name": "Path",
2409
- "formula": {
2410
- "type": "value",
2411
- "value": "Item"
2412
- },
2413
- "description": "The Path can be either a Number, a String, or an Array.",
2424
+ "description": "The String to be parsed.",
2414
2425
  "type": {
2415
- "type": "Array<String> \\| Number \\| String"
2426
+ "type": "String"
2416
2427
  }
2417
2428
  }
2418
2429
  ],
2419
2430
  "output": {
2420
- "description": "The value found at the Path. If no value is found, this value of the output is Null.",
2431
+ "description": "The parsed JSON value. If the input is not a valid String, this returns Null.",
2421
2432
  "type": {
2422
2433
  "type": "Any"
2423
2434
  }
2424
2435
  }
2425
2436
  },
2426
- "@toddle/getCookie": {
2427
- "name": "Get Cookie",
2428
- "description": "Get the value of a cookie by name. This formula is available both server-side and client-side. Http-Only cookies will only be available server-side.",
2437
+ "@toddle/getHttpOnlyCookie": {
2438
+ "name": "Get Http-Only Cookie",
2439
+ "description": "Get the value of an Http-Only cookie by name. This formula will is only intended to be used server-side for SSR/proxied API requests to read Http-Only cookies.",
2429
2440
  "arguments": [
2430
2441
  {
2431
2442
  "name": "Cookie name",
@@ -2433,261 +2444,250 @@
2433
2444
  "type": "value",
2434
2445
  "value": null
2435
2446
  },
2436
- "description": "The name of the cookie you want to get the value of.",
2447
+ "description": "The name of the Http-Only cookie you want to get the value of.",
2437
2448
  "type": {
2438
2449
  "type": "String"
2439
2450
  }
2440
2451
  }
2441
2452
  ],
2442
2453
  "output": {
2443
- "description": "The value of the cookie. If a value is not found, this return value will be Null.",
2454
+ "description": "The value of the cookie. If no cookie is found, this will return Null. If you use this formula client-side, it will return a placeholder template string.",
2444
2455
  "type": {
2445
2456
  "type": "String"
2446
2457
  }
2447
2458
  }
2448
2459
  },
2449
- "@toddle/add": {
2450
- "name": "Add",
2460
+ "@toddle/boolean": {
2461
+ "name": "Boolean",
2462
+ "description": "Convert a value of any type to a Boolean.",
2451
2463
  "arguments": [
2452
2464
  {
2453
- "name": "0",
2454
- "description": "Number to be added.",
2465
+ "name": "Input",
2466
+ "description": "Value of any type.",
2455
2467
  "type": {
2456
- "type": "Number"
2468
+ "type": "Any"
2457
2469
  },
2458
2470
  "formula": {
2459
2471
  "type": "value",
2460
- "value": 1
2472
+ "value": "1"
2461
2473
  }
2462
- },
2474
+ }
2475
+ ],
2476
+ "output": {
2477
+ "description": "The input value converted to a Boolean. False and Null will return False, all other values will return True.",
2478
+ "type": {
2479
+ "type": "Boolean"
2480
+ }
2481
+ }
2482
+ },
2483
+ "@toddle/dateFromTimestamp": {
2484
+ "name": "Date From Timestamp",
2485
+ "arguments": [
2463
2486
  {
2464
- "name": "1",
2487
+ "name": "Timestamp",
2488
+ "description": "A Number in milliseconds since 1st January, 1970 (EPOCH).",
2465
2489
  "type": {
2466
2490
  "type": "Number"
2467
2491
  },
2468
- "description": "Number to be added.",
2469
2492
  "formula": {
2470
2493
  "type": "value",
2471
- "value": 1
2494
+ "value": 1687787245933
2472
2495
  }
2473
2496
  }
2474
2497
  ],
2475
- "variableArguments": true,
2476
- "description": "Get the sum of multiple numbers.",
2498
+ "description": "Convert a timestamp (milliseconds) to a Date.",
2477
2499
  "output": {
2478
- "description": "The sum of all the input numbers.",
2500
+ "description": "The input value converted to a Date.",
2479
2501
  "type": {
2480
- "type": "Number"
2502
+ "type": "Date"
2481
2503
  }
2482
2504
  }
2483
2505
  },
2484
- "@toddle/getFromSessionStorage": {
2485
- "name": "Get from Session Storage",
2486
- "description": "Read a value from session storage with the provided key.",
2506
+ "@toddle/getElementById": {
2507
+ "name": "Get element by id",
2508
+ "description": "Return a DOM element with a given id.",
2487
2509
  "cache": false,
2488
2510
  "arguments": [
2489
2511
  {
2490
- "name": "Key",
2512
+ "name": "Id",
2491
2513
  "formula": {
2492
2514
  "type": "value",
2493
- "value": null
2515
+ "value": "element-id"
2494
2516
  },
2495
- "description": "The key to read from session storage.",
2496
2517
  "type": {
2497
2518
  "type": "String"
2498
- }
2519
+ },
2520
+ "description": "The id of the DOM element to return."
2499
2521
  }
2500
2522
  ],
2501
2523
  "output": {
2502
- "description": "The value found in session storage.",
2524
+ "description": "The DOM element with the given id. If no DOM element is found, this will return Null.",
2503
2525
  "type": {
2504
- "type": "Any"
2526
+ "type": "Element"
2505
2527
  }
2506
2528
  }
2507
2529
  },
2508
- "@toddle/shuffle": {
2509
- "name": "Shuffle",
2510
- "description": "Shuffle items in an Array or String.",
2511
- "cache": false,
2530
+ "@toddle/entries": {
2531
+ "name": "Entries",
2532
+ "description": "Get an Array of entries from a given Object.",
2512
2533
  "arguments": [
2513
2534
  {
2514
- "name": "Array",
2535
+ "name": "Object",
2515
2536
  "formula": {
2516
2537
  "type": "value",
2517
2538
  "value": null
2518
2539
  },
2519
- "description": "The input value.",
2540
+ "description": "Input record",
2520
2541
  "type": {
2521
- "type": "Array \\| String"
2542
+ "type": "Object"
2522
2543
  }
2523
2544
  }
2524
2545
  ],
2525
2546
  "output": {
2526
- "description": "The shuffled Array or String.",
2547
+ "description": "Returns an Array of entries for the given input record. The entries are Objects with a “Key” and “Value” property.",
2527
2548
  "type": {
2528
- "type": "Array \\| String"
2549
+ "type": "Array"
2529
2550
  }
2530
2551
  }
2531
2552
  },
2532
- "@toddle/split": {
2533
- "name": "Split",
2534
- "description": "Split a String into an Array of smaller strings each time a delimiter occurs. The delimiter will not be part of the output",
2553
+ "@toddle/json": {
2554
+ "name": "JSON",
2555
+ "description": "Convert a value into a JSON String.",
2535
2556
  "arguments": [
2536
2557
  {
2537
2558
  "name": "Input",
2538
2559
  "formula": {
2539
2560
  "type": "value",
2540
- "value": ""
2561
+ "value": null
2541
2562
  },
2542
- "description": "The String to split.",
2563
+ "description": "The input value.",
2543
2564
  "type": {
2544
- "type": "String"
2565
+ "type": "Any"
2545
2566
  }
2546
2567
  },
2547
2568
  {
2548
- "name": "Delimiter",
2569
+ "name": "Indentation",
2549
2570
  "formula": {
2550
2571
  "type": "value",
2551
- "value": ""
2572
+ "value": 0
2552
2573
  },
2553
- "description": "The string to split by.",
2574
+ "description": "The number of spaces used for indentation in the JSON String.",
2554
2575
  "type": {
2555
- "type": "String"
2576
+ "type": "Number"
2556
2577
  }
2557
2578
  }
2558
2579
  ],
2559
2580
  "output": {
2560
- "description": "An array of Strings.",
2581
+ "description": "The JSON String.",
2561
2582
  "type": {
2562
- "type": "Array",
2563
- "ofType": {
2564
- "type": "String"
2565
- }
2583
+ "type": "String"
2566
2584
  }
2567
2585
  }
2568
2586
  },
2569
- "@toddle/startsWith": {
2570
- "name": "Starts with",
2571
- "description": "Check if a String has a given prefix.",
2587
+ "@toddle/first": {
2588
+ "name": "First",
2589
+ "description": "Return the first item in an Array.",
2572
2590
  "arguments": [
2573
2591
  {
2574
- "name": "String",
2592
+ "name": "Array",
2575
2593
  "formula": {
2576
2594
  "type": "value",
2577
- "value": ""
2595
+ "value": []
2578
2596
  },
2579
- "description": "The String to check.",
2580
2597
  "type": {
2581
- "type": "String"
2582
- }
2583
- },
2584
- {
2585
- "name": "Prefix",
2586
- "formula": {
2587
- "type": "value",
2588
- "value": ""
2598
+ "type": "Array"
2589
2599
  },
2590
- "description": "The prefix to check for.",
2591
- "type": {
2592
- "type": "String"
2593
- }
2600
+ "description": "An Array of items."
2594
2601
  }
2595
2602
  ],
2596
2603
  "output": {
2597
- "description": "Returns True if the input String starts with the prefix, otherwise False",
2604
+ "description": "The first item in the Array.",
2598
2605
  "type": {
2599
- "type": "Boolean"
2606
+ "type": "Any"
2600
2607
  }
2601
2608
  }
2602
2609
  },
2603
- "@toddle/includes": {
2604
- "name": "Includes",
2605
- "description": "Test if an Array or String includes a specific item or value.",
2610
+ "@toddle/map": {
2611
+ "name": "Map",
2612
+ "description": "Run a formula on each item of an Array to return a new Array.",
2606
2613
  "arguments": [
2607
2614
  {
2608
2615
  "name": "Array",
2609
2616
  "formula": {
2610
2617
  "type": "value",
2611
- "value": ""
2618
+ "value": null
2612
2619
  },
2613
- "description": "The value to search.",
2620
+ "description": "The Array of items.",
2614
2621
  "type": {
2615
- "type": "Array \\| String"
2622
+ "type": "Array"
2616
2623
  }
2617
2624
  },
2618
2625
  {
2619
- "name": "Item",
2626
+ "name": "Formula",
2627
+ "isFunction": true,
2620
2628
  "formula": {
2621
- "type": "value",
2622
- "value": ""
2629
+ "type": "path",
2630
+ "path": [
2631
+ "Args",
2632
+ "item"
2633
+ ]
2623
2634
  },
2624
- "description": "The item or value to search for.",
2635
+ "description": "The formula to run on each item of the Array.",
2625
2636
  "type": {
2626
- "type": "Any"
2637
+ "type": "Formula"
2627
2638
  }
2628
2639
  }
2629
2640
  ],
2630
2641
  "output": {
2631
- "description": "Returns True if the item or value exists in the Array or string. Returns False if no match is found.",
2642
+ "description": "A new Array containing all the values returned from running the provided formula on each item in the provided input Array.",
2632
2643
  "type": {
2633
- "type": "Boolean"
2644
+ "type": "Array"
2634
2645
  }
2635
2646
  }
2636
2647
  },
2637
- "@toddle/capitalize": {
2638
- "name": "Capitalize",
2639
- "description": "Capitalize a string: make the first letter uppercase whilst keeping the rest lowercase.",
2640
- "arguments": [
2641
- {
2642
- "name": "String",
2643
- "formula": {
2644
- "type": "value",
2645
- "value": "string"
2646
- },
2647
- "description": "An input String.",
2648
- "type": {
2649
- "type": "String"
2650
- }
2651
- }
2652
- ],
2648
+ "@toddle/now": {
2649
+ "name": "Now",
2650
+ "description": "Get a Date representing \"Now\"",
2651
+ "arguments": [],
2652
+ "cache": false,
2653
2653
  "output": {
2654
- "description": "The capitalized String.",
2654
+ "description": "A Date object initialized at the current date/time.",
2655
2655
  "type": {
2656
- "type": "String"
2656
+ "type": "Date"
2657
2657
  }
2658
2658
  }
2659
2659
  },
2660
- "@toddle/divide": {
2661
- "name": "Divide",
2662
- "description": "Perform a division calculation.",
2660
+ "@toddle/startsWith": {
2661
+ "name": "Starts with",
2662
+ "description": "Check if a String has a given prefix.",
2663
2663
  "arguments": [
2664
2664
  {
2665
- "name": "Dividend",
2666
- "description": "The number to be divided.",
2667
- "type": {
2668
- "type": "Number"
2669
- },
2665
+ "name": "String",
2670
2666
  "formula": {
2671
2667
  "type": "value",
2672
- "value": 1
2668
+ "value": ""
2669
+ },
2670
+ "description": "The String to check.",
2671
+ "type": {
2672
+ "type": "String"
2673
2673
  }
2674
2674
  },
2675
2675
  {
2676
- "name": "Divisor",
2677
- "description": "The number to divide by.",
2678
- "type": {
2679
- "type": "Number"
2680
- },
2676
+ "name": "Prefix",
2681
2677
  "formula": {
2682
2678
  "type": "value",
2683
- "value": 1
2679
+ "value": ""
2680
+ },
2681
+ "description": "The prefix to check for.",
2682
+ "type": {
2683
+ "type": "String"
2684
2684
  }
2685
2685
  }
2686
2686
  ],
2687
2687
  "output": {
2688
- "description": "The result of dividing the dividend with the divisor.",
2688
+ "description": "Returns True if the input String starts with the prefix, otherwise False",
2689
2689
  "type": {
2690
- "type": "Number"
2690
+ "type": "Boolean"
2691
2691
  }
2692
2692
  }
2693
2693
  },
@@ -2728,68 +2728,149 @@
2728
2728
  "value": null
2729
2729
  }
2730
2730
  }
2731
- ]
2731
+ ]
2732
+ },
2733
+ "@toddle/fromEntries": {
2734
+ "name": "From entries",
2735
+ "description": "Transform an Array of key-value pairs into an Object. This formula is the reverse of Entries.",
2736
+ "arguments": [
2737
+ {
2738
+ "name": "Array",
2739
+ "formula": {
2740
+ "type": "value",
2741
+ "value": null
2742
+ },
2743
+ "description": "An Array of Objects. Each Object should have a `key` and `value` property named `key` and `value` respectively e.g. `[{ key: 'yourKey', value: 'yourValue' }]`.",
2744
+ "type": {
2745
+ "type": "Array"
2746
+ }
2747
+ }
2748
+ ],
2749
+ "output": {
2750
+ "description": "An Object containing all entries from the input Array in the format `{yourKey: yourValue}`.",
2751
+ "type": {
2752
+ "type": "Object"
2753
+ }
2754
+ }
2755
+ },
2756
+ "@toddle/uppercase": {
2757
+ "name": "Uppercase",
2758
+ "description": "Convert a String to uppercase.",
2759
+ "arguments": [
2760
+ {
2761
+ "name": "String",
2762
+ "formula": {
2763
+ "type": "value",
2764
+ "value": "string"
2765
+ },
2766
+ "description": "Input String.",
2767
+ "type": {
2768
+ "type": "String"
2769
+ }
2770
+ }
2771
+ ],
2772
+ "output": {
2773
+ "description": "The input String with all characters converted to uppercase.",
2774
+ "type": {
2775
+ "type": "String"
2776
+ }
2777
+ }
2778
+ },
2779
+ "@toddle/sum": {
2780
+ "name": "Sum",
2781
+ "description": "Return the sum of an Array of numbers",
2782
+ "arguments": [
2783
+ {
2784
+ "name": "Array",
2785
+ "type": {
2786
+ "type": "Array"
2787
+ },
2788
+ "description": "The array of numbers to sum.",
2789
+ "formula": {
2790
+ "type": "array",
2791
+ "arguments": []
2792
+ }
2793
+ }
2794
+ ],
2795
+ "output": {
2796
+ "description": "The total sum from adding all the numbers in the Array.",
2797
+ "type": {
2798
+ "type": "Number"
2799
+ }
2800
+ }
2732
2801
  },
2733
- "@toddle/unique": {
2734
- "name": "Unique",
2735
- "description": "Remove duplicate values from an Array.",
2802
+ "@toddle/decodeURIComponent": {
2803
+ "name": "Decode URI Component",
2804
+ "description": "Decode a URI component that was previously encoded with the Encode URI Component formula.",
2736
2805
  "arguments": [
2737
2806
  {
2738
- "name": "Array",
2807
+ "name": "EncodedURI",
2739
2808
  "formula": {
2740
2809
  "type": "value",
2741
- "value": []
2810
+ "value": null
2742
2811
  },
2743
2812
  "type": {
2744
- "type": "Array"
2813
+ "type": "String"
2745
2814
  },
2746
- "description": "The input Array."
2815
+ "description": "The encoded URI to decode."
2747
2816
  }
2748
2817
  ],
2749
2818
  "output": {
2750
- "description": "The input Array with all duplicate values removed.",
2819
+ "description": "The decoded URI component.",
2751
2820
  "type": {
2752
- "type": "Array"
2821
+ "type": "String"
2753
2822
  }
2754
2823
  }
2755
2824
  },
2756
- "@toddle/greaterThan": {
2757
- "name": "Greater than",
2758
- "description": "Compute if a value is larger than another value.",
2825
+ "@toddle/reduce": {
2826
+ "name": "Reduce",
2827
+ "description": "Reduce a group of items to a single value by applying each item to a reducer formula.",
2759
2828
  "arguments": [
2760
2829
  {
2761
- "name": "First",
2830
+ "name": "Array",
2762
2831
  "formula": {
2763
2832
  "type": "value",
2764
- "value": ""
2833
+ "value": null
2765
2834
  },
2766
- "description": "First value to be compared.",
2835
+ "description": "The Array or Object of items to be reduced.",
2767
2836
  "type": {
2768
- "type": "Number"
2837
+ "type": "Array \\| Object"
2769
2838
  }
2770
2839
  },
2771
2840
  {
2772
- "name": "Second",
2841
+ "name": "Formula",
2842
+ "isFunction": true,
2773
2843
  "formula": {
2774
2844
  "type": "value",
2775
- "value": ""
2845
+ "value": null
2776
2846
  },
2777
- "description": "Second value to be compared.",
2847
+ "description": "The reducer formula. Each item in the Array is applied to the formula along with the accumulator. The result of this formula will be a new accumulator used for the next item.",
2778
2848
  "type": {
2779
- "type": "Number"
2849
+ "type": "Formula"
2850
+ }
2851
+ },
2852
+ {
2853
+ "name": "Accumulator",
2854
+ "formula": {
2855
+ "type": "value",
2856
+ "value": null
2857
+ },
2858
+ "description": "The initial value of the accumulator. This value is passed to the reducer formula along with the first item in the Array, and the result is used as the accumulator for the next item.",
2859
+ "type": {
2860
+ "type": "Any"
2780
2861
  }
2781
2862
  }
2782
2863
  ],
2783
2864
  "output": {
2784
- "description": "Returns True if the first Number is larger than the second Number.",
2865
+ "description": "The value returned from applying the last item to the reducer formula.",
2785
2866
  "type": {
2786
- "type": "Boolean"
2867
+ "type": "Any"
2787
2868
  }
2788
2869
  }
2789
2870
  },
2790
- "@toddle/notEqual": {
2791
- "name": "Not equal",
2792
- "description": "Compute if values are not identical.",
2871
+ "@toddle/equals": {
2872
+ "name": "Equals",
2873
+ "description": "Compute if values are identical.",
2793
2874
  "arguments": [
2794
2875
  {
2795
2876
  "name": "First",
@@ -2797,7 +2878,7 @@
2797
2878
  "type": "value",
2798
2879
  "value": ""
2799
2880
  },
2800
- "description": "First value.",
2881
+ "description": "First Value",
2801
2882
  "type": {
2802
2883
  "type": "Any"
2803
2884
  }
@@ -2808,109 +2889,139 @@
2808
2889
  "type": "value",
2809
2890
  "value": ""
2810
2891
  },
2811
- "description": "Second value.",
2892
+ "description": "Second Value",
2812
2893
  "type": {
2813
2894
  "type": "Any"
2814
2895
  }
2815
2896
  }
2816
2897
  ],
2817
2898
  "output": {
2818
- "description": "Returns True if the values are not identical, otherwise False.",
2899
+ "description": "Returns True if the input values are identical, otherwise False.",
2819
2900
  "type": {
2820
- "type": "Any"
2901
+ "type": "Boolean"
2821
2902
  }
2822
2903
  }
2823
- },
2824
- "@toddle/drop": {
2825
- "name": "Drop",
2826
- "description": "Remove items from the beginning of an Array or String.",
2904
+ }
2905
+ };
2906
+ export const actions = {
2907
+ "@toddle/share": {
2908
+ "name": "Share",
2909
+ "description": "Share data with title, text, and/or URL using the Navigator.share API.",
2827
2910
  "arguments": [
2828
2911
  {
2829
- "name": "Array",
2912
+ "name": "URL",
2913
+ "description": "The URL to share.",
2914
+ "type": {
2915
+ "type": "String"
2916
+ },
2830
2917
  "formula": {
2831
2918
  "type": "value",
2832
2919
  "value": null
2833
- },
2834
- "description": "The input value.",
2920
+ }
2921
+ },
2922
+ {
2923
+ "name": "Title",
2924
+ "description": "The title to share.",
2835
2925
  "type": {
2836
- "type": "Array \\| String"
2926
+ "type": "String"
2927
+ },
2928
+ "formula": {
2929
+ "type": "value",
2930
+ "value": null
2837
2931
  }
2838
2932
  },
2839
2933
  {
2840
- "name": "Count",
2841
- "description": "Number of items to remove.",
2934
+ "name": "Text",
2935
+ "description": "The text to share.",
2842
2936
  "type": {
2843
- "type": "Number"
2937
+ "type": "String"
2844
2938
  },
2845
2939
  "formula": {
2846
2940
  "type": "value",
2847
- "value": 1
2941
+ "value": null
2848
2942
  }
2849
2943
  }
2850
- ],
2851
- "output": {
2852
- "description": "A copy of the list without the first items.",
2853
- "type": {
2854
- "type": "Array \\| String"
2855
- }
2856
- }
2944
+ ]
2857
2945
  },
2858
- "@toddle/decodeBase64": {
2859
- "name": "Decode base64",
2946
+ "@toddle/deleteFromLocalStorage": {
2947
+ "name": "Delete from Local Storage",
2948
+ "description": "Delete a value from local storage (if found) based on the provided key.",
2860
2949
  "arguments": [
2861
2950
  {
2862
- "name": "Base64 value",
2863
- "formula": {
2864
- "type": "value",
2865
- "value": "Input value"
2866
- },
2951
+ "name": "Key",
2952
+ "description": "The key in local storage to delete.",
2867
2953
  "type": {
2868
2954
  "type": "String"
2869
2955
  },
2870
- "description": "The input data encoded as base64."
2871
- }
2872
- ],
2873
- "description": "Deocde a base64 string to utf-8.",
2874
- "output": {
2875
- "description": "The decoded string.",
2876
- "type": {
2877
- "type": "String"
2956
+ "formula": {
2957
+ "type": "value",
2958
+ "value": ""
2959
+ }
2878
2960
  }
2879
- }
2961
+ ]
2880
2962
  },
2881
- "@toddle/getFromLocalStorage": {
2882
- "name": "Get from Local Storage",
2883
- "description": "Read a value from local storage with the provided key.",
2884
- "cache": false,
2963
+ "@toddle/focus": {
2964
+ "name": "Focus",
2965
+ "description": "Move focus to a DOM element.",
2885
2966
  "arguments": [
2886
2967
  {
2887
- "name": "Key",
2968
+ "name": "Element",
2969
+ "description": "The DOM element that should receive focus.",
2970
+ "type": {
2971
+ "type": "Element"
2972
+ },
2888
2973
  "formula": {
2889
- "type": "value",
2974
+ "type": "Element",
2890
2975
  "value": null
2891
- },
2892
- "description": "The key to read from local storage.",
2976
+ }
2977
+ }
2978
+ ]
2979
+ },
2980
+ "@toddle/setSessionCookies": {
2981
+ "name": "Set session cookies",
2982
+ "description": "Save authentication tokens as session cookies.",
2983
+ "arguments": [
2984
+ {
2985
+ "name": "Access token",
2986
+ "description": "Access tokens are the most common way to authenticate with a server.",
2893
2987
  "type": {
2894
2988
  "type": "String"
2989
+ },
2990
+ "formula": {
2991
+ "type": "value",
2992
+ "value": ""
2993
+ }
2994
+ },
2995
+ {
2996
+ "name": "Expires in",
2997
+ "description": "(Optional) Time in seconds until the token expires. Defaults to 3600 (1 hour). This should be left blank for JWTs.",
2998
+ "type": {
2999
+ "type": "Number"
3000
+ },
3001
+ "formula": {
3002
+ "type": "value",
3003
+ "value": ""
2895
3004
  }
2896
3005
  }
2897
3006
  ],
2898
- "output": {
2899
- "description": "The value found in local storage. If no value is found, this will return Null.",
2900
- "type": {
2901
- "type": "Any"
3007
+ "events": {
3008
+ "Success": {
3009
+ "description": "This event is triggered once the tokens have been saved.",
3010
+ "actions": []
3011
+ },
3012
+ "Error": {
3013
+ "description": "This event is triggered if Nordcraft is unable to set the session cookies.",
3014
+ "actions": []
2902
3015
  }
2903
3016
  }
2904
- }
2905
- };
2906
- export const actions = {
2907
- "@toddle/saveToLocalStorage": {
2908
- "name": "Save to Local Storage",
2909
- "description": "Save a provided key/value to local storage by JSON encoding the value.",
3017
+ },
3018
+ "@toddle/saveToSessionStorage": {
3019
+ "name": "Save to Session Storage",
3020
+ "description": "Save a provided key/value to session storage by JSON encoding the value.",
2910
3021
  "arguments": [
2911
3022
  {
2912
3023
  "name": "Key",
2913
- "description": "The key to be used in local storage.",
3024
+ "description": "The key to be used in session storage.",
2914
3025
  "type": {
2915
3026
  "type": "String"
2916
3027
  },
@@ -2921,7 +3032,7 @@
2921
3032
  },
2922
3033
  {
2923
3034
  "name": "Value",
2924
- "description": "The value that should be saved in local storage. This can be anything that is serializable (String, Number, Boolean, Array or Object).",
3035
+ "description": "The value that should be saved in session storage. This can be anything that is serializable (String, Number, Boolean, Array or Object).",
2925
3036
  "type": {
2926
3037
  "type": "Any"
2927
3038
  },
@@ -2930,7 +3041,51 @@
2930
3041
  "value": null
2931
3042
  }
2932
3043
  }
2933
- ]
3044
+ ]
3045
+ },
3046
+ "@toddle/deleteFromSessionStorage": {
3047
+ "name": "Delete from Session Storage",
3048
+ "description": "Delete a value from session storage (if found) based on the provided key.",
3049
+ "arguments": [
3050
+ {
3051
+ "name": "Key",
3052
+ "description": "The key in session storage to delete.",
3053
+ "type": {
3054
+ "type": "String"
3055
+ },
3056
+ "formula": {
3057
+ "type": "value",
3058
+ "value": ""
3059
+ }
3060
+ }
3061
+ ]
3062
+ },
3063
+ "@toddle/interval": {
3064
+ "name": "Interval",
3065
+ "description": "Run an action every \"delay\" milliseconds.",
3066
+ "arguments": [
3067
+ {
3068
+ "name": "Interval in milliseconds",
3069
+ "description": "The interval \"delay\".",
3070
+ "type": {
3071
+ "type": "Number"
3072
+ },
3073
+ "formula": {
3074
+ "type": "value",
3075
+ "value": 1000
3076
+ }
3077
+ }
3078
+ ],
3079
+ "events": {
3080
+ "tick": {
3081
+ "actions": []
3082
+ }
3083
+ }
3084
+ },
3085
+ "@toddle/clearLocalStorage": {
3086
+ "name": "Clear Local Storage",
3087
+ "description": "Delete all values in local storage.",
3088
+ "arguments": []
2934
3089
  },
2935
3090
  "@toddle/setHttpOnlyCookie": {
2936
3091
  "name": "Set Http-Only Cookie",
@@ -3019,96 +3174,6 @@
3019
3174
  "description": "Delete all values in session storage.",
3020
3175
  "arguments": []
3021
3176
  },
3022
- "@toddle/saveToSessionStorage": {
3023
- "name": "Save to Session Storage",
3024
- "description": "Save a provided key/value to session storage by JSON encoding the value.",
3025
- "arguments": [
3026
- {
3027
- "name": "Key",
3028
- "description": "The key to be used in session storage.",
3029
- "type": {
3030
- "type": "String"
3031
- },
3032
- "formula": {
3033
- "type": "value",
3034
- "value": ""
3035
- }
3036
- },
3037
- {
3038
- "name": "Value",
3039
- "description": "The value that should be saved in session storage. This can be anything that is serializable (String, Number, Boolean, Array or Object).",
3040
- "type": {
3041
- "type": "Any"
3042
- },
3043
- "formula": {
3044
- "type": "value",
3045
- "value": null
3046
- }
3047
- }
3048
- ]
3049
- },
3050
- "@toddle/gotToURL": {
3051
- "name": "Go to URL",
3052
- "description": "Navigate to a specified URL.",
3053
- "arguments": [
3054
- {
3055
- "name": "URL",
3056
- "description": "The URL to navigate to.",
3057
- "type": {
3058
- "type": "String"
3059
- },
3060
- "formula": {
3061
- "type": "value",
3062
- "value": "https://example.com"
3063
- }
3064
- }
3065
- ]
3066
- },
3067
- "@toddle/preventDefault": {
3068
- "name": "Prevent default",
3069
- "docs-link": "https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault",
3070
- "description": "Prevent default browser behavior for this event.",
3071
- "arguments": []
3072
- },
3073
- "@toddle/sleep": {
3074
- "name": "Sleep",
3075
- "description": "Run an action after a delay.",
3076
- "arguments": [
3077
- {
3078
- "name": "Delay in milliseconds",
3079
- "description": "The number of milliseconds to wait before an action is executed.",
3080
- "type": {
3081
- "type": "Number"
3082
- },
3083
- "formula": {
3084
- "type": "value",
3085
- "value": 500
3086
- }
3087
- }
3088
- ],
3089
- "events": {
3090
- "tick": {
3091
- "actions": []
3092
- }
3093
- }
3094
- },
3095
- "@toddle/focus": {
3096
- "name": "Focus",
3097
- "description": "Move focus to a DOM element.",
3098
- "arguments": [
3099
- {
3100
- "name": "Element",
3101
- "description": "The DOM element that should receive focus.",
3102
- "type": {
3103
- "type": "Element"
3104
- },
3105
- "formula": {
3106
- "type": "Element",
3107
- "value": null
3108
- }
3109
- }
3110
- ]
3111
- },
3112
3177
  "@toddle/setCookie": {
3113
3178
  "name": "Set Cookie",
3114
3179
  "description": "Save a key/value pair as a non-http-only cookie (readable on the client). Useful for storing user preferences.",
@@ -3191,11 +3256,6 @@
3191
3256
  }
3192
3257
  }
3193
3258
  },
3194
- "@toddle/clearLocalStorage": {
3195
- "name": "Clear Local Storage",
3196
- "description": "Delete all values in local storage.",
3197
- "arguments": []
3198
- },
3199
3259
  "@toddle/copyToClipboard": {
3200
3260
  "name": "Copy to clipboard",
3201
3261
  "description": "Copy contents to the clipboard.",
@@ -3213,96 +3273,50 @@
3213
3273
  }
3214
3274
  ]
3215
3275
  },
3216
- "@toddle/interval": {
3217
- "name": "Interval",
3218
- "description": "Run an action every \"delay\" milliseconds.",
3219
- "arguments": [
3220
- {
3221
- "name": "Interval in milliseconds",
3222
- "description": "The interval \"delay\".",
3223
- "type": {
3224
- "type": "Number"
3225
- },
3226
- "formula": {
3227
- "type": "value",
3228
- "value": 1000
3229
- }
3230
- }
3231
- ],
3232
- "events": {
3233
- "tick": {
3234
- "actions": []
3235
- }
3236
- }
3237
- },
3238
3276
  "@toddle/stopPropagation": {
3239
3277
  "name": "Stop propagation",
3240
3278
  "docs-link": "https://developer.mozilla.org/en-US/docs/Web/API/Event/stopPropagation",
3241
3279
  "description": "Stop the event from bubbling up the DOM to parent elements.",
3242
3280
  "arguments": []
3243
3281
  },
3244
- "@toddle/deleteFromLocalStorage": {
3245
- "name": "Delete from Local Storage",
3246
- "description": "Delete a value from local storage (if found) based on the provided key.",
3247
- "arguments": [
3248
- {
3249
- "name": "Key",
3250
- "description": "The key in local storage to delete.",
3251
- "type": {
3252
- "type": "String"
3253
- },
3254
- "formula": {
3255
- "type": "value",
3256
- "value": ""
3257
- }
3258
- }
3259
- ]
3282
+ "@toddle/preventDefault": {
3283
+ "name": "Prevent default",
3284
+ "docs-link": "https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault",
3285
+ "description": "Prevent default browser behavior for this event.",
3286
+ "arguments": []
3260
3287
  },
3261
- "@toddle/setSessionCookies": {
3262
- "name": "Set session cookies",
3263
- "description": "Save authentication tokens as session cookies.",
3288
+ "@toddle/logToConsole": {
3289
+ "name": "Log to console",
3290
+ "description": "Log a message to the browser console.",
3264
3291
  "arguments": [
3265
3292
  {
3266
- "name": "Access token",
3267
- "description": "Access tokens are the most common way to authenticate with a server.",
3268
- "type": {
3269
- "type": "String"
3270
- },
3293
+ "name": "Label",
3294
+ "description": "A label for the message.",
3271
3295
  "formula": {
3272
3296
  "type": "value",
3273
3297
  "value": ""
3274
3298
  }
3275
3299
  },
3276
3300
  {
3277
- "name": "Expires in",
3278
- "description": "(Optional) Time in seconds until the token expires. Defaults to 3600 (1 hour). This should be left blank for JWTs.",
3301
+ "name": "Data",
3279
3302
  "type": {
3280
- "type": "Number"
3303
+ "type": "Any"
3281
3304
  },
3305
+ "description": "The data you want to log to the console.",
3282
3306
  "formula": {
3283
3307
  "type": "value",
3284
- "value": ""
3308
+ "value": "<Data>"
3285
3309
  }
3286
3310
  }
3287
- ],
3288
- "events": {
3289
- "Success": {
3290
- "description": "This event is triggered once the tokens have been saved.",
3291
- "actions": []
3292
- },
3293
- "Error": {
3294
- "description": "This event is triggered if Nordcraft is unable to set the session cookies.",
3295
- "actions": []
3296
- }
3297
- }
3311
+ ]
3298
3312
  },
3299
- "@toddle/deleteFromSessionStorage": {
3300
- "name": "Delete from Session Storage",
3301
- "description": "Delete a value from session storage (if found) based on the provided key.",
3313
+ "@toddle/saveToLocalStorage": {
3314
+ "name": "Save to Local Storage",
3315
+ "description": "Save a provided key/value to local storage by JSON encoding the value.",
3302
3316
  "arguments": [
3303
3317
  {
3304
3318
  "name": "Key",
3305
- "description": "The key in session storage to delete.",
3319
+ "description": "The key to be used in local storage.",
3306
3320
  "type": {
3307
3321
  "type": "String"
3308
3322
  },
@@ -3310,69 +3324,55 @@
3310
3324
  "type": "value",
3311
3325
  "value": ""
3312
3326
  }
3313
- }
3314
- ]
3315
- },
3316
- "@toddle/share": {
3317
- "name": "Share",
3318
- "description": "Share data with title, text, and/or URL using the Navigator.share API.",
3319
- "arguments": [
3320
- {
3321
- "name": "URL",
3322
- "description": "The URL to share.",
3323
- "type": {
3324
- "type": "String"
3325
- },
3326
- "formula": {
3327
- "type": "value",
3328
- "value": null
3329
- }
3330
3327
  },
3331
3328
  {
3332
- "name": "Title",
3333
- "description": "The title to share.",
3329
+ "name": "Value",
3330
+ "description": "The value that should be saved in local storage. This can be anything that is serializable (String, Number, Boolean, Array or Object).",
3334
3331
  "type": {
3335
- "type": "String"
3332
+ "type": "Any"
3336
3333
  },
3337
3334
  "formula": {
3338
3335
  "type": "value",
3339
3336
  "value": null
3340
3337
  }
3341
- },
3338
+ }
3339
+ ]
3340
+ },
3341
+ "@toddle/sleep": {
3342
+ "name": "Sleep",
3343
+ "description": "Run an action after a delay.",
3344
+ "arguments": [
3342
3345
  {
3343
- "name": "Text",
3344
- "description": "The text to share.",
3346
+ "name": "Delay in milliseconds",
3347
+ "description": "The number of milliseconds to wait before an action is executed.",
3345
3348
  "type": {
3346
- "type": "String"
3349
+ "type": "Number"
3347
3350
  },
3348
3351
  "formula": {
3349
3352
  "type": "value",
3350
- "value": null
3353
+ "value": 500
3351
3354
  }
3352
3355
  }
3353
- ]
3356
+ ],
3357
+ "events": {
3358
+ "tick": {
3359
+ "actions": []
3360
+ }
3361
+ }
3354
3362
  },
3355
- "@toddle/logToConsole": {
3356
- "name": "Log to console",
3357
- "description": "Log a message to the browser console.",
3363
+ "@toddle/gotToURL": {
3364
+ "name": "Go to URL",
3365
+ "description": "Navigate to a specified URL.",
3358
3366
  "arguments": [
3359
3367
  {
3360
- "name": "Label",
3361
- "description": "A label for the message.",
3362
- "formula": {
3363
- "type": "value",
3364
- "value": ""
3365
- }
3366
- },
3367
- {
3368
- "name": "Data",
3368
+ "name": "URL",
3369
+ "description": "The URL to navigate to.",
3369
3370
  "type": {
3370
- "type": "Any"
3371
+ "type": "String"
3371
3372
  },
3372
- "description": "The data you want to log to the console.",
3373
3373
  "formula": {
3374
3374
  "type": "value",
3375
- "value": "<Data>"
3375
+ "value": "https://example.com"
3376
3376
  }
3377
3377
  }
3378
3378
  ]