-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New Components - goformz #17378
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
New Components - goformz #17378
Conversation
|
The latest updates on your projects. Learn more about Vercel for Git ↗︎ |
WalkthroughNew GoFormz integration components were added, including a "Create Form" action and a "New Form Completed" source. The GoFormz app was refactored to support API operations for templates, users, groups, forms, and webhooks. Utility and package updates were made to support these features and ensure correct operation. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant CreateFormAction
participant GoFormzApp
participant GoFormzAPI
User->>CreateFormAction: Provide form details and field values
CreateFormAction->>GoFormzApp: Fetch template fields (getTemplate)
GoFormzApp->>GoFormzAPI: GET /templates/{templateId}
GoFormzAPI-->>GoFormzApp: Template field definitions
GoFormzApp-->>CreateFormAction: Template field definitions
CreateFormAction->>GoFormzApp: Create form (createForm)
GoFormzApp->>GoFormzAPI: POST /forms
GoFormzAPI-->>GoFormzApp: Created form response
GoFormzApp-->>CreateFormAction: Created form response
CreateFormAction-->>User: Return created form details
sequenceDiagram
participant GoFormzSource
participant GoFormzApp
participant GoFormzAPI
participant User
GoFormzSource->>GoFormzApp: Register webhook (activate)
GoFormzApp->>GoFormzAPI: POST /webhooks
GoFormzAPI-->>GoFormzApp: Webhook ID
GoFormzApp-->>GoFormzSource: Store webhook ID
GoFormzAPI->>GoFormzSource: Webhook event (form.complete)
GoFormzSource->>GoFormzApp: Fetch form details (getForm)
GoFormzApp->>GoFormzAPI: GET /forms/{formId}
GoFormzAPI-->>GoFormzApp: Form details
GoFormzApp-->>GoFormzSource: Form details
GoFormzSource-->>User: Emit form completed event
GoFormzSource->>GoFormzApp: Delete webhook (deactivate)
GoFormzApp->>GoFormzAPI: DELETE /webhooks/{hookId}
Assessment against linked issues
Poem
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 ESLint
components/goformz/actions/create-form/create-form.mjsOops! Something went wrong! :( ESLint: 8.57.1 Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'jsonc-eslint-parser' imported from /eslint.config.mjs components/goformz/common/utils.mjsOops! Something went wrong! :( ESLint: 8.57.1 Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'jsonc-eslint-parser' imported from /eslint.config.mjs components/goformz/goformz.app.mjsOops! Something went wrong! :( ESLint: 8.57.1 Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'jsonc-eslint-parser' imported from /eslint.config.mjs
✨ Finishing Touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
🧹 Nitpick comments (2)
components/goformz/actions/create-form/create-form.mjs (1)
88-95: Consider adding validation for required template fields.The code maps all template fields but doesn't validate if required fields have values. This could lead to API errors if the GoFormz API expects certain fields to be populated.
const fieldProps = {}; for (const field of Object.values(fields)) { - fieldProps[field.name] = parseObject(this[field.id]); + const value = parseObject(this[field.id]); + if (field.required && !value) { + throw new ConfigurationError(`Required field "${field.name}" is missing`); + } + if (value !== undefined) { + fieldProps[field.name] = value; + } }Note: This assumes the template field objects have a
requiredproperty. You'll need to verify the GoFormz API response structure.components/goformz/goformz.app.mjs (1)
126-126: Fix formatting: Remove extra space in function declaration.- createForm( opts = {}) { + createForm(opts = {}) {
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (5)
components/goformz/actions/create-form/create-form.mjs(1 hunks)components/goformz/common/utils.mjs(1 hunks)components/goformz/goformz.app.mjs(1 hunks)components/goformz/package.json(2 hunks)components/goformz/sources/new-form-completed/new-form-completed.mjs(1 hunks)
🧰 Additional context used
🧠 Learnings (4)
components/goformz/package.json (1)
Learnt from: jcortes
PR: PipedreamHQ/pipedream#14935
File: components/sailpoint/package.json:15-18
Timestamp: 2024-12-12T19:23:09.039Z
Learning: When developing Pipedream components, do not add built-in Node.js modules like `fs` to `package.json` dependencies, as they are native modules provided by the Node.js runtime.
components/goformz/actions/create-form/create-form.mjs (3)
Learnt from: jcortes
PR: PipedreamHQ/pipedream#14467
File: components/gainsight_px/actions/create-account/create-account.mjs:4-6
Timestamp: 2024-10-30T15:24:39.294Z
Learning: In `components/gainsight_px/actions/create-account/create-account.mjs`, the action name should be "Create Account" instead of "Create Memory".
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#12731
File: components/hackerone/actions/get-members/get-members.mjs:3-28
Timestamp: 2024-10-08T15:33:38.240Z
Learning: When exporting a summary message in the `run` method of an action, ensure the message is correctly formatted. For example, in the `hackerone-get-members` action, the correct format is `Successfully retrieved ${response.data.length} members`.
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#12731
File: components/hackerone/actions/get-members/get-members.mjs:3-28
Timestamp: 2024-07-04T18:11:59.822Z
Learning: When exporting a summary message in the `run` method of an action, ensure the message is correctly formatted. For example, in the `hackerone-get-members` action, the correct format is `Successfully retrieved ${response.data.length} members`.
components/goformz/sources/new-form-completed/new-form-completed.mjs (2)
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#15376
File: components/monday/sources/name-updated/name-updated.mjs:6-6
Timestamp: 2025-01-23T03:55:15.166Z
Learning: Source names in Monday.com components don't need to start with "New" if they emit events for updated items (e.g., "Name Updated", "Column Value Updated") rather than new items. This follows the component guidelines exception where the "New" prefix is only required when emits are limited to new items.
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#14265
File: components/the_magic_drip/sources/common.mjs:35-43
Timestamp: 2024-10-10T19:18:27.998Z
Learning: In `components/the_magic_drip/sources/common.mjs`, when processing items in `getAndProcessData`, `savedIds` is intentionally updated with IDs of both emitted and non-emitted items to avoid emitting retroactive events upon first deployment and ensure only new events are emitted as they occur.
components/goformz/goformz.app.mjs (2)
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#16954
File: components/salesloft/salesloft.app.mjs:14-23
Timestamp: 2025-06-04T17:52:05.780Z
Learning: In the Salesloft API integration (components/salesloft/salesloft.app.mjs), the _makeRequest method returns response.data which directly contains arrays for list endpoints like listPeople, listCadences, listUsers, and listAccounts. The propDefinitions correctly call .map() directly on these responses without needing to destructure a nested data property.
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#16954
File: components/salesloft/salesloft.app.mjs:14-23
Timestamp: 2025-06-04T17:52:05.780Z
Learning: The Salesloft API list endpoints (listPeople, listCadences, listUsers, listAccounts) return arrays directly in the response body, not wrapped in a metadata object with a nested data property. The _makeRequest method correctly returns response.data which contains the arrays that can be mapped over directly in propDefinitions.
⏰ Context from checks skipped due to timeout of 90000ms (4)
- GitHub Check: Lint Code Base
- GitHub Check: pnpm publish
- GitHub Check: Publish TypeScript components
- GitHub Check: Verify TypeScript components
🔇 Additional comments (1)
components/goformz/package.json (1)
3-18: LGTM! Appropriate version bump and dependency addition.The version bump to 0.1.0 correctly follows semantic versioning for new feature additions. The @pipedream/platform dependency is properly added and the JSON structure is now valid.
GTFalcao
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
Resolves #17274
Note: I was able to test the action, but not the source. I started getting an error: "Out of call volume quota", and am unable to reconnect the account in Pipedream. I tried signing up for a new trial, but the UI says it doesn't have API access.
Summary by CodeRabbit