@lowdefy/docs-content 0.0.0-experimental-20260710073520

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (304) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +20 -0
  3. package/content/actions/callapi.md +66 -0
  4. package/content/actions/callmethod.md +41 -0
  5. package/content/actions/copytoclipboard.md +32 -0
  6. package/content/actions/displaymessage.md +53 -0
  7. package/content/actions/downloadcsv.md +89 -0
  8. package/content/actions/fetch.md +50 -0
  9. package/content/actions/geolocationcurrentposition.md +56 -0
  10. package/content/actions/link.md +104 -0
  11. package/content/actions/login.md +85 -0
  12. package/content/actions/logout.md +56 -0
  13. package/content/actions/pdfmake.md +304 -0
  14. package/content/actions/request.md +67 -0
  15. package/content/actions/reset.md +27 -0
  16. package/content/actions/resetvalidation.md +85 -0
  17. package/content/actions/scrollto.md +85 -0
  18. package/content/actions/setdarkmode.md +62 -0
  19. package/content/actions/setfocus.md +33 -0
  20. package/content/actions/setglobal.md +63 -0
  21. package/content/actions/setlocale.md +69 -0
  22. package/content/actions/setstate.md +70 -0
  23. package/content/actions/throw.md +72 -0
  24. package/content/actions/validate.md +87 -0
  25. package/content/actions/wait.md +24 -0
  26. package/content/agents/agent-endpoint-tools.md +190 -0
  27. package/content/agents/agent-mcp-tools.md +124 -0
  28. package/content/agents/agent-multi-agent.md +136 -0
  29. package/content/agents/agent-properties.md +174 -0
  30. package/content/agents/agent-server-hooks.md +336 -0
  31. package/content/agents/agentchat.md +515 -0
  32. package/content/agents/agentconversations.md +148 -0
  33. package/content/concepts/ai-agent-docs.md +190 -0
  34. package/content/concepts/cli.md +213 -0
  35. package/content/concepts/connections-and-requests.md +7 -0
  36. package/content/concepts/custom-html.md +3 -0
  37. package/content/concepts/custom-styling.md +161 -0
  38. package/content/concepts/events-and-actions.md +271 -0
  39. package/content/concepts/hosting-files.md +18 -0
  40. package/content/concepts/i18n.md +320 -0
  41. package/content/concepts/keyboard-shortcuts.md +218 -0
  42. package/content/concepts/layout-overview.md +478 -0
  43. package/content/concepts/lists.md +144 -0
  44. package/content/concepts/logger.md +43 -0
  45. package/content/concepts/lowdefy-schema.md +365 -0
  46. package/content/concepts/menus.md +144 -0
  47. package/content/concepts/module-authoring.md +564 -0
  48. package/content/concepts/modules.md +338 -0
  49. package/content/concepts/operators.md +45 -0
  50. package/content/concepts/overview.md +19 -0
  51. package/content/concepts/references-and-templates.md +207 -0
  52. package/content/concepts/secrets.md +24 -0
  53. package/content/concepts/selectors.md +143 -0
  54. package/content/connections/amazonredshift.md +176 -0
  55. package/content/connections/anthropic.md +232 -0
  56. package/content/connections/awss3.md +313 -0
  57. package/content/connections/azureblobstorage.md +133 -0
  58. package/content/connections/elasticsearch.md +371 -0
  59. package/content/connections/google.md +228 -0
  60. package/content/connections/googlecloudstorage.md +139 -0
  61. package/content/connections/googlesheet.md +313 -0
  62. package/content/connections/knex.md +206 -0
  63. package/content/connections/mariadb.md +177 -0
  64. package/content/connections/mcp.md +134 -0
  65. package/content/connections/mongodb.md +739 -0
  66. package/content/connections/mssql.md +191 -0
  67. package/content/connections/mysql.md +192 -0
  68. package/content/connections/openai-connection.md +228 -0
  69. package/content/connections/postgresql.md +200 -0
  70. package/content/connections/redis.md +116 -0
  71. package/content/connections/sendgridmail.md +94 -0
  72. package/content/connections/smtp.md +149 -0
  73. package/content/connections/sqlite.md +187 -0
  74. package/content/connections/stripe.md +115 -0
  75. package/content/container-blocks/affix.md +413 -0
  76. package/content/container-blocks/alert.md +937 -0
  77. package/content/container-blocks/badge.md +1222 -0
  78. package/content/container-blocks/box.md +1453 -0
  79. package/content/container-blocks/card.md +1200 -0
  80. package/content/container-blocks/carousel.md +2247 -0
  81. package/content/container-blocks/collapse.md +1335 -0
  82. package/content/container-blocks/configprovider.md +1070 -0
  83. package/content/container-blocks/confirmmodal.md +1159 -0
  84. package/content/container-blocks/content.md +597 -0
  85. package/content/container-blocks/descriptions.md +870 -0
  86. package/content/container-blocks/drawer.md +1379 -0
  87. package/content/container-blocks/dropdownmenu.md +643 -0
  88. package/content/container-blocks/flex.md +1510 -0
  89. package/content/container-blocks/footer.md +380 -0
  90. package/content/container-blocks/googlemaps.md +546 -0
  91. package/content/container-blocks/googlemapsheatmap.md +607 -0
  92. package/content/container-blocks/googlemapsscript.md +61 -0
  93. package/content/container-blocks/header.md +302 -0
  94. package/content/container-blocks/label.md +739 -0
  95. package/content/container-blocks/layout.md +604 -0
  96. package/content/container-blocks/masonry.md +1090 -0
  97. package/content/container-blocks/mobilemenu.md +1244 -0
  98. package/content/container-blocks/modal.md +1180 -0
  99. package/content/container-blocks/pageheadermenu.md +614 -0
  100. package/content/container-blocks/pagesidebarlayout.md +438 -0
  101. package/content/container-blocks/pagesidermenu.md +651 -0
  102. package/content/container-blocks/popover.md +1421 -0
  103. package/content/container-blocks/result.md +972 -0
  104. package/content/container-blocks/sider.md +1064 -0
  105. package/content/container-blocks/span.md +747 -0
  106. package/content/container-blocks/spinner.md +267 -0
  107. package/content/container-blocks/splitter.md +1735 -0
  108. package/content/container-blocks/tabs.md +1718 -0
  109. package/content/container-blocks/tooltip.md +1274 -0
  110. package/content/container-blocks/watermark.md +515 -0
  111. package/content/controls/for.md +103 -0
  112. package/content/controls/if.md +107 -0
  113. package/content/controls/log.md +50 -0
  114. package/content/controls/parallel.md +71 -0
  115. package/content/controls/parallel_for.md +36 -0
  116. package/content/controls/reject.md +56 -0
  117. package/content/controls/return.md +66 -0
  118. package/content/controls/set_state.md +98 -0
  119. package/content/controls/switch.md +90 -0
  120. package/content/controls/throw.md +79 -0
  121. package/content/controls/try.md +88 -0
  122. package/content/deployment/docker.md +149 -0
  123. package/content/deployment/node-server.md +27 -0
  124. package/content/deployment/vercel.md +101 -0
  125. package/content/display-blocks/aggrid.md +1459 -0
  126. package/content/display-blocks/anchor.md +336 -0
  127. package/content/display-blocks/avatar.md +1154 -0
  128. package/content/display-blocks/breadcrumb.md +517 -0
  129. package/content/display-blocks/button.md +758 -0
  130. package/content/display-blocks/calendar.md +156 -0
  131. package/content/display-blocks/dangeroushtml.md +314 -0
  132. package/content/display-blocks/dangerousmarkdown.md +423 -0
  133. package/content/display-blocks/diffgit.md +44 -0
  134. package/content/display-blocks/difflist.md +225 -0
  135. package/content/display-blocks/diffsidebyside.md +56 -0
  136. package/content/display-blocks/difftimeline.md +94 -0
  137. package/content/display-blocks/divider.md +406 -0
  138. package/content/display-blocks/download.md +60 -0
  139. package/content/display-blocks/dropdownbutton.md +661 -0
  140. package/content/display-blocks/echart.md +418 -0
  141. package/content/display-blocks/floatbutton.md +545 -0
  142. package/content/display-blocks/html.md +311 -0
  143. package/content/display-blocks/icon.md +717 -0
  144. package/content/display-blocks/img.md +479 -0
  145. package/content/display-blocks/markdown.md +520 -0
  146. package/content/display-blocks/markdownwithcode.md +730 -0
  147. package/content/display-blocks/menu.md +1123 -0
  148. package/content/display-blocks/message.md +941 -0
  149. package/content/display-blocks/notification.md +1410 -0
  150. package/content/display-blocks/paragraph.md +643 -0
  151. package/content/display-blocks/progress.md +818 -0
  152. package/content/display-blocks/qrcode.md +519 -0
  153. package/content/display-blocks/s3download.md +240 -0
  154. package/content/display-blocks/search.md +360 -0
  155. package/content/display-blocks/skeleton.md +272 -0
  156. package/content/display-blocks/skeletonavatar.md +222 -0
  157. package/content/display-blocks/skeletonbutton.md +245 -0
  158. package/content/display-blocks/skeletoninput.md +223 -0
  159. package/content/display-blocks/skeletonparagraph.md +201 -0
  160. package/content/display-blocks/statistic.md +485 -0
  161. package/content/display-blocks/steps.md +585 -0
  162. package/content/display-blocks/tag.md +620 -0
  163. package/content/display-blocks/title.md +654 -0
  164. package/content/display-blocks/tour.md +2359 -0
  165. package/content/input-blocks/autocomplete.md +786 -0
  166. package/content/input-blocks/buttonselector.md +964 -0
  167. package/content/input-blocks/checkboxselector.md +765 -0
  168. package/content/input-blocks/checkboxswitch.md +497 -0
  169. package/content/input-blocks/colorselector.md +884 -0
  170. package/content/input-blocks/daterangeselector.md +777 -0
  171. package/content/input-blocks/dateselector.md +693 -0
  172. package/content/input-blocks/datetimeselector.md +791 -0
  173. package/content/input-blocks/inputgallery.md +528 -0
  174. package/content/input-blocks/monthselector.md +717 -0
  175. package/content/input-blocks/multipleselector.md +1337 -0
  176. package/content/input-blocks/numberinput.md +855 -0
  177. package/content/input-blocks/pagination.md +679 -0
  178. package/content/input-blocks/paragraphinput.md +1664 -0
  179. package/content/input-blocks/passwordinput.md +480 -0
  180. package/content/input-blocks/phonenumberinput.md +688 -0
  181. package/content/input-blocks/radioselector.md +820 -0
  182. package/content/input-blocks/ratingslider.md +684 -0
  183. package/content/input-blocks/s3uploadbutton.md +384 -0
  184. package/content/input-blocks/s3uploaddragger.md +305 -0
  185. package/content/input-blocks/s3uploadphoto.md +288 -0
  186. package/content/input-blocks/segmentedselector.md +782 -0
  187. package/content/input-blocks/selector.md +1162 -0
  188. package/content/input-blocks/switch.md +552 -0
  189. package/content/input-blocks/textarea.md +714 -0
  190. package/content/input-blocks/textinput.md +639 -0
  191. package/content/input-blocks/tiptapinput.md +226 -0
  192. package/content/input-blocks/tiptapmentioninput.md +471 -0
  193. package/content/input-blocks/titleinput.md +1094 -0
  194. package/content/input-blocks/treeinput.md +144 -0
  195. package/content/input-blocks/treemultipleselector.md +162 -0
  196. package/content/input-blocks/treeselector.md +185 -0
  197. package/content/input-blocks/upload.md +149 -0
  198. package/content/input-blocks/uploaddragger.md +85 -0
  199. package/content/input-blocks/uploadphoto.md +84 -0
  200. package/content/input-blocks/weekselector.md +630 -0
  201. package/content/list-blocks/controlledlist.md +498 -0
  202. package/content/list-blocks/list.md +529 -0
  203. package/content/list-blocks/listselector.md +301 -0
  204. package/content/list-blocks/masonrylist.md +230 -0
  205. package/content/migration/upgrade-guide.md +106 -0
  206. package/content/migration/v4-to-v5.md +589 -0
  207. package/content/migration/v5-to-v6.md +36 -0
  208. package/content/operators/_actions.md +58 -0
  209. package/content/operators/_and.md +76 -0
  210. package/content/operators/_api.md +254 -0
  211. package/content/operators/_app.md +114 -0
  212. package/content/operators/_args.md +65 -0
  213. package/content/operators/_array.md +331 -0
  214. package/content/operators/_base64.md +49 -0
  215. package/content/operators/_boolean.md +33 -0
  216. package/content/operators/_build.md +166 -0
  217. package/content/operators/_change_case.md +357 -0
  218. package/content/operators/_date.md +415 -0
  219. package/content/operators/_dayjs.md +128 -0
  220. package/content/operators/_diff.md +61 -0
  221. package/content/operators/_divide.md +32 -0
  222. package/content/operators/_eq.md +52 -0
  223. package/content/operators/_event.md +86 -0
  224. package/content/operators/_function.md +52 -0
  225. package/content/operators/_get.md +92 -0
  226. package/content/operators/_global.md +86 -0
  227. package/content/operators/_gt.md +50 -0
  228. package/content/operators/_gte.md +50 -0
  229. package/content/operators/_hash.md +112 -0
  230. package/content/operators/_if.md +30 -0
  231. package/content/operators/_if_none.md +47 -0
  232. package/content/operators/_index.md +48 -0
  233. package/content/operators/_input.md +86 -0
  234. package/content/operators/_intl.md +135 -0
  235. package/content/operators/_item.md +166 -0
  236. package/content/operators/_js.md +113 -0
  237. package/content/operators/_json.md +120 -0
  238. package/content/operators/_jsonata.md +152 -0
  239. package/content/operators/_locale.md +65 -0
  240. package/content/operators/_location.md +40 -0
  241. package/content/operators/_log.md +22 -0
  242. package/content/operators/_lt.md +50 -0
  243. package/content/operators/_lte.md +50 -0
  244. package/content/operators/_math.md +407 -0
  245. package/content/operators/_media.md +83 -0
  246. package/content/operators/_menu.md +62 -0
  247. package/content/operators/_module.md +340 -0
  248. package/content/operators/_mql.md +95 -0
  249. package/content/operators/_ne.md +62 -0
  250. package/content/operators/_not.md +33 -0
  251. package/content/operators/_number.md +159 -0
  252. package/content/operators/_nunjucks.md +117 -0
  253. package/content/operators/_object.md +253 -0
  254. package/content/operators/_operator.md +33 -0
  255. package/content/operators/_or.md +67 -0
  256. package/content/operators/_product.md +45 -0
  257. package/content/operators/_random.md +90 -0
  258. package/content/operators/_ref.md +80 -0
  259. package/content/operators/_regex.md +69 -0
  260. package/content/operators/_request.md +35 -0
  261. package/content/operators/_request_details.md +29 -0
  262. package/content/operators/_secret.md +56 -0
  263. package/content/operators/_state.md +134 -0
  264. package/content/operators/_step.md +98 -0
  265. package/content/operators/_string.md +327 -0
  266. package/content/operators/_subtract.md +24 -0
  267. package/content/operators/_sum.md +45 -0
  268. package/content/operators/_switch.md +37 -0
  269. package/content/operators/_t.md +96 -0
  270. package/content/operators/_theme.md +65 -0
  271. package/content/operators/_type.md +78 -0
  272. package/content/operators/_uri.md +49 -0
  273. package/content/operators/_url_query.md +92 -0
  274. package/content/operators/_user.md +154 -0
  275. package/content/operators/_uuid.md +118 -0
  276. package/content/operators/_var.md +88 -0
  277. package/content/operators/_yaml.md +96 -0
  278. package/content/other/introduction.md +39 -0
  279. package/content/other/next-auth-providers.md +3 -0
  280. package/content/other/updatesession.md +26 -0
  281. package/content/plugins/plugins-actions.md +80 -0
  282. package/content/plugins/plugins-connections.md +98 -0
  283. package/content/plugins/plugins-dev.md +138 -0
  284. package/content/plugins/plugins-introduction.md +29 -0
  285. package/content/plugins/plugins-operators.md +71 -0
  286. package/content/testing/e2e-auth.md +108 -0
  287. package/content/testing/e2e-configuration.md +107 -0
  288. package/content/testing/e2e-getting-started.md +96 -0
  289. package/content/testing/e2e-introduction.md +53 -0
  290. package/content/testing/e2e-mocking.md +155 -0
  291. package/content/testing/e2e-writing-tests.md +214 -0
  292. package/content/tutorial/tutorial-actions-operators.md +222 -0
  293. package/content/tutorial/tutorial-add-blocks.md +86 -0
  294. package/content/tutorial/tutorial-create-page.md +57 -0
  295. package/content/tutorial/tutorial-display-data-page.md +181 -0
  296. package/content/tutorial/tutorial-next-steps.md +53 -0
  297. package/content/tutorial/tutorial-requests-sql.md +22 -0
  298. package/content/tutorial/tutorial-start.md +71 -0
  299. package/content/user-authentication/auth-providers.md +15 -0
  300. package/content/user-authentication/login-and-logout.md +122 -0
  301. package/content/user-authentication/users-introduction.md +31 -0
  302. package/index.json +2281 -0
  303. package/package.json +34 -0
  304. package/scripts/extractAgentDocs.js +130 -0
