@emulators/google 0.4.0 → 0.5.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/README.md +130 -0
- package/dist/fonts/favicon.ico +0 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +389 -220
- package/dist/index.js.map +1 -1
- package/package.json +5 -3
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)
|
|
Binary file
|
package/dist/index.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ interface GoogleUser extends Entity {
|
|
|
9
9
|
picture: string | null;
|
|
10
10
|
email_verified: boolean;
|
|
11
11
|
locale: string;
|
|
12
|
+
hd: string | null;
|
|
12
13
|
}
|
|
13
14
|
interface GoogleOAuthClient extends Entity {
|
|
14
15
|
client_id: string;
|
|
@@ -171,6 +172,7 @@ interface GoogleSeedUser {
|
|
|
171
172
|
picture?: string;
|
|
172
173
|
locale?: string;
|
|
173
174
|
email_verified?: boolean;
|
|
175
|
+
hd?: string;
|
|
174
176
|
}
|
|
175
177
|
interface GoogleSeedLabel {
|
|
176
178
|
id?: string;
|