Files
Trapa-EurekaandClaude Opus 5 d810c81cf3 feat(core): persistence invariants, config/boundary validation, migration smoke test and correlation IDs (#10198)
Adds test harnesses for tenant isolation, TypeORM/MikroORM parity, persistence invariants and idempotency; startup validation for DB config; Nx plugin/core boundary rules; a fresh-database migration smoke test; and a correlation id carried from HTTP requests into docs queue jobs and logs.

Testing (packages/core/src/lib/core/testing):
- tenant-isolation: an in-memory tenant-aware repository, fixtures and strict assertions (a non-empty page, every row in the caller's tenant). Applied to EmployeeService and OrganizationProjectService.
- orm-conformance and persistence-invariants: suites that run the same checks under TypeORM and MikroORM (run-both-orms.sh uses yarn nx).
- idempotency: assertion helpers and specs for token cleanup (positive control), employee notifications and the Zapier timer webhook.
- database/migration-smoke.spec.ts: runs the full migration chain on a fresh better-sqlite3 database. It is excluded from the default core jest run; run it with `nx run core:test-migration-smoke`.

Idempotency:
- EmployeeNotificationService.create() takes an opt-in `absorbRedelivery`. With it set, an identical unread, unarchived notification under 60 s old (same receiver, entity, type, sender, title and message) is returned instead of inserted, and a missing key or a failed lookup inserts as usual. The event handler does not enable it (the in-process EventBus never redelivers), so every caller inserts one row per event as before.
- ZapierWebhookService skips resending a webhook that already succeeded for the same subscription, action and time log within 5 minutes. The key is reserved while in flight, failed deliveries stay retryable, pruning stops at the first unexpired entry, and the cache is capped at 10,000 entries.

Config (packages/config):
- An unknown DB_TYPE fails fast with the list of supported values; an empty DB_TYPE still means better-sqlite3; mongodb throws an Error.
- Pool and timeout variables are parsed with Number.parseInt semantics, only for postgres and mysql. They throw only where tarn already refused to start and warn otherwise. SQLite ignores them and still prints the startup values.

Observability:
- RequestContextMiddleware accepts an inbound x-correlation-id of 1-128 visible ASCII characters (otherwise it generates a UUIDv4) and echoes it on the response. CORS allows and exposes X-Correlation-Id. RequestContext.currentCorrelationId() is added.
- The docs queue carries the correlation id through job payloads (including bulk reindex) into pipeline outcome, error, dead-letter and enqueue-failure logs.

Boundaries and build:
- Every project gets a type tag. The ESLint depConstraints stop type:core depending on plugins, and plugins may depend only on core, shared libs and the known extension points (ai-chat, job-proposal, integration-ai, job-*-ui).
- core declares @gauzy/scheduler (package.json and implicitDependencies); the webapp Dockerfile copies scheduler's package.json.
- The integration-zapier jest config can import @gauzy/core (transformIgnorePatterns, allowJs, isolatedModules).
- Fixes the stale @nrwl/nx eslint-disable id in the e2e roles-permissions steps and the broken @gauzy/core mock in the docs document-scope spec.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-17 23:35:52 +02:00
..
…

@gauzy/plugin-integration-make-com

This library was generated with Nx.

Overview

The Integration Make.com plugin is a Gauzy plugin that provides a user-friendly interface for integrating Make.com with the Gauzy platform. This integration allows you to automate workflows and connect Gauzy with other applications through Make.com's powerful automation platform.

Features

  • OAuth2 authentication with Make.com
  • Webhook integration for real-time event notifications
  • Timer event synchronization
  • Organization and tenant-level integration settings
  • Secure credential management

Integration Settings

The plugin supports the following integration settings:

  1. Webhook Configuration

    • webhookUrl: The Make.com webhook URL for receiving events
    • isEnabled: Toggle to enable/disable the integration
  2. OAuth Settings

    • client_id: Your Make.com application client ID
    • client_secret: Your Make.com application client secret
    • access_token: OAuth access token (automatically managed)
    • refresh_token: OAuth refresh token (automatically managed)

Setup Instructions

  1. Create a Make.com Application

    • Go to Make.com and create a new application
    • Configure the OAuth redirect URL: {API_BASE_URL}/api/integration/make-com/oauth/callback
    • Note down your client ID and client secret
  2. Install the Plugin

    npm install @gauzy/plugin-integration-make-com
    # or
    yarn add @gauzy/plugin-integration-make-com
    
  3. Configure Integration Settings

    • Navigate to your Gauzy instance's integration settings
    • Select Make.com integration
    • Enter your Make.com client ID and client secret
    • Authorize the integration through the OAuth flow
    • Configure your webhook URL from Make.com
  4. Environment Variables The following environment variables can be configured:

    • GAUZY_MAKE_BASE_URL: Make.com API base URL (default: https://www.make.com)
    • GAUZY_MAKE_POST_INSTALL_URL: URL to redirect after installation
    • GAUZY_MAKE_REDIRECT_URL: OAuth redirect URL

Building

Run yarn nx build plugin-integration-make-com to build the library.

Running unit tests

Run yarn nx test plugin-integration-make-com to execute the unit tests via Jest.

Publishing

After building your library with yarn nx build plugin-integration-make-com, go to the dist folder cd dist/packages/plugins/integration-make-com and run npm publish.

Security

  • All sensitive credentials are encrypted before storage
  • OAuth tokens are automatically refreshed when expired
  • Integration settings are scoped to specific tenants and organizations

Support

For issues and feature requests, please visit our GitHub repository.