{"_id":"@azure/functions-extensions-connectors","_rev":"2-a209771a5d80b6e319265f0324eb0bea","name":"@azure/functions-extensions-connectors","dist-tags":{"preview":"0.0.1-preview","latest":"0.0.2-preview"},"versions":{"0.0.1-preview":{"name":"@azure/functions-extensions-connectors","version":"0.0.1-preview","keywords":["azure","azure-functions","connectors","office365","serverless","sharepoint","teams"],"author":{"name":"Microsoft"},"license":"MIT","_id":"@azure/functions-extensions-connectors@0.0.1-preview","maintainers":[{"name":"azure-sdk","email":"azure-sdk-npmjs@microsoft.com"},{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"homepage":"https://github.com/Azure/azure-functions-nodejs-extensions/blob/main/azure-functions-nodejs-extensions-connectors/README.md","bugs":{"url":"https://github.com/Azure/azure-functions-nodejs-extensions/issues"},"tag":"preview","dist":{"shasum":"62ee41f29ecd7337c64270047a2bf1bdce1b2cd3","tarball":"https://registry.npmjs.org/@azure/functions-extensions-connectors/-/functions-extensions-connectors-0.0.1-preview.tgz","fileCount":15,"integrity":"sha512-u0xrpkrTXz3nrq5xEwoTOAUsgI1j+M69CJQi4Z7WP8uPrCbfsqiq9Wf0rUzVBztcmeNRUUVQLSz2QwQe8rbyJQ==","signatures":[{"sig":"MEUCIH56AAuvZcrWHohgin/bS2O1YV7LDOnr0gkjb8I4ZJ2TAiEA1CN4aPYB9hFp9zkc5OpKtF2X7kNxvH4I8v00fyvURxs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104850},"main":"./dist/azure-functions-extensions-connectors.js","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\22bfa0df-749f-4c19-935d-26a5c175a4c9\\azure-functions-extensions-connectors-0.0.1-preview.tgz","types":"types/index.d.ts","module":"./dist/azure-functions-extensions-connectors.mjs","engines":{"node":">=20.0.0"},"exports":{".":{"import":{"types":"./types/index.d.ts","default":"./dist/azure-functions-extensions-connectors.mjs"},"require":{"types":"./types/index.d.ts","default":"./dist/azure-functions-extensions-connectors.js"}}},"scripts":{"lint":"eslint src test --ext .ts","test":"mocha","build":"webpack --mode development","clean":"rimraf dist && rimraf node_modules/","watch":"webpack --mode development --watch","format":"prettier . --write","minify":"webpack --mode production"},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\22bfa0df-749f-4c19-935d-26a5c175a4c9\\azure-functions-extensions-connectors-0.0.1-preview.tgz","_integrity":"sha512-u0xrpkrTXz3nrq5xEwoTOAUsgI1j+M69CJQi4Z7WP8uPrCbfsqiq9Wf0rUzVBztcmeNRUUVQLSz2QwQe8rbyJQ==","repository":{"url":"git+https://github.com/Azure/azure-functions-nodejs-extensions.git","type":"git"},"description":"Azure Functions Connectors Extension - SDK binding for Azure Logic Apps connectors","directories":{},"sideEffects":true,"_nodeVersion":"18.5.0","dependencies":{"@azure/connectors":"^0.1.1-preview"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","mocha":"^10.0.0","sinon":"^15.0.0","eslint":"^8.0.0","webpack":"^5.0.0","ts-loader":"^9.0.0","typescript":"~5.0.0","@types/node":"^20.0.0","webpack-cli":"^5.0.0","@types/mocha":"^10.0.0","@types/sinon":"^10.0.0","@azure/functions":"4.15.1-preview","eslint-webpack-plugin":"^4.0.0","@typescript-eslint/parser":"^5.0.0","fork-ts-checker-webpack-plugin":"^8.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"peerDependencies":{"@azure/functions":"4.15.1-preview"},"_npmOperationalInternal":{"tmp":"tmp/functions-extensions-connectors_0.0.1-preview_1778830782638_0.14856461683816824","host":"s3://npm-registry-packages-npm-production"}},"0.0.2-preview":{"name":"@azure/functions-extensions-connectors","version":"0.0.2-preview","description":"Azure Functions Connectors Extension - SDK binding for Azure Logic Apps connectors","author":{"name":"Microsoft"},"license":"MIT","homepage":"https://github.com/Azure/azure-functions-nodejs-extensions/blob/main/azure-functions-nodejs-extensions-connectors/README.md","repository":{"type":"git","url":"git+https://github.com/Azure/azure-functions-nodejs-extensions.git"},"bugs":{"url":"https://github.com/Azure/azure-functions-nodejs-extensions/issues"},"main":"./dist/azure-functions-extensions-connectors.js","module":"./dist/azure-functions-extensions-connectors.mjs","types":"types/index.d.ts","exports":{".":{"import":{"types":"./types/index.d.ts","default":"./dist/azure-functions-extensions-connectors.mjs"},"require":{"types":"./types/index.d.ts","default":"./dist/azure-functions-extensions-connectors.js"}}},"sideEffects":true,"scripts":{"build":"webpack --mode development","minify":"webpack --mode production","clean":"rimraf dist && rimraf node_modules/","format":"prettier . --write","lint":"eslint src test --ext .ts","test":"mocha","watch":"webpack --mode development --watch"},"engines":{"node":">=24.0.0"},"keywords":["azure","azure-functions","connectors","office365","serverless","sharepoint","teams"],"dependencies":{"@azure/connectors":"^0.2.0-preview"},"peerDependencies":{"@azure/functions":"4.16.0"},"devDependencies":{"@azure/functions":"4.16.0","@types/mocha":"^10.0.0","@types/node":"^20.0.0","@types/sinon":"^10.0.0","@typescript-eslint/eslint-plugin":"^5.0.0","@typescript-eslint/parser":"^5.0.0","eslint":"^8.0.0","eslint-webpack-plugin":"^4.0.0","fork-ts-checker-webpack-plugin":"^8.0.0","mocha":"^10.0.0","sinon":"^15.0.0","ts-loader":"^9.0.0","tsx":"^4.21.0","typescript":"~5.0.0","webpack":"^5.0.0","webpack-cli":"^5.0.0"},"_id":"@azure/functions-extensions-connectors@0.0.2-preview","_integrity":"sha512-sWn8lzFRdgIXghy3ShsuISjrpbjPzFE+ozQDMIJrqaaYVSb51J24Fm/3W3R3cjMC6Rl2eO8Uw85nRmzQFaVKDw==","_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\21b83188-b1bb-4ee7-bd20-bd16d88b3ff2\\azure-functions-extensions-connectors-0.0.2-preview.tgz","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\21b83188-b1bb-4ee7-bd20-bd16d88b3ff2\\azure-functions-extensions-connectors-0.0.2-preview.tgz","tag":"latest","_nodeVersion":"18.5.0","dist":{"integrity":"sha512-sWn8lzFRdgIXghy3ShsuISjrpbjPzFE+ozQDMIJrqaaYVSb51J24Fm/3W3R3cjMC6Rl2eO8Uw85nRmzQFaVKDw==","shasum":"4c4f9e764aaebee1cd962d3eb9213cf3be25fd52","tarball":"https://registry.npmjs.org/@azure/functions-extensions-connectors/-/functions-extensions-connectors-0.0.2-preview.tgz","fileCount":17,"unpackedSize":167360,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHeAdJbntpM7s8iOMWrCDaV2Bzw1k19gIvmmXCEocjkfAiBEvZmZQjPjj/4tmNdc2WM2LzUaDNM0DRTZaFheNOcRWw=="}]},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"directories":{},"maintainers":[{"name":"azure-sdk","email":"azure-sdk-npmjs@microsoft.com"},{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/functions-extensions-connectors_0.0.2-preview_1779444503543_0.92586466397955"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-15T07:39:42.546Z","modified":"2026-05-22T10:08:23.853Z","0.0.1-preview":"2026-05-15T07:39:42.760Z","0.0.2-preview":"2026-05-22T10:08:23.702Z"},"bugs":{"url":"https://github.com/Azure/azure-functions-nodejs-extensions/issues"},"author":{"name":"Microsoft"},"license":"MIT","homepage":"https://github.com/Azure/azure-functions-nodejs-extensions/blob/main/azure-functions-nodejs-extensions-connectors/README.md","keywords":["azure","azure-functions","connectors","office365","serverless","sharepoint","teams"],"repository":{"type":"git","url":"git+https://github.com/Azure/azure-functions-nodejs-extensions.git"},"description":"Azure Functions Connectors Extension - SDK binding for Azure Logic Apps connectors","maintainers":[{"name":"azure-sdk","email":"azure-sdk-npmjs@microsoft.com"},{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"readme":"# @azure/functions-extensions-connectors\r\n\r\nAzure Functions extension for Azure Logic Apps connectors. Provides strongly-typed SDK bindings for connector triggers with automatic payload normalization, connector-specific context types, and a first-class `connectors` namespace API.\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install @azure/functions-extensions-connectors @azure/connectors @azure/functions\r\n```\r\n\r\n## Quick Start\r\n\r\n```typescript\r\nimport { connectors } from '@azure/functions-extensions-connectors';\r\n\r\nconnectors.office365.onNewEmail('OnNewEmail', {\r\n    handler: async (context, invocationContext) => {\r\n        // context.emails is GraphClientReceiveMessage[] — fully typed, zero annotations needed\r\n        for (const email of context.emails) {\r\n            invocationContext.log(`Subject: '${email.subject}'.`);\r\n        }\r\n    },\r\n});\r\n```\r\n\r\nOr with explicit type annotations:\r\n\r\n```typescript\r\nimport { connectors, EmailTriggerContext } from '@azure/functions-extensions-connectors';\r\nimport { InvocationContext } from '@azure/functions';\r\n\r\nconnectors.office365.onNewEmail('OnNewEmail', {\r\n    handler: async (context: EmailTriggerContext, invocationContext: InvocationContext) => {\r\n        for (const email of context.emails) {\r\n            invocationContext.log(`Subject: '${email.subject}'.`);\r\n        }\r\n    },\r\n});\r\n```\r\n\r\n## Supported Connectors\r\n\r\n| Registration | Context Type | Named Property | Item Type |\r\n|---|---|---|---|\r\n| `connectors.office365.onNewEmail()` | `EmailTriggerContext` | `emails` | `GraphClientReceiveMessage[]` |\r\n| `connectors.office365.onNewCalendarEvent()` | `CalendarEventTriggerContext` | `calendarEvents` | `GraphCalendarEventClientReceive[]` |\r\n| `connectors.sharepoint.onNewFile()` | `FileTriggerContext` | `files` | `BlobMetadata[]` |\r\n| `connectors.sharepoint.onUpdatedFile()` | `FileTriggerContext` | `files` | `BlobMetadata[]` |\r\n| `connectors.teams.onNewChannelMessage()` | `ChannelMessageTriggerContext` | `messages` | `ChatMessage[]` |\r\n| `connectors.kusto.onQueryResult()` | `QueryResultTriggerContext` | `rows` | `Row[]` |\r\n\r\nEach named property is an alias for `context.items` — the generic accessor still works.\r\n\r\n## Generic Registration\r\n\r\nFor connectors not yet in the `connectors` namespace, use the generic `connectorTrigger()`:\r\n\r\n```typescript\r\nimport { connectorTrigger } from '@azure/functions-extensions-connectors';\r\n\r\nconnectorTrigger<MyItemType>('MyFunction', {\r\n    handler: async (context, invocationContext) => {\r\n        for (const item of context.items) { /* fully typed */ }\r\n    },\r\n});\r\n```\r\n\r\n## Configure App Settings\r\n\r\nAdd the connector connection runtime URL to your `local.settings.json`:\r\n\r\n```json\r\n{\r\n    \"Values\": {\r\n        \"Office365Connection\": \"<your-connector-runtime-url>\"\r\n    }\r\n}\r\n```\r\n\r\n## How It Works\r\n\r\n1. **`connectorTrigger()`** wraps `app.connectorTrigger()` from `@azure/functions` with payload normalization into a typed `ConnectorTriggerContext`.\r\n2. When the Connector Gateway fires the trigger callback, the wrapper parses the JSON payload and normalizes batch/single-item formats into a consistent `items` array.\r\n3. Connector-specific wrappers (e.g., `onNewEmail`) add named aliases (`emails`, `files`, etc.) to the context for better readability.\r\n4. Malformed payloads are logged as warnings via `InvocationContext.warn()` and produce empty contexts (the handler still runs).\r\n\r\n## API Reference\r\n\r\n### `ConnectorTriggerContext<TItem>`\r\n\r\n| Property | Type | Description |\r\n|----------|------|-------------|\r\n| `payload` | `TriggerCallbackPayload<TItem>` | Normalized envelope with `body.value` as `TItem[]` |\r\n| `items` | `TItem[]` | Convenience accessor for `payload.body.value` |\r\n| `rawPayload` | `unknown` | Original payload as received from the host |\r\n| `toJSON()` | `string` | Serializes the full trigger payload to JSON |\r\n\r\n### `ConnectorTriggerOptions<TItem, TContext>`\r\n\r\n| Option | Type | Description |\r\n|--------|------|-------------|\r\n| `handler` | `ConnectorTriggerHandler<TItem, TContext>` | Async handler receiving the trigger context and `InvocationContext` |\r\n| `extraInputs` | `FunctionInput[]` | Optional extra input bindings |\r\n| `extraOutputs` | `FunctionOutput[]` | Optional extra output bindings |\r\n| `return` | `FunctionOutput` | Optional return output binding |\r\n\r\n### Exported Types\r\n\r\nAll connector SDK item types are re-exported for convenience:\r\n\r\n- `GraphClientReceiveMessage`, `GraphCalendarEventClientReceive` (Office 365)\r\n- `BlobMetadata` (SharePoint)\r\n- `ChatMessage` (Teams)\r\n- `KustoRow` (Kusto)\r\n- `TriggerCallbackPayload`, `TriggerCallbackBody`\r\n\r\n### Context Types\r\n\r\n- `EmailTriggerContext` — adds `emails: GraphClientReceiveMessage[]`\r\n- `CalendarEventTriggerContext` — adds `calendarEvents: GraphCalendarEventClientReceive[]`\r\n- `FileTriggerContext` — adds `files: BlobMetadata[]`\r\n- `ChannelMessageTriggerContext` — adds `messages: ChatMessage[]`\r\n- `QueryResultTriggerContext` — adds `rows: Row[]`\r\n\r\n## License\r\n\r\nMIT\r\n","readmeFilename":"README.md"}