-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New Components - onelogin #15611
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 - onelogin #15611
Conversation
|
The latest updates on your projects. Learn more about Vercel for Git ↗︎ 3 Skipped Deployments
|
WalkthroughThis update introduces a comprehensive OneLogin integration, adding new actions for creating, updating, and revoking user sessions, as well as several event-based sources for polling user, event, and directory sync changes. Supporting modules for constants and utilities are included, alongside extensive enhancements to the OneLogin app component. Numerous unrelated app files receive only a trailing newline addition. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant Action
participant OneLoginApp
participant OneLoginAPI
User->>Action: Trigger (e.g., Create User)
Action->>OneLoginApp: Call createUser/updateUser/revokeUserSessions
OneLoginApp->>OneLoginAPI: REST API Request (POST/PUT)
OneLoginAPI-->>OneLoginApp: API Response
OneLoginApp-->>Action: Return result
Action-->>User: Output summary and data
sequenceDiagram
participant Source
participant OneLoginApp
participant OneLoginAPI
participant User
Source->>OneLoginApp: Fetch events (with lastDate)
OneLoginApp->>OneLoginAPI: GET /events
OneLoginAPI-->>OneLoginApp: Event data
OneLoginApp-->>Source: Return events
Source->>User: Emit new events (with summary)
Source->>Source: Update lastDate in DB
Estimated code review effort4 (~90 minutes) Suggested reviewers
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/onelogin/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/onelogin/sources/new-event/test-event.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/onelogin/onelogin.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
📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (4)
🧠 Learnings (2)components/onelogin/sources/new-event/new-event.mjs (5)Learnt from: GTFalcao Learnt from: GTFalcao Learnt from: GTFalcao Learnt from: GTFalcao Learnt from: GTFalcao components/onelogin/onelogin.app.mjs (4)Learnt from: GTFalcao Learnt from: LucBerge Learnt from: LucBerge Learnt from: GTFalcao ✅ Files skipped from review due to trivial changes (1)
🧰 Additional context used🧠 Learnings (2)components/onelogin/sources/new-event/new-event.mjs (5)Learnt from: GTFalcao Learnt from: GTFalcao Learnt from: GTFalcao Learnt from: GTFalcao Learnt from: GTFalcao components/onelogin/onelogin.app.mjs (4)Learnt from: GTFalcao Learnt from: LucBerge Learnt from: LucBerge Learnt from: GTFalcao ⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
🔇 Additional comments (5)
✨ 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 (
|
Sources - New User Created - New Login Attempt - New Directory Sync Actions - Create User - Update User - Revoke User Session
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: 5
🔭 Outside diff range comments (2)
components/mailrelay/mailrelay.app.mjs (1)
7-9: Avoid logging authentication secrets to stdout.
console.log(Object.keys(this.$auth))will surface every key present in the connected account payload. These keys frequently include tokens or IDs that are considered secrets. Printing them can inadvertently leak credentials into build logs or monitoring systems.Consider returning the key list, masking sensitive values, or removing this helper entirely:
- authKeys() { - console.log(Object.keys(this.$auth)); - }, + /** + * Safely expose the names of authentication keys without logging + * sensitive values to the console. + */ + authKeys() { + return Object.keys(this.$auth); + },components/tailscale/tailscale.app.mjs (1)
7-9: Avoid logging authentication secrets to stdout
console.log(Object.keys(this.$auth))prints the names of all auth-related keys to the process output, which can leak sensitive information in build logs or monitoring tools. Return or otherwise handle the data instead of logging it.authKeys() { - console.log(Object.keys(this.$auth)); + // Don’t log secrets – return them to the caller if needed. + return Object.keys(this.$auth); },
🧹 Nitpick comments (13)
components/helpdesk/helpdesk.app.mjs (1)
6-9: Consider removing console logging in production.
authKeys()prints the keys of the OAuth payload. While it doesn’t expose secrets, it can still reveal internal field names. Recommend guarding this behind a debug flag or removing it before production use.components/rize/rize.app.mjs (1)
7-9: Avoid logging authentication data to consoleEven though you only log the property names, the presence of
console.log(Object.keys(this.$auth))can still leak information in production logs and invites accidental expansion to full objects. Consider removing or shielding this call behind a debug flag.components/docker_engine/docker_engine.app.mjs (1)
6-9: Avoid logging authentication metadata in production
authKeys()printsObject.keys(this.$auth)to stdout. Even though it logs only key names (not values), this can still leak information about the structure of connected-account credentials when run in production logs.- authKeys() { - console.log(Object.keys(this.$auth)); - }, + authKeys() { + if (process.env.NODE_ENV === "development") { + // Safe to log during local debugging only + console.debug("[docker_engine] $auth keys:", Object.keys(this.$auth)); + } + },Consider gating the log behind a debug flag or removing it entirely.
components/vlm_run/vlm_run.app.mjs (1)
7-9: Prefer removing or gating rawconsole.logof auth metadata
Even though only key names are emitted, logging authentication structure in production can clutter logs and expose integration details. Consider returning the array or using a debug-level logger behind an env flag instead.components/kraken_io/kraken_io.app.mjs (1)
7-9: Prefer framework logger overconsole.logDirect
console.logstatements bypass Pipedream’s logging facilities, making the output harder to trace and filter. Replace withthis.$logger.info(or remove entirely and return the value) to stay consistent with other components.- console.log(Object.keys(this.$auth)); + this.$logger.info(Object.keys(this.$auth));components/onelogin/common/utils.mjs (1)
1-24: Consider renaming the function for better clarity.The function logic is solid with appropriate error handling, but the name
parseObjectcould be misleading since it primarily parses JSON strings into objects rather than parsing existing objects. Consider renaming toparseJSONSafelyorparseJSONfor better clarity.-export const parseObject = (obj) => { +export const parseJSON = (obj) => {components/onelogin/sources/new-login-attempt/test-event.mjs (1)
1-37: Consider using more generic test data.The test event contains what appears to be real IP addresses (
98.80.221.195) and client IDs. For test fixtures, consider using clearly fake/example data to avoid any potential data exposure concerns.- "ipaddr":"98.80.221.195", + "ipaddr":"192.0.2.1", - "client_id":"1e87e84576a77d999e89e3ba110df9461decc2b1564bb1b9aa3e05fcbafb5918", + "client_id":"example-client-id-for-testing-purposes-only", - "user_name":"Username", + "user_name":"test-user",components/onelogin/sources/common/base.mjs (3)
35-42: Avoid unnecessary array mutation and improve memory efficiency.The code collects all paginated results into an array before processing. Consider processing events as they arrive to improve memory efficiency, especially for large result sets.
- let responseArray = []; - for await (const item of response) { - responseArray.push(item); - } - - if (responseArray.length) { - this._setLastDate(responseArray[0].created_at); - } + const events = []; + let latestDate = null; + + for await (const item of response) { + if (!latestDate) { + latestDate = item.created_at; + } + events.unshift(item); // Add to beginning for chronological order + } + + if (latestDate) { + this._setLastDate(latestDate); + }
44-44: Avoid mutating the array with reverse().Using
reverse()mutates the original array. Since you're building the array yourself, consider inserting in the correct order from the start.- for (const item of responseArray.reverse()) { + for (const item of events) { // If using the refactor above
55-55: Make the initial event limit configurable.The magic number
25for initial events could be made configurable to allow different components to specify their preferred initial load size.+ getInitialEventLimit() { + return 25; + }, async deploy() { - await this.emitEvent(25); + await this.emitEvent(this.getInitialEventLimit()); },components/onelogin/sources/new-login-attempt/new-login-attempt.mjs (1)
14-16: Consider importing event types from constants.The event type
111could be imported from the constants file to improve maintainability and avoid magic numbers.+import { EVENT_TYPES } from "../../common/constants.mjs"; + // ... getEventType() { - return 111; + return EVENT_TYPES.LOGIN_ATTEMPT; // Assuming this constant exists },components/onelogin/sources/new-directory-sync-event/new-directory-sync-event.mjs (1)
14-16: Consider importing event types from constants.Similar to the login attempt source, the event type
117could be imported from the constants file for better maintainability.+import { EVENT_TYPES } from "../../common/constants.mjs"; + // ... getEventType() { - return 117; + return EVENT_TYPES.DIRECTORY_SYNC; // Assuming this constant exists },components/onelogin/common/constants.mjs (1)
1-21: Consider consistent structure for option arrays
PASSWORD_ALGORITHM_OPTIONSuses a simple string array while other options likeMAPPINGS_OPTIONSuse objects with label/value. Consider using a consistent structure across all options for better maintainability.-export const PASSWORD_ALGORITHM_OPTIONS = [ - "salt+sha256", - "sha256+salt", - "bcrypt", -]; +export const PASSWORD_ALGORITHM_OPTIONS = [ + { + label: "Salt + SHA256", + value: "salt+sha256", + }, + { + label: "SHA256 + Salt", + value: "sha256+salt", + }, + { + label: "BCrypt", + value: "bcrypt", + }, +];
📜 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 (67)
components/agentql/agentql.app.mjs(1 hunks)components/airpinpoint/airpinpoint.app.mjs(1 hunks)components/api_labz/api_labz.app.mjs(1 hunks)components/arlo/arlo.app.mjs(1 hunks)components/autotask_psa/autotask_psa.app.mjs(1 hunks)components/botx/botx.app.mjs(1 hunks)components/classmarker/classmarker.app.mjs(1 hunks)components/consulta_unica/consulta_unica.app.mjs(1 hunks)components/currents_api/currents_api.app.mjs(1 hunks)components/dappier/dappier.app.mjs(1 hunks)components/docker_engine/docker_engine.app.mjs(1 hunks)components/dungeon_fighter_online/dungeon_fighter_online.app.mjs(1 hunks)components/emailverify_io/emailverify_io.app.mjs(1 hunks)components/enginemailer/enginemailer.app.mjs(1 hunks)components/extracta_ai/extracta_ai.app.mjs(1 hunks)components/formatting/formatting.app.mjs(1 hunks)components/getty_images/getty_images.app.mjs(1 hunks)components/google_identity/google_identity.app.mjs(1 hunks)components/google_marketplace/google_marketplace.app.mjs(1 hunks)components/goqr_me/goqr_me.app.mjs(1 hunks)components/greenhouse_job_board_api/greenhouse_job_board_api.app.mjs(1 hunks)components/helpdesk/helpdesk.app.mjs(1 hunks)components/kraken_io/kraken_io.app.mjs(1 hunks)components/leverly/leverly.app.mjs(1 hunks)components/livespace/livespace.app.mjs(1 hunks)components/mailrelay/mailrelay.app.mjs(1 hunks)components/mailsoftly/mailsoftly.app.mjs(1 hunks)components/microsoft_dataverse/microsoft_dataverse.app.mjs(1 hunks)components/microsoft_teams_events/microsoft_teams_events.app.mjs(1 hunks)components/microsoft_word/microsoft_word.app.mjs(1 hunks)components/mindstudio/mindstudio.app.mjs(1 hunks)components/minerstat/minerstat.app.mjs(1 hunks)components/miyn/miyn.app.mjs(1 hunks)components/mollie/mollie.app.mjs(1 hunks)components/netcore/netcore.app.mjs(1 hunks)components/nutrient_document_web_services_api/nutrient_document_web_services_api.app.mjs(1 hunks)components/onelogin/actions/create-user/create-user.mjs(1 hunks)components/onelogin/actions/revoke-user-sessions/revoke-user-sessions.mjs(1 hunks)components/onelogin/actions/update-user/update-user.mjs(1 hunks)components/onelogin/common/constants.mjs(1 hunks)components/onelogin/common/utils.mjs(1 hunks)components/onelogin/onelogin.app.mjs(1 hunks)components/onelogin/package.json(2 hunks)components/onelogin/sources/common/base.mjs(1 hunks)components/onelogin/sources/new-directory-sync-event/new-directory-sync-event.mjs(1 hunks)components/onelogin/sources/new-directory-sync-event/test-event.mjs(1 hunks)components/onelogin/sources/new-login-attempt/new-login-attempt.mjs(1 hunks)components/onelogin/sources/new-login-attempt/test-event.mjs(1 hunks)components/onelogin/sources/new-user/new-user.mjs(1 hunks)components/onelogin/sources/new-user/test-event.mjs(1 hunks)components/outline/outline.app.mjs(1 hunks)components/persanaai/persanaai.app.mjs(1 hunks)components/planday/planday.app.mjs(1 hunks)components/provesource/provesource.app.mjs(1 hunks)components/rewiser/rewiser.app.mjs(1 hunks)components/rize/rize.app.mjs(1 hunks)components/runsignup/runsignup.app.mjs(1 hunks)components/swarmnode/swarmnode.app.mjs(1 hunks)components/systeme_io/systeme_io.app.mjs(1 hunks)components/tailscale/tailscale.app.mjs(1 hunks)components/test_apps_for_switching_appslug_009/test_apps_for_switching_appslug_009.app.mjs(1 hunks)components/verifiedemail/verifiedemail.app.mjs(1 hunks)components/vlm_run/vlm_run.app.mjs(1 hunks)components/wafrow/wafrow.app.mjs(1 hunks)components/woodelivery/woodelivery.app.mjs(1 hunks)components/yepcode/yepcode.app.mjs(1 hunks)components/zoho_fms/zoho_fms.app.mjs(1 hunks)
🧰 Additional context used
🧠 Learnings (13)
components/microsoft_teams_events/microsoft_teams_events.app.mjs (1)
Learnt from: GTFalcao
PR: #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.
components/onelogin/package.json (1)
Learnt from: jcortes
PR: #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/onelogin/sources/new-directory-sync-event/test-event.mjs (1)
Learnt from: GTFalcao
PR: #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/onelogin/sources/new-user/new-user.mjs (4)
Learnt from: GTFalcao
PR: #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: #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.
Learnt from: GTFalcao
PR: #12697
File: components/salesforce_rest_api/sources/common-webhook-methods.mjs:1-71
Timestamp: 2024-10-08T15:33:38.240Z
Learning: The common-webhook-methods.mjs object is designed to be extended, similar to an abstract class, and intentionally does not implement certain methods like generateWebhookMeta and getEventType to enforce implementation in subclasses.
Learnt from: GTFalcao
PR: #12697
File: components/salesforce_rest_api/sources/common-webhook-methods.mjs:1-71
Timestamp: 2024-07-24T02:06:47.016Z
Learning: The common-webhook-methods.mjs object is designed to be extended, similar to an abstract class, and intentionally does not implement certain methods like generateWebhookMeta and getEventType to enforce implementation in subclasses.
components/onelogin/sources/new-user/test-event.mjs (3)
Learnt from: GTFalcao
PR: #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.
Learnt from: GTFalcao
PR: #12697
File: components/salesforce_rest_api/sources/common-webhook-methods.mjs:1-71
Timestamp: 2024-10-08T15:33:38.240Z
Learning: The common-webhook-methods.mjs object is designed to be extended, similar to an abstract class, and intentionally does not implement certain methods like generateWebhookMeta and getEventType to enforce implementation in subclasses.
Learnt from: GTFalcao
PR: #12697
File: components/salesforce_rest_api/sources/common-webhook-methods.mjs:1-71
Timestamp: 2024-07-24T02:06:47.016Z
Learning: The common-webhook-methods.mjs object is designed to be extended, similar to an abstract class, and intentionally does not implement certain methods like generateWebhookMeta and getEventType to enforce implementation in subclasses.
components/onelogin/sources/new-login-attempt/test-event.mjs (1)
Learnt from: GTFalcao
PR: #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/onelogin/actions/create-user/create-user.mjs (3)
Learnt from: jcortes
PR: #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: #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.
Learnt from: GTFalcao
PR: #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.
components/onelogin/common/constants.mjs (1)
Learnt from: GTFalcao
PR: #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.
components/onelogin/actions/update-user/update-user.mjs (2)
Learnt from: GTFalcao
PR: #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.
Learnt from: GTFalcao
PR: #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.
components/onelogin/sources/new-directory-sync-event/new-directory-sync-event.mjs (5)
Learnt from: GTFalcao
PR: #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.
Learnt from: GTFalcao
PR: #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: #12697
File: components/salesforce_rest_api/sources/common-webhook-methods.mjs:1-71
Timestamp: 2024-10-08T15:33:38.240Z
Learning: The common-webhook-methods.mjs object is designed to be extended, similar to an abstract class, and intentionally does not implement certain methods like generateWebhookMeta and getEventType to enforce implementation in subclasses.
Learnt from: GTFalcao
PR: #12697
File: components/salesforce_rest_api/sources/common-webhook-methods.mjs:1-71
Timestamp: 2024-07-24T02:06:47.016Z
Learning: The common-webhook-methods.mjs object is designed to be extended, similar to an abstract class, and intentionally does not implement certain methods like generateWebhookMeta and getEventType to enforce implementation in subclasses.
Learnt from: GTFalcao
PR: #12697
File: components/salesforce_rest_api/sources/common.mjs:97-98
Timestamp: 2024-07-24T02:05:59.531Z
Learning: The processTimerEvent method in the components/salesforce_rest_api/sources/common.mjs file is intentionally left unimplemented to enforce that subclasses must implement this method, similar to an abstract class in object-oriented programming.
components/onelogin/sources/new-login-attempt/new-login-attempt.mjs (4)
Learnt from: GTFalcao
PR: #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: #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.
Learnt from: GTFalcao
PR: #12697
File: components/salesforce_rest_api/sources/common-webhook-methods.mjs:1-71
Timestamp: 2024-10-08T15:33:38.240Z
Learning: The common-webhook-methods.mjs object is designed to be extended, similar to an abstract class, and intentionally does not implement certain methods like generateWebhookMeta and getEventType to enforce implementation in subclasses.
Learnt from: GTFalcao
PR: #12697
File: components/salesforce_rest_api/sources/common-webhook-methods.mjs:1-71
Timestamp: 2024-07-24T02:06:47.016Z
Learning: The common-webhook-methods.mjs object is designed to be extended, similar to an abstract class, and intentionally does not implement certain methods like generateWebhookMeta and getEventType to enforce implementation in subclasses.
components/onelogin/sources/common/base.mjs (2)
Learnt from: GTFalcao
PR: #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.
Learnt from: GTFalcao
PR: #12697
File: components/salesforce_rest_api/sources/common.mjs:97-98
Timestamp: 2024-07-24T02:05:59.531Z
Learning: The processTimerEvent method in the components/salesforce_rest_api/sources/common.mjs file is intentionally left unimplemented to enforce that subclasses must implement this method, similar to an abstract class in object-oriented programming.
components/onelogin/onelogin.app.mjs (1)
Learnt from: GTFalcao
PR: #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.
🧬 Code Graph Analysis (2)
components/onelogin/actions/revoke-user-sessions/revoke-user-sessions.mjs (3)
components/onelogin/actions/update-user/update-user.mjs (1)
response(241-279)components/onelogin/actions/create-user/create-user.mjs (1)
response(238-275)components/onelogin/sources/common/base.mjs (1)
response(25-33)
components/onelogin/onelogin.app.mjs (1)
components/onelogin/common/constants.mjs (8)
PASSWORD_ALGORITHM_OPTIONS(16-20)PASSWORD_ALGORITHM_OPTIONS(16-20)STATE_OPTIONS(22-39)STATE_OPTIONS(22-39)STATUS_OPTIONS(41-74)STATUS_OPTIONS(41-74)MAPPINGS_OPTIONS(1-14)MAPPINGS_OPTIONS(1-14)
🔇 Additional comments (65)
components/google_marketplace/google_marketplace.app.mjs (1)
11-12: No functional impact — newline addition is fine
Nothing to address.components/goqr_me/goqr_me.app.mjs (1)
11-12: File-ending newline looks goodAdding a trailing newline keeps the file POSIX-compliant and aligns with the repo’s formatting conventions.
components/verifiedemail/verifiedemail.app.mjs (1)
11-12: Consistent trailing newline – looks goodAdding the final newline aligns the file with POSIX and repo formatting conventions.
components/microsoft_word/microsoft_word.app.mjs (1)
11-12: Trailing newline added – conforms to POSIX and repo style
No functional impact. Good housekeeping change.components/extracta_ai/extracta_ai.app.mjs (1)
11-12: No functional impact – trailing newline is fineThe added newline keeps file-termination consistent with the rest of the codebase. No other concerns.
components/minerstat/minerstat.app.mjs (1)
11-11: Consistent EOF newline added – LGTMAdding a trailing newline aligns with POSIX conventions and keeps the file consistent with editor defaults across the repo. No functional impact.
components/zoho_fms/zoho_fms.app.mjs (1)
11-12: Consistent EOF newline addition looks goodAdding a trailing newline keeps the file POSIX-compliant and aligns with the repo-wide formatting update. No further action required.
components/dungeon_fighter_online/dungeon_fighter_online.app.mjs (1)
11-12: Consistent formatting – trailing newline addedThe added newline aligns the file with common POSIX and linting conventions. No functional impact.
components/provesource/provesource.app.mjs (1)
11-11: Consistent EOF newline – good for POSIX tooling
Adding a terminating newline keeps the file POSIX-friendly and consistent with other components. No additional concerns.components/microsoft_dataverse/microsoft_dataverse.app.mjs (1)
11-12: No functional changes – newline addition aligns with POSIX style
Adding a trailing newline is a harmless formatting improvement and brings the file in line with common tooling expectations.components/enginemailer/enginemailer.app.mjs (1)
11-12: Stylistic newline addition LGTMTrailing newline brings the file in line with POSIX/editor tooling expectations. No functional impact observed.
components/woodelivery/woodelivery.app.mjs (1)
11-12: Trailing newline added – all goodAdding a trailing newline keeps the file POSIX-compliant and aligns with editor/CI formatting rules. No further action needed.
components/mindstudio/mindstudio.app.mjs (1)
11-12: Add trailing newline – LGTMAdding a trailing newline adheres to POSIX and repository formatting conventions. No functional impact.
components/classmarker/classmarker.app.mjs (1)
11-12: Good call adding a trailing newline
Ensures POSIX-compliant EOF and keeps diff noise down in future edits.components/systeme_io/systeme_io.app.mjs (1)
11-12: Consistent EOF newline — looks goodThe added trailing newline brings the file in line with POSIX and repo formatting conventions. No functional impact observed.
components/netcore/netcore.app.mjs (1)
11-12: Add EOF newline – good housekeepingThe added trailing newline meets POSIX and many linter requirements; no functional impact.
components/nutrient_document_web_services_api/nutrient_document_web_services_api.app.mjs (1)
11-12: LGTM – only a trailing-newline additionThis change just standardizes the file ending, improving POSIX compliance and preventing needless diff noise. Nothing else to flag.
components/helpdesk/helpdesk.app.mjs (1)
11-12: Trailing newline addition is fine.Nothing else changes, and the file now respects the typical POSIX convention of ending with a newline.
components/dappier/dappier.app.mjs (1)
11-12: Formatting improvement acknowledgedThe added trailing newline complies with POSIX and most style-guide recommendations. No functional impact—good to keep the file consistent with the rest of the codebase.
components/rewiser/rewiser.app.mjs (1)
11-12: No functional impact — newline addition standardizes formattingOnly a trailing newline was added. Conforms to common formatting conventions. 👍
components/mailrelay/mailrelay.app.mjs (1)
11-12: Trailing newline addition acknowledged.The EOF-newline addition aligns with POSIX conventions and avoids certain tooling warnings. No further action required.
components/rize/rize.app.mjs (1)
11-12: Trailing newline looks goodThe sole change introduces a POSIX-style trailing newline, improving consistency with the rest of the codebase.
components/microsoft_teams_events/microsoft_teams_events.app.mjs (1)
11-12: Trailing newline keeps POSIX-style file termination consistent
No functional impact, but it aligns with repo formatting conventions.components/tailscale/tailscale.app.mjs (1)
11-12: Trailing newline addition looks goodAdding the newline complies with POSIX text-file conventions and linters. No further action needed.
components/docker_engine/docker_engine.app.mjs (1)
11-12: Trailing newline addition — no issues foundThe only change is the insertion of a newline at EOF, which brings the file in line with POSIX style and causes no functional side-effects.
components/vlm_run/vlm_run.app.mjs (1)
11-12: Trailing newline addition is fine
Adds a POSIX-friendly newline without changing behavior.components/google_identity/google_identity.app.mjs (1)
11-11: EOL newline addition improves POSIX complianceAdding a trailing newline is a harmless formatting fix that aligns the file with POSIX and editor conventions. No functional impact—looks good.
components/kraken_io/kraken_io.app.mjs (1)
11-12: Newline finalizer inserted – LGTMAdding a trailing newline keeps the file POSIX-friendly and consistent with the rest of the codebase. No functional impact.
components/miyn/miyn.app.mjs (1)
11-12: File now properly terminated with a newline – looks good.No functional impact, but this keeps tooling happy and avoids EOF diff noise.
components/botx/botx.app.mjs (1)
11-12: Trailing newline added – accepted.Consistent formatting across the codebase; nothing else to address here.
components/autotask_psa/autotask_psa.app.mjs (1)
11-12: EOF newline addition verified.Change is purely cosmetic and aligns with POSIX text-file conventions.
components/livespace/livespace.app.mjs (1)
11-12: Newline at end of file – OK.Maintains consistent formatting; no further action required.
components/planday/planday.app.mjs (1)
11-12: Formatting tweak approved.Trailing newline adds consistency; no code logic affected.
components/test_apps_for_switching_appslug_009/test_apps_for_switching_appslug_009.app.mjs (1)
11-11: Formatting-only change looks goodOnly a trailing newline was added. No functional impact.
components/persanaai/persanaai.app.mjs (1)
11-11: Formatting-only change looks goodTrailing newline addition is harmless and improves POSIX compliance.
components/formatting/formatting.app.mjs (1)
11-11: Consistent newline – OKNo logic modified; change aligns with project formatting conventions.
components/consulta_unica/consulta_unica.app.mjs (1)
11-11: LGTM – newline onlyPure formatting; safe to merge.
components/outline/outline.app.mjs (1)
11-11: Whitespace tweak approvedAdds final newline; no further feedback.
components/arlo/arlo.app.mjs (1)
11-12: Trailing newline added – formatting aligned with POSIX convention
No logic affected; change improves diff hygiene.components/swarmnode/swarmnode.app.mjs (1)
11-12: Trailing newline added – formatting aligned with POSIX convention
No functional impact.components/airpinpoint/airpinpoint.app.mjs (1)
11-12: Trailing newline added – formatting aligned with POSIX convention
Looks good.components/wafrow/wafrow.app.mjs (1)
11-12: Trailing newline added – formatting aligned with POSIX convention
Change is purely cosmetic.components/yepcode/yepcode.app.mjs (1)
11-12: Trailing newline added – formatting aligned with POSIX convention
All good here.components/mailsoftly/mailsoftly.app.mjs (1)
11-12: Consistent trailing newline – looks goodAdds the missing EOF newline for POSIX compliance; no functional impact.
components/runsignup/runsignup.app.mjs (1)
11-12: Consistent trailing newline – looks goodSame formatting tweak as other components; keeps style uniform.
components/currents_api/currents_api.app.mjs (1)
11-12: Consistent trailing newline – looks goodNo logic touched, just formatting.
components/greenhouse_job_board_api/greenhouse_job_board_api.app.mjs (1)
11-12: Consistent trailing newline – looks goodKeeps file formatting standards aligned.
components/agentql/agentql.app.mjs (1)
11-12: Consistent trailing newline – looks goodMatches formatting across the codebase; no further action required.
components/leverly/leverly.app.mjs (1)
11-12: Trailing newline addition is finePure formatting; no functional impact.
components/api_labz/api_labz.app.mjs (1)
11-12: Consistent EOF newline – looks goodKeeps formatting uniform across components.
components/getty_images/getty_images.app.mjs (1)
11-12: Whitespace-only change approvedNo runtime behavior affected.
components/mollie/mollie.app.mjs (1)
11-12: EOF newline added – OKMaintains POSIX-style file ending; nothing else changed.
components/emailverify_io/emailverify_io.app.mjs (1)
11-12: Formatting alignment confirmedSingle newline addition; safe to merge.
components/onelogin/package.json (1)
3-17: LGTM! Version bump and dependency addition are appropriate.The version bump to 0.1.0 correctly reflects the addition of new functionality, and the
@pipedream/platformdependency is properly added to support the OneLogin integration components.components/onelogin/sources/new-directory-sync-event/test-event.mjs (1)
1-37: LGTM! Comprehensive test event structure.The test event object provides a complete representation of a OneLogin directory sync event with appropriate field coverage. The
event_type_id: 117correctly identifies directory sync events, and the structure aligns with OneLogin's API format.components/onelogin/sources/new-user/new-user.mjs (1)
4-22: LGTM! Well-structured source component following Pipedream conventions.The component properly extends the common base, implements required methods (
getEventTypeandgetSummary), and follows naming conventions with "New" prefix for sources that emit only new items. The event type ID 13 correctly identifies user creation events.components/onelogin/sources/new-user/test-event.mjs (1)
1-37: LGTM! Appropriate test event for user creation.The test event object correctly represents a OneLogin user creation event with
event_type_id: 13matching the source component's expectations. The structure includes all relevant fields and provides realistic test data for validation.components/onelogin/actions/create-user/create-user.mjs (3)
1-3: Imports look goodThe imports are appropriate and follow the expected structure for Pipedream components.
5-232: Well-structured props using propDefinitionsThe props are well-organized and leverage propDefinitions from the app component for consistency. The custom label for
managerUserIdappropriately distinguishes it from the regularuserIdprop.
233-280: Robust implementation with proper validation and data transformationThe implementation correctly:
- Validates required fields (email or username)
- Handles optional fields with appropriate conversions (parseInt for state/status)
- Maps property names to match API expectations (camelCase to snake_case)
- Provides a clear success message following best practices
components/onelogin/actions/update-user/update-user.mjs (2)
1-239: Well-structured update actionThe update action appropriately:
- Requires
userIdas a mandatory field- Provides context-specific descriptions for
usernameand- Maintains consistency with the create action structure
240-284: Clean update implementationThe update logic correctly handles partial updates with all optional fields and properly references the user ID in the success message.
components/onelogin/common/constants.mjs (1)
41-74: Confirm handling of status value “6” in STATUS_OPTIONSThe OneLogin API documentation doesn’t document a user status “6,” yet our constants array jumps from
"5"to"7". Please verify whether:
- Status
6is ever returned by your OneLogin tenant (it may be an internal or deprecated value).- You need to add a mapping entry for
"6", or handle it via a generic “Unknown”/fallback option.- If this is truly undocumented, reach out to OneLogin support or your org’s administrator for the authoritative meaning of status 6.
Once clarified, update
components/onelogin/common/constants.mjsaccordingly to either include the missing entry or ensure unknown statuses render gracefully.components/onelogin/onelogin.app.mjs (2)
1-7: Clean importsImports are well-organized and appropriate for the component's needs.
231-288: Well-structured API methodsThe API methods follow a clean, consistent pattern with proper abstraction through the
_makeRequesthelper.
components/onelogin/actions/revoke-user-sessions/revoke-user-sessions.mjs
Show resolved
Hide resolved
components/onelogin/sources/new-directory-sync-event/new-directory-sync-event.mjs
Show resolved
Hide resolved
components/onelogin/sources/new-login-attempt/new-login-attempt.mjs
Outdated
Show resolved
Hide resolved
michelle0927
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!
- Introduced a new event source for emitting events in OneLogin. - Added event type selection with dynamic options based on available event types. - Refactored API paths in the OneLogin app to remove redundant '/api' prefix. - Implemented a utility function to convert snake_case to Title Case for better display of event types.
Resolves #15147.
Summary by CodeRabbit
New Features
Bug Fixes
Chores