Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion library/modules/supabase/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,15 @@ hide_title: true

> This is currently a private extension to Fluxscape. The documentation is still under development and will be improved over time.

Fluxscape's Supabase integration provides a first-class way to sync data, authenticate users, and trigger serverless workflows directly from within Fluxscape apps.
Fluxscape’s Supabase integration provides a first-class way to sync data, authenticate users, and trigger serverless workflows directly from within Fluxscape apps.

The integration is designed for teams building production-grade applications that require a robust backend, strong data modeling, row-level security, and scalable serverless functions, all while staying inside the Fluxscape visual workflow.

### Access to the Supabase integration

The Supabase integration is currently available by request.

If you are interested in using it or evaluating it for your team or customers, please contact the Fluxscape team via
https://fluxscape.io/contact

We use this process to ensure proper onboarding, feedback.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added library/modules/supabase/fs-sb-call-function.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added library/modules/supabase/fs-sb-create-record.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added library/modules/supabase/fs-sb-delete-files.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added library/modules/supabase/fs-sb-download-file.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added library/modules/supabase/fs-sb-login.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added library/modules/supabase/fs-sb-logout.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added library/modules/supabase/fs-sb-set-presence.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added library/modules/supabase/fs-sb-update-record.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added library/modules/supabase/fs-sb-upload-file.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added library/modules/supabase/fs-sb-user.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
44 changes: 42 additions & 2 deletions library/modules/supabase/nodes/auth/log-in.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,48 @@ hide_title: true

# Log In

Log in an existing user with an email and password or phone and password.
Logs in an existing user using an email and password or a phone number and password.

<div className="ndl-image-with-background l">
![Log In node](../../fs-sb-login.png)
</div>

This node authenticates the user against your connected Supabase project and, on success, creates an active user session. The session can then be used by other Supabase nodes in the app to access protected data, apply row-level security policies, and perform authenticated operations.

The Log In node is typically used as part of an authentication flow together with input fields for credentials and conditional logic to handle successful and failed login attempts.

