@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.
- package/LICENSE +201 -0
- package/README.md +20 -0
- package/content/actions/callapi.md +66 -0
- package/content/actions/callmethod.md +41 -0
- package/content/actions/copytoclipboard.md +32 -0
- package/content/actions/displaymessage.md +53 -0
- package/content/actions/downloadcsv.md +89 -0
- package/content/actions/fetch.md +50 -0
- package/content/actions/geolocationcurrentposition.md +56 -0
- package/content/actions/link.md +104 -0
- package/content/actions/login.md +85 -0
- package/content/actions/logout.md +56 -0
- package/content/actions/pdfmake.md +304 -0
- package/content/actions/request.md +67 -0
- package/content/actions/reset.md +27 -0
- package/content/actions/resetvalidation.md +85 -0
- package/content/actions/scrollto.md +85 -0
- package/content/actions/setdarkmode.md +62 -0
- package/content/actions/setfocus.md +33 -0
- package/content/actions/setglobal.md +63 -0
- package/content/actions/setlocale.md +69 -0
- package/content/actions/setstate.md +70 -0
- package/content/actions/throw.md +72 -0
- package/content/actions/validate.md +87 -0
- package/content/actions/wait.md +24 -0
- package/content/agents/agent-endpoint-tools.md +190 -0
- package/content/agents/agent-mcp-tools.md +124 -0
- package/content/agents/agent-multi-agent.md +136 -0
- package/content/agents/agent-properties.md +174 -0
- package/content/agents/agent-server-hooks.md +336 -0
- package/content/agents/agentchat.md +515 -0
- package/content/agents/agentconversations.md +148 -0
- package/content/concepts/ai-agent-docs.md +190 -0
- package/content/concepts/cli.md +213 -0
- package/content/concepts/connections-and-requests.md +7 -0
- package/content/concepts/custom-html.md +3 -0
- package/content/concepts/custom-styling.md +161 -0
- package/content/concepts/events-and-actions.md +271 -0
- package/content/concepts/hosting-files.md +18 -0
- package/content/concepts/i18n.md +320 -0
- package/content/concepts/keyboard-shortcuts.md +218 -0
- package/content/concepts/layout-overview.md +478 -0
- package/content/concepts/lists.md +144 -0
- package/content/concepts/logger.md +43 -0
- package/content/concepts/lowdefy-schema.md +365 -0
- package/content/concepts/menus.md +144 -0
- package/content/concepts/module-authoring.md +564 -0
- package/content/concepts/modules.md +338 -0
- package/content/concepts/operators.md +45 -0
- package/content/concepts/overview.md +19 -0
- package/content/concepts/references-and-templates.md +207 -0
- package/content/concepts/secrets.md +24 -0
- package/content/concepts/selectors.md +143 -0
- package/content/connections/amazonredshift.md +176 -0
- package/content/connections/anthropic.md +232 -0
- package/content/connections/awss3.md +313 -0
- package/content/connections/azureblobstorage.md +133 -0
- package/content/connections/elasticsearch.md +371 -0
- package/content/connections/google.md +228 -0
- package/content/connections/googlecloudstorage.md +139 -0
- package/content/connections/googlesheet.md +313 -0
- package/content/connections/knex.md +206 -0
- package/content/connections/mariadb.md +177 -0
- package/content/connections/mcp.md +134 -0
- package/content/connections/mongodb.md +739 -0
- package/content/connections/mssql.md +191 -0
- package/content/connections/mysql.md +192 -0
- package/content/connections/openai-connection.md +228 -0
- package/content/connections/postgresql.md +200 -0
- package/content/connections/redis.md +116 -0
- package/content/connections/sendgridmail.md +94 -0
- package/content/connections/smtp.md +149 -0
- package/content/connections/sqlite.md +187 -0
- package/content/connections/stripe.md +115 -0
- package/content/container-blocks/affix.md +413 -0
- package/content/container-blocks/alert.md +937 -0
- package/content/container-blocks/badge.md +1222 -0
- package/content/container-blocks/box.md +1453 -0
- package/content/container-blocks/card.md +1200 -0
- package/content/container-blocks/carousel.md +2247 -0
- package/content/container-blocks/collapse.md +1335 -0
- package/content/container-blocks/configprovider.md +1070 -0
- package/content/container-blocks/confirmmodal.md +1159 -0
- package/content/container-blocks/content.md +597 -0
- package/content/container-blocks/descriptions.md +870 -0
- package/content/container-blocks/drawer.md +1379 -0
- package/content/container-blocks/dropdownmenu.md +643 -0
- package/content/container-blocks/flex.md +1510 -0
- package/content/container-blocks/footer.md +380 -0
- package/content/container-blocks/googlemaps.md +546 -0
- package/content/container-blocks/googlemapsheatmap.md +607 -0
- package/content/container-blocks/googlemapsscript.md +61 -0
- package/content/container-blocks/header.md +302 -0
- package/content/container-blocks/label.md +739 -0
- package/content/container-blocks/layout.md +604 -0
- package/content/container-blocks/masonry.md +1090 -0
- package/content/container-blocks/mobilemenu.md +1244 -0
- package/content/container-blocks/modal.md +1180 -0
- package/content/container-blocks/pageheadermenu.md +614 -0
- package/content/container-blocks/pagesidebarlayout.md +438 -0
- package/content/container-blocks/pagesidermenu.md +651 -0
- package/content/container-blocks/popover.md +1421 -0
- package/content/container-blocks/result.md +972 -0
- package/content/container-blocks/sider.md +1064 -0
- package/content/container-blocks/span.md +747 -0
- package/content/container-blocks/spinner.md +267 -0
- package/content/container-blocks/splitter.md +1735 -0
- package/content/container-blocks/tabs.md +1718 -0
- package/content/container-blocks/tooltip.md +1274 -0
- package/content/container-blocks/watermark.md +515 -0
- package/content/controls/for.md +103 -0
- package/content/controls/if.md +107 -0
- package/content/controls/log.md +50 -0
- package/content/controls/parallel.md +71 -0
- package/content/controls/parallel_for.md +36 -0
- package/content/controls/reject.md +56 -0
- package/content/controls/return.md +66 -0
- package/content/controls/set_state.md +98 -0
- package/content/controls/switch.md +90 -0
- package/content/controls/throw.md +79 -0
- package/content/controls/try.md +88 -0
- package/content/deployment/docker.md +149 -0
- package/content/deployment/node-server.md +27 -0
- package/content/deployment/vercel.md +101 -0
- package/content/display-blocks/aggrid.md +1459 -0
- package/content/display-blocks/anchor.md +336 -0
- package/content/display-blocks/avatar.md +1154 -0
- package/content/display-blocks/breadcrumb.md +517 -0
- package/content/display-blocks/button.md +758 -0
- package/content/display-blocks/calendar.md +156 -0
- package/content/display-blocks/dangeroushtml.md +314 -0
- package/content/display-blocks/dangerousmarkdown.md +423 -0
- package/content/display-blocks/diffgit.md +44 -0
- package/content/display-blocks/difflist.md +225 -0
- package/content/display-blocks/diffsidebyside.md +56 -0
- package/content/display-blocks/difftimeline.md +94 -0
- package/content/display-blocks/divider.md +406 -0
- package/content/display-blocks/download.md +60 -0
- package/content/display-blocks/dropdownbutton.md +661 -0
- package/content/display-blocks/echart.md +418 -0
- package/content/display-blocks/floatbutton.md +545 -0
- package/content/display-blocks/html.md +311 -0
- package/content/display-blocks/icon.md +717 -0
- package/content/display-blocks/img.md +479 -0
- package/content/display-blocks/markdown.md +520 -0
- package/content/display-blocks/markdownwithcode.md +730 -0
- package/content/display-blocks/menu.md +1123 -0
- package/content/display-blocks/message.md +941 -0
- package/content/display-blocks/notification.md +1410 -0
- package/content/display-blocks/paragraph.md +643 -0
- package/content/display-blocks/progress.md +818 -0
- package/content/display-blocks/qrcode.md +519 -0
- package/content/display-blocks/s3download.md +240 -0
- package/content/display-blocks/search.md +360 -0
- package/content/display-blocks/skeleton.md +272 -0
- package/content/display-blocks/skeletonavatar.md +222 -0
- package/content/display-blocks/skeletonbutton.md +245 -0
- package/content/display-blocks/skeletoninput.md +223 -0
- package/content/display-blocks/skeletonparagraph.md +201 -0
- package/content/display-blocks/statistic.md +485 -0
- package/content/display-blocks/steps.md +585 -0
- package/content/display-blocks/tag.md +620 -0
- package/content/display-blocks/title.md +654 -0
- package/content/display-blocks/tour.md +2359 -0
- package/content/input-blocks/autocomplete.md +786 -0
- package/content/input-blocks/buttonselector.md +964 -0
- package/content/input-blocks/checkboxselector.md +765 -0
- package/content/input-blocks/checkboxswitch.md +497 -0
- package/content/input-blocks/colorselector.md +884 -0
- package/content/input-blocks/daterangeselector.md +777 -0
- package/content/input-blocks/dateselector.md +693 -0
- package/content/input-blocks/datetimeselector.md +791 -0
- package/content/input-blocks/inputgallery.md +528 -0
- package/content/input-blocks/monthselector.md +717 -0
- package/content/input-blocks/multipleselector.md +1337 -0
- package/content/input-blocks/numberinput.md +855 -0
- package/content/input-blocks/pagination.md +679 -0
- package/content/input-blocks/paragraphinput.md +1664 -0
- package/content/input-blocks/passwordinput.md +480 -0
- package/content/input-blocks/phonenumberinput.md +688 -0
- package/content/input-blocks/radioselector.md +820 -0
- package/content/input-blocks/ratingslider.md +684 -0
- package/content/input-blocks/s3uploadbutton.md +384 -0
- package/content/input-blocks/s3uploaddragger.md +305 -0
- package/content/input-blocks/s3uploadphoto.md +288 -0
- package/content/input-blocks/segmentedselector.md +782 -0
- package/content/input-blocks/selector.md +1162 -0
- package/content/input-blocks/switch.md +552 -0
- package/content/input-blocks/textarea.md +714 -0
- package/content/input-blocks/textinput.md +639 -0
- package/content/input-blocks/tiptapinput.md +226 -0
- package/content/input-blocks/tiptapmentioninput.md +471 -0
- package/content/input-blocks/titleinput.md +1094 -0
- package/content/input-blocks/treeinput.md +144 -0
- package/content/input-blocks/treemultipleselector.md +162 -0
- package/content/input-blocks/treeselector.md +185 -0
- package/content/input-blocks/upload.md +149 -0
- package/content/input-blocks/uploaddragger.md +85 -0
- package/content/input-blocks/uploadphoto.md +84 -0
- package/content/input-blocks/weekselector.md +630 -0
- package/content/list-blocks/controlledlist.md +498 -0
- package/content/list-blocks/list.md +529 -0
- package/content/list-blocks/listselector.md +301 -0
- package/content/list-blocks/masonrylist.md +230 -0
- package/content/migration/upgrade-guide.md +106 -0
- package/content/migration/v4-to-v5.md +589 -0
- package/content/migration/v5-to-v6.md +36 -0
- package/content/operators/_actions.md +58 -0
- package/content/operators/_and.md +76 -0
- package/content/operators/_api.md +254 -0
- package/content/operators/_app.md +114 -0
- package/content/operators/_args.md +65 -0
- package/content/operators/_array.md +331 -0
- package/content/operators/_base64.md +49 -0
- package/content/operators/_boolean.md +33 -0
- package/content/operators/_build.md +166 -0
- package/content/operators/_change_case.md +357 -0
- package/content/operators/_date.md +415 -0
- package/content/operators/_dayjs.md +128 -0
- package/content/operators/_diff.md +61 -0
- package/content/operators/_divide.md +32 -0
- package/content/operators/_eq.md +52 -0
- package/content/operators/_event.md +86 -0
- package/content/operators/_function.md +52 -0
- package/content/operators/_get.md +92 -0
- package/content/operators/_global.md +86 -0
- package/content/operators/_gt.md +50 -0
- package/content/operators/_gte.md +50 -0
- package/content/operators/_hash.md +112 -0
- package/content/operators/_if.md +30 -0
- package/content/operators/_if_none.md +47 -0
- package/content/operators/_index.md +48 -0
- package/content/operators/_input.md +86 -0
- package/content/operators/_intl.md +135 -0
- package/content/operators/_item.md +166 -0
- package/content/operators/_js.md +113 -0
- package/content/operators/_json.md +120 -0
- package/content/operators/_jsonata.md +152 -0
- package/content/operators/_locale.md +65 -0
- package/content/operators/_location.md +40 -0
- package/content/operators/_log.md +22 -0
- package/content/operators/_lt.md +50 -0
- package/content/operators/_lte.md +50 -0
- package/content/operators/_math.md +407 -0
- package/content/operators/_media.md +83 -0
- package/content/operators/_menu.md +62 -0
- package/content/operators/_module.md +340 -0
- package/content/operators/_mql.md +95 -0
- package/content/operators/_ne.md +62 -0
- package/content/operators/_not.md +33 -0
- package/content/operators/_number.md +159 -0
- package/content/operators/_nunjucks.md +117 -0
- package/content/operators/_object.md +253 -0
- package/content/operators/_operator.md +33 -0
- package/content/operators/_or.md +67 -0
- package/content/operators/_product.md +45 -0
- package/content/operators/_random.md +90 -0
- package/content/operators/_ref.md +80 -0
- package/content/operators/_regex.md +69 -0
- package/content/operators/_request.md +35 -0
- package/content/operators/_request_details.md +29 -0
- package/content/operators/_secret.md +56 -0
- package/content/operators/_state.md +134 -0
- package/content/operators/_step.md +98 -0
- package/content/operators/_string.md +327 -0
- package/content/operators/_subtract.md +24 -0
- package/content/operators/_sum.md +45 -0
- package/content/operators/_switch.md +37 -0
- package/content/operators/_t.md +96 -0
- package/content/operators/_theme.md +65 -0
- package/content/operators/_type.md +78 -0
- package/content/operators/_uri.md +49 -0
- package/content/operators/_url_query.md +92 -0
- package/content/operators/_user.md +154 -0
- package/content/operators/_uuid.md +118 -0
- package/content/operators/_var.md +88 -0
- package/content/operators/_yaml.md +96 -0
- package/content/other/introduction.md +39 -0
- package/content/other/next-auth-providers.md +3 -0
- package/content/other/updatesession.md +26 -0
- package/content/plugins/plugins-actions.md +80 -0
- package/content/plugins/plugins-connections.md +98 -0
- package/content/plugins/plugins-dev.md +138 -0
- package/content/plugins/plugins-introduction.md +29 -0
- package/content/plugins/plugins-operators.md +71 -0
- package/content/testing/e2e-auth.md +108 -0
- package/content/testing/e2e-configuration.md +107 -0
- package/content/testing/e2e-getting-started.md +96 -0
- package/content/testing/e2e-introduction.md +53 -0
- package/content/testing/e2e-mocking.md +155 -0
- package/content/testing/e2e-writing-tests.md +214 -0
- package/content/tutorial/tutorial-actions-operators.md +222 -0
- package/content/tutorial/tutorial-add-blocks.md +86 -0
- package/content/tutorial/tutorial-create-page.md +57 -0
- package/content/tutorial/tutorial-display-data-page.md +181 -0
- package/content/tutorial/tutorial-next-steps.md +53 -0
- package/content/tutorial/tutorial-requests-sql.md +22 -0
- package/content/tutorial/tutorial-start.md +71 -0
- package/content/user-authentication/auth-providers.md +15 -0
- package/content/user-authentication/login-and-logout.md +122 -0
- package/content/user-authentication/users-introduction.md +31 -0
- package/index.json +2281 -0
- package/package.json +34 -0
- 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]}'`
|