@emulators/google 0.4.0 → 0.4.1

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.
Files changed (2) hide show
  1. package/README.md +130 -0
  2. package/package.json +2 -2
package/README.md ADDED
@@ -0,0 +1,130 @@
1
+ # @emulators/google
2
+
3
+ Google OAuth 2.0, OpenID Connect, and mutable Google Workspace-style surfaces for local Gmail, Calendar, and Drive flows.
4
+
5
+ Part of [emulate](https://github.com/vercel-labs/emulate) — local drop-in replacement services for CI and no-network sandboxes.
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ npm install @emulators/google
11
+ ```
12
+
13
+ ## Endpoints
14
+
15
+ ### OAuth & OIDC
16
+ - `GET /o/oauth2/v2/auth` — authorization endpoint
17
+ - `POST /oauth2/token` — token exchange
18
+ - `GET /oauth2/v2/userinfo` — get user info
19
+ - `GET /.well-known/openid-configuration` — OIDC discovery document
20
+ - `GET /oauth2/v3/certs` — JSON Web Key Set (JWKS)
21
+
22
+ ### Gmail
23
+ - `GET /gmail/v1/users/:userId/messages` — list messages with `q`, `labelIds`, `maxResults`, and `pageToken`
24
+ - `GET /gmail/v1/users/:userId/messages/:id` — fetch message in `full`, `metadata`, `minimal`, or `raw` formats
25
+ - `GET /gmail/v1/users/:userId/messages/:messageId/attachments/:id` — fetch attachment bodies
26
+ - `POST /gmail/v1/users/:userId/messages/send` — create sent mail from `raw` MIME or structured fields
27
+ - `POST /gmail/v1/users/:userId/messages/import` — import inbox mail
28
+ - `POST /gmail/v1/users/:userId/messages` — insert a message directly
29
+ - `POST /gmail/v1/users/:userId/messages/:id/modify` — add/remove labels on one message
30
+ - `POST /gmail/v1/users/:userId/messages/batchModify` — add/remove labels across many messages
31
+ - `POST /gmail/v1/users/:userId/messages/:id/trash` — trash message
32
+ - `POST /gmail/v1/users/:userId/messages/:id/untrash` — untrash message
33
+
34
+ ### Drafts
35
+ - `GET /gmail/v1/users/:userId/drafts` — list drafts
36
+ - `POST /gmail/v1/users/:userId/drafts` — create draft
37
+ - `GET /gmail/v1/users/:userId/drafts/:id` — get draft
38
+ - `PUT /gmail/v1/users/:userId/drafts/:id` — update draft
39
+ - `POST /gmail/v1/users/:userId/drafts/:id/send` — send draft
40
+ - `DELETE /gmail/v1/users/:userId/drafts/:id` — delete draft
41
+
42
+ ### Threads
43
+ - `GET /gmail/v1/users/:userId/threads` — list threads
44
+ - `GET /gmail/v1/users/:userId/threads/:id` — get thread
45
+ - `POST /gmail/v1/users/:userId/threads/:id/modify` — add/remove labels across a thread
46
+
47
+ ### Labels
48
+ - `GET /gmail/v1/users/:userId/labels` — list labels
49
+ - `POST /gmail/v1/users/:userId/labels` — create label
50
+ - `PATCH /gmail/v1/users/:userId/labels/:id` — update label
51
+ - `DELETE /gmail/v1/users/:userId/labels/:id` — delete label
52
+
53
+ ### History, Watch & Settings
54
+ - `GET /gmail/v1/users/:userId/history` — list history
55
+ - `POST /gmail/v1/users/:userId/watch` — set up push notifications
56
+ - `POST /gmail/v1/users/:userId/stop` — stop push notifications
57
+ - `GET /gmail/v1/users/:userId/settings/filters` — list filters
58
+ - `POST /gmail/v1/users/:userId/settings/filters` — create filter
59
+ - `DELETE /gmail/v1/users/:userId/settings/filters/:id` — delete filter
60
+ - `GET /gmail/v1/users/:userId/settings/forwardingAddresses` — list forwarding addresses
61
+ - `GET /gmail/v1/users/:userId/settings/sendAs` — list send-as aliases
62
+
63
+ ### Calendar
64
+ - `GET /calendar/v3/users/:userId/calendarList` — list calendars
65
+ - `GET /calendar/v3/calendars/:calendarId/events` — list events
66
+ - `POST /calendar/v3/calendars/:calendarId/events` — create event
67
+ - `DELETE /calendar/v3/calendars/:calendarId/events/:eventId` — delete event
68
+ - `POST /calendar/v3/freeBusy` — free/busy query
69
+
70
+ ### Drive
71
+ - `GET /drive/v3/files` — list files
72
+ - `GET /drive/v3/files/:fileId` — get file metadata
73
+ - `POST /drive/v3/files` — create file
74
+ - `PATCH /drive/v3/files/:fileId` — update file metadata
75
+ - `PUT /drive/v3/files/:fileId` — update file content
76
+ - `POST /upload/drive/v3/files` — upload file
77
+
78
+ ## Auth
79
+
80
+ Standard OAuth 2.0 authorization code flow. Configure clients in the seed config.
81
+
82
+ ## Seed Configuration
83
+
84
+ ```yaml
85
+ google:
86
+ users:
87
+ - email: testuser@example.com
88
+ name: Test User
89
+ oauth_clients:
90
+ - client_id: my-client-id.apps.googleusercontent.com
91
+ client_secret: GOCSPX-secret
92
+ redirect_uris:
93
+ - http://localhost:3000/api/auth/callback/google
94
+ labels:
95
+ - id: Label_ops
96
+ user_email: testuser@example.com
97
+ name: Ops/Review
98
+ messages:
99
+ - id: msg_welcome
100
+ user_email: testuser@example.com
101
+ from: welcome@example.com
102
+ to: testuser@example.com
103
+ subject: Welcome to the Gmail emulator
104
+ body_text: You can now test Gmail, Calendar, and Drive flows locally.
105
+ label_ids: [INBOX, UNREAD, CATEGORY_UPDATES]
106
+ calendars:
107
+ - id: primary
108
+ user_email: testuser@example.com
109
+ summary: testuser@example.com
110
+ primary: true
111
+ time_zone: UTC
112
+ calendar_events:
113
+ - id: evt_kickoff
114
+ user_email: testuser@example.com
115
+ calendar_id: primary
116
+ summary: Project Kickoff
117
+ start_date_time: 2025-01-10T09:00:00.000Z
118
+ end_date_time: 2025-01-10T09:30:00.000Z
119
+ drive_items:
120
+ - id: drv_docs
121
+ user_email: testuser@example.com
122
+ name: Docs
123
+ mime_type: application/vnd.google-apps.folder
124
+ parent_ids: [root]
125
+ ```
126
+
127
+ ## Links
128
+
129
+ - [Full documentation](https://emulate.dev/google)
130
+ - [GitHub](https://github.com/vercel-labs/emulate)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@emulators/google",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -29,7 +29,7 @@
29
29
  "dependencies": {
30
30
  "hono": "^4",
31
31
  "jose": "^6",
32
- "@emulators/core": "0.4.0"
32
+ "@emulators/core": "0.4.1"
33
33
  },
34
34
  "devDependencies": {
35
35
  "tsup": "^8",