This functionality is based on the Supabase Client SDK sign-in method. For implementation details and behavior, see
[Supabase Client SDK – Sign in a user](https://supabase.com/docs/reference/javascript/auth-signinwithpassword).

{/*##head##*/}

This is based on the [Supabase Client SDK - Sign in a user](https://supabase.com/docs/reference/javascript/auth-signinwithpassword).
## Inputs

<div className="ndl-table-35-65">

| Data | Type | Description |
| ---------------------------------------- | ------ | ----------- |
| <span className="ndl-data">Log In</span> | signal | Triggers the sign-in request. |
| <span className="ndl-data">Email</span> | string | Email address of the user (used for email login). |
| <span className="ndl-data">Phone</span> | string | Phone number of the user (used for phone login). |
| <span className="ndl-data">Password</span> | string | Password for the account. |

</div>

## Outputs

<div className="ndl-table-35-65">

| Data | Type | Description |
| --------------------------------------------- | ------- | ----------- |
| <span className="ndl-data">Success</span> | signal | Triggered when the login completes successfully. |
| <span className="ndl-data">Failure</span> | signal | Triggered if the login fails. |
| <span className="ndl-data">Finally</span> | signal | Triggered after the login completes, regardless of outcome. |
| <span className="ndl-data">Is Fetching</span> | boolean | True while the login request is in progress. |
| <span className="ndl-data">Is Fetched</span> | boolean | True once the login request has completed. |
| <span className="ndl-data">Status</span> | string | Status returned from the operation. |
| <span className="ndl-data">Is Success</span> | boolean | True if the login completed successfully. |
| <span className="ndl-data">Is Error</span> | boolean | True if an error occurred. |
| <span className="ndl-data">Error Text</span> | string | Error message returned by Supabase, if any. |

</div>
14 changes: 11 additions & 3 deletions library/modules/supabase/nodes/auth/log-out.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,16 @@ hide_title: true

# Log Out

Log in an existing user with an email and password or phone and password.
Logs out the currently authenticated user from the connected Supabase project.

<div className="ndl-image-with-background l">
![Log Out node](../../fs-sb-logout.png)
</div>

This node clears the active user session and removes the user’s authentication state from the app. After logging out, any subsequent Supabase operations will be executed without an authenticated user until a new login occurs.

The Log Out node is typically used in navigation flows, account menus, or security-related actions where the user explicitly ends their session.

{/*##head##*/}

This is based on the [Supabase Client SDK - Sign out a user](https://supabase.com/docs/reference/javascript/auth-signout).
This functionality is based on the Supabase Client SDK sign-out method. For reference, see
[Supabase Client SDK – Sign out a user](https://supabase.com/docs/reference/javascript/auth-signout).
10 changes: 9 additions & 1 deletion library/modules/supabase/nodes/auth/user.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,12 @@ hide_title: true

# User

{/*##head##*/}
Returns the currently authenticated user from the active Supabase session.

This node provides access to the user object associated with the current session, including identifiers and metadata such as user ID, email, phone number, and custom user metadata.

The User node is commonly used to display account information, personalize the UI, or drive conditional logic based on whether a user is logged in or not. If no active session exists, the node returns `null`.

The returned user data reflects the authentication state managed by Supabase and updates automatically as the session changes.

{/*##head##*/}
15 changes: 12 additions & 3 deletions library/modules/supabase/nodes/data/call-a-postgres-function.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,17 @@ hide_title: true

{/*##head##*/}

# Supabase Call a Postgres function
# Supabase Call a Postgres Function

{/*##head##*/}
Calls a Postgres function (RPC) defined in your Supabase database.

The Supabase Call a Postgres Function node allows you to execute a Postgres function directly on the database. This is commonly used for encapsulating complex queries, enforcing business logic close to the data, or performing operations that are difficult or inefficient to express using standard CRUD nodes.

Postgres functions are executed within the database context and can return scalar values, records, or sets of rows. This makes them well suited for aggregations, computed results, permission-aware queries, and reusable backend logic.

The node returns the raw result of the function execution. If the function returns multiple rows, the result will be an array. If no active session exists or permissions are insufficient, the call will fail according to your Supabase security and RLS configuration.

This functionality is based on the Supabase Client SDK RPC method. For reference, see
[Supabase Client SDK – Call a Postgres function](https://supabase.com/docs/reference/javascript/rpc).

This is based on the [Supabase Client SDK - Call a Postgres function](https://supabase.com/docs/reference/javascript/rpc).
{/*##head##*/}
47 changes: 28 additions & 19 deletions library/modules/supabase/nodes/data/create-new-record.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,39 +6,48 @@ hide_title: true

# Create New Record

The Create New Record node creates a new record in a specified table. You can define its field values and optionally set access control rules to manage who can read or write the record.
Creates a new record in a specified Supabase table.

{/*##head##*/}
<div className="ndl-image-with-background l">
![Create New Record node](../../fs-sb-create-record.png)
</div>

The Create New Record node inserts a new row into a selected table in your connected Supabase database. You define the field values either directly in the property panel or dynamically by connecting inputs from other nodes.

This node is commonly used for creating application data such as users, orders, content items, or any custom domain objects defined in your database schema. Insert operations respect Supabase Row Level Security (RLS) policies and the authentication context of the current user.

This is based on the [Supabase Client SDK - Insert data](https://supabase.com/docs/reference/javascript/insert).
This functionality is based on the Supabase Client SDK insert method. For reference, see
[Supabase Client SDK – Insert data](https://supabase.com/docs/reference/javascript/insert).

{/*##head##*/}

## Inputs

<div className="ndl-table-35-65">

| Data | Type | Description |
| -------------------------------------------- | ---- | --------------------------------- |
| <span className="ndl-data">Table Name</span> | enum | List of all the available tables. |
| Data | Type | Description |
| -------------------------------------------- | ---- | ----------- |
| <span className="ndl-data">Table Name</span> | enum | The table where the new record will be created. |

</div>

Under the group "Data" all the table fields will be, and are designed to both be exist dynamically in the property panel (for supported types) and by making a connection.
Under the **Data** group, all available fields for the selected table are exposed. These fields can be set directly in the property panel for supported types or populated dynamically through node connections.

## Outputs

<div className="ndl-table-35-65">

| Data | Type | Description |
| --------------------------------------------- | ------- | ----------- |
| <span className="ndl-data">Object ID</span> | string | |
| <span className="ndl-data">Success</span> | signal | |
| <span className="ndl-data">Failure</span> | signal | |
| <span className="ndl-data">Finally</span> | signal | |
| <span className="ndl-data">Is Fetching</span> | boolean | |
| <span className="ndl-data">Is Fetched</span> | boolean | |
| <span className="ndl-data">Status</span> | string | |
| <span className="ndl-data">Is Success</span> | boolean | |
| <span className="ndl-data">Is Error</span> | boolean | |
| <span className="ndl-data">Error Text</span> | string | |

</div>
| <span className="ndl-data">Object ID</span> | string | Internal identifier for this insert operation. |
| <span className="ndl-data">Success</span> | signal | Triggered when the record is successfully created. |
| <span className="ndl-data">Failure</span> | signal | Triggered if the insert operation fails. |
| <span className="ndl-data">Finally</span> | signal | Triggered after the operation completes, regardless of outcome. |
| <span className="ndl-data">Is Fetching</span> | boolean | True while the insert request is in progress. |
| <span className="ndl-data">Is Fetched</span> | boolean | True once the request has completed. |
| <span className="ndl-data">Status</span> | string | Status returned from the insert operation. |
| <span className="ndl-data">Is Success</span> | boolean | True if the record was created successfully. |
| <span className="ndl-data">Is Error</span> | boolean | True if an error occurred. |
| <span className="ndl-data">Error Text</span> | string | Error message returned by Supabase, if any. |

</div>
45 changes: 25 additions & 20 deletions library/modules/supabase/nodes/data/delete-records.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,27 @@ hide_title: true

{/*##head##*/}

# Update Records
# Delete Records

The Delete Record node removes a specific record in your Supabase table. You provide the record's unique ID, and the node handles the deletion.
Deletes one or more records from a Supabase table.

{/*##head##*/}
The Delete Records node removes records from a selected table based on a filter condition. It is commonly used for cleanup operations, user-initiated deletions, or administrative actions within an application.

Delete operations respect Supabase Row Level Security (RLS) policies and are executed in the context of the currently authenticated user.

This functionality is based on the Supabase Client SDK delete method. For reference, see
[Supabase Client SDK – Delete data](https://supabase.com/docs/reference/javascript/delete).

This is based on the [Supabase Client SDK - Delete data](https://supabase.com/docs/reference/javascript/delete).
{/*##head##*/}

## Inputs

<div className="ndl-table-35-65">

| Data | Type | Description |
| -------------------------------------------- | ---------- | --------------------------------- |
| <span className="ndl-data">Filter</span> | javascript | |
| <span className="ndl-data">Table Name</span> | enum | List of all the available tables. |
| Data | Type | Description |
| ---------------------------------------- | ---------- | ----------- |
| <span className="ndl-data">Table Name</span> | enum | The table from which records will be deleted. |
| <span className="ndl-data">Filter</span> | javascript | Filter expression used to select which records to delete. |

</div>

Expand All @@ -29,15 +34,15 @@ This is based on the [Supabase Client SDK - Delete data](https://supabase.com/do

| Data | Type | Description |
| --------------------------------------------- | ------- | ----------- |
| <span className="ndl-data">Object ID</span> | string | |
| <span className="ndl-data">Success</span> | signal | |
| <span className="ndl-data">Failure</span> | signal | |
| <span className="ndl-data">Finally</span> | signal | |
| <span className="ndl-data">Is Fetching</span> | boolean | |
| <span className="ndl-data">Is Fetched</span> | boolean | |
| <span className="ndl-data">Status</span> | string | |
| <span className="ndl-data">Is Success</span> | boolean | |
| <span className="ndl-data">Is Error</span> | boolean | |
| <span className="ndl-data">Error Text</span> | string | |

</div>
| <span className="ndl-data">Object ID</span> | string | Internal identifier for this delete operation. |
| <span className="ndl-data">Success</span> | signal | Triggered when the delete operation completes successfully. |
| <span className="ndl-data">Failure</span> | signal | Triggered if the delete operation fails. |
| <span className="ndl-data">Finally</span> | signal | Triggered after the operation completes, regardless of outcome. |
| <span className="ndl-data">Is Fetching</span> | boolean | True while the delete request is in progress. |
| <span className="ndl-data">Is Fetched</span> | boolean | True once the request has completed. |
| <span className="ndl-data">Status</span> | string | Status returned from the delete operation. |
| <span className="ndl-data">Is Success</span> | boolean | True if the records were deleted successfully. |
| <span className="ndl-data">Is Error</span> | boolean | True if an error occurred. |
| <span className="ndl-data">Error Text</span> | string | Error message returned by Supabase, if any. |

</div>
2 changes: 1 addition & 1 deletion library/modules/supabase/nodes/data/query-records.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ hide_title: true

The Query Records node retrieves data from your Supabase table or views. You can use it to fetch a list of records or perform a count query, depending on your needs.

{/*##head##*/}
{/*##main##*/}

This is based on the [Supabase Client SDK - Fetch data](https://supabase.com/docs/reference/javascript/select).

Expand Down
2 changes: 1 addition & 1 deletion library/modules/supabase/nodes/data/update-records.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ hide_title: true

The Update Records node modifies an existing record in your Supabase table. You specify which record to update and which fields to change.

{/*##head##*/}
{/*##main##*/}

This is based on the [Supabase Client SDK - Update data](https://supabase.com/docs/reference/javascript/update).

Expand Down
52 changes: 19 additions & 33 deletions library/modules/supabase/nodes/edge-functions/call-edge-function.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,56 +6,42 @@ hide_title: true

# Call Edge Function

The Call Edge Function node calls a specific Supabase Edge Function. You provide the unique function name, and the request body.
Calls a specific Supabase Edge Function by name and sends an optional request body.

{/*##head##*/}
{/*##main##*/}

<div className="ndl-image-with-background l">
![Call Edge Function node](../../fs-sb-call-function.png)
</div>

This is based on the [Supabase Client SDK - Invokes a Supabase Edge Function](https://supabase.com/docs/reference/javascript/functions-invoke).
The Call Edge Function node invokes a Supabase Edge Function deployed in your Supabase project. Provide the function name and an optional payload, and Fluxscape will execute the request and return the response object.

This node is based on the Supabase Client SDK invoke method. For reference, see
[Supabase Client SDK – Invokes a Supabase Edge Function](https://supabase.com/docs/reference/javascript/functions-invoke).

## Inputs

<div className="ndl-table-35-65">

| Data | Type | Description |
| ----------------------------------------------- | ---------- | ----------- |
| <span className="ndl-data">Function Name</span> | string | |
| <span className="ndl-data">Options</span> | javascript | |
| <span className="ndl-data">Function Name</span> | string | The name of the Edge Function to invoke (without a URL). |
| <span className="ndl-data">Options</span> | javascript | A script that returns an options object for the request. |

</div>

Similar to how the Function node works, you can use `Inputs.Value` inside the Options script to create a custom request.
Similar to how other scriptable nodes work, you can use `Inputs.Value` inside the Options script to build a dynamic request.

### Options

```js
// Write your query script here, check out the reference documentation for examples
// Return an options object for the Edge Function invocation.
// Examples: headers, method, responseType, body, etc.
return {
// headers: {
// "my-custom-header": 'my-custom-header-value',
// "my-custom-header": "my-custom-header-value",
// },
// method: 'POST',
// responseType: 'text',
// method: "POST",
// responseType: "text",
body: JSON.stringify(Inputs.Data),
};
```

## Outputs

> The response you get back is a pure object, and will not be converted to a Noodl Object.

<div className="ndl-table-35-65">

| Data | Type | Description |
| --------------------------------------------- | ------- | ----------- |
| <span className="ndl-data">Object ID</span> | string | |
| <span className="ndl-data">Success</span> | signal | |
| <span className="ndl-data">Failure</span> | signal | |
| <span className="ndl-data">Finally</span> | signal | |
| <span className="ndl-data">Is Fetching</span> | boolean | |
| <span className="ndl-data">Is Fetched</span> | boolean | |
| <span className="ndl-data">Status</span> | string | |
| <span className="ndl-data">Is Success</span> | boolean | |
| <span className="ndl-data">Is Error</span> | boolean | |
| <span className="ndl-data">Error Text</span> | string | |

</div>
};
Loading