@@ -0,0 +1,86 @@
1
+ # _input
2
+
3
+ ```
4
+ (key: string): any
5
+ (all: boolean): any
6
+ (arguments: {
7
+ all?: boolean,
8
+ key?: string,
9
+ default?: any,
10
+ }): any
11
+ ```
12
+
13
+ The `_input` operator gets a value from the [`input`](/page-and-app-state) object. The `input` is a data object that can be set when linking to a new page using the [`Link`](/link) action, and can be used to set data like a `id` when switching to a new page. Unlike `urlQuery`, the `input` is not visible, and cannot be changed by the user, but if the page is reloaded, the `input` is lost.
14
+
15
+ #### Arguments
16
+
17
+ ###### string
18
+ If the `_input` operator is called with a string argument, the value of the key in the `input` object is returned. If the value is not found, `null` is returned. Dot notation and [block list indexes](/lists) are supported.
19
+
20
+ ###### boolean
21
+ If the `_input` operator is called with boolean argument `true`, the entire `input` object is returned.
22
+
23
+ ###### object
24
+ - `all: boolean`: If `all` is set to `true`, the entire `input` object is returned. One of `all` or `key` are required.
25
+ - `key: string`: The value of the key in the `input` object is returned. If the value is not found, `null`, or the specified default value is returned. Dot notation and [block list indexes](/lists) are supported. One of `all` or `key` are required.
26
+ - `default: any`: A value to return if the `key` is not found in `input`. By default, `null` is returned if a value is not found.
27
+
28
+ #### Examples
29
+
30
+ ###### Get the value of `my_key` from `input`:
31
+ ```yaml
32
+ _input: my_key
33
+ ```
34
+ ```yaml
35
+ _input:
36
+ key: my_key
37
+ ```
38
+ Returns: The value of `my_key` in `input`.
39
+
40
+ ###### Get the entire `input` object:
41
+ ```yaml
42
+ _input: true
43
+ ```
44
+ ```yaml
45
+ _input:
46
+ all: true
47
+ ```
48
+ Returns: The entire `input` object.
49
+
50
+ ###### Dot notation:
51
+ Assuming input:
52
+ ```yaml
53
+ my_object:
54
+ subfield: 'Value'
55
+ ```
56
+ then:
57
+ ```yaml
58
+ _input: my_object.subfield
59
+ ```
60
+ ```yaml
61
+ _input:
62
+ key: my_object.subfield
63
+ ```
64
+ Returns: `"Value"`.
65
+
66
+ ###### Return a default value if the value is not found:
67
+ ```yaml
68
+ _input:
69
+ key: might_not_exist
70
+ default: Default value
71
+ ```
72
+ Returns: The value of `might_not_exist`, or `"Default value"`.
73
+
74
+ ###### Block list indices:
75
+ Assuming `input`:
76
+ ```yaml
77
+ my_array:
78
+ - value: 0
79
+ - value: 1
80
+ - value: 2
81
+ ```
82
+ then:
83
+ ```yaml
84
+ _input: my_array.$.value
85
+ ```
86
+ Returns: `0` when used from the first block (0th index) in a list.
@@ -0,0 +1,135 @@
1
+ # _intl
2
+
3
+ The `_intl` operator converts date objects to strings, using a specified format.
4
+
5
+ > This operator can be used as a [`_build`](/_build) operator method.
6
+
7
+ # Operator methods:
8
+
9
+ ## _intl.dateTimeFormat
10
+
11
+ ```
12
+ (arguments: {
13
+ on: date,
14
+ locale?: string,
15
+ options?: object
16
+ })
17
+ ```
18
+
19
+ The `_intl.dateTimeFormat` provides language-sensitive date and time formatting, based on [`Intl.DateTimeFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat). If no locale is provide, the users default locale will be used.
20
+
21
+ #### Arguments
22
+
23
+ ###### object
24
+ - `on: date`: The date object to format.
25
+ - `locale: string`: A string with a BCP 47 language tag, or an array of such strings.
26
+ - `options: object`: [`Intl.DateTimeFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat) options.
27
+
28
+ #### Examples
29
+
30
+ ###### Format a date:
31
+ ```yaml
32
+ _intl.dateTimeFormat:
33
+ on:
34
+ _date: 2019-06-13
35
+ locale: en
36
+ options:
37
+ weekday: long
38
+ year: numeric
39
+ month: long
40
+ day: numeric
41
+ ```
42
+ Returns: `"Thursday, June 13, 2019"`.
43
+
44
+ ## _intl.listFormat
45
+
46
+ ```
47
+ (arguments: {
48
+ on: any[],
49
+ locale?: string,
50
+ options?: object
51
+ })
52
+ ```
53
+
54
+ The `_intl.listFormat` provides language-sensitive list formatting, based on [`Intl.ListFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/ListFormat/ListFormat). If no locale is provide, the users default locale will be used.
55
+
56
+ #### Arguments
57
+
58
+ ###### object
59
+ - `on: any[]`: The array to format.
60
+ - `locale: string`: A string with a BCP 47 language tag, or an array of such strings.
61
+ - `options: object`: [`Intl.ListFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/ListFormat/ListFormat) options.
62
+
63
+ #### Examples
64
+
65
+ ###### Format a list:
66
+ ```yaml
67
+ _intl.listFormat:
68
+ on:
69
+ - Motorcycle
70
+ - Bus
71
+ - Car
72
+ locale: fr
73
+ ```
74
+ Returns: `"Motorcycle, Bus et Car"`.
75
+
76
+ ## _intl.numberFormat
77
+
78
+ ```
79
+ (arguments: {
80
+ on: number,
81
+ locale?: string,
82
+ options?: object
83
+ })
84
+ ```
85
+
86
+ The `_intl.numberFormat` provides language-sensitive number formatting, based on [`Intl.NumberFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat). If no locale is provide, the users default locale will be used.
87
+
88
+ #### Arguments
89
+
90
+ ###### object
91
+ - `on: number`: The number to format.
92
+ - `locale: string`: A string with a BCP 47 language tag, or an array of such strings.
93
+ - `options: object`: [`Intl.NumberFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat) options.
94
+
95
+ #### Examples
96
+
97
+ ###### Format a number:
98
+ ```yaml
99
+ _intl.numberFormat:
100
+ on: 13182375813.47422
101
+ locale: de
102
+ ```
103
+ Returns: `"13.182.375.813,474"`.
104
+
105
+ ## _intl.relativeTimeFormat
106
+
107
+ ```
108
+ (arguments: {
109
+ on: any,
110
+ locale?: string,
111
+ unit: enum,
112
+ options?: object
113
+ })
114
+ ```
115
+
116
+ The `_intl.relativeTimeFormat` provides language-sensitive relative time formatting, based on [`Intl.RelativeTimeFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat). If no locale is provide, the users default locale will be used.
117
+
118
+ #### Arguments
119
+
120
+ ###### object
121
+ - `on: number`: The number to format.
122
+ - `locale: string`: A string with a BCP 47 language tag, or an array of such strings.
123
+ - `unit: enum`: Unit to use in the relative time internationalized message. Possible values are: `year`, `quarter`, `month`, `week`, `day`, `hour`, `minute`, `second`. Plural forms are also permitted.
124
+ - `options: object`: [`Intl.RelativeTimeFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat) options.
125
+
126
+ #### Examples
127
+
128
+ ###### Format a number:
129
+ ```yaml
130
+ _intl.relativeTimeFormat:
131
+ on: 4
132
+ unit: 'days'
133
+ locale: fr
134
+ ```
135
+ Returns: `"dans 4 jours"`.
@@ -0,0 +1,166 @@
1
+ # _item
2
+
3
+ ```
4
+ (key: string): any
5
+ ```
6
+
7
+ The `_item` operator returns the current item value during iteration in [`:for`](/:for) and [`:parallel_for`](/:parallel_for) loop control structures within API routines.
8
+ The key used with `_item` must match the key defined in the relevant loop control declaration because it also supports nested loops.
9
+ Dot notation is supported for accessing nested properties.
10
+
11
+ #### Arguments
12
+
13
+ ###### string
14
+ The key name defined in the relevant loop control structure.
15
+
16
+ #### Examples
17
+
18
+ ###### Using in a :for loop:
19
+ ```yaml
20
+ routine:
21
+ - :for: user_id
22
+ :in:
23
+ _payload: user_ids
24
+ :do:
25
+ - id: update_user
26
+ type: MongoDBUpdateOne
27
+ connectionId: users
28
+ properties:
29
+ filter:
30
+ _id:
31
+ _item: user_id # Access the current user_id
32
+ update:
33
+ $set:
34
+ last_seen:
35
+ _date: now
36
+ ```
37
+ Returns: The current value from the array being iterated over.
38
+
39
+ ###### Using dot notation to access nested properties:
40
+ ```yaml
41
+ routine:
42
+ - :for: product
43
+ :in:
44
+ _payload: products # Array of product objects
45
+ :do:
46
+ - id: update_product
47
+ type: MongoDBUpdateOne
48
+ connectionId: products
49
+ properties:
50
+ filter:
51
+ _id:
52
+ _item: product._id # Access the _id field of current product
53
+ update:
54
+ $set:
55
+ name:
56
+ _item: product.name
57
+ price:
58
+ _item: product.price
59
+ category:
60
+ _item: product.category
61
+ last_updated:
62
+ _date: now
63
+
64
+ - :log:
65
+ message: 'Processing product'
66
+ product_name:
67
+ _item: product.name
68
+ product_sku:
69
+ _item: product.sku
70
+ ```
71
+
72
+ ###### Using in :parallel_for loop for concurrent processing:
73
+ ```yaml
74
+ routine:
75
+ - id: get_orders
76
+ type: MongoDBFind
77
+ connectionId: orders
78
+ properties:
79
+ query:
80
+ status: 'pending'
81
+
82
+ - :parallel_for: order
83
+ :in:
84
+ _step: get_orders
85
+ :do:
86
+ - id: send_notification
87
+ type: SendGridMail
88
+ connectionId: email-service
89
+ properties:
90
+ to:
91
+ _item: order.customer_email
92
+ template_id: 'order_confirmation'
93
+ dynamic_template_data:
94
+ order_id:
95
+ _item: order._id
96
+ total:
97
+ _item: order.total
98
+ items:
99
+ _item: order.items
100
+ ```
101
+
102
+ ###### Nested loops with multiple _item references:
103
+ ```yaml
104
+ routine:
105
+ - :for: category
106
+ :in:
107
+ _payload: categories
108
+ :do:
109
+ - :for: product
110
+ :in:
111
+ _item: category.products # Access products array from outer loop item
112
+ :do:
113
+ - id: update_product
114
+ type: MongoDBUpdateOne
115
+ connectionId: products
116
+ properties:
117
+ filter:
118
+ _id:
119
+ _item: product._id
120
+ update:
121
+ $set:
122
+ category_name:
123
+ _item: category.name # Access outer loop item
124
+ category_id:
125
+ _item: category._id
126
+ product_rank:
127
+ _item: product.rank # Access inner loop item
128
+ ```
129
+
130
+ ###### Accumulating values with _item:
131
+ ```yaml
132
+ routine:
133
+ - :set_state:
134
+ total: 0
135
+ processed_count: 0
136
+
137
+ - :for: item
138
+ :in:
139
+ _payload: order_items
140
+ :do:
141
+ - :set_state:
142
+ total:
143
+ _sum:
144
+ - _state: total
145
+ - _product:
146
+ - _item: item.price
147
+ - _item: item.quantity
148
+ processed_count:
149
+ _sum:
150
+ - _state: processed_count
151
+ - 1
152
+
153
+ - :log:
154
+ processing_item:
155
+ _item: item.name
156
+ item_total:
157
+ _product:
158
+ - _item: item.price
159
+ - _item: item.quantity
160
+
161
+ - :return:
162
+ total:
163
+ _state: total
164
+ items_processed:
165
+ _state: processed_count
166
+ ```
@@ -0,0 +1,113 @@
1
+ # _js
2
+
3
+ > This operator is experimental and may change in future versions.
4
+
5
+ ```
6
+ (function: string): any
7
+ (function: { fn: string, args?: object }): any
8
+ ```
9
+
10
+ The `_js` operator enables the use of custom JavaScript logic within Lowdefy configuration where operators are evaluated. The purpose of this operator is to facilitate quick implementation of fast, synchronous functions. Like other operators, these functions are evaluated during page render, thus slow functions can impact app performance.
11
+ For more advanced logic, or when the use of external dependencies is necessary, instead develop a [custom plugin](/plugins-introduction).
12
+
13
+ #### Using Lowdefy operators in JavaScript
14
+ Certain Lowdefy operators can be used inside of the JavaScript function block. These operators are available as functions and will take their standard arguments.
15
+
16
+ ###### Client JavaScript function prototype:
17
+ _Function parameters passed to the operator method._
18
+ ```js
19
+ function ({ actions, args, event, input, location, lowdefyApp, lowdefyGlobal, request, state, urlQuery, user }) {
20
+ // Your JavaScript code here
21
+ };
22
+ ```
23
+
24
+ The function arguments available to the JavaScript function are:
25
+ - `actions: function`: Implements the [_actions](/_actions) operator.
26
+ - `args: object`: Pre-resolved values passed via the object form of `_js` (see below). `undefined` when the string form is used.
27
+ - `event: function`: Implements the [_event](/_event) operator.
28
+ - `input: function`: Implements the [_input](/_input) operator.
29
+ - `location: function`: Implements the [_location](/_location) operator.
30
+ - `lowdefyApp: function`: Implements the [_app](/_app) operator.
31
+ - `lowdefyGlobal: function`: Implements the [_global](/_global) operator.
32
+ - `request: function`: Implements the [_request](/_request) operator.
33
+ - `state: function`: Implements the [_state](/_state) operator.
34
+ - `urlQuery: function`: Implements the [_url_query](/_url_query) operator.
35
+ - `user: function`: Implements the [_user](/_user) operator.
36
+
37
+ ###### Server JavaScript function prototype:
38
+ _Function parameters passed to the operator method._
39
+ ```js
40
+ function ({ args, item, lowdefyApp, payload, secret, state, step, user }) {
41
+ // Your JavaScript code here
42
+ };
43
+ ```
44
+
45
+ The function arguments available to the JavaScript function are
46
+ - `args: object`: Pre-resolved values passed via the object form of `_js` (see below). `undefined` when the string form is used.
47
+ - `item: function`: Implements the [_item](/_item) operator.
48
+ - `lowdefyApp: function`: Implements the [_app](/_app) operator.
49
+ - `payload: function`: Implements the [_payload](/_payload) operator.
50
+ - `secret: function`: Implements the [_secret](/_secret) operator.
51
+ - `state: function`: Implements the [_state](/_state) operator.
52
+ - `step: function`: Implements the [_step](/_step) operator.
53
+ - `user: function`: Implements the [_user](/_user) operator.
54
+
55
+ #### Passing pre-computed values with `args`
56
+ The object form of `_js` accepts an `args` object whose values are resolved by the parser **before** the JavaScript function runs. This lets you compute values using any Lowdefy operator (`_state`, `_request`, `_user`, etc.) and consume them inside the function without calling operator methods from JavaScript.
57
+
58
+ #### Arguments
59
+
60
+ ###### string
61
+ The JavaScript function body, including the function return statement, excluding the function prototype.
62
+
63
+ ###### object
64
+ An object with the following properties:
65
+ - `fn: string`: The JavaScript function body (same as the string form).
66
+ - `args: object`: (optional) Values to inject into the function. Each value is evaluated as a normal Lowdefy expression and made available inside `fn` on the `args` object.
67
+
68
+ #### Examples
69
+
70
+ ###### Perform a calculation:
71
+ ```js
72
+ _js: |
73
+ let x = state('input_1');
74
+ let y = state('input_2');
75
+ return x + y;
76
+ ```
77
+
78
+ ###### Create custom logic based on data from a request:
79
+ ```js
80
+ _js: |
81
+ const products = request('get_products').data?.products ?? [];
82
+ const laptopsWithRatingGreaterThan4 = products.filter(product =>
83
+ product.category === "laptops" && product.rating > 4
84
+ );
85
+ if (laptopsWithRatingGreaterThan4.length > 3) {
86
+ return true;
87
+ }
88
+ return false;
89
+ ```
90
+
91
+ ###### Chain array methods on request data:
92
+ ```js
93
+ _js: |
94
+ const products = request('get_products').data?.products ?? [];
95
+ const totalPriceOfPhones = products
96
+ .filter(product => product.category === "smartphones")
97
+ .reduce((acc, product) => acc + product.price, 0);
98
+ return totalPriceOfPhones;
99
+ ```
100
+
101
+ ###### Pass pre-computed values with `args`:
102
+ ```yaml
103
+ _js:
104
+ fn: |
105
+ const { products, target } = args;
106
+ return products
107
+ .filter(p => p.category === target)
108
+ .reduce((a, p) => a + p.price, 0);
109
+ args:
110
+ products:
111
+ _request: get_products.data.products
112
+ target: smartphones
113
+ ```
@@ -0,0 +1,120 @@
1
+ # _json
2
+
3
+ The `_json` parses and writes JSON strings.
4
+
5
+ > This operator can be used as a [`_build`](/_build) operator method.
6
+
7
+ # Operator methods:
8
+
9
+ ## _json.parse
10
+
11
+ ```
12
+ (value: string): any
13
+ ```
14
+
15
+ The `_json.parse` method parses a JSON string into an object.
16
+
17
+ #### Arguments
18
+
19
+ ###### string
20
+ The string to parse.
21
+
22
+ #### Examples
23
+
24
+ ###### Parse a JSON string:
25
+ ```yaml
26
+ _json.parse: '{"key": "Value", "boolean": true, "array": [1, 2]}'
27
+ ```
28
+ Returns:
29
+ ```
30
+ key: Value
31
+ boolean: true
32
+ array:
33
+ - 1
34
+ - 2
35
+ ```
36
+
37
+ ## _json.stringify
38
+
39
+ ```
40
+ ({on: any, options?: object}): string
41
+ ([on: any, options?: object]): string
42
+ ```
43
+
44
+ The `_json.stringify` method creates a JSON string from an object.
45
+
46
+ #### Arguments
47
+
48
+ ###### object
49
+ - `on: any`: The object to stringify.
50
+ - `options: object`: Optional settings.
51
+ - `stable: boolean`: If set to true, equal objects will be stringified to the same string. Object keys are sorted.
52
+ - `space: number | string`: Used to insert whitespace to increase legibility. If a number, it is the number of space character to use. If a string, the string is used as whitespace. The default is `2`.
53
+
54
+ #### Examples
55
+
56
+ ###### Stringify an object as JSON:
57
+ ```yaml
58
+ _json.stringify:
59
+ on:
60
+ key: Value
61
+ boolean: true
62
+ array:
63
+ - 1
64
+ - 2
65
+ ```
66
+ ```yaml
67
+ _json.stringify:
68
+ - key: Value
69
+ boolean: true
70
+ array:
71
+ - 1
72
+ - 2
73
+ ```
74
+ Returns (as a string):
75
+ ```text
76
+ '{
77
+ "key": "Value",
78
+ "boolean": true,
79
+ "array": [
80
+ 1,
81
+ 2
82
+ ]
83
+ }'
84
+ ```
85
+ ###### Stable option:
86
+ ```yaml
87
+ _json.stringify:
88
+ on:
89
+ key: Value
90
+ boolean: true
91
+ array:
92
+ - 1
93
+ - 2
94
+ options:
95
+ stable: true
96
+ ```
97
+ Returns (as a string):
98
+ ```text
99
+ '{
100
+ "array": [
101
+ 1,
102
+ 2
103
+ ],
104
+ "boolean": true,
105
+ "key": "Value"
106
+ }''
107
+ ```
108
+ ###### Space option:
109
+ ```yaml
110
+ _json.stringify:
111
+ on:
112
+ key: Value
113
+ boolean: true
114
+ array:
115
+ - 1
116
+ - 2
117
+ options:
118
+ space: 0
119
+ ```
120
+ Returns `'{"key":"Value","boolean":true,"array":[1,2]}'`