@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,49 @@
1
+ # _uri
2
+
3
+ The `_uri` operator [encodes and decodes](https://en.wikipedia.org/wiki/Percent-encoding) Uniform Resource Identifiers (URI). It encodes characters that are not in the limited US-ASCII characters legal within a URI.
4
+
5
+ > This operator can be used as a [`_build`](/_build) operator method.
6
+
7
+ # Operator methods:
8
+
9
+ ## _uri.decode
10
+
11
+ ```
12
+ (value: string): string
13
+ ```
14
+
15
+ The `_uri.decode` method decodes a string that has been uri-encoded. It uses [`decodeURIComponent`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent).
16
+
17
+ #### Arguments
18
+
19
+ ###### string
20
+ The string to decode.
21
+
22
+ #### Examples
23
+
24
+ ###### Decode a base64 string:
25
+ ```yaml
26
+ _uri.decode: http%3A%2F%2Fusername%3Apassword%40www.example.com%3A80%2Fpath%2Fto%2Ffile.php%3Ffoo%3D316%26bar%3Dthis%2Bhas%2Bspaces%23anchor
27
+ ```
28
+ Returns: `"http://username:password@www.example.com:80/path/to/file.php?foo=316&bar=this+has+spaces#anchor"`.
29
+
30
+ ## _uri.encode
31
+
32
+ ```
33
+ (value: string): string
34
+ ```
35
+
36
+ The `_uri.encode` uri-encodes a string. It uses [`encodeURIComponent`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent).
37
+
38
+ #### Arguments
39
+
40
+ ###### string
41
+ The string to encode.
42
+
43
+ #### Examples
44
+
45
+ ###### Encode a string as base64:
46
+ ```yaml
47
+ _uri.encode: http://username:password@www.example.com:80/path/to/file.php?foo=316&bar=this+has+spaces#anchor
48
+ ```
49
+ Returns: `"http%3A%2F%2Fusername%3Apassword%40www.example.com%3A80%2Fpath%2Fto%2Ffile.php%3Ffoo%3D316%26bar%3Dthis%2Bhas%2Bspaces%23anchor"`.
@@ -0,0 +1,92 @@
1
+ # _url_query
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 `_url_query` operator gets a value from the [`urlQuery`](/page-and-app-state) object. The `urlQuery` is a data object that is set as the [`https://en.wikipedia.org/wiki/Query_string`] of the app URL. It 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 `input`, the `urlQuery` is visible to the user, and can be modified by the user.
14
+
15
+ > __DO NOT__ set any private or personal information to `urlQuery`; all data set to `urlQuery` are accessible publicly. Setting a `id` that can be guessed, like an incremental `id`, can lead to security issues, since users can easily guess and access data for other `ids`.
16
+
17
+ If the page is reloaded, the `urlQuery` is not lost. By using `urlQuery`, you can make links containing data that can be shared by users. By default, `_url_query` accesses the `url_query` object from the [page](/page-and-app-state) the operator is used in.
18
+
19
+ `urlQuery` objects are serialized to JSON, allowing nested objects or arrays to be specified.
20
+
21
+ #### Arguments
22
+
23
+ ###### string
24
+ If the `_url_query` operator is called with a string argument, the value of the key in the `urlQuery` object is returned. If the value is not found, `null` is returned. Dot notation and [block list indexes](/lists) are supported.
25
+
26
+ ###### boolean
27
+ If the `_url_query` operator is called with boolean argument `true`, the entire `urlQuery` object is returned.
28
+
29
+ ###### object
30
+ - `all: boolean`: If `all` is set to `true`, the entire `urlQuery` object is returned. One of `all` or `key` are required.
31
+ - `key: string`: The value of the key in the `urlQuery` 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.
32
+ - `default: any`: A value to return if the `key` is not found in `urlQuery`. By default, `null` is returned if a value is not found.
33
+
34
+ #### Examples
35
+
36
+ ###### Get the value of `my_key` from `urlQuery`:
37
+ ```yaml
38
+ _url_query: my_key
39
+ ```
40
+ ```yaml
41
+ _url_query:
42
+ key: my_key
43
+ ```
44
+ Returns: The value of `my_key` in `urlQuery`.
45
+
46
+ ###### Get the entire `urlQuery` object:
47
+ ```yaml
48
+ _url_query: true
49
+ ```
50
+ ```yaml
51
+ _url_query:
52
+ all: true
53
+ ```
54
+ Returns: The entire `urlQuery` object.
55
+
56
+ ###### Dot notation:
57
+ Assuming urlQuery:
58
+ ```yaml
59
+ my_object:
60
+ subfield: 'Value'
61
+ ```
62
+ then:
63
+ ```yaml
64
+ _url_query: my_object.subfield
65
+ ```
66
+ ```yaml
67
+ _url_query:
68
+ key: my_object.subfield
69
+ ```
70
+ Returns: `"Value"`.
71
+
72
+ ###### Return a default value if the value is not found:
73
+ ```yaml
74
+ _url_query:
75
+ key: might_not_exist
76
+ default: Default value
77
+ ```
78
+ Returns: The value of `might_not_exist`, or `"Default value"`.
79
+
80
+ ###### Block list indices:
81
+ Assuming `urlQuery`:
82
+ ```yaml
83
+ my_array:
84
+ - value: 0
85
+ - value: 1
86
+ - value: 2
87
+ ```
88
+ then:
89
+ ```yaml
90
+ _url_query: my_array.$.value
91
+ ```
92
+ Returns: `0` when used from the first block (0th index) in a list.
@@ -0,0 +1,154 @@
1
+ # _user
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 `_user` operator gets a value from the [`user`](/user-object) object. The `user` object contains the data in the user idToken if OpenID Connect authentication is configured and a user is logged in.
14
+
15
+ #### Arguments
16
+
17
+ ###### string
18
+ If the `_user` operator is called with a string argument, the value of the key in the `user` 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 `_user` operator is called with boolean argument `true`, the entire `user` object is returned.
22
+
23
+ ###### object
24
+ - `all: boolean`: If `all` is set to `true`, the entire `user` object is returned. One of `all` or `key` are required.
25
+ - `key: string`: The value of the key in the `user` 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 `user`. By default, `null` is returned if a value is not found.
27
+
28
+ #### Examples
29
+
30
+ ###### Get the value of `name` from `user`:
31
+ ```yaml
32
+ _user: name
33
+ ```
34
+ ```yaml
35
+ _user:
36
+ key: name
37
+ ```
38
+ Returns: The value of `name` in `user`.
39
+
40
+ ###### Get the entire `user` object:
41
+ ```yaml
42
+ _user: true
43
+ ```
44
+ ```yaml
45
+ _user:
46
+ all: true
47
+ ```
48
+ Returns: The entire `user` object.
49
+
50
+ ###### Dot notation:
51
+ Assuming user:
52
+ ```yaml
53
+ sub: abc123
54
+ name: User Name
55
+ my_object:
56
+ subfield: 'Value'
57
+ ```
58
+ then:
59
+ ```yaml
60
+ _user: my_object.subfield
61
+ ```
62
+ ```yaml
63
+ _user:
64
+ key: my_object.subfield
65
+ ```
66
+ Returns: `"Value"`.
67
+
68
+ ###### Return a default value if the value is not found:
69
+ ```yaml
70
+ _user:
71
+ key: might_not_exist
72
+ default: Default value
73
+ ```
74
+ Returns: The value of `might_not_exist`, or `"Default value"`.
75
+
76
+ ###### Block list indices:
77
+ Assuming `user`:
78
+ ```yaml
79
+ sub: abc123
80
+ name: User Name
81
+ my_array:
82
+ - value: 0
83
+ - value: 1
84
+ - value: 2
85
+ ```
86
+ then:
87
+ ```yaml
88
+ _user: my_array.$.value
89
+ ```
90
+ Returns: `0` when used from the first block (0th index) in a list.
91
+
92
+ # Operator methods:
93
+
94
+ ## _user.hasRole
95
+
96
+ ```
97
+ (role: string): boolean
98
+ ```
99
+
100
+ The `_user.hasRole` method returns `true` if the `user.roles` array contains the given role. It returns `false` when the user is not logged in, when `user.roles` is missing, or when the role is not present.
101
+
102
+ The `user.roles` value is read directly from the `user` object and must be an array of strings. An error is thrown if `user.roles` is defined but is not an array, or if the argument is not a string.
103
+
104
+ #### Examples
105
+
106
+ ###### Check for a single role:
107
+ ```yaml
108
+ _user.hasRole: admin
109
+ ```
110
+ Returns: `true` if `user.roles` includes `"admin"`.
111
+
112
+ ## _user.hasSomeRoles
113
+
114
+ ```
115
+ (roles: string[]): boolean
116
+ ```
117
+
118
+ The `_user.hasSomeRoles` method returns `true` if the `user.roles` array contains at least one of the given roles. It returns `false` when the user is not logged in, when `user.roles` is missing, or when none of the roles match.
119
+
120
+ The `user.roles` value is read directly from the `user` object and must be an array of strings. An error is thrown if `user.roles` is defined but is not an array, or if the argument is not an array of strings.
121
+
122
+ For checking a single role, use [`_user.hasRole`](#hasRole).
123
+
124
+ #### Examples
125
+
126
+ ###### Check for any of several roles:
127
+ ```yaml
128
+ _user.hasSomeRoles:
129
+ - admin
130
+ - support
131
+ ```
132
+ Returns: `true` if `user.roles` includes `"admin"` or `"support"`.
133
+
134
+ ## _user.hasAllRoles
135
+
136
+ ```
137
+ (roles: string[]): boolean
138
+ ```
139
+
140
+ The `_user.hasAllRoles` method returns `true` if the `user.roles` array contains every one of the given roles. It returns `false` when the user is not logged in, when `user.roles` is missing, or when any required role is not present.
141
+
142
+ The `user.roles` value is read directly from the `user` object and must be an array of strings. An error is thrown if `user.roles` is defined but is not an array, or if the argument is not an array of strings.
143
+
144
+ For checking a single role, use [`_user.hasRole`](#hasRole).
145
+
146
+ #### Examples
147
+
148
+ ###### Require all of several roles:
149
+ ```yaml
150
+ _user.hasAllRoles:
151
+ - admin
152
+ - support
153
+ ```
154
+ Returns: `true` only if `user.roles` includes both `"admin"` and `"support"`.
@@ -0,0 +1,118 @@
1
+ # _uuid
2
+
3
+ ```
4
+ (void): string
5
+ ```
6
+
7
+ The `_uuid` operator creates [UUIDs](https://en.wikipedia.org/wiki/Universally_unique_identifier). A UUID is a random identifier that is, for all practical purposes, unique. It looks like:
8
+
9
+ ```
10
+ 123e4567-e89b-12d3-a456-426614174000
11
+ ```
12
+
13
+ #### Arguments
14
+
15
+ ###### default:
16
+ `_uuid: true`, `_uuid: null` or `_uuid: undefined` returns a version 4 UUID.
17
+
18
+ #### Examples
19
+
20
+ ###### Generate a v4 uuid:
21
+ ```yaml
22
+ _uuid: null
23
+ ```
24
+ Returns: A version 4 UUID.
25
+
26
+ # Operator methods:
27
+
28
+ ## _uuid.v1
29
+
30
+ ```
31
+ (void): string
32
+ ```
33
+
34
+ Create a version 1 (timestamp) UUID.
35
+
36
+ #### Arguments
37
+
38
+ The `_uuid.v1` method does not take any arguments.
39
+
40
+ #### Examples
41
+
42
+ ###### Generate a version 1 UUID:
43
+ ```yaml
44
+ _uuid.v1: null
45
+ ```
46
+ Returns: A version 1 UUID.
47
+
48
+ ## _uuid.v3
49
+
50
+ ```
51
+ ({name: string | string[], namespace: string | string[]}): string
52
+ ([name: string | string[], namespace: string | string[]]): string
53
+ ```
54
+
55
+ Create a version 3 (namespace w/ MD5) UUID.
56
+
57
+ #### Arguments
58
+
59
+ ###### object:
60
+ If the `_uuid` operator is called with arguments, it can be one of the following:
61
+ - `name: string | string[]`: A string or an array.
62
+ - `namespace: string | string[]`: A string or an Array[16] - Namespace UUID.
63
+
64
+ #### Examples
65
+
66
+ ###### Generate a version 3 UUID:
67
+ ```yaml
68
+ _uuid.v3:
69
+ name: hello
70
+ namespace: world
71
+ ```
72
+ Returns: A version 3 UUID.
73
+
74
+ ## _uuid.v4
75
+
76
+ ```
77
+ (void): string
78
+ ```
79
+
80
+ Create a version 4 (random) UUID.
81
+
82
+ #### Arguments
83
+
84
+ The `_uuid.v4` method does not take any arguments.
85
+
86
+ #### Examples
87
+
88
+ ###### Generate a version 4 UUID:
89
+ ```yaml
90
+ _uuid.v4: null
91
+ ```
92
+ Returns: A version 4 UUID.
93
+
94
+ ## _uuid.v5
95
+
96
+ ```
97
+ ({name: string | string[], namespace: string | string[]}): string
98
+ ([name: string | string[], namespace: string | string[]]): string
99
+ ```
100
+
101
+ Create a version 5 (namespace w/ SHA-1) UUID.
102
+
103
+ #### Arguments
104
+
105
+ ###### object:
106
+ If the `_uuid` operator is called with arguments, it can be one of the following:
107
+ - `name: string | string[]`: A string or an array.
108
+ - `namespace: string | string[]`: A string or an Array[16] - Namespace UUID.
109
+
110
+ #### Examples
111
+
112
+ ###### Generate a version 5 UUID:
113
+ ```yaml
114
+ _uuid.v5:
115
+ name: hello
116
+ namespace: world
117
+ ```
118
+ Returns: A version 5 UUID.
@@ -0,0 +1,88 @@
1
+ # _var
2
+
3
+ ```
4
+ (key: string): any
5
+ (arguments: {
6
+ key: string,
7
+ default?: any,
8
+ }): any
9
+ ```
10
+
11
+ The `_var` operator gets a value from the `vars` object, specified by a [`_ref`](/ref) operator when referencing a file.
12
+
13
+ > The `_var` operator is a build time operator: it is evaluated when the app configuration is being built. This means it is not evaluated dynamically as the app is running, and can be used anywhere in the configuration as long as the resulting configuration files are valid YAML.
14
+
15
+ > For module-level variables (passed by the app developer in `lowdefy.yaml` `modules[].vars`), use [`_module.var`](/_module) instead. `_module.var` works at any depth within module files without threading vars through each `_ref`.
16
+
17
+ #### Arguments
18
+
19
+ ###### string
20
+ If the `_var` operator is called with a string argument, the value of the key in the `vars` object is returned. If the value is not found, `null` is returned. Dot notation is supported.
21
+
22
+ ###### object
23
+ - `key: string`: The value of the key in the `vars` object is returned. If the value is not found, `null`, or the specified default value is returned. Dot notation is supported.
24
+ - `default: any`: A value to return if the `key` is not found in `vars`. By default, `null` is returned if a value is not found.
25
+
26
+ #### Examples
27
+
28
+ ###### Using a standardized input label template:
29
+ ```yaml
30
+ blocks:
31
+ - id: name
32
+ type: TextInput
33
+ properties:
34
+ label:
35
+ _ref:
36
+ path: label.yaml
37
+ vars:
38
+ title: Name
39
+ description: Your name and surname.
40
+ descriptionTextColor: '#546358'
41
+ - id: age
42
+ type: NumberInput
43
+ properties:
44
+ label:
45
+ _ref:
46
+ path: label.yaml
47
+ vars:
48
+ title: Age
49
+ description: Your age.
50
+ ```
51
+ ```yaml
52
+ # label.yaml
53
+ title:
54
+ _var: title
55
+ extra:
56
+ _var: description
57
+ span: 8
58
+ colon: false
59
+ extraStyle:
60
+ color:
61
+ _var:
62
+ key: descriptionTextColor
63
+ default: '#333333'
64
+ ```
65
+ Returns:
66
+ ```yaml
67
+ blocks:
68
+ - id: name
69
+ type: TextInput
70
+ properties:
71
+ label:
72
+ title: Name
73
+ extra: Your name and surname.
74
+ span: 8
75
+ colon: false
76
+ extraStyle:
77
+ color: '#546358'
78
+ - id: age
79
+ type: NumberInput
80
+ properties:
81
+ label:
82
+ title: Age
83
+ extra: Your age.
84
+ span: 8
85
+ colon: false
86
+ extraStyle:
87
+ color: '#333333'
88
+ ```
@@ -0,0 +1,96 @@
1
+ # _yaml
2
+
3
+ The `_yaml` parses and writes YAML strings.
4
+
5
+ # Operator methods:
6
+
7
+ ## _yaml.parse
8
+
9
+ ```
10
+ ({on: string, options?: object}): object
11
+ ([on: string, options?: object]): object
12
+ ```
13
+
14
+ The `_yaml.parse` method parses a YAML string into an object.
15
+
16
+ #### Arguments
17
+
18
+ ###### object
19
+ - `on: string`: String to parse.
20
+ - `options?: object`: Optional settings. See the [YAML.parse: method here](https://eemeli.org/yaml/#parse-options) for supported settings.
21
+
22
+ #### Examples
23
+
24
+ ###### Parse a YAML string:
25
+ ```yaml
26
+ _yaml.parse:
27
+ on: |
28
+ key: Value
29
+ boolean: true
30
+ array:
31
+ - 1
32
+ - 2
33
+ ```
34
+ or:
35
+ ```yaml
36
+ _yaml.parse:
37
+ - |
38
+ key: Value
39
+ boolean: true
40
+ array:
41
+ - 1
42
+ - 2
43
+ ```
44
+ Returns:
45
+ ```
46
+ key: Value
47
+ boolean: true
48
+ array:
49
+ - 1
50
+ - 2
51
+ ```
52
+
53
+ ## _yaml.stringify
54
+
55
+ ```
56
+ ({on: any, options?: object}): string
57
+ ([on: any, options?: object]): string
58
+ ```
59
+
60
+ The `_yaml.stringify` method creates a YAML string from an object.
61
+
62
+ #### Arguments
63
+
64
+ ###### object
65
+ - `on: any`: The object to stringify.
66
+ - `options?: object`: Optional settings. See the [YAML.stringify: method here](https://eemeli.org/yaml/#tostring-options) for supported settings.
67
+
68
+ #### Examples
69
+
70
+ ###### Stringify an object as YAML:
71
+ ```yaml
72
+ _yaml.stringify:
73
+ on:
74
+ key: Value
75
+ boolean: true
76
+ array:
77
+ - 1
78
+ - 2
79
+ ```
80
+ or:
81
+ ```yaml
82
+ _yaml.stringify:
83
+ - key: Value
84
+ boolean: true
85
+ array:
86
+ - 1
87
+ - 2
88
+ ```
89
+ Returns (as a string):
90
+ ```text
91
+ key: Value
92
+ boolean: true
93
+ array:
94
+ - 1
95
+ - 2
96
+ ```
@@ -0,0 +1,39 @@
1
+ # Introduction
2
+
3
+ Lowdefy makes it really easy to build web apps. With Lowdefy you can build CRUD apps, admin panels, internal tools, BI dashboards, workflow apps, websites, blogs, webforms or even documentation pages such as this one.
4
+
5
+ Lowdefy apps are defined in YAML config that follows a structured schema - this makes Lowdefy apps easy to read, write and understand.
6
+
7
+ ## Quickstart
8
+
9
+ Run the following command to initialize a new Lowdefy app in your current working directory.
10
+
11
+ $
12
+
13
+ pnpx lowdefy@5 init && pnpx lowdefy@5 dev
14
+
15
+ This will create a file called `lowdefy.yaml` in the current working directory that contains the configuration for a Lowdefy app (as well as a `.gitignore`) and launch a local development server at http://localhost:3000. Make changes in the `lowdefy.yaml` file to see them reflect in the app.
16
+
17
+ > You need Node v22 or newer and pnpm installed to run Lowdefy. For more details see [the tutorial](/tutorial-start).
18
+
19
+ ## Why create web apps using a YAML schema?
20
+
21
+ The Lowdefy schema is a simple definition of a web app which primarily makes use of block, action, operator and request definitions.
22
+
23
+ Some advantages of writing web apps in YAML are:
24
+ - All apps use the same schema. This makes it easy to debug large apps or pick up where others left off.
25
+ - Nothing is hidden in a GUI. This allows you to do basic stuff, like copy, paste, find, replace etc. which makes developing apps more productive.
26
+ - App config is just data, thus you can develop scripts to create and manage your apps.
27
+ - YAML files work with your favorite developer and source control tools.
28
+
29
+ > If you aren't a fan of YAML, you can also build your app using JSON files.
30
+
31
+ ## Build future proof web apps on an source available platform
32
+
33
+ To date, more than 25 000 apps have been built by the Lowdefy community. We hope to see many community Lowdefy apps and plugins in the future and actively nurture the Lowdefy community on [Github](https://github.com/lowdefy/lowdefy/discussions) and [Discord](https://discord.gg/QQY9eJ7A2D) to help other developers to get started with Lowdefy and grow the ecosystem.
34
+
35
+ We've built Lowdefy to scale our own ability to develop and maintain web apps and internal tools for customers. Currently, we also provide Custom Software as a Service for larger customers, as well as support plans for those who need some extra help. Using Lowdefy we've built ticketing systems, call center solutions, advanced CRMs, custom MRPs, surveys and BI dashboard solutions and more for startup to enterprise customers. If you are looking for a Custom Software as a Service partner, please [reach out to us](http://lowdefy.com/contact-us).
36
+
37
+ ## Tutorial
38
+
39
+ The easiest way to get started with Lowdefy is to follow the tutorial. In this tutorial we will be building a simple Lowdefy app to get you started.
@@ -0,0 +1,3 @@
1
+ # next-auth-providers
2
+
3
+ This page has moved to [Auth.js Providers](/auth-js-providers).
@@ -0,0 +1,26 @@
1
+ # UpdateSession
2
+
3
+ ```
4
+ (void): void
5
+ ```
6
+
7
+ The `UpdateSession` action is used to update the user session. If a adapter is used, any new user data in the database will be added to the user object.
8
+
9
+ #### Parameters
10
+
11
+ The `UpdateSession` action does not take any parameters.
12
+
13
+ #### Examples
14
+
15
+ ###### Update session after user updates their profile:
16
+ ```yaml
17
+ id: update_profile
18
+ type: Button
19
+ events:
20
+ onClick:
21
+ - id: update_profile_in_db
22
+ type: Request
23
+ params: update_user
24
+ - id: update_session
25
+ type: UpdateSession
26
+ ```