@particle-academy/google-calendar-ui 0.1.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +41 -0
- package/README.md +54 -0
- package/dist/index.cjs +403 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +43 -1
- package/dist/index.d.ts +43 -1
- package/dist/index.js +389 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/service.ts","../src/kinds/channel-stop.ts","../src/kinds/channel-watch.ts","../src/kinds/event-get.ts","../src/kinds/event-list.ts","../src/kinds/events-changed.ts","../src/index.ts"],"names":["defineConnectorKind","summarize"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * GENERATED FILE — do not edit.\n *\n * Emitted from provider/manifest.json by weaver's generator.\n * A hand-edit here is destroyed by the next protocol sync, which is worse than\n * being rejected, because it works until it silently does not. Fix\n * provider/manifest.json (or weaver's template/) and regenerate:\n *\n * npm run provider -- google_calendar\n */\n\n/**\n * Google Calendar's identity on the authoring surface, shared by every Google\n * Calendar node.\n *\n * This file must import nothing from the js package: a PHP or Python project\n * installs the ui package and never that one, and the import would be a\n * dangling module the moment it did.\n *\n * ## The sandbox trap\n *\n * Google has no sandbox for Calendar. A test calendar is a real one in a real\n * account, so every watch and every read is real -- point this at a scratch\n * calendar, not a production one. The faker is the only way to develop against\n * it without touching an account.\n */\n\nimport type { ConnectorDomain, ConnectorMeta } from \"@particle-academy/fancy-flow/connectors\";\n\n/**\n * The connector API version this package was GENERATED against.\n *\n * A literal, never imported — an imported constant lets an upgrade rewrite the\n * very claim it exists to detect.\n */\nexport const CONNECTOR_API_VERSION = 1;\n\n/** The parts of a connector's identity that belong to the SERVICE, not the node. */\nexport const GOOGLE_CALENDAR_SERVICE = {\n service: \"google_calendar\",\n serviceTitle: \"Google Calendar\",\n domain: \"calendar\",\n sandbox: \"none\",\n} as const satisfies Pick<ConnectorMeta, \"service\" | \"serviceTitle\" | \"domain\" | \"sandbox\">;\n\n/**\n * Every connector domain weaver knows, pinned against fancy-flow's union.\n *\n * A closed set copied into three codebases stays correct only while something\n * MAKES it: this line fails to compile the moment weaver carries a value\n * fancy-flow does not, including the values no provider uses yet.\n */\nconst WEAVER_DOMAINS: readonly ConnectorDomain[] = [\n \"payments\",\n \"commerce\",\n \"messaging\",\n \"email\",\n \"crm\",\n \"support\",\n \"storage\",\n \"calendar\",\n \"productivity\",\n \"database\",\n \"devtools\",\n \"analytics\",\n \"marketing\",\n \"ai\",\n \"forms\",\n \"hr\",\n \"geo\"\n];\nvoid WEAVER_DOMAINS;\n\n/** The credentials a Google Calendar connection holds. */\nexport const GOOGLE_CALENDAR_CREDENTIALS = [\n {\n \"key\": \"clientId\",\n \"label\": \"OAuth client ID\",\n \"scope\": \"provider\",\n \"secret\": false,\n \"help\": \"From Google Cloud Console -> APIs & Services -> Credentials. ONE value for the whole installation, not per connected account.\"\n },\n {\n \"key\": \"clientSecret\",\n \"label\": \"OAuth client secret\",\n \"scope\": \"provider\",\n \"secret\": true,\n \"help\": \"The client secret for the same OAuth app. One value for the whole installation.\"\n },\n {\n \"key\": \"accessToken\",\n \"label\": \"Access token\",\n \"scope\": \"account\",\n \"secret\": true,\n \"help\": \"Per connected Google account, and it expires after ONE HOUR. The host refreshes it with the refresh token.\"\n },\n {\n \"key\": \"refreshToken\",\n \"label\": \"Refresh token\",\n \"scope\": \"account\",\n \"secret\": true,\n \"help\": \"Per connected Google account. Google issues one only when the consent request asks for offline access; without it the connection dies within the hour.\"\n },\n {\n \"key\": \"channelToken\",\n \"label\": \"Channel token\",\n \"scope\": \"account\",\n \"secret\": true,\n \"help\": \"A secret the host chooses per connected account and sends as `token` on every events.watch. Google echoes it back in the X-Goog-Channel-Token header of every notification, and that echo is the ONLY thing that authenticates a delivery -- Google does not sign them. Up to 256 characters.\"\n }\n] as const;\n\n/**\n * The OAuth2 exchange Google Calendar requires — DECLARED here, performed by\n * the host.\n *\n * A consent screen needs a browser, a redirect URI and somewhere to persist\n * the result, and all three belong to the host; a package that ran the dance\n * itself would have to own a web server. So this says precisely enough for a\n * host to do it.\n *\n * The access token lasts 3600 seconds. A host that never refreshes will work\n * all afternoon and be broken by morning, which is why the lifetime is stated\n * rather than left to be discovered.\n *\n * Its refresh tokens do NOT rotate: the same one is reusable, so a refresh may\n * safely be retried and may run concurrently. That is stated rather than\n * assumed because the opposite — a provider that spends the token and revokes\n * the grant on a replay — looks identical until it happens.\n */\nexport const GOOGLE_CALENDAR_OAUTH = {\n \"flow\": \"authorization_code\",\n \"authorizeUrl\": \"https://accounts.google.com/o/oauth2/v2/auth\",\n \"tokenUrl\": \"https://oauth2.googleapis.com/token\",\n \"scopes\": [\n \"https://www.googleapis.com/auth/calendar.events\"\n ],\n \"accessTokenCredential\": \"accessToken\",\n \"refreshTokenCredential\": \"refreshToken\",\n \"refreshTokenRotates\": false,\n \"accessTokenTtlSeconds\": 3600\n} as const;\n\n/** Build a Google Calendar node's connector metadata from the operation it performs. */\nexport function googleCalendarMeta(\n role: ConnectorMeta[\"role\"],\n operation: string,\n docs: string,\n): ConnectorMeta {\n return { ...GOOGLE_CALENDAR_SERVICE, role, operation, docs };\n}\n","/**\n * GENERATED FILE — do not edit.\n *\n * Emitted from provider/actions/channel-stop.json by weaver's generator.\n * A hand-edit here is destroyed by the next protocol sync, which is worse than\n * being rejected, because it works until it silently does not. Fix\n * provider/actions/channel-stop.json (or weaver's template/) and regenerate:\n *\n * npm run provider -- google_calendar\n */\n\n/**\n * Google Calendar stop watching — Close a push-notification channel. The\n * host's subscription machinery calls this before re-creating a channel and\n * when a trigger is removed.\n *\n * https://developers.google.com/workspace/calendar/api/v3/reference/channels/stop\n */\n\nimport type { NodeKindDefinition } from \"@particle-academy/fancy-flow/engine\";\nimport { defineConnectorKind, summarize, type OutputField } from \"@particle-academy/fancy-flow/connectors\";\nimport { googleCalendarMeta } from \"../service.js\";\n\nexport const GOOGLE_CALENDAR_CHANNEL_STOP_KIND = \"@particle-academy/google_calendar_channel_stop\";\nexport const GOOGLE_CALENDAR_CHANNEL_STOP_OPERATION = \"channel_stop\";\n\nexport const GOOGLE_CALENDAR_CHANNEL_STOP_META = googleCalendarMeta(\"action\", \"stop a channel\", \"https://developers.google.com/workspace/calendar/api/v3/reference/channels/stop\");\n\n/**\n * What this node emits — the \"ingredients\" a downstream node can reference.\n *\n * fancy-flow reads `outputShape` off the kind and offers it in the variable\n * picker, so declaring it is the whole of the work: an author configuring the\n * next node picks `{{ $json.data.id }}` off a list instead of typing a path\n * and hoping.\n */\nexport const GOOGLE_CALENDAR_CHANNEL_STOP_OUTPUT: OutputField[] = [\n {\n \"path\": \"mode\",\n \"type\": \"string\",\n \"description\": \"Which estate this ran against. Google answers with an empty body, so this is the only thing published.\"\n }\n];\n\nexport const googleCalendarChannelStopKind: NodeKindDefinition = defineConnectorKind(GOOGLE_CALENDAR_CHANNEL_STOP_META, {\n name: GOOGLE_CALENDAR_CHANNEL_STOP_KIND,\n aliases: [\"google_calendar_channel_stop\"],\n label: \"Google Calendar stop watching\",\n description: \"Close a push-notification channel. The host's subscription machinery calls this before re-creating a channel and when a trigger is removed.\",\n inputs: [{ id: \"in\" }],\n outputs: [{ id: \"out\" }],\n sideEffects: \"idempotent\",\n outputShape: GOOGLE_CALENDAR_CHANNEL_STOP_OUTPUT,\n configSchema: [\n {\n \"type\": \"text\",\n \"key\": \"channelId\",\n \"label\": \"Channel ID\",\n \"required\": true,\n \"description\": \"The channel's id, as sent to channel_watch.\"\n },\n {\n \"type\": \"text\",\n \"key\": \"resourceId\",\n \"label\": \"Resource ID\",\n \"required\": true,\n \"description\": \"The resourceId channel_watch answered with. Both are needed; Google refuses a stop with only one.\"\n }\n ],\n defaultConfig: {\n \"mode\": \"auto\"\n },\n renderBody: ({ config }) =>\n summarize(GOOGLE_CALENDAR_CHANNEL_STOP_META, config as Record<string, unknown>, \"stop a channel\"),\n});\n","/**\n * GENERATED FILE — do not edit.\n *\n * Emitted from provider/actions/channel-watch.json by weaver's generator.\n * A hand-edit here is destroyed by the next protocol sync, which is worse than\n * being rejected, because it works until it silently does not. Fix\n * provider/actions/channel-watch.json (or weaver's template/) and regenerate:\n *\n * npm run provider -- google_calendar\n */\n\n/**\n * Google Calendar watch — Open a push-notification channel on a calendar's\n * events. The host's subscription machinery calls this; it is not a node most\n * workflows need.\n *\n * https://developers.google.com/workspace/calendar/api/v3/reference/events/watch\n *\n * `unsafe-to-replay`.\n */\n\nimport type { NodeKindDefinition } from \"@particle-academy/fancy-flow/engine\";\nimport { defineConnectorKind, summarize, type OutputField } from \"@particle-academy/fancy-flow/connectors\";\nimport { googleCalendarMeta } from \"../service.js\";\n\nexport const GOOGLE_CALENDAR_CHANNEL_WATCH_KIND = \"@particle-academy/google_calendar_channel_watch\";\nexport const GOOGLE_CALENDAR_CHANNEL_WATCH_OPERATION = \"channel_watch\";\n\nexport const GOOGLE_CALENDAR_CHANNEL_WATCH_META = googleCalendarMeta(\"action\", \"watch a calendar\", \"https://developers.google.com/workspace/calendar/api/v3/reference/events/watch\");\n\n/**\n * What this node emits — the \"ingredients\" a downstream node can reference.\n *\n * fancy-flow reads `outputShape` off the kind and offers it in the variable\n * picker, so declaring it is the whole of the work: an author configuring the\n * next node picks `{{ $json.data.id }}` off a list instead of typing a path\n * and hoping.\n */\nexport const GOOGLE_CALENDAR_CHANNEL_WATCH_OUTPUT: OutputField[] = [\n {\n \"path\": \"data.id\",\n \"type\": \"string\",\n \"description\": \"The channel id -- what was sent.\"\n },\n {\n \"path\": \"data.resourceId\",\n \"type\": \"string\",\n \"description\": \"Google's opaque id for the watched resource. channel_stop needs it together with the channel id.\"\n },\n {\n \"path\": \"data.resourceUri\",\n \"type\": \"string\",\n \"description\": \"The watched resource's URI.\"\n },\n {\n \"path\": \"data.token\",\n \"type\": \"string\",\n \"description\": \"The token that will be echoed on every notification.\"\n },\n {\n \"path\": \"data.expiration\",\n \"type\": \"string\",\n \"description\": \"When the channel expires, as epoch MILLISECONDS in a string. The subscription trigger's lease is built from this.\"\n },\n {\n \"path\": \"mode\",\n \"type\": \"string\",\n \"description\": \"Which estate this ran against. Google has no sandbox, so: fake or live.\"\n }\n];\n\nexport const googleCalendarChannelWatchKind: NodeKindDefinition = defineConnectorKind(GOOGLE_CALENDAR_CHANNEL_WATCH_META, {\n name: GOOGLE_CALENDAR_CHANNEL_WATCH_KIND,\n aliases: [\"google_calendar_channel_watch\"],\n label: \"Google Calendar watch\",\n description: \"Open a push-notification channel on a calendar's events. The host's subscription machinery calls this; it is not a node most workflows need.\",\n inputs: [{ id: \"in\" }],\n outputs: [{ id: \"out\" }],\n sideEffects: \"unsafe-to-replay\",\n outputShape: GOOGLE_CALENDAR_CHANNEL_WATCH_OUTPUT,\n configSchema: [\n {\n \"type\": \"text\",\n \"key\": \"calendarId\",\n \"label\": \"Calendar ID\",\n \"required\": true,\n \"default\": \"primary\",\n \"description\": \"`primary` for the connected account's own calendar, or a calendar's id.\"\n },\n {\n \"type\": \"text\",\n \"key\": \"channelId\",\n \"label\": \"Channel ID\",\n \"required\": true,\n \"description\": \"A UUID the host mints for THIS channel. Google requires it to be unique; it comes back in every notification as X-Goog-Channel-ID and is what channel_stop needs.\"\n },\n {\n \"type\": \"text\",\n \"key\": \"address\",\n \"label\": \"Notification URL\",\n \"required\": true,\n \"description\": \"The HTTPS URL the host mounts for this trigger. Google POSTs notifications here with an EMPTY body and the facts in X-Goog-* headers.\"\n },\n {\n \"type\": \"text\",\n \"key\": \"token\",\n \"label\": \"Channel token\",\n \"required\": true,\n \"description\": \"The connection's channelToken. The host fills this from the connection -- never type a value here. Google echoes it in X-Goog-Channel-Token, and that echo is how a delivery is verified.\"\n },\n {\n \"type\": \"text\",\n \"key\": \"ttlSeconds\",\n \"label\": \"Lifetime (seconds)\",\n \"required\": true,\n \"default\": \"604800\",\n \"description\": \"How long Google keeps the channel alive. Google's default is 604800 (one week), and the discovery document types it as a STRING inside `params`.\"\n }\n ],\n defaultConfig: {\n \"mode\": \"auto\"\n },\n renderBody: ({ config }) =>\n summarize(GOOGLE_CALENDAR_CHANNEL_WATCH_META, config as Record<string, unknown>, \"watch a calendar\"),\n});\n","/**\n * GENERATED FILE — do not edit.\n *\n * Emitted from provider/actions/event-get.json by weaver's generator.\n * A hand-edit here is destroyed by the next protocol sync, which is worse than\n * being rejected, because it works until it silently does not. Fix\n * provider/actions/event-get.json (or weaver's template/) and regenerate:\n *\n * npm run provider -- google_calendar\n */\n\n/**\n * Google Calendar event — Read one event from a Google Calendar.\n *\n * https://developers.google.com/workspace/calendar/api/v3/reference/events/get\n */\n\nimport type { NodeKindDefinition } from \"@particle-academy/fancy-flow/engine\";\nimport { defineConnectorKind, summarize, type OutputField } from \"@particle-academy/fancy-flow/connectors\";\nimport { googleCalendarMeta } from \"../service.js\";\n\nexport const GOOGLE_CALENDAR_EVENT_GET_KIND = \"@particle-academy/google_calendar_event_get\";\nexport const GOOGLE_CALENDAR_EVENT_GET_OPERATION = \"event_get\";\n\nexport const GOOGLE_CALENDAR_EVENT_GET_META = googleCalendarMeta(\"action\", \"read an event\", \"https://developers.google.com/workspace/calendar/api/v3/reference/events/get\");\n\n/**\n * What this node emits — the \"ingredients\" a downstream node can reference.\n *\n * fancy-flow reads `outputShape` off the kind and offers it in the variable\n * picker, so declaring it is the whole of the work: an author configuring the\n * next node picks `{{ $json.data.id }}` off a list instead of typing a path\n * and hoping.\n */\nexport const GOOGLE_CALENDAR_EVENT_GET_OUTPUT: OutputField[] = [\n {\n \"path\": \"data.id\",\n \"type\": \"string\",\n \"description\": \"The event id.\"\n },\n {\n \"path\": \"data.status\",\n \"type\": \"string\",\n \"description\": \"confirmed, tentative or cancelled.\"\n },\n {\n \"path\": \"data.summary\",\n \"type\": \"string\",\n \"description\": \"The title.\"\n },\n {\n \"path\": \"data.description\",\n \"type\": \"string\",\n \"description\": \"The description, when there is one.\"\n },\n {\n \"path\": \"data.start.dateTime\",\n \"type\": \"string\",\n \"description\": \"RFC 3339 start. All-day events carry start.date instead.\"\n },\n {\n \"path\": \"data.end.dateTime\",\n \"type\": \"string\",\n \"description\": \"RFC 3339 end. All-day events carry end.date instead.\"\n },\n {\n \"path\": \"data.htmlLink\",\n \"type\": \"string\",\n \"description\": \"The event in the Google Calendar UI.\"\n },\n {\n \"path\": \"data.updated\",\n \"type\": \"string\",\n \"description\": \"RFC 3339 last modification.\"\n },\n {\n \"path\": \"data.organizer.email\",\n \"type\": \"string\",\n \"description\": \"Who organises it.\"\n },\n {\n \"path\": \"mode\",\n \"type\": \"string\",\n \"description\": \"Which estate this ran against. Google has no sandbox, so: fake or live.\"\n }\n];\n\nexport const googleCalendarEventGetKind: NodeKindDefinition = defineConnectorKind(GOOGLE_CALENDAR_EVENT_GET_META, {\n name: GOOGLE_CALENDAR_EVENT_GET_KIND,\n aliases: [\"google_calendar_event_get\"],\n label: \"Google Calendar event\",\n description: \"Read one event from a Google Calendar.\",\n inputs: [{ id: \"in\" }],\n outputs: [{ id: \"out\" }],\n sideEffects: \"none\",\n outputShape: GOOGLE_CALENDAR_EVENT_GET_OUTPUT,\n configSchema: [\n {\n \"type\": \"text\",\n \"key\": \"calendarId\",\n \"label\": \"Calendar ID\",\n \"required\": true,\n \"default\": \"primary\",\n \"description\": \"`primary` for the connected account's own calendar, or a calendar's id (usually an email address).\"\n },\n {\n \"type\": \"text\",\n \"key\": \"eventId\",\n \"label\": \"Event ID\",\n \"required\": true,\n \"description\": \"The event's id, as published by another node or by a notification's follow-up list.\"\n }\n ],\n defaultConfig: {\n \"mode\": \"auto\"\n },\n renderBody: ({ config }) =>\n summarize(GOOGLE_CALENDAR_EVENT_GET_META, config as Record<string, unknown>, \"read an event\"),\n});\n","/**\n * GENERATED FILE — do not edit.\n *\n * Emitted from provider/actions/event-list.json by weaver's generator.\n * A hand-edit here is destroyed by the next protocol sync, which is worse than\n * being rejected, because it works until it silently does not. Fix\n * provider/actions/event-list.json (or weaver's template/) and regenerate:\n *\n * npm run provider -- google_calendar\n */\n\n/**\n * Google Calendar events — List events from a Google Calendar, in full or\n * incrementally with a sync token.\n *\n * https://developers.google.com/workspace/calendar/api/v3/reference/events/list\n */\n\nimport type { NodeKindDefinition } from \"@particle-academy/fancy-flow/engine\";\nimport { defineConnectorKind, summarize, type OutputField } from \"@particle-academy/fancy-flow/connectors\";\nimport { googleCalendarMeta } from \"../service.js\";\n\nexport const GOOGLE_CALENDAR_EVENT_LIST_KIND = \"@particle-academy/google_calendar_event_list\";\nexport const GOOGLE_CALENDAR_EVENT_LIST_OPERATION = \"event_list\";\n\nexport const GOOGLE_CALENDAR_EVENT_LIST_META = googleCalendarMeta(\"action\", \"list events\", \"https://developers.google.com/workspace/calendar/api/v3/reference/events/list\");\n\n/**\n * What this node emits — the \"ingredients\" a downstream node can reference.\n *\n * fancy-flow reads `outputShape` off the kind and offers it in the variable\n * picker, so declaring it is the whole of the work: an author configuring the\n * next node picks `{{ $json.data.id }}` off a list instead of typing a path\n * and hoping.\n */\nexport const GOOGLE_CALENDAR_EVENT_LIST_OUTPUT: OutputField[] = [\n {\n \"path\": \"data.items\",\n \"type\": \"array\",\n \"description\": \"The events on this page, each shaped like event_get's output.\"\n },\n {\n \"path\": \"data.nextPageToken\",\n \"type\": \"string\",\n \"description\": \"Present when there is another page.\"\n },\n {\n \"path\": \"data.nextSyncToken\",\n \"type\": \"string\",\n \"description\": \"Present on the LAST page only. Store it and pass it as syncToken next time to get only what changed.\"\n },\n {\n \"path\": \"data.updated\",\n \"type\": \"string\",\n \"description\": \"RFC 3339 last modification of the calendar.\"\n },\n {\n \"path\": \"mode\",\n \"type\": \"string\",\n \"description\": \"Which estate this ran against. Google has no sandbox, so: fake or live.\"\n }\n];\n\nexport const googleCalendarEventListKind: NodeKindDefinition = defineConnectorKind(GOOGLE_CALENDAR_EVENT_LIST_META, {\n name: GOOGLE_CALENDAR_EVENT_LIST_KIND,\n aliases: [\"google_calendar_event_list\"],\n label: \"Google Calendar events\",\n description: \"List events from a Google Calendar, in full or incrementally with a sync token.\",\n inputs: [{ id: \"in\" }],\n outputs: [{ id: \"out\" }],\n sideEffects: \"none\",\n outputShape: GOOGLE_CALENDAR_EVENT_LIST_OUTPUT,\n configSchema: [\n {\n \"type\": \"text\",\n \"key\": \"calendarId\",\n \"label\": \"Calendar ID\",\n \"required\": true,\n \"default\": \"primary\",\n \"description\": \"`primary` for the connected account's own calendar, or a calendar's id.\"\n },\n {\n \"type\": \"text\",\n \"key\": \"syncToken\",\n \"label\": \"Sync token\",\n \"description\": \"From a previous list's nextSyncToken. With one set, Google returns ONLY what changed since -- including deletions, as cancelled events. Leave blank for a full list.\"\n },\n {\n \"type\": \"text\",\n \"key\": \"timeMin\",\n \"label\": \"From\",\n \"description\": \"RFC 3339 lower bound on an event's END time, e.g. 2026-09-15T00:00:00Z. Not allowed together with a sync token.\"\n },\n {\n \"type\": \"text\",\n \"key\": \"timeMax\",\n \"label\": \"To\",\n \"description\": \"RFC 3339 upper bound on an event's START time. Not allowed together with a sync token.\"\n },\n {\n \"type\": \"number\",\n \"key\": \"maxResults\",\n \"label\": \"Page size\",\n \"min\": 1,\n \"max\": 2500,\n \"default\": 250,\n \"description\": \"Events per page. Google's default is 250 and its maximum 2500; a nextPageToken means there are more.\"\n },\n {\n \"type\": \"text\",\n \"key\": \"pageToken\",\n \"label\": \"Page token\",\n \"description\": \"From a previous page's nextPageToken.\"\n },\n {\n \"type\": \"switch\",\n \"key\": \"singleEvents\",\n \"label\": \"Expand recurring events\",\n \"default\": true,\n \"description\": \"Return each occurrence of a recurring event as its own item, rather than the series once.\"\n }\n ],\n defaultConfig: {\n \"mode\": \"auto\"\n },\n renderBody: ({ config }) =>\n summarize(GOOGLE_CALENDAR_EVENT_LIST_META, config as Record<string, unknown>, \"list events\"),\n});\n","/**\n * GENERATED FILE — do not edit.\n *\n * Emitted from provider/triggers/events-changed.json by weaver's generator.\n * A hand-edit here is destroyed by the next protocol sync, which is worse than\n * being rejected, because it works until it silently does not. Fix\n * provider/triggers/events-changed.json (or weaver's template/) and regenerate:\n *\n * npm run provider -- google_calendar\n */\n\n/**\n * Google Calendar change — Start a run when something changes on a watched\n * Google Calendar.\n *\n * https://developers.google.com/workspace/calendar/api/guides/push\n *\n * Delivery: subscription. The host mints a UUID, calls channel_watch with it,\n * its own URL for this trigger and the connection's channelToken, and stores\n * the returned id, resourceId and expiration. Google cannot renew a channel:\n * 86400 seconds before it expires the host calls channel_stop and then\n * channel_watch again. A channel that lapsed is re-listed FIRST (event_list\n * with the stored syncToken; a 410 means list in full) and then re-created,\n * because notifications during the gap are gone. Google delivers with an EMPTY\n * body: the host verifies X-Goog-Channel-Token against the connection's\n * channelToken and injects the X-Goog-* headers as the event, camel-cased as\n * below. The first message on a new channel is `sync` and carries no change.\n */\n\nimport type { NodeKindDefinition } from \"@particle-academy/fancy-flow/engine\";\nimport { defineConnectorKind, summarize, type OutputField } from \"@particle-academy/fancy-flow/connectors\";\nimport { googleCalendarMeta } from \"../service.js\";\n\nexport const GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_KIND = \"@particle-academy/google_calendar_events_changed_trigger\";\nexport const GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_OPERATION = \"events_changed\";\n\nexport const GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_META = googleCalendarMeta(\"trigger\", \"a calendar change\", \"https://developers.google.com/workspace/calendar/api/guides/push\");\n\n/**\n * What this node emits — the \"ingredients\" a downstream node can reference.\n *\n * fancy-flow reads `outputShape` off the kind and offers it in the variable\n * picker, so declaring it is the whole of the work: an author configuring the\n * next node picks `{{ $json.data.id }}` off a list instead of typing a path\n * and hoping.\n */\nexport const GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_OUTPUT: OutputField[] = [\n {\n \"path\": \"channelId\",\n \"type\": \"string\",\n \"description\": \"X-Goog-Channel-ID: which channel this came from.\"\n },\n {\n \"path\": \"messageNumber\",\n \"type\": \"string\",\n \"description\": \"X-Goog-Message-Number: increases per channel; 1 is the sync message.\"\n },\n {\n \"path\": \"resourceId\",\n \"type\": \"string\",\n \"description\": \"X-Goog-Resource-ID: the watched resource.\"\n },\n {\n \"path\": \"resourceState\",\n \"type\": \"string\",\n \"description\": \"X-Goog-Resource-State: sync, exists or not_exists. `sync` carries no change.\"\n },\n {\n \"path\": \"resourceUri\",\n \"type\": \"string\",\n \"description\": \"X-Goog-Resource-URI: the watched resource's URI.\"\n },\n {\n \"path\": \"channelExpiration\",\n \"type\": \"string\",\n \"description\": \"X-Goog-Channel-Expiration, when Google sends it: the channel's expiry in a human-readable format, not an instant to compute with.\"\n }\n];\n\nexport const googleCalendarEventsChangedTriggerKind: NodeKindDefinition = defineConnectorKind(GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_META, {\n name: GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_KIND,\n aliases: [\"google_calendar_events_changed_trigger\"],\n label: \"Google Calendar change\",\n description: \"Start a run when something changes on a watched Google Calendar.\",\n icon: \"📅\",\n inputs: [],\n outputs: [{ id: \"out\" }],\n sideEffects: \"none\",\n outputShape: GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_OUTPUT,\n configSchema: [\n {\n \"type\": \"select\",\n \"key\": \"sample\",\n \"label\": \"Sample state (fake mode)\",\n \"default\": \"exists\",\n \"description\": \"Which resource state the faked notification carries: `exists` is a change, `sync` is the first message on a new channel, `not_exists` is the resource going away.\",\n \"options\": [\n {\n \"value\": \"exists\",\n \"label\": \"exists — something changed\"\n },\n {\n \"value\": \"sync\",\n \"label\": \"sync — the channel just opened\"\n },\n {\n \"value\": \"not_exists\",\n \"label\": \"not_exists — the resource is gone\"\n }\n ]\n }\n ],\n defaultConfig: {\n \"mode\": \"auto\",\n \"sample\": \"exists\"\n },\n renderBody: ({ config }) =>\n summarize(GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_META, config as Record<string, unknown>, \"a calendar change\"),\n});\n","/**\n * GENERATED FILE — do not edit.\n *\n * Emitted from provider/manifest.json by weaver's generator.\n * A hand-edit here is destroyed by the next protocol sync, which is worse than\n * being rejected, because it works until it silently does not. Fix\n * provider/manifest.json (or weaver's template/) and regenerate:\n *\n * npm run provider -- google_calendar\n */\n\n/**\n * Google Calendar's node kinds for fancy-flow.\n *\n * Install this on every host. The TypeScript executors live in the js\n * package's `./flow` subpath; PHP and Python hosts run their own and need only\n * this.\n */\n\nexport * from \"./service.js\";\nexport * from \"./kinds/channel-stop.js\";\nexport * from \"./kinds/channel-watch.js\";\nexport * from \"./kinds/event-get.js\";\nexport * from \"./kinds/event-list.js\";\nexport * from \"./kinds/events-changed.js\";\n\nimport type { NodeKindDefinition } from \"@particle-academy/fancy-flow/engine\";\nimport { googleCalendarChannelStopKind } from \"./kinds/channel-stop.js\";\nimport { googleCalendarChannelWatchKind } from \"./kinds/channel-watch.js\";\nimport { googleCalendarEventGetKind } from \"./kinds/event-get.js\";\nimport { googleCalendarEventListKind } from \"./kinds/event-list.js\";\nimport { googleCalendarEventsChangedTriggerKind } from \"./kinds/events-changed.js\";\n\n/** Every Google Calendar kind, for a host that registers the lot. */\nexport const GOOGLE_CALENDAR_KINDS: NodeKindDefinition[] = [\n googleCalendarChannelStopKind,\n googleCalendarChannelWatchKind,\n googleCalendarEventGetKind,\n googleCalendarEventListKind,\n googleCalendarEventsChangedTriggerKind,\n];\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/service.ts","../src/kinds/channel-stop.ts","../src/kinds/channel-watch.ts","../src/kinds/event-create.ts","../src/kinds/event-delete.ts","../src/kinds/event-get.ts","../src/kinds/event-list.ts","../src/kinds/event-update.ts","../src/kinds/events-changed.ts","../src/index.ts"],"names":["defineConnectorKind","summarize"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * GENERATED FILE — do not edit.\n *\n * Emitted from provider/manifest.json by weaver's generator.\n * A hand-edit here is destroyed by the next protocol sync, which is worse than\n * being rejected, because it works until it silently does not. Fix\n * provider/manifest.json (or weaver's template/) and regenerate:\n *\n * npm run provider -- google_calendar\n */\n\n/**\n * Google Calendar's identity on the authoring surface, shared by every Google\n * Calendar node.\n *\n * This file must import nothing from the js package: a PHP or Python project\n * installs the ui package and never that one, and the import would be a\n * dangling module the moment it did.\n *\n * ## The sandbox trap\n *\n * Google has no sandbox for Calendar. A test calendar is a real one in a real\n * account, so every watch and every read is real -- point this at a scratch\n * calendar, not a production one. The faker is the only way to develop against\n * it without touching an account.\n */\n\nimport type { ConnectorDomain, ConnectorMeta } from \"@particle-academy/fancy-flow/connectors\";\n\n/**\n * The connector API version this package was GENERATED against.\n *\n * A literal, never imported — an imported constant lets an upgrade rewrite the\n * very claim it exists to detect.\n */\nexport const CONNECTOR_API_VERSION = 1;\n\n/** The parts of a connector's identity that belong to the SERVICE, not the node. */\nexport const GOOGLE_CALENDAR_SERVICE = {\n service: \"google_calendar\",\n serviceTitle: \"Google Calendar\",\n domain: \"calendar\",\n sandbox: \"none\",\n} as const satisfies Pick<ConnectorMeta, \"service\" | \"serviceTitle\" | \"domain\" | \"sandbox\">;\n\n/**\n * Every connector domain weaver knows, pinned against fancy-flow's union.\n *\n * A closed set copied into three codebases stays correct only while something\n * MAKES it: this line fails to compile the moment weaver carries a value\n * fancy-flow does not, including the values no provider uses yet.\n */\nconst WEAVER_DOMAINS: readonly ConnectorDomain[] = [\n \"payments\",\n \"commerce\",\n \"messaging\",\n \"email\",\n \"crm\",\n \"support\",\n \"storage\",\n \"calendar\",\n \"productivity\",\n \"database\",\n \"devtools\",\n \"analytics\",\n \"marketing\",\n \"ai\",\n \"forms\",\n \"hr\",\n \"geo\"\n];\nvoid WEAVER_DOMAINS;\n\n/** The credentials a Google Calendar connection holds. */\nexport const GOOGLE_CALENDAR_CREDENTIALS = [\n {\n \"key\": \"clientId\",\n \"label\": \"OAuth client ID\",\n \"scope\": \"provider\",\n \"secret\": false,\n \"help\": \"From Google Cloud Console -> APIs & Services -> Credentials. ONE value for the whole installation, not per connected account.\"\n },\n {\n \"key\": \"clientSecret\",\n \"label\": \"OAuth client secret\",\n \"scope\": \"provider\",\n \"secret\": true,\n \"help\": \"The client secret for the same OAuth app. One value for the whole installation.\"\n },\n {\n \"key\": \"accessToken\",\n \"label\": \"Access token\",\n \"scope\": \"account\",\n \"secret\": true,\n \"help\": \"Per connected Google account, and it expires after ONE HOUR. The host refreshes it with the refresh token.\"\n },\n {\n \"key\": \"refreshToken\",\n \"label\": \"Refresh token\",\n \"scope\": \"account\",\n \"secret\": true,\n \"help\": \"Per connected Google account. Google issues one only when the consent request asks for offline access; without it the connection dies within the hour.\"\n },\n {\n \"key\": \"channelToken\",\n \"label\": \"Channel token\",\n \"scope\": \"account\",\n \"secret\": true,\n \"help\": \"A secret the host chooses per connected account and sends as `token` on every events.watch. Google echoes it back in the X-Goog-Channel-Token header of every notification, and that echo is the ONLY thing that authenticates a delivery -- Google does not sign them. Up to 256 characters.\"\n }\n] as const;\n\n/**\n * The OAuth2 exchange Google Calendar requires — DECLARED here, performed by\n * the host.\n *\n * A consent screen needs a browser, a redirect URI and somewhere to persist\n * the result, and all three belong to the host; a package that ran the dance\n * itself would have to own a web server. So this says precisely enough for a\n * host to do it.\n *\n * The access token lasts 3600 seconds. A host that never refreshes will work\n * all afternoon and be broken by morning, which is why the lifetime is stated\n * rather than left to be discovered.\n *\n * Its refresh tokens do NOT rotate: the same one is reusable, so a refresh may\n * safely be retried and may run concurrently. That is stated rather than\n * assumed because the opposite — a provider that spends the token and revokes\n * the grant on a replay — looks identical until it happens.\n */\nexport const GOOGLE_CALENDAR_OAUTH = {\n \"flow\": \"authorization_code\",\n \"authorizeUrl\": \"https://accounts.google.com/o/oauth2/v2/auth\",\n \"tokenUrl\": \"https://oauth2.googleapis.com/token\",\n \"scopes\": [\n \"https://www.googleapis.com/auth/calendar.events\"\n ],\n \"accessTokenCredential\": \"accessToken\",\n \"refreshTokenCredential\": \"refreshToken\",\n \"refreshTokenRotates\": false,\n \"accessTokenTtlSeconds\": 3600\n} as const;\n\n/** Build a Google Calendar node's connector metadata from the operation it performs. */\nexport function googleCalendarMeta(\n role: ConnectorMeta[\"role\"],\n operation: string,\n docs: string,\n): ConnectorMeta {\n return { ...GOOGLE_CALENDAR_SERVICE, role, operation, docs };\n}\n","/**\n * GENERATED FILE — do not edit.\n *\n * Emitted from provider/actions/channel-stop.json by weaver's generator.\n * A hand-edit here is destroyed by the next protocol sync, which is worse than\n * being rejected, because it works until it silently does not. Fix\n * provider/actions/channel-stop.json (or weaver's template/) and regenerate:\n *\n * npm run provider -- google_calendar\n */\n\n/**\n * Google Calendar stop watching — Close a push-notification channel. The\n * host's subscription machinery calls this before re-creating a channel and\n * when a trigger is removed.\n *\n * https://developers.google.com/workspace/calendar/api/v3/reference/channels/stop\n */\n\nimport type { NodeKindDefinition } from \"@particle-academy/fancy-flow/engine\";\nimport { defineConnectorKind, summarize, type OutputField } from \"@particle-academy/fancy-flow/connectors\";\nimport { googleCalendarMeta } from \"../service.js\";\n\nexport const GOOGLE_CALENDAR_CHANNEL_STOP_KIND = \"@particle-academy/google_calendar_channel_stop\";\nexport const GOOGLE_CALENDAR_CHANNEL_STOP_OPERATION = \"channel_stop\";\n\nexport const GOOGLE_CALENDAR_CHANNEL_STOP_META = googleCalendarMeta(\"action\", \"stop a channel\", \"https://developers.google.com/workspace/calendar/api/v3/reference/channels/stop\");\n\n/**\n * What this node emits — the \"ingredients\" a downstream node can reference.\n *\n * fancy-flow reads `outputShape` off the kind and offers it in the variable\n * picker, so declaring it is the whole of the work: an author configuring the\n * next node picks `{{ $json.data.id }}` off a list instead of typing a path\n * and hoping.\n */\nexport const GOOGLE_CALENDAR_CHANNEL_STOP_OUTPUT: OutputField[] = [\n {\n \"path\": \"mode\",\n \"type\": \"string\",\n \"description\": \"Which estate this ran against. Google answers with an empty body, so this is the only thing published.\"\n }\n];\n\nexport const googleCalendarChannelStopKind: NodeKindDefinition = defineConnectorKind(GOOGLE_CALENDAR_CHANNEL_STOP_META, {\n name: GOOGLE_CALENDAR_CHANNEL_STOP_KIND,\n aliases: [\"google_calendar_channel_stop\"],\n label: \"Google Calendar stop watching\",\n description: \"Close a push-notification channel. The host's subscription machinery calls this before re-creating a channel and when a trigger is removed.\",\n inputs: [{ id: \"in\" }],\n outputs: [{ id: \"out\" }],\n sideEffects: \"idempotent\",\n outputShape: GOOGLE_CALENDAR_CHANNEL_STOP_OUTPUT,\n configSchema: [\n {\n \"type\": \"text\",\n \"key\": \"channelId\",\n \"label\": \"Channel ID\",\n \"required\": true,\n \"description\": \"The channel's id, as sent to channel_watch.\"\n },\n {\n \"type\": \"text\",\n \"key\": \"resourceId\",\n \"label\": \"Resource ID\",\n \"required\": true,\n \"description\": \"The resourceId channel_watch answered with. Both are needed; Google refuses a stop with only one.\"\n }\n ],\n defaultConfig: {\n \"mode\": \"auto\"\n },\n renderBody: ({ config }) =>\n summarize(GOOGLE_CALENDAR_CHANNEL_STOP_META, config as Record<string, unknown>, \"stop a channel\"),\n});\n","/**\n * GENERATED FILE — do not edit.\n *\n * Emitted from provider/actions/channel-watch.json by weaver's generator.\n * A hand-edit here is destroyed by the next protocol sync, which is worse than\n * being rejected, because it works until it silently does not. Fix\n * provider/actions/channel-watch.json (or weaver's template/) and regenerate:\n *\n * npm run provider -- google_calendar\n */\n\n/**\n * Google Calendar watch — Open a push-notification channel on a calendar's\n * events. The host's subscription machinery calls this; it is not a node most\n * workflows need.\n *\n * https://developers.google.com/workspace/calendar/api/v3/reference/events/watch\n *\n * `unsafe-to-replay`.\n */\n\nimport type { NodeKindDefinition } from \"@particle-academy/fancy-flow/engine\";\nimport { defineConnectorKind, summarize, type OutputField } from \"@particle-academy/fancy-flow/connectors\";\nimport { googleCalendarMeta } from \"../service.js\";\n\nexport const GOOGLE_CALENDAR_CHANNEL_WATCH_KIND = \"@particle-academy/google_calendar_channel_watch\";\nexport const GOOGLE_CALENDAR_CHANNEL_WATCH_OPERATION = \"channel_watch\";\n\nexport const GOOGLE_CALENDAR_CHANNEL_WATCH_META = googleCalendarMeta(\"action\", \"watch a calendar\", \"https://developers.google.com/workspace/calendar/api/v3/reference/events/watch\");\n\n/**\n * What this node emits — the \"ingredients\" a downstream node can reference.\n *\n * fancy-flow reads `outputShape` off the kind and offers it in the variable\n * picker, so declaring it is the whole of the work: an author configuring the\n * next node picks `{{ $json.data.id }}` off a list instead of typing a path\n * and hoping.\n */\nexport const GOOGLE_CALENDAR_CHANNEL_WATCH_OUTPUT: OutputField[] = [\n {\n \"path\": \"data.id\",\n \"type\": \"string\",\n \"description\": \"The channel id -- what was sent.\"\n },\n {\n \"path\": \"data.resourceId\",\n \"type\": \"string\",\n \"description\": \"Google's opaque id for the watched resource. channel_stop needs it together with the channel id.\"\n },\n {\n \"path\": \"data.resourceUri\",\n \"type\": \"string\",\n \"description\": \"The watched resource's URI.\"\n },\n {\n \"path\": \"data.token\",\n \"type\": \"string\",\n \"description\": \"The token that will be echoed on every notification.\"\n },\n {\n \"path\": \"data.expiration\",\n \"type\": \"string\",\n \"description\": \"When the channel expires, as epoch MILLISECONDS in a string. The subscription trigger's lease is built from this.\"\n },\n {\n \"path\": \"mode\",\n \"type\": \"string\",\n \"description\": \"Which estate this ran against. Google has no sandbox, so: fake or live.\"\n }\n];\n\nexport const googleCalendarChannelWatchKind: NodeKindDefinition = defineConnectorKind(GOOGLE_CALENDAR_CHANNEL_WATCH_META, {\n name: GOOGLE_CALENDAR_CHANNEL_WATCH_KIND,\n aliases: [\"google_calendar_channel_watch\"],\n label: \"Google Calendar watch\",\n description: \"Open a push-notification channel on a calendar's events. The host's subscription machinery calls this; it is not a node most workflows need.\",\n inputs: [{ id: \"in\" }],\n outputs: [{ id: \"out\" }],\n sideEffects: \"unsafe-to-replay\",\n outputShape: GOOGLE_CALENDAR_CHANNEL_WATCH_OUTPUT,\n configSchema: [\n {\n \"type\": \"text\",\n \"key\": \"calendarId\",\n \"label\": \"Calendar ID\",\n \"required\": true,\n \"default\": \"primary\",\n \"description\": \"`primary` for the connected account's own calendar, or a calendar's id.\"\n },\n {\n \"type\": \"text\",\n \"key\": \"channelId\",\n \"label\": \"Channel ID\",\n \"required\": true,\n \"description\": \"A UUID the host mints for THIS channel. Google requires it to be unique; it comes back in every notification as X-Goog-Channel-ID and is what channel_stop needs.\"\n },\n {\n \"type\": \"text\",\n \"key\": \"address\",\n \"label\": \"Notification URL\",\n \"required\": true,\n \"description\": \"The HTTPS URL the host mounts for this trigger. Google POSTs notifications here with an EMPTY body and the facts in X-Goog-* headers.\"\n },\n {\n \"type\": \"text\",\n \"key\": \"token\",\n \"label\": \"Channel token\",\n \"required\": true,\n \"description\": \"The connection's channelToken. The host fills this from the connection -- never type a value here. Google echoes it in X-Goog-Channel-Token, and that echo is how a delivery is verified.\"\n },\n {\n \"type\": \"text\",\n \"key\": \"ttlSeconds\",\n \"label\": \"Lifetime (seconds)\",\n \"required\": true,\n \"default\": \"604800\",\n \"description\": \"How long Google keeps the channel alive. Google's default is 604800 (one week), and the discovery document types it as a STRING inside `params`.\"\n }\n ],\n defaultConfig: {\n \"mode\": \"auto\"\n },\n renderBody: ({ config }) =>\n summarize(GOOGLE_CALENDAR_CHANNEL_WATCH_META, config as Record<string, unknown>, \"watch a calendar\"),\n});\n","/**\n * GENERATED FILE — do not edit.\n *\n * Emitted from provider/actions/event-create.json by weaver's generator.\n * A hand-edit here is destroyed by the next protocol sync, which is worse than\n * being rejected, because it works until it silently does not. Fix\n * provider/actions/event-create.json (or weaver's template/) and regenerate:\n *\n * npm run provider -- google_calendar\n */\n\n/**\n * Create Google Calendar event — Create a timed event on a Google Calendar.\n *\n * https://developers.google.com/workspace/calendar/api/v3/reference/events/insert\n *\n * `unsafe-to-replay`.\n */\n\nimport type { NodeKindDefinition } from \"@particle-academy/fancy-flow/engine\";\nimport { defineConnectorKind, summarize, type OutputField } from \"@particle-academy/fancy-flow/connectors\";\nimport { googleCalendarMeta } from \"../service.js\";\n\nexport const GOOGLE_CALENDAR_EVENT_CREATE_KIND = \"@particle-academy/google_calendar_event_create\";\nexport const GOOGLE_CALENDAR_EVENT_CREATE_OPERATION = \"event_create\";\n\nexport const GOOGLE_CALENDAR_EVENT_CREATE_META = googleCalendarMeta(\"action\", \"create an event\", \"https://developers.google.com/workspace/calendar/api/v3/reference/events/insert\");\n\n/**\n * What this node emits — the \"ingredients\" a downstream node can reference.\n *\n * fancy-flow reads `outputShape` off the kind and offers it in the variable\n * picker, so declaring it is the whole of the work: an author configuring the\n * next node picks `{{ $json.data.id }}` off a list instead of typing a path\n * and hoping.\n */\nexport const GOOGLE_CALENDAR_EVENT_CREATE_OUTPUT: OutputField[] = [\n {\n \"path\": \"data.id\",\n \"type\": \"string\",\n \"description\": \"The new event's id.\"\n },\n {\n \"path\": \"data.status\",\n \"type\": \"string\",\n \"description\": \"confirmed or tentative, echoing what was sent (or Google's default).\"\n },\n {\n \"path\": \"data.summary\",\n \"type\": \"string\",\n \"description\": \"Echoes what was sent.\"\n },\n {\n \"path\": \"data.htmlLink\",\n \"type\": \"string\",\n \"description\": \"The event in the Google Calendar UI.\"\n },\n {\n \"path\": \"data.start.dateTime\",\n \"type\": \"string\",\n \"description\": \"Echoes what was sent.\"\n },\n {\n \"path\": \"data.end.dateTime\",\n \"type\": \"string\",\n \"description\": \"Echoes what was sent.\"\n },\n {\n \"path\": \"data.created\",\n \"type\": \"string\",\n \"description\": \"RFC 3339 creation time.\"\n },\n {\n \"path\": \"data.organizer.email\",\n \"type\": \"string\",\n \"description\": \"The connected account, almost always.\"\n },\n {\n \"path\": \"mode\",\n \"type\": \"string\",\n \"description\": \"Which estate this ran against. Google has no sandbox, so: fake or live.\"\n }\n];\n\nexport const googleCalendarEventCreateKind: NodeKindDefinition = defineConnectorKind(GOOGLE_CALENDAR_EVENT_CREATE_META, {\n name: GOOGLE_CALENDAR_EVENT_CREATE_KIND,\n aliases: [\"google_calendar_event_create\"],\n label: \"Create Google Calendar event\",\n description: \"Create a timed event on a Google Calendar.\",\n inputs: [{ id: \"in\" }],\n outputs: [{ id: \"out\" }],\n sideEffects: \"unsafe-to-replay\",\n outputShape: GOOGLE_CALENDAR_EVENT_CREATE_OUTPUT,\n configSchema: [\n {\n \"type\": \"text\",\n \"key\": \"calendarId\",\n \"label\": \"Calendar ID\",\n \"required\": true,\n \"default\": \"primary\",\n \"description\": \"`primary` for the connected account's own calendar, or a calendar's id.\"\n },\n {\n \"type\": \"text\",\n \"key\": \"summary\",\n \"label\": \"Title\",\n \"required\": true\n },\n {\n \"type\": \"textarea\",\n \"key\": \"description\",\n \"label\": \"Description\",\n \"description\": \"Can contain HTML.\"\n },\n {\n \"type\": \"text\",\n \"key\": \"location\",\n \"label\": \"Location\",\n \"description\": \"Free-form text.\"\n },\n {\n \"type\": \"text\",\n \"key\": \"startDateTime\",\n \"label\": \"Start\",\n \"required\": true,\n \"description\": \"RFC 3339, e.g. 2026-10-01T14:00:00Z. Include an offset, or pair with a time zone below.\"\n },\n {\n \"type\": \"text\",\n \"key\": \"startTimeZone\",\n \"label\": \"Start time zone\",\n \"description\": \"IANA name, e.g. America/New_York. Optional when the start time already carries an offset.\"\n },\n {\n \"type\": \"text\",\n \"key\": \"endDateTime\",\n \"label\": \"End\",\n \"required\": true,\n \"description\": \"RFC 3339. Exclusive -- the event ends at, not through, this instant.\"\n },\n {\n \"type\": \"text\",\n \"key\": \"endTimeZone\",\n \"label\": \"End time zone\"\n },\n {\n \"type\": \"select\",\n \"key\": \"status\",\n \"label\": \"Status\",\n \"options\": [\n {\n \"value\": \"confirmed\",\n \"label\": \"Confirmed\"\n },\n {\n \"value\": \"tentative\",\n \"label\": \"Tentative\"\n }\n ],\n \"description\": \"\\\"cancelled\\\" is not offered here -- that is event_delete's job, not a status this action should be able to set on create.\"\n },\n {\n \"type\": \"select\",\n \"key\": \"visibility\",\n \"label\": \"Visibility\",\n \"options\": [\n {\n \"value\": \"default\",\n \"label\": \"Default\"\n },\n {\n \"value\": \"public\",\n \"label\": \"Public\"\n },\n {\n \"value\": \"private\",\n \"label\": \"Private\"\n }\n ]\n },\n {\n \"type\": \"select\",\n \"key\": \"transparency\",\n \"label\": \"Show me as\",\n \"options\": [\n {\n \"value\": \"opaque\",\n \"label\": \"Busy\"\n },\n {\n \"value\": \"transparent\",\n \"label\": \"Available\"\n }\n ],\n \"description\": \"opaque blocks time on the calendar (Busy); transparent does not (Available).\"\n },\n {\n \"type\": \"text\",\n \"key\": \"colorId\",\n \"label\": \"Color ID\",\n \"description\": \"An id from the colors endpoint's event section. Leave blank for the calendar's default.\"\n }\n ],\n defaultConfig: {\n \"mode\": \"auto\"\n },\n renderBody: ({ config }) =>\n summarize(GOOGLE_CALENDAR_EVENT_CREATE_META, config as Record<string, unknown>, \"create an event\"),\n});\n","/**\n * GENERATED FILE — do not edit.\n *\n * Emitted from provider/actions/event-delete.json by weaver's generator.\n * A hand-edit here is destroyed by the next protocol sync, which is worse than\n * being rejected, because it works until it silently does not. Fix\n * provider/actions/event-delete.json (or weaver's template/) and regenerate:\n *\n * npm run provider -- google_calendar\n */\n\n/**\n * Delete Google Calendar event — Remove an event from a Google Calendar.\n *\n * https://developers.google.com/workspace/calendar/api/v3/reference/events/delete\n */\n\nimport type { NodeKindDefinition } from \"@particle-academy/fancy-flow/engine\";\nimport { defineConnectorKind, summarize, type OutputField } from \"@particle-academy/fancy-flow/connectors\";\nimport { googleCalendarMeta } from \"../service.js\";\n\nexport const GOOGLE_CALENDAR_EVENT_DELETE_KIND = \"@particle-academy/google_calendar_event_delete\";\nexport const GOOGLE_CALENDAR_EVENT_DELETE_OPERATION = \"event_delete\";\n\nexport const GOOGLE_CALENDAR_EVENT_DELETE_META = googleCalendarMeta(\"action\", \"delete an event\", \"https://developers.google.com/workspace/calendar/api/v3/reference/events/delete\");\n\n/**\n * What this node emits — the \"ingredients\" a downstream node can reference.\n *\n * fancy-flow reads `outputShape` off the kind and offers it in the variable\n * picker, so declaring it is the whole of the work: an author configuring the\n * next node picks `{{ $json.data.id }}` off a list instead of typing a path\n * and hoping.\n */\nexport const GOOGLE_CALENDAR_EVENT_DELETE_OUTPUT: OutputField[] = [\n {\n \"path\": \"mode\",\n \"type\": \"string\",\n \"description\": \"Which estate this ran against. Google answers 204 with no body, so this is the only thing published.\"\n }\n];\n\nexport const googleCalendarEventDeleteKind: NodeKindDefinition = defineConnectorKind(GOOGLE_CALENDAR_EVENT_DELETE_META, {\n name: GOOGLE_CALENDAR_EVENT_DELETE_KIND,\n aliases: [\"google_calendar_event_delete\"],\n label: \"Delete Google Calendar event\",\n description: \"Remove an event from a Google Calendar.\",\n inputs: [{ id: \"in\" }],\n outputs: [{ id: \"out\" }],\n sideEffects: \"idempotent\",\n outputShape: GOOGLE_CALENDAR_EVENT_DELETE_OUTPUT,\n configSchema: [\n {\n \"type\": \"text\",\n \"key\": \"calendarId\",\n \"label\": \"Calendar ID\",\n \"required\": true,\n \"default\": \"primary\"\n },\n {\n \"type\": \"text\",\n \"key\": \"eventId\",\n \"label\": \"Event ID\",\n \"required\": true,\n \"description\": \"From event_create's data.id, or event_list/event_get.\"\n }\n ],\n defaultConfig: {\n \"mode\": \"auto\"\n },\n renderBody: ({ config }) =>\n summarize(GOOGLE_CALENDAR_EVENT_DELETE_META, config as Record<string, unknown>, \"delete an event\"),\n});\n","/**\n * GENERATED FILE — do not edit.\n *\n * Emitted from provider/actions/event-get.json by weaver's generator.\n * A hand-edit here is destroyed by the next protocol sync, which is worse than\n * being rejected, because it works until it silently does not. Fix\n * provider/actions/event-get.json (or weaver's template/) and regenerate:\n *\n * npm run provider -- google_calendar\n */\n\n/**\n * Google Calendar event — Read one event from a Google Calendar.\n *\n * https://developers.google.com/workspace/calendar/api/v3/reference/events/get\n */\n\nimport type { NodeKindDefinition } from \"@particle-academy/fancy-flow/engine\";\nimport { defineConnectorKind, summarize, type OutputField } from \"@particle-academy/fancy-flow/connectors\";\nimport { googleCalendarMeta } from \"../service.js\";\n\nexport const GOOGLE_CALENDAR_EVENT_GET_KIND = \"@particle-academy/google_calendar_event_get\";\nexport const GOOGLE_CALENDAR_EVENT_GET_OPERATION = \"event_get\";\n\nexport const GOOGLE_CALENDAR_EVENT_GET_META = googleCalendarMeta(\"action\", \"read an event\", \"https://developers.google.com/workspace/calendar/api/v3/reference/events/get\");\n\n/**\n * What this node emits — the \"ingredients\" a downstream node can reference.\n *\n * fancy-flow reads `outputShape` off the kind and offers it in the variable\n * picker, so declaring it is the whole of the work: an author configuring the\n * next node picks `{{ $json.data.id }}` off a list instead of typing a path\n * and hoping.\n */\nexport const GOOGLE_CALENDAR_EVENT_GET_OUTPUT: OutputField[] = [\n {\n \"path\": \"data.id\",\n \"type\": \"string\",\n \"description\": \"The event id.\"\n },\n {\n \"path\": \"data.status\",\n \"type\": \"string\",\n \"description\": \"confirmed, tentative or cancelled.\"\n },\n {\n \"path\": \"data.summary\",\n \"type\": \"string\",\n \"description\": \"The title.\"\n },\n {\n \"path\": \"data.description\",\n \"type\": \"string\",\n \"description\": \"The description, when there is one.\"\n },\n {\n \"path\": \"data.start.dateTime\",\n \"type\": \"string\",\n \"description\": \"RFC 3339 start. All-day events carry start.date instead.\"\n },\n {\n \"path\": \"data.end.dateTime\",\n \"type\": \"string\",\n \"description\": \"RFC 3339 end. All-day events carry end.date instead.\"\n },\n {\n \"path\": \"data.htmlLink\",\n \"type\": \"string\",\n \"description\": \"The event in the Google Calendar UI.\"\n },\n {\n \"path\": \"data.updated\",\n \"type\": \"string\",\n \"description\": \"RFC 3339 last modification.\"\n },\n {\n \"path\": \"data.organizer.email\",\n \"type\": \"string\",\n \"description\": \"Who organises it.\"\n },\n {\n \"path\": \"mode\",\n \"type\": \"string\",\n \"description\": \"Which estate this ran against. Google has no sandbox, so: fake or live.\"\n }\n];\n\nexport const googleCalendarEventGetKind: NodeKindDefinition = defineConnectorKind(GOOGLE_CALENDAR_EVENT_GET_META, {\n name: GOOGLE_CALENDAR_EVENT_GET_KIND,\n aliases: [\"google_calendar_event_get\"],\n label: \"Google Calendar event\",\n description: \"Read one event from a Google Calendar.\",\n inputs: [{ id: \"in\" }],\n outputs: [{ id: \"out\" }],\n sideEffects: \"none\",\n outputShape: GOOGLE_CALENDAR_EVENT_GET_OUTPUT,\n configSchema: [\n {\n \"type\": \"text\",\n \"key\": \"calendarId\",\n \"label\": \"Calendar ID\",\n \"required\": true,\n \"default\": \"primary\",\n \"description\": \"`primary` for the connected account's own calendar, or a calendar's id (usually an email address).\"\n },\n {\n \"type\": \"text\",\n \"key\": \"eventId\",\n \"label\": \"Event ID\",\n \"required\": true,\n \"description\": \"The event's id, as published by another node or by a notification's follow-up list.\"\n }\n ],\n defaultConfig: {\n \"mode\": \"auto\"\n },\n renderBody: ({ config }) =>\n summarize(GOOGLE_CALENDAR_EVENT_GET_META, config as Record<string, unknown>, \"read an event\"),\n});\n","/**\n * GENERATED FILE — do not edit.\n *\n * Emitted from provider/actions/event-list.json by weaver's generator.\n * A hand-edit here is destroyed by the next protocol sync, which is worse than\n * being rejected, because it works until it silently does not. Fix\n * provider/actions/event-list.json (or weaver's template/) and regenerate:\n *\n * npm run provider -- google_calendar\n */\n\n/**\n * Google Calendar events — List events from a Google Calendar, in full or\n * incrementally with a sync token.\n *\n * https://developers.google.com/workspace/calendar/api/v3/reference/events/list\n */\n\nimport type { NodeKindDefinition } from \"@particle-academy/fancy-flow/engine\";\nimport { defineConnectorKind, summarize, type OutputField } from \"@particle-academy/fancy-flow/connectors\";\nimport { googleCalendarMeta } from \"../service.js\";\n\nexport const GOOGLE_CALENDAR_EVENT_LIST_KIND = \"@particle-academy/google_calendar_event_list\";\nexport const GOOGLE_CALENDAR_EVENT_LIST_OPERATION = \"event_list\";\n\nexport const GOOGLE_CALENDAR_EVENT_LIST_META = googleCalendarMeta(\"action\", \"list events\", \"https://developers.google.com/workspace/calendar/api/v3/reference/events/list\");\n\n/**\n * What this node emits — the \"ingredients\" a downstream node can reference.\n *\n * fancy-flow reads `outputShape` off the kind and offers it in the variable\n * picker, so declaring it is the whole of the work: an author configuring the\n * next node picks `{{ $json.data.id }}` off a list instead of typing a path\n * and hoping.\n */\nexport const GOOGLE_CALENDAR_EVENT_LIST_OUTPUT: OutputField[] = [\n {\n \"path\": \"data.items\",\n \"type\": \"array\",\n \"description\": \"The events on this page, each shaped like event_get's output.\"\n },\n {\n \"path\": \"data.nextPageToken\",\n \"type\": \"string\",\n \"description\": \"Present when there is another page.\"\n },\n {\n \"path\": \"data.nextSyncToken\",\n \"type\": \"string\",\n \"description\": \"Present on the LAST page only. Store it and pass it as syncToken next time to get only what changed.\"\n },\n {\n \"path\": \"data.updated\",\n \"type\": \"string\",\n \"description\": \"RFC 3339 last modification of the calendar.\"\n },\n {\n \"path\": \"mode\",\n \"type\": \"string\",\n \"description\": \"Which estate this ran against. Google has no sandbox, so: fake or live.\"\n }\n];\n\nexport const googleCalendarEventListKind: NodeKindDefinition = defineConnectorKind(GOOGLE_CALENDAR_EVENT_LIST_META, {\n name: GOOGLE_CALENDAR_EVENT_LIST_KIND,\n aliases: [\"google_calendar_event_list\"],\n label: \"Google Calendar events\",\n description: \"List events from a Google Calendar, in full or incrementally with a sync token.\",\n inputs: [{ id: \"in\" }],\n outputs: [{ id: \"out\" }],\n sideEffects: \"none\",\n outputShape: GOOGLE_CALENDAR_EVENT_LIST_OUTPUT,\n configSchema: [\n {\n \"type\": \"text\",\n \"key\": \"calendarId\",\n \"label\": \"Calendar ID\",\n \"required\": true,\n \"default\": \"primary\",\n \"description\": \"`primary` for the connected account's own calendar, or a calendar's id.\"\n },\n {\n \"type\": \"text\",\n \"key\": \"syncToken\",\n \"label\": \"Sync token\",\n \"description\": \"From a previous list's nextSyncToken. With one set, Google returns ONLY what changed since -- including deletions, as cancelled events. Leave blank for a full list.\"\n },\n {\n \"type\": \"text\",\n \"key\": \"timeMin\",\n \"label\": \"From\",\n \"description\": \"RFC 3339 lower bound on an event's END time, e.g. 2026-09-15T00:00:00Z. Not allowed together with a sync token.\"\n },\n {\n \"type\": \"text\",\n \"key\": \"timeMax\",\n \"label\": \"To\",\n \"description\": \"RFC 3339 upper bound on an event's START time. Not allowed together with a sync token.\"\n },\n {\n \"type\": \"number\",\n \"key\": \"maxResults\",\n \"label\": \"Page size\",\n \"min\": 1,\n \"max\": 2500,\n \"default\": 250,\n \"description\": \"Events per page. Google's default is 250 and its maximum 2500; a nextPageToken means there are more.\"\n },\n {\n \"type\": \"text\",\n \"key\": \"pageToken\",\n \"label\": \"Page token\",\n \"description\": \"From a previous page's nextPageToken.\"\n },\n {\n \"type\": \"switch\",\n \"key\": \"singleEvents\",\n \"label\": \"Expand recurring events\",\n \"default\": true,\n \"description\": \"Return each occurrence of a recurring event as its own item, rather than the series once.\"\n }\n ],\n defaultConfig: {\n \"mode\": \"auto\"\n },\n renderBody: ({ config }) =>\n summarize(GOOGLE_CALENDAR_EVENT_LIST_META, config as Record<string, unknown>, \"list events\"),\n});\n","/**\n * GENERATED FILE — do not edit.\n *\n * Emitted from provider/actions/event-update.json by weaver's generator.\n * A hand-edit here is destroyed by the next protocol sync, which is worse than\n * being rejected, because it works until it silently does not. Fix\n * provider/actions/event-update.json (or weaver's template/) and regenerate:\n *\n * npm run provider -- google_calendar\n */\n\n/**\n * Update Google Calendar event — Change one or more fields of an existing\n * event. Only the fields provided are touched.\n *\n * https://developers.google.com/workspace/calendar/api/v3/reference/events/patch\n */\n\nimport type { NodeKindDefinition } from \"@particle-academy/fancy-flow/engine\";\nimport { defineConnectorKind, summarize, type OutputField } from \"@particle-academy/fancy-flow/connectors\";\nimport { googleCalendarMeta } from \"../service.js\";\n\nexport const GOOGLE_CALENDAR_EVENT_UPDATE_KIND = \"@particle-academy/google_calendar_event_update\";\nexport const GOOGLE_CALENDAR_EVENT_UPDATE_OPERATION = \"event_update\";\n\nexport const GOOGLE_CALENDAR_EVENT_UPDATE_META = googleCalendarMeta(\"action\", \"update an event\", \"https://developers.google.com/workspace/calendar/api/v3/reference/events/patch\");\n\n/**\n * What this node emits — the \"ingredients\" a downstream node can reference.\n *\n * fancy-flow reads `outputShape` off the kind and offers it in the variable\n * picker, so declaring it is the whole of the work: an author configuring the\n * next node picks `{{ $json.data.id }}` off a list instead of typing a path\n * and hoping.\n */\nexport const GOOGLE_CALENDAR_EVENT_UPDATE_OUTPUT: OutputField[] = [\n {\n \"path\": \"data.id\",\n \"type\": \"string\",\n \"description\": \"The event's id.\"\n },\n {\n \"path\": \"data.status\",\n \"type\": \"string\",\n \"description\": \"The event's status after this update.\"\n },\n {\n \"path\": \"data.summary\",\n \"type\": \"string\",\n \"description\": \"The event's title after this update.\"\n },\n {\n \"path\": \"data.htmlLink\",\n \"type\": \"string\",\n \"description\": \"The event in the Google Calendar UI.\"\n },\n {\n \"path\": \"data.start.dateTime\",\n \"type\": \"string\",\n \"description\": \"The event's start after this update.\"\n },\n {\n \"path\": \"data.end.dateTime\",\n \"type\": \"string\",\n \"description\": \"The event's end after this update.\"\n },\n {\n \"path\": \"data.updated\",\n \"type\": \"string\",\n \"description\": \"RFC 3339 last modification -- now.\"\n },\n {\n \"path\": \"mode\",\n \"type\": \"string\",\n \"description\": \"Which estate this ran against. Google has no sandbox, so: fake or live.\"\n }\n];\n\nexport const googleCalendarEventUpdateKind: NodeKindDefinition = defineConnectorKind(GOOGLE_CALENDAR_EVENT_UPDATE_META, {\n name: GOOGLE_CALENDAR_EVENT_UPDATE_KIND,\n aliases: [\"google_calendar_event_update\"],\n label: \"Update Google Calendar event\",\n description: \"Change one or more fields of an existing event. Only the fields provided are touched.\",\n inputs: [{ id: \"in\" }],\n outputs: [{ id: \"out\" }],\n sideEffects: \"idempotent\",\n outputShape: GOOGLE_CALENDAR_EVENT_UPDATE_OUTPUT,\n configSchema: [\n {\n \"type\": \"text\",\n \"key\": \"calendarId\",\n \"label\": \"Calendar ID\",\n \"required\": true,\n \"default\": \"primary\"\n },\n {\n \"type\": \"text\",\n \"key\": \"eventId\",\n \"label\": \"Event ID\",\n \"required\": true,\n \"description\": \"From event_create's data.id, or event_list/event_get.\"\n },\n {\n \"type\": \"text\",\n \"key\": \"summary\",\n \"label\": \"Title\"\n },\n {\n \"type\": \"textarea\",\n \"key\": \"description\",\n \"label\": \"Description\"\n },\n {\n \"type\": \"text\",\n \"key\": \"location\",\n \"label\": \"Location\"\n },\n {\n \"type\": \"text\",\n \"key\": \"startDateTime\",\n \"label\": \"Start\",\n \"description\": \"RFC 3339. Leave blank to leave the start time unchanged.\"\n },\n {\n \"type\": \"text\",\n \"key\": \"startTimeZone\",\n \"label\": \"Start time zone\"\n },\n {\n \"type\": \"text\",\n \"key\": \"endDateTime\",\n \"label\": \"End\",\n \"description\": \"RFC 3339. Leave blank to leave the end time unchanged.\"\n },\n {\n \"type\": \"text\",\n \"key\": \"endTimeZone\",\n \"label\": \"End time zone\"\n },\n {\n \"type\": \"select\",\n \"key\": \"status\",\n \"label\": \"Status\",\n \"options\": [\n {\n \"value\": \"confirmed\",\n \"label\": \"Confirmed\"\n },\n {\n \"value\": \"tentative\",\n \"label\": \"Tentative\"\n },\n {\n \"value\": \"cancelled\",\n \"label\": \"Cancelled\"\n }\n ],\n \"description\": \"Setting cancelled here has the same effect as event_delete -- offered because PATCH is also Google's documented way to cancel one instance of a recurring event, which event_delete (which removes the whole resource) cannot target.\"\n },\n {\n \"type\": \"select\",\n \"key\": \"visibility\",\n \"label\": \"Visibility\",\n \"options\": [\n {\n \"value\": \"default\",\n \"label\": \"Default\"\n },\n {\n \"value\": \"public\",\n \"label\": \"Public\"\n },\n {\n \"value\": \"private\",\n \"label\": \"Private\"\n }\n ]\n },\n {\n \"type\": \"select\",\n \"key\": \"transparency\",\n \"label\": \"Show me as\",\n \"options\": [\n {\n \"value\": \"opaque\",\n \"label\": \"Busy\"\n },\n {\n \"value\": \"transparent\",\n \"label\": \"Available\"\n }\n ]\n },\n {\n \"type\": \"text\",\n \"key\": \"colorId\",\n \"label\": \"Color ID\"\n }\n ],\n defaultConfig: {\n \"mode\": \"auto\"\n },\n renderBody: ({ config }) =>\n summarize(GOOGLE_CALENDAR_EVENT_UPDATE_META, config as Record<string, unknown>, \"update an event\"),\n});\n","/**\n * GENERATED FILE — do not edit.\n *\n * Emitted from provider/triggers/events-changed.json by weaver's generator.\n * A hand-edit here is destroyed by the next protocol sync, which is worse than\n * being rejected, because it works until it silently does not. Fix\n * provider/triggers/events-changed.json (or weaver's template/) and regenerate:\n *\n * npm run provider -- google_calendar\n */\n\n/**\n * Google Calendar change — Start a run when something changes on a watched\n * Google Calendar.\n *\n * https://developers.google.com/workspace/calendar/api/guides/push\n *\n * Delivery: subscription. The host mints a UUID, calls channel_watch with it,\n * its own URL for this trigger and the connection's channelToken, and stores\n * the returned id, resourceId and expiration. Google cannot renew a channel:\n * 86400 seconds before it expires the host calls channel_stop and then\n * channel_watch again. A channel that lapsed is re-listed FIRST (event_list\n * with the stored syncToken; a 410 means list in full) and then re-created,\n * because notifications during the gap are gone. Google delivers with an EMPTY\n * body: the host verifies X-Goog-Channel-Token against the connection's\n * channelToken and injects the X-Goog-* headers as the event, camel-cased as\n * below. The first message on a new channel is `sync` and carries no change.\n */\n\nimport type { NodeKindDefinition } from \"@particle-academy/fancy-flow/engine\";\nimport { defineConnectorKind, summarize, type OutputField } from \"@particle-academy/fancy-flow/connectors\";\nimport { googleCalendarMeta } from \"../service.js\";\n\nexport const GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_KIND = \"@particle-academy/google_calendar_events_changed_trigger\";\nexport const GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_OPERATION = \"events_changed\";\n\nexport const GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_META = googleCalendarMeta(\"trigger\", \"a calendar change\", \"https://developers.google.com/workspace/calendar/api/guides/push\");\n\n/**\n * What this node emits — the \"ingredients\" a downstream node can reference.\n *\n * fancy-flow reads `outputShape` off the kind and offers it in the variable\n * picker, so declaring it is the whole of the work: an author configuring the\n * next node picks `{{ $json.data.id }}` off a list instead of typing a path\n * and hoping.\n */\nexport const GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_OUTPUT: OutputField[] = [\n {\n \"path\": \"channelId\",\n \"type\": \"string\",\n \"description\": \"X-Goog-Channel-ID: which channel this came from.\"\n },\n {\n \"path\": \"messageNumber\",\n \"type\": \"string\",\n \"description\": \"X-Goog-Message-Number: increases per channel; 1 is the sync message.\"\n },\n {\n \"path\": \"resourceId\",\n \"type\": \"string\",\n \"description\": \"X-Goog-Resource-ID: the watched resource.\"\n },\n {\n \"path\": \"resourceState\",\n \"type\": \"string\",\n \"description\": \"X-Goog-Resource-State: sync, exists or not_exists. `sync` carries no change.\"\n },\n {\n \"path\": \"resourceUri\",\n \"type\": \"string\",\n \"description\": \"X-Goog-Resource-URI: the watched resource's URI.\"\n },\n {\n \"path\": \"channelExpiration\",\n \"type\": \"string\",\n \"description\": \"X-Goog-Channel-Expiration, when Google sends it: the channel's expiry in a human-readable format, not an instant to compute with.\"\n }\n];\n\nexport const googleCalendarEventsChangedTriggerKind: NodeKindDefinition = defineConnectorKind(GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_META, {\n name: GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_KIND,\n aliases: [\"google_calendar_events_changed_trigger\"],\n label: \"Google Calendar change\",\n description: \"Start a run when something changes on a watched Google Calendar.\",\n icon: \"📅\",\n inputs: [],\n outputs: [{ id: \"out\" }],\n sideEffects: \"none\",\n outputShape: GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_OUTPUT,\n configSchema: [\n {\n \"type\": \"select\",\n \"key\": \"sample\",\n \"label\": \"Sample state (fake mode)\",\n \"default\": \"exists\",\n \"description\": \"Which resource state the faked notification carries: `exists` is a change, `sync` is the first message on a new channel, `not_exists` is the resource going away.\",\n \"options\": [\n {\n \"value\": \"exists\",\n \"label\": \"exists — something changed\"\n },\n {\n \"value\": \"sync\",\n \"label\": \"sync — the channel just opened\"\n },\n {\n \"value\": \"not_exists\",\n \"label\": \"not_exists — the resource is gone\"\n }\n ]\n }\n ],\n defaultConfig: {\n \"mode\": \"auto\",\n \"sample\": \"exists\"\n },\n renderBody: ({ config }) =>\n summarize(GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_META, config as Record<string, unknown>, \"a calendar change\"),\n});\n","/**\n * GENERATED FILE — do not edit.\n *\n * Emitted from provider/manifest.json by weaver's generator.\n * A hand-edit here is destroyed by the next protocol sync, which is worse than\n * being rejected, because it works until it silently does not. Fix\n * provider/manifest.json (or weaver's template/) and regenerate:\n *\n * npm run provider -- google_calendar\n */\n\n/**\n * Google Calendar's node kinds for fancy-flow.\n *\n * Install this on every host. The TypeScript executors live in the js\n * package's `./flow` subpath; PHP and Python hosts run their own and need only\n * this.\n */\n\nexport * from \"./service.js\";\nexport * from \"./kinds/channel-stop.js\";\nexport * from \"./kinds/channel-watch.js\";\nexport * from \"./kinds/event-create.js\";\nexport * from \"./kinds/event-delete.js\";\nexport * from \"./kinds/event-get.js\";\nexport * from \"./kinds/event-list.js\";\nexport * from \"./kinds/event-update.js\";\nexport * from \"./kinds/events-changed.js\";\n\nimport type { NodeKindDefinition } from \"@particle-academy/fancy-flow/engine\";\nimport { googleCalendarChannelStopKind } from \"./kinds/channel-stop.js\";\nimport { googleCalendarChannelWatchKind } from \"./kinds/channel-watch.js\";\nimport { googleCalendarEventCreateKind } from \"./kinds/event-create.js\";\nimport { googleCalendarEventDeleteKind } from \"./kinds/event-delete.js\";\nimport { googleCalendarEventGetKind } from \"./kinds/event-get.js\";\nimport { googleCalendarEventListKind } from \"./kinds/event-list.js\";\nimport { googleCalendarEventUpdateKind } from \"./kinds/event-update.js\";\nimport { googleCalendarEventsChangedTriggerKind } from \"./kinds/events-changed.js\";\n\n/** Every Google Calendar kind, for a host that registers the lot. */\nexport const GOOGLE_CALENDAR_KINDS: NodeKindDefinition[] = [\n googleCalendarChannelStopKind,\n googleCalendarChannelWatchKind,\n googleCalendarEventCreateKind,\n googleCalendarEventDeleteKind,\n googleCalendarEventGetKind,\n googleCalendarEventListKind,\n googleCalendarEventUpdateKind,\n googleCalendarEventsChangedTriggerKind,\n];\n"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -133,6 +133,34 @@ declare const GOOGLE_CALENDAR_CHANNEL_WATCH_META: _particle_academy_fancy_flow_c
|
|
|
133
133
|
declare const GOOGLE_CALENDAR_CHANNEL_WATCH_OUTPUT: OutputField[];
|
|
134
134
|
declare const googleCalendarChannelWatchKind: NodeKindDefinition;
|
|
135
135
|
|
|
136
|
+
declare const GOOGLE_CALENDAR_EVENT_CREATE_KIND = "@particle-academy/google_calendar_event_create";
|
|
137
|
+
declare const GOOGLE_CALENDAR_EVENT_CREATE_OPERATION = "event_create";
|
|
138
|
+
declare const GOOGLE_CALENDAR_EVENT_CREATE_META: _particle_academy_fancy_flow_connectors.ConnectorMeta;
|
|
139
|
+
/**
|
|
140
|
+
* What this node emits — the "ingredients" a downstream node can reference.
|
|
141
|
+
*
|
|
142
|
+
* fancy-flow reads `outputShape` off the kind and offers it in the variable
|
|
143
|
+
* picker, so declaring it is the whole of the work: an author configuring the
|
|
144
|
+
* next node picks `{{ $json.data.id }}` off a list instead of typing a path
|
|
145
|
+
* and hoping.
|
|
146
|
+
*/
|
|
147
|
+
declare const GOOGLE_CALENDAR_EVENT_CREATE_OUTPUT: OutputField[];
|
|
148
|
+
declare const googleCalendarEventCreateKind: NodeKindDefinition;
|
|
149
|
+
|
|
150
|
+
declare const GOOGLE_CALENDAR_EVENT_DELETE_KIND = "@particle-academy/google_calendar_event_delete";
|
|
151
|
+
declare const GOOGLE_CALENDAR_EVENT_DELETE_OPERATION = "event_delete";
|
|
152
|
+
declare const GOOGLE_CALENDAR_EVENT_DELETE_META: _particle_academy_fancy_flow_connectors.ConnectorMeta;
|
|
153
|
+
/**
|
|
154
|
+
* What this node emits — the "ingredients" a downstream node can reference.
|
|
155
|
+
*
|
|
156
|
+
* fancy-flow reads `outputShape` off the kind and offers it in the variable
|
|
157
|
+
* picker, so declaring it is the whole of the work: an author configuring the
|
|
158
|
+
* next node picks `{{ $json.data.id }}` off a list instead of typing a path
|
|
159
|
+
* and hoping.
|
|
160
|
+
*/
|
|
161
|
+
declare const GOOGLE_CALENDAR_EVENT_DELETE_OUTPUT: OutputField[];
|
|
162
|
+
declare const googleCalendarEventDeleteKind: NodeKindDefinition;
|
|
163
|
+
|
|
136
164
|
declare const GOOGLE_CALENDAR_EVENT_GET_KIND = "@particle-academy/google_calendar_event_get";
|
|
137
165
|
declare const GOOGLE_CALENDAR_EVENT_GET_OPERATION = "event_get";
|
|
138
166
|
declare const GOOGLE_CALENDAR_EVENT_GET_META: _particle_academy_fancy_flow_connectors.ConnectorMeta;
|
|
@@ -161,6 +189,20 @@ declare const GOOGLE_CALENDAR_EVENT_LIST_META: _particle_academy_fancy_flow_conn
|
|
|
161
189
|
declare const GOOGLE_CALENDAR_EVENT_LIST_OUTPUT: OutputField[];
|
|
162
190
|
declare const googleCalendarEventListKind: NodeKindDefinition;
|
|
163
191
|
|
|
192
|
+
declare const GOOGLE_CALENDAR_EVENT_UPDATE_KIND = "@particle-academy/google_calendar_event_update";
|
|
193
|
+
declare const GOOGLE_CALENDAR_EVENT_UPDATE_OPERATION = "event_update";
|
|
194
|
+
declare const GOOGLE_CALENDAR_EVENT_UPDATE_META: _particle_academy_fancy_flow_connectors.ConnectorMeta;
|
|
195
|
+
/**
|
|
196
|
+
* What this node emits — the "ingredients" a downstream node can reference.
|
|
197
|
+
*
|
|
198
|
+
* fancy-flow reads `outputShape` off the kind and offers it in the variable
|
|
199
|
+
* picker, so declaring it is the whole of the work: an author configuring the
|
|
200
|
+
* next node picks `{{ $json.data.id }}` off a list instead of typing a path
|
|
201
|
+
* and hoping.
|
|
202
|
+
*/
|
|
203
|
+
declare const GOOGLE_CALENDAR_EVENT_UPDATE_OUTPUT: OutputField[];
|
|
204
|
+
declare const googleCalendarEventUpdateKind: NodeKindDefinition;
|
|
205
|
+
|
|
164
206
|
declare const GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_KIND = "@particle-academy/google_calendar_events_changed_trigger";
|
|
165
207
|
declare const GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_OPERATION = "events_changed";
|
|
166
208
|
declare const GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_META: _particle_academy_fancy_flow_connectors.ConnectorMeta;
|
|
@@ -196,4 +238,4 @@ declare const googleCalendarEventsChangedTriggerKind: NodeKindDefinition;
|
|
|
196
238
|
/** Every Google Calendar kind, for a host that registers the lot. */
|
|
197
239
|
declare const GOOGLE_CALENDAR_KINDS: NodeKindDefinition[];
|
|
198
240
|
|
|
199
|
-
export { CONNECTOR_API_VERSION, GOOGLE_CALENDAR_CHANNEL_STOP_KIND, GOOGLE_CALENDAR_CHANNEL_STOP_META, GOOGLE_CALENDAR_CHANNEL_STOP_OPERATION, GOOGLE_CALENDAR_CHANNEL_STOP_OUTPUT, GOOGLE_CALENDAR_CHANNEL_WATCH_KIND, GOOGLE_CALENDAR_CHANNEL_WATCH_META, GOOGLE_CALENDAR_CHANNEL_WATCH_OPERATION, GOOGLE_CALENDAR_CHANNEL_WATCH_OUTPUT, GOOGLE_CALENDAR_CREDENTIALS, GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_KIND, GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_META, GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_OPERATION, GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_OUTPUT, GOOGLE_CALENDAR_EVENT_GET_KIND, GOOGLE_CALENDAR_EVENT_GET_META, GOOGLE_CALENDAR_EVENT_GET_OPERATION, GOOGLE_CALENDAR_EVENT_GET_OUTPUT, GOOGLE_CALENDAR_EVENT_LIST_KIND, GOOGLE_CALENDAR_EVENT_LIST_META, GOOGLE_CALENDAR_EVENT_LIST_OPERATION, GOOGLE_CALENDAR_EVENT_LIST_OUTPUT, GOOGLE_CALENDAR_KINDS, GOOGLE_CALENDAR_OAUTH, GOOGLE_CALENDAR_SERVICE, googleCalendarChannelStopKind, googleCalendarChannelWatchKind, googleCalendarEventGetKind, googleCalendarEventListKind, googleCalendarEventsChangedTriggerKind, googleCalendarMeta };
|
|
241
|
+
export { CONNECTOR_API_VERSION, GOOGLE_CALENDAR_CHANNEL_STOP_KIND, GOOGLE_CALENDAR_CHANNEL_STOP_META, GOOGLE_CALENDAR_CHANNEL_STOP_OPERATION, GOOGLE_CALENDAR_CHANNEL_STOP_OUTPUT, GOOGLE_CALENDAR_CHANNEL_WATCH_KIND, GOOGLE_CALENDAR_CHANNEL_WATCH_META, GOOGLE_CALENDAR_CHANNEL_WATCH_OPERATION, GOOGLE_CALENDAR_CHANNEL_WATCH_OUTPUT, GOOGLE_CALENDAR_CREDENTIALS, GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_KIND, GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_META, GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_OPERATION, GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_OUTPUT, GOOGLE_CALENDAR_EVENT_CREATE_KIND, GOOGLE_CALENDAR_EVENT_CREATE_META, GOOGLE_CALENDAR_EVENT_CREATE_OPERATION, GOOGLE_CALENDAR_EVENT_CREATE_OUTPUT, GOOGLE_CALENDAR_EVENT_DELETE_KIND, GOOGLE_CALENDAR_EVENT_DELETE_META, GOOGLE_CALENDAR_EVENT_DELETE_OPERATION, GOOGLE_CALENDAR_EVENT_DELETE_OUTPUT, GOOGLE_CALENDAR_EVENT_GET_KIND, GOOGLE_CALENDAR_EVENT_GET_META, GOOGLE_CALENDAR_EVENT_GET_OPERATION, GOOGLE_CALENDAR_EVENT_GET_OUTPUT, GOOGLE_CALENDAR_EVENT_LIST_KIND, GOOGLE_CALENDAR_EVENT_LIST_META, GOOGLE_CALENDAR_EVENT_LIST_OPERATION, GOOGLE_CALENDAR_EVENT_LIST_OUTPUT, GOOGLE_CALENDAR_EVENT_UPDATE_KIND, GOOGLE_CALENDAR_EVENT_UPDATE_META, GOOGLE_CALENDAR_EVENT_UPDATE_OPERATION, GOOGLE_CALENDAR_EVENT_UPDATE_OUTPUT, GOOGLE_CALENDAR_KINDS, GOOGLE_CALENDAR_OAUTH, GOOGLE_CALENDAR_SERVICE, googleCalendarChannelStopKind, googleCalendarChannelWatchKind, googleCalendarEventCreateKind, googleCalendarEventDeleteKind, googleCalendarEventGetKind, googleCalendarEventListKind, googleCalendarEventUpdateKind, googleCalendarEventsChangedTriggerKind, googleCalendarMeta };
|
package/dist/index.d.ts
CHANGED
|
@@ -133,6 +133,34 @@ declare const GOOGLE_CALENDAR_CHANNEL_WATCH_META: _particle_academy_fancy_flow_c
|
|
|
133
133
|
declare const GOOGLE_CALENDAR_CHANNEL_WATCH_OUTPUT: OutputField[];
|
|
134
134
|
declare const googleCalendarChannelWatchKind: NodeKindDefinition;
|
|
135
135
|
|
|
136
|
+
declare const GOOGLE_CALENDAR_EVENT_CREATE_KIND = "@particle-academy/google_calendar_event_create";
|
|
137
|
+
declare const GOOGLE_CALENDAR_EVENT_CREATE_OPERATION = "event_create";
|
|
138
|
+
declare const GOOGLE_CALENDAR_EVENT_CREATE_META: _particle_academy_fancy_flow_connectors.ConnectorMeta;
|
|
139
|
+
/**
|
|
140
|
+
* What this node emits — the "ingredients" a downstream node can reference.
|
|
141
|
+
*
|
|
142
|
+
* fancy-flow reads `outputShape` off the kind and offers it in the variable
|
|
143
|
+
* picker, so declaring it is the whole of the work: an author configuring the
|
|
144
|
+
* next node picks `{{ $json.data.id }}` off a list instead of typing a path
|
|
145
|
+
* and hoping.
|
|
146
|
+
*/
|
|
147
|
+
declare const GOOGLE_CALENDAR_EVENT_CREATE_OUTPUT: OutputField[];
|
|
148
|
+
declare const googleCalendarEventCreateKind: NodeKindDefinition;
|
|
149
|
+
|
|
150
|
+
declare const GOOGLE_CALENDAR_EVENT_DELETE_KIND = "@particle-academy/google_calendar_event_delete";
|
|
151
|
+
declare const GOOGLE_CALENDAR_EVENT_DELETE_OPERATION = "event_delete";
|
|
152
|
+
declare const GOOGLE_CALENDAR_EVENT_DELETE_META: _particle_academy_fancy_flow_connectors.ConnectorMeta;
|
|
153
|
+
/**
|
|
154
|
+
* What this node emits — the "ingredients" a downstream node can reference.
|
|
155
|
+
*
|
|
156
|
+
* fancy-flow reads `outputShape` off the kind and offers it in the variable
|
|
157
|
+
* picker, so declaring it is the whole of the work: an author configuring the
|
|
158
|
+
* next node picks `{{ $json.data.id }}` off a list instead of typing a path
|
|
159
|
+
* and hoping.
|
|
160
|
+
*/
|
|
161
|
+
declare const GOOGLE_CALENDAR_EVENT_DELETE_OUTPUT: OutputField[];
|
|
162
|
+
declare const googleCalendarEventDeleteKind: NodeKindDefinition;
|
|
163
|
+
|
|
136
164
|
declare const GOOGLE_CALENDAR_EVENT_GET_KIND = "@particle-academy/google_calendar_event_get";
|
|
137
165
|
declare const GOOGLE_CALENDAR_EVENT_GET_OPERATION = "event_get";
|
|
138
166
|
declare const GOOGLE_CALENDAR_EVENT_GET_META: _particle_academy_fancy_flow_connectors.ConnectorMeta;
|
|
@@ -161,6 +189,20 @@ declare const GOOGLE_CALENDAR_EVENT_LIST_META: _particle_academy_fancy_flow_conn
|
|
|
161
189
|
declare const GOOGLE_CALENDAR_EVENT_LIST_OUTPUT: OutputField[];
|
|
162
190
|
declare const googleCalendarEventListKind: NodeKindDefinition;
|
|
163
191
|
|
|
192
|
+
declare const GOOGLE_CALENDAR_EVENT_UPDATE_KIND = "@particle-academy/google_calendar_event_update";
|
|
193
|
+
declare const GOOGLE_CALENDAR_EVENT_UPDATE_OPERATION = "event_update";
|
|
194
|
+
declare const GOOGLE_CALENDAR_EVENT_UPDATE_META: _particle_academy_fancy_flow_connectors.ConnectorMeta;
|
|
195
|
+
/**
|
|
196
|
+
* What this node emits — the "ingredients" a downstream node can reference.
|
|
197
|
+
*
|
|
198
|
+
* fancy-flow reads `outputShape` off the kind and offers it in the variable
|
|
199
|
+
* picker, so declaring it is the whole of the work: an author configuring the
|
|
200
|
+
* next node picks `{{ $json.data.id }}` off a list instead of typing a path
|
|
201
|
+
* and hoping.
|
|
202
|
+
*/
|
|
203
|
+
declare const GOOGLE_CALENDAR_EVENT_UPDATE_OUTPUT: OutputField[];
|
|
204
|
+
declare const googleCalendarEventUpdateKind: NodeKindDefinition;
|
|
205
|
+
|
|
164
206
|
declare const GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_KIND = "@particle-academy/google_calendar_events_changed_trigger";
|
|
165
207
|
declare const GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_OPERATION = "events_changed";
|
|
166
208
|
declare const GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_META: _particle_academy_fancy_flow_connectors.ConnectorMeta;
|
|
@@ -196,4 +238,4 @@ declare const googleCalendarEventsChangedTriggerKind: NodeKindDefinition;
|
|
|
196
238
|
/** Every Google Calendar kind, for a host that registers the lot. */
|
|
197
239
|
declare const GOOGLE_CALENDAR_KINDS: NodeKindDefinition[];
|
|
198
240
|
|
|
199
|
-
export { CONNECTOR_API_VERSION, GOOGLE_CALENDAR_CHANNEL_STOP_KIND, GOOGLE_CALENDAR_CHANNEL_STOP_META, GOOGLE_CALENDAR_CHANNEL_STOP_OPERATION, GOOGLE_CALENDAR_CHANNEL_STOP_OUTPUT, GOOGLE_CALENDAR_CHANNEL_WATCH_KIND, GOOGLE_CALENDAR_CHANNEL_WATCH_META, GOOGLE_CALENDAR_CHANNEL_WATCH_OPERATION, GOOGLE_CALENDAR_CHANNEL_WATCH_OUTPUT, GOOGLE_CALENDAR_CREDENTIALS, GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_KIND, GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_META, GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_OPERATION, GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_OUTPUT, GOOGLE_CALENDAR_EVENT_GET_KIND, GOOGLE_CALENDAR_EVENT_GET_META, GOOGLE_CALENDAR_EVENT_GET_OPERATION, GOOGLE_CALENDAR_EVENT_GET_OUTPUT, GOOGLE_CALENDAR_EVENT_LIST_KIND, GOOGLE_CALENDAR_EVENT_LIST_META, GOOGLE_CALENDAR_EVENT_LIST_OPERATION, GOOGLE_CALENDAR_EVENT_LIST_OUTPUT, GOOGLE_CALENDAR_KINDS, GOOGLE_CALENDAR_OAUTH, GOOGLE_CALENDAR_SERVICE, googleCalendarChannelStopKind, googleCalendarChannelWatchKind, googleCalendarEventGetKind, googleCalendarEventListKind, googleCalendarEventsChangedTriggerKind, googleCalendarMeta };
|
|
241
|
+
export { CONNECTOR_API_VERSION, GOOGLE_CALENDAR_CHANNEL_STOP_KIND, GOOGLE_CALENDAR_CHANNEL_STOP_META, GOOGLE_CALENDAR_CHANNEL_STOP_OPERATION, GOOGLE_CALENDAR_CHANNEL_STOP_OUTPUT, GOOGLE_CALENDAR_CHANNEL_WATCH_KIND, GOOGLE_CALENDAR_CHANNEL_WATCH_META, GOOGLE_CALENDAR_CHANNEL_WATCH_OPERATION, GOOGLE_CALENDAR_CHANNEL_WATCH_OUTPUT, GOOGLE_CALENDAR_CREDENTIALS, GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_KIND, GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_META, GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_OPERATION, GOOGLE_CALENDAR_EVENTS_CHANGED_TRIGGER_OUTPUT, GOOGLE_CALENDAR_EVENT_CREATE_KIND, GOOGLE_CALENDAR_EVENT_CREATE_META, GOOGLE_CALENDAR_EVENT_CREATE_OPERATION, GOOGLE_CALENDAR_EVENT_CREATE_OUTPUT, GOOGLE_CALENDAR_EVENT_DELETE_KIND, GOOGLE_CALENDAR_EVENT_DELETE_META, GOOGLE_CALENDAR_EVENT_DELETE_OPERATION, GOOGLE_CALENDAR_EVENT_DELETE_OUTPUT, GOOGLE_CALENDAR_EVENT_GET_KIND, GOOGLE_CALENDAR_EVENT_GET_META, GOOGLE_CALENDAR_EVENT_GET_OPERATION, GOOGLE_CALENDAR_EVENT_GET_OUTPUT, GOOGLE_CALENDAR_EVENT_LIST_KIND, GOOGLE_CALENDAR_EVENT_LIST_META, GOOGLE_CALENDAR_EVENT_LIST_OPERATION, GOOGLE_CALENDAR_EVENT_LIST_OUTPUT, GOOGLE_CALENDAR_EVENT_UPDATE_KIND, GOOGLE_CALENDAR_EVENT_UPDATE_META, GOOGLE_CALENDAR_EVENT_UPDATE_OPERATION, GOOGLE_CALENDAR_EVENT_UPDATE_OUTPUT, GOOGLE_CALENDAR_KINDS, GOOGLE_CALENDAR_OAUTH, GOOGLE_CALENDAR_SERVICE, googleCalendarChannelStopKind, googleCalendarChannelWatchKind, googleCalendarEventCreateKind, googleCalendarEventDeleteKind, googleCalendarEventGetKind, googleCalendarEventListKind, googleCalendarEventUpdateKind, googleCalendarEventsChangedTriggerKind, googleCalendarMeta };
|