synomem 0.8.0 → 0.9.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 (93) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/README.md +47 -68
  3. package/dist/backend.d.ts +18 -6
  4. package/dist/backend.d.ts.map +1 -1
  5. package/dist/backend.js +55 -41
  6. package/dist/backend.js.map +1 -1
  7. package/dist/cli.d.ts +20 -33
  8. package/dist/cli.d.ts.map +1 -1
  9. package/dist/cli.js +1391 -1321
  10. package/dist/cli.js.map +1 -1
  11. package/dist/configure.d.ts +12 -46
  12. package/dist/configure.d.ts.map +1 -1
  13. package/dist/configure.js +51 -192
  14. package/dist/configure.js.map +1 -1
  15. package/dist/credentials.d.ts +82 -33
  16. package/dist/credentials.d.ts.map +1 -1
  17. package/dist/credentials.js +270 -44
  18. package/dist/credentials.js.map +1 -1
  19. package/dist/discover.d.ts +8 -35
  20. package/dist/discover.d.ts.map +1 -1
  21. package/dist/discover.js +42 -38
  22. package/dist/discover.js.map +1 -1
  23. package/dist/errors.d.ts +1 -1
  24. package/dist/errors.d.ts.map +1 -1
  25. package/dist/errors.js +4 -0
  26. package/dist/errors.js.map +1 -1
  27. package/dist/import.d.ts +3 -0
  28. package/dist/import.d.ts.map +1 -1
  29. package/dist/import.js +3 -0
  30. package/dist/import.js.map +1 -1
  31. package/dist/index.d.ts +10 -8
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +6 -5
  34. package/dist/index.js.map +1 -1
  35. package/dist/mcp/index.d.ts +18 -18
  36. package/dist/mcp/index.d.ts.map +1 -1
  37. package/dist/mcp/index.js +402 -231
  38. package/dist/mcp/index.js.map +1 -1
  39. package/dist/mcp-server.d.ts +5 -1
  40. package/dist/mcp-server.d.ts.map +1 -1
  41. package/dist/mcp-server.js +27 -105
  42. package/dist/mcp-server.js.map +1 -1
  43. package/dist/oauth.d.ts +32 -33
  44. package/dist/oauth.d.ts.map +1 -1
  45. package/dist/oauth.js +196 -126
  46. package/dist/oauth.js.map +1 -1
  47. package/dist/profiles.d.ts +243 -0
  48. package/dist/profiles.d.ts.map +1 -0
  49. package/dist/profiles.js +479 -0
  50. package/dist/profiles.js.map +1 -0
  51. package/dist/project.d.ts +8 -39
  52. package/dist/project.d.ts.map +1 -1
  53. package/dist/project.js +36 -94
  54. package/dist/project.js.map +1 -1
  55. package/dist/remote.d.ts +24 -17
  56. package/dist/remote.d.ts.map +1 -1
  57. package/dist/remote.js +54 -52
  58. package/dist/remote.js.map +1 -1
  59. package/dist/resolvers.d.ts +54 -0
  60. package/dist/resolvers.d.ts.map +1 -0
  61. package/dist/resolvers.js +336 -0
  62. package/dist/resolvers.js.map +1 -0
  63. package/dist/service.d.ts +3 -2
  64. package/dist/service.d.ts.map +1 -1
  65. package/dist/skill-install.d.ts +4 -6
  66. package/dist/skill-install.d.ts.map +1 -1
  67. package/dist/skill-install.js +13 -12
  68. package/dist/skill-install.js.map +1 -1
  69. package/dist/types.d.ts +45 -15
  70. package/dist/types.d.ts.map +1 -1
  71. package/docs/cli.md +173 -196
  72. package/docs/mcp.md +69 -65
  73. package/package.json +1 -1
  74. package/skills/synomem/SKILL.md +29 -26
  75. package/skills/synomem/references/examples.md +13 -11
  76. package/src/backend.ts +66 -64
  77. package/src/cli.ts +2123 -2219
  78. package/src/configure.ts +62 -241
  79. package/src/credentials.ts +316 -85
  80. package/src/discover.ts +53 -59
  81. package/src/errors.ts +4 -0
  82. package/src/import.ts +5 -0
  83. package/src/index.ts +15 -19
  84. package/src/mcp/index.ts +473 -277
  85. package/src/mcp-server.ts +32 -114
  86. package/src/oauth.ts +249 -131
  87. package/src/profiles.ts +661 -0
  88. package/src/project.ts +42 -108
  89. package/src/remote.ts +69 -63
  90. package/src/resolvers.ts +385 -0
  91. package/src/service.ts +2 -7
  92. package/src/skill-install.ts +17 -18
  93. package/src/types.ts +40 -15
package/dist/oauth.js CHANGED
@@ -1,35 +1,152 @@
1
+ /**
2
+ * The CLI's own OAuth 2.1 client (RFC 8252 native app).
3
+ *
4
+ * Authorization code + PKCE S256 through the system browser and a loopback
5
+ * redirect, against the pre-registered public client `synomem-cli`. The token
6
+ * is audienced to the Synomem API itself: discovery starts from the API's own
7
+ * protected-resource metadata (RFC 9728), never from the MCP gateway, and the
8
+ * discovered issuer and resource are validated before any browser opens.
9
+ *
10
+ * Which agent and workspace the resulting connection may act as is chosen on
11
+ * the consent screen and enforced by the API; nothing here names an actor.
12
+ */
1
13
  import { createServer } from 'node:http';
2
14
  import { spawn } from 'node:child_process';
3
- import { randomBytes } from 'node:crypto';
4
- import { discoverOAuthServerInfo, startAuthorization, } from '@modelcontextprotocol/sdk/client/auth.js';
15
+ import { createHash, randomBytes } from 'node:crypto';
5
16
  import { SynomemError } from './errors.js';
6
- import { readCredentialFile } from './configure.js';
7
- const defaultScope = 'synomem:read synomem:write offline_access';
8
- function secureEndpoint(value, label) {
9
- const url = new URL(value);
10
- if (url.protocol !== 'https:') {
17
+ export const DEFAULT_CLI_CLIENT_ID = 'synomem-cli';
18
+ export const DEFAULT_CALLBACK_PORT = 43_817;
19
+ export const DEFAULT_CLI_SCOPE = 'openid offline_access synomem:read synomem:write';
20
+ const maximumDocumentBytes = 64 * 1024;
21
+ /** Access tokens are treated as expired this long before they actually are. */
22
+ const expirySafetyMs = 30_000;
23
+ function trimSlash(value) {
24
+ return value.replace(/\/+$/, '');
25
+ }
26
+ /** HTTPS, or loopback HTTP (development against a local stack). */
27
+ export function secureUrl(value, label) {
28
+ let url;
29
+ try {
30
+ url = new URL(value);
31
+ }
32
+ catch {
33
+ throw new SynomemError('AUTH_REQUIRED', `${label} is not a valid URL.`);
34
+ }
35
+ const loopback = ['localhost', '127.0.0.1', '[::1]'].includes(url.hostname);
36
+ if (url.protocol !== 'https:' && !(url.protocol === 'http:' && loopback)) {
11
37
  throw new SynomemError('AUTH_REQUIRED', `${label} must use HTTPS.`);
12
38
  }
39
+ if (url.username || url.password) {
40
+ throw new SynomemError('AUTH_REQUIRED', `${label} must not carry credentials.`);
41
+ }
13
42
  return url;
14
43
  }
15
- async function tokenRequest(endpoint, parameters, fetchImplementation, signal) {
44
+ async function readJson(url, fetchImplementation, label) {
16
45
  let response;
17
46
  try {
18
- response = await fetchImplementation(secureEndpoint(endpoint, 'OAuth token endpoint'), {
47
+ response = await fetchImplementation(url, {
48
+ redirect: 'error',
49
+ headers: { accept: 'application/json' },
50
+ });
51
+ }
52
+ catch {
53
+ throw new SynomemError('REMOTE_UNAVAILABLE', `${label} is unavailable.`);
54
+ }
55
+ const text = await response.text();
56
+ if (Buffer.byteLength(text) > maximumDocumentBytes) {
57
+ throw new SynomemError('REMOTE_PROTOCOL', `${label} exceeded the safe size limit.`);
58
+ }
59
+ if (!response.ok) {
60
+ throw new SynomemError('REMOTE_PROTOCOL', `${label} returned HTTP ${response.status}.`);
61
+ }
62
+ try {
63
+ const parsed = JSON.parse(text);
64
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed))
65
+ throw new Error();
66
+ return parsed;
67
+ }
68
+ catch {
69
+ throw new SynomemError('REMOTE_PROTOCOL', `${label} is not valid JSON.`);
70
+ }
71
+ }
72
+ /**
73
+ * Where to sign in for this API, validated.
74
+ *
75
+ * The protected-resource metadata must name THIS API as its resource and at
76
+ * least one authorization server; the authorization server's metadata must
77
+ * name itself as issuer, publish HTTPS endpoints and support S256. A mismatch
78
+ * anywhere stops the login before a browser opens.
79
+ */
80
+ export async function discoverApiAuthorization(apiUrl, fetchImplementation = fetch) {
81
+ const api = secureUrl(apiUrl, 'Synomem API URL');
82
+ const resourceMetadata = await readJson(new URL('/.well-known/oauth-protected-resource', api.origin), fetchImplementation, 'API protected-resource metadata');
83
+ const resource = resourceMetadata.resource;
84
+ if (typeof resource !== 'string' || trimSlash(resource) !== trimSlash(api.origin)) {
85
+ throw new SynomemError('AUTH_REQUIRED', 'The API protected-resource metadata does not describe this API.');
86
+ }
87
+ const servers = resourceMetadata.authorization_servers;
88
+ const issuerValue = Array.isArray(servers) ? servers[0] : undefined;
89
+ if (typeof issuerValue !== 'string') {
90
+ throw new SynomemError('AUTH_REQUIRED', 'The API names no authorization server.');
91
+ }
92
+ const issuer = secureUrl(issuerValue, 'Authorization server');
93
+ const asMetadata = await readJson(new URL(`/.well-known/oauth-authorization-server${issuer.pathname === '/' ? '' : trimSlash(issuer.pathname)}`, issuer.origin), fetchImplementation, 'Authorization server metadata');
94
+ if (typeof asMetadata.issuer !== 'string' ||
95
+ trimSlash(asMetadata.issuer) !== trimSlash(issuer.href)) {
96
+ throw new SynomemError('AUTH_REQUIRED', 'The authorization server metadata issuer does not match.');
97
+ }
98
+ const authorizationEndpoint = asMetadata.authorization_endpoint;
99
+ const tokenEndpoint = asMetadata.token_endpoint;
100
+ if (typeof authorizationEndpoint !== 'string' || typeof tokenEndpoint !== 'string') {
101
+ throw new SynomemError('AUTH_REQUIRED', 'Authorization server discovery is incomplete.');
102
+ }
103
+ secureUrl(authorizationEndpoint, 'OAuth authorization endpoint');
104
+ secureUrl(tokenEndpoint, 'OAuth token endpoint');
105
+ const methods = asMetadata.code_challenge_methods_supported;
106
+ if (!Array.isArray(methods) || !methods.includes('S256')) {
107
+ throw new SynomemError('AUTH_REQUIRED', 'The authorization server must support PKCE S256.');
108
+ }
109
+ return {
110
+ resource: trimSlash(resource),
111
+ issuer: trimSlash(asMetadata.issuer),
112
+ authorizationEndpoint,
113
+ tokenEndpoint,
114
+ };
115
+ }
116
+ export const TOKEN_REQUEST_TIMEOUT_MS = 20_000;
117
+ /*
118
+ * Failures that prove the request never reached the server. Anything else — a
119
+ * timeout, a reset mid-response — may have followed a committed rotation, so
120
+ * the refresh token it carried must be treated as spent (plan §6: never retry
121
+ * a possibly consumed token; reauthorize instead).
122
+ */
123
+ const NOT_SENT = new Set(['ECONNREFUSED', 'ENOTFOUND', 'EAI_AGAIN', 'ENETUNREACH', 'EHOSTUNREACH']);
124
+ function neverDelivered(error) {
125
+ const cause = error?.cause;
126
+ return typeof cause?.code === 'string' && NOT_SENT.has(cause.code);
127
+ }
128
+ async function tokenRequest(endpoint, parameters, fetchImplementation) {
129
+ let response;
130
+ try {
131
+ response = await fetchImplementation(secureUrl(endpoint, 'OAuth token endpoint'), {
19
132
  method: 'POST',
20
133
  redirect: 'error',
21
134
  headers: { 'content-type': 'application/x-www-form-urlencoded', accept: 'application/json' },
22
135
  body: parameters,
23
- ...(signal ? { signal } : {}),
136
+ // Well inside the credential lock's stale window, so a refresh can never
137
+ // outlive the lock that serializes it.
138
+ signal: AbortSignal.timeout(TOKEN_REQUEST_TIMEOUT_MS),
24
139
  });
25
140
  }
26
141
  catch (error) {
27
142
  if (error instanceof SynomemError)
28
143
  throw error;
29
- throw new SynomemError('REMOTE_UNAVAILABLE', 'The OAuth token endpoint is unavailable.');
144
+ throw new SynomemError('REMOTE_UNAVAILABLE', 'The OAuth token endpoint is unavailable.', {
145
+ delivery: neverDelivered(error) ? 'not_sent' : 'indeterminate',
146
+ });
30
147
  }
31
148
  const text = await response.text();
32
- if (Buffer.byteLength(text) > 64 * 1024) {
149
+ if (Buffer.byteLength(text) > maximumDocumentBytes) {
33
150
  throw new SynomemError('REMOTE_PROTOCOL', 'OAuth token response exceeded the safe limit.');
34
151
  }
35
152
  let parsed;
@@ -44,11 +161,16 @@ async function tokenRequest(endpoint, parameters, fetchImplementation, signal) {
44
161
  }
45
162
  return parsed;
46
163
  }
164
+ function expiresAt(expiresIn) {
165
+ // A token without a lifetime is still refreshed on the API's schedule: 10
166
+ // minutes is the contract's maximum access-token lifetime.
167
+ return Date.now() + Math.max(0, (expiresIn ?? 600) * 1_000 - expirySafetyMs);
168
+ }
47
169
  function launchBrowser(url) {
48
- const command = process.platform === 'darwin' ? 'open' : 'xdg-open';
49
170
  if (process.platform !== 'darwin' && process.platform !== 'linux') {
50
171
  throw new SynomemError('CONFIG_INVALID', `Open this URL in a browser: ${url.href}`);
51
172
  }
173
+ const command = process.platform === 'darwin' ? 'open' : 'xdg-open';
52
174
  const child = spawn(command, [url.href], { detached: true, stdio: 'ignore' });
53
175
  child.once('error', () => undefined);
54
176
  child.unref();
@@ -67,7 +189,9 @@ async function authorizationCode(authorizationUrl, state, callbackPort, openBrow
67
189
  if (oauthError || !code || returnedState !== state) {
68
190
  response.writeHead(400, { 'content-type': 'text/plain; charset=utf-8' });
69
191
  response.end('Synomem authorization failed. Return to your terminal.');
70
- finish(new SynomemError('AUTH_REQUIRED', 'OAuth callback validation failed.'));
192
+ finish(new SynomemError('AUTH_REQUIRED', oauthError === 'access_denied'
193
+ ? 'Authorization was declined.'
194
+ : 'OAuth callback validation failed.'));
71
195
  return;
72
196
  }
73
197
  response.writeHead(200, {
@@ -97,132 +221,78 @@ async function authorizationCode(authorizationUrl, state, callbackPort, openBrow
97
221
  });
98
222
  });
99
223
  }
224
+ /** Runs the browser flow and returns the credential for the caller to store. */
100
225
  export async function loginWithOAuth(options) {
101
226
  const fetchImplementation = options.fetch ?? fetch;
102
- const mcpUrl = new URL('/mcp', options.baseUrl);
103
- const discovered = await discoverOAuthServerInfo(mcpUrl, { fetchFn: fetchImplementation });
104
- const metadata = discovered.authorizationServerMetadata;
105
- if (!metadata?.authorization_endpoint || !metadata.token_endpoint) {
106
- throw new SynomemError('AUTH_REQUIRED', 'OAuth server discovery is incomplete.');
107
- }
108
- secureEndpoint(metadata.authorization_endpoint, 'OAuth authorization endpoint');
109
- secureEndpoint(metadata.token_endpoint, 'OAuth token endpoint');
110
- if (!metadata.code_challenge_methods_supported?.includes('S256')) {
111
- throw new SynomemError('AUTH_REQUIRED', 'The OAuth server must support PKCE S256.');
112
- }
113
- const callbackPort = options.callbackPort ?? 43_817;
114
- const redirectUrl = new URL(`http://127.0.0.1:${callbackPort}/callback`);
227
+ const metadata = await discoverApiAuthorization(options.apiUrl, fetchImplementation);
228
+ const clientId = options.clientId ?? DEFAULT_CLI_CLIENT_ID;
229
+ const scope = options.scope ?? DEFAULT_CLI_SCOPE;
230
+ const callbackPort = options.callbackPort ?? DEFAULT_CALLBACK_PORT;
231
+ const redirectUri = `http://127.0.0.1:${callbackPort}/callback`;
115
232
  const state = randomBytes(32).toString('base64url');
116
- const resource = new URL(discovered.resourceMetadata?.resource ?? mcpUrl.href);
117
- const scope = options.scope ?? defaultScope;
118
- const started = await startAuthorization(discovered.authorizationServerUrl, {
119
- metadata,
120
- clientInformation: { client_id: options.clientId },
121
- redirectUrl,
122
- scope,
123
- state,
124
- resource,
125
- });
126
- const code = await authorizationCode(started.authorizationUrl, state, callbackPort, options.openBrowser ?? launchBrowser, options.timeoutMs ?? 5 * 60_000);
127
- const tokens = await tokenRequest(metadata.token_endpoint, new URLSearchParams({
233
+ const verifier = randomBytes(32).toString('base64url');
234
+ const challenge = createHash('sha256').update(verifier).digest('base64url');
235
+ const authorizationUrl = new URL(metadata.authorizationEndpoint);
236
+ authorizationUrl.searchParams.set('response_type', 'code');
237
+ authorizationUrl.searchParams.set('client_id', clientId);
238
+ authorizationUrl.searchParams.set('redirect_uri', redirectUri);
239
+ authorizationUrl.searchParams.set('scope', scope);
240
+ authorizationUrl.searchParams.set('state', state);
241
+ authorizationUrl.searchParams.set('code_challenge', challenge);
242
+ authorizationUrl.searchParams.set('code_challenge_method', 'S256');
243
+ authorizationUrl.searchParams.set('resource', metadata.resource);
244
+ const code = await authorizationCode(authorizationUrl, state, callbackPort, options.openBrowser ?? launchBrowser, options.timeoutMs ?? 5 * 60_000);
245
+ const tokens = await tokenRequest(metadata.tokenEndpoint, new URLSearchParams({
128
246
  grant_type: 'authorization_code',
129
- client_id: options.clientId,
247
+ client_id: clientId,
130
248
  code,
131
- code_verifier: started.codeVerifier,
132
- redirect_uri: redirectUrl.href,
133
- resource: resource.href,
249
+ code_verifier: verifier,
250
+ redirect_uri: redirectUri,
251
+ resource: metadata.resource,
134
252
  }), fetchImplementation);
135
- await options.credentialStore.set(options.credentialReference, {
253
+ return {
254
+ kind: 'oauth',
255
+ issuer: metadata.issuer,
256
+ resource: metadata.resource,
257
+ clientId,
258
+ tokenEndpoint: metadata.tokenEndpoint,
259
+ scope: tokens.scope ?? scope,
136
260
  accessToken: tokens.access_token,
137
261
  ...(tokens.refresh_token ? { refreshToken: tokens.refresh_token } : {}),
138
- ...(tokens.expires_in
139
- ? { expiresAt: Date.now() + Math.max(0, tokens.expires_in - 30) * 1_000 }
140
- : {}),
141
- tokenEndpoint: metadata.token_endpoint,
142
- clientId: options.clientId,
143
- resource: resource.href,
144
- scope: tokens.scope ?? scope,
145
- });
262
+ expiresAt: expiresAt(tokens.expires_in),
263
+ generation: 0,
264
+ };
146
265
  }
147
- export class StoredCredentialProvider {
148
- reference;
149
- store;
150
- env;
151
- fetchImplementation;
152
- home;
153
- refresh;
154
- credential;
155
- /** Set when the stored credential is an access key rather than an OAuth grant. */
156
- staticAccessToken;
157
- loaded = false;
158
- constructor(reference, store, env = process.env, fetchImplementation = fetch,
159
- /**
160
- * Where `synomem config`'s restricted-file credential store, if chosen,
161
- * would have written an access key. Optional because local-only and
162
- * environment-only callers have no such file to fall back to.
163
- */
164
- home) {
165
- this.reference = reference;
166
- this.store = store;
167
- this.env = env;
168
- this.fetchImplementation = fetchImplementation;
169
- this.home = home;
170
- }
171
- async getAccessToken(signal) {
172
- if (this.env.SYNOMEM_ACCESS_TOKEN)
173
- return this.env.SYNOMEM_ACCESS_TOKEN;
174
- if (!this.loaded) {
175
- const stored = await this.store.get(this.reference);
176
- /*
177
- * An access key is not an OAuth credential: it cannot be refreshed and
178
- * has no client or token endpoint. It is used exactly as stored,
179
- * whichever of the two places it was found.
180
- */
181
- if (stored && 'kind' in stored) {
182
- this.staticAccessToken = stored.accessToken;
183
- }
184
- else if (stored) {
185
- this.credential = stored;
186
- }
187
- else if (this.home) {
188
- this.staticAccessToken = readCredentialFile(this.home);
189
- }
190
- this.loaded = true;
191
- }
192
- if (this.staticAccessToken)
193
- return this.staticAccessToken;
194
- const credential = this.credential;
195
- if (!credential)
196
- return undefined;
197
- if (!credential.expiresAt || credential.expiresAt > Date.now())
198
- return credential.accessToken;
199
- if (!credential.refreshToken)
200
- return undefined;
201
- this.refresh ??= this.refreshCredential(credential, signal).finally(() => {
202
- this.refresh = undefined;
203
- });
204
- return await this.refresh;
266
+ /**
267
+ * Spends the refresh token once. Callers hold the credential lock and write the
268
+ * result before releasing it; a failure here is never retried with the same
269
+ * (possibly consumed) refresh token.
270
+ */
271
+ export async function refreshOAuthCredential(credential, fetchImplementation = fetch) {
272
+ if (!credential.refreshToken) {
273
+ throw new SynomemError('REAUTHORIZATION_REQUIRED', 'The stored credential cannot be refreshed.');
205
274
  }
206
- async refreshCredential(credential, signal) {
207
- const tokens = await tokenRequest(credential.tokenEndpoint, new URLSearchParams({
275
+ let tokens;
276
+ try {
277
+ tokens = await tokenRequest(credential.tokenEndpoint, new URLSearchParams({
208
278
  grant_type: 'refresh_token',
209
279
  client_id: credential.clientId,
210
280
  refresh_token: credential.refreshToken,
211
281
  resource: credential.resource,
212
- scope: credential.scope,
213
- }), this.fetchImplementation, signal);
214
- const updated = {
215
- ...credential,
216
- accessToken: tokens.access_token,
217
- refreshToken: tokens.refresh_token ?? credential.refreshToken,
218
- ...(tokens.expires_in
219
- ? { expiresAt: Date.now() + Math.max(0, tokens.expires_in - 30) * 1_000 }
220
- : { expiresAt: undefined }),
221
- scope: tokens.scope ?? credential.scope,
222
- };
223
- await this.store.set(this.reference, updated);
224
- this.credential = updated;
225
- return updated.accessToken;
282
+ }), fetchImplementation);
226
283
  }
284
+ catch (error) {
285
+ if (error instanceof SynomemError && error.code === 'REMOTE_UNAVAILABLE')
286
+ throw error;
287
+ throw new SynomemError('REAUTHORIZATION_REQUIRED', 'The stored credential was refused when refreshing.');
288
+ }
289
+ return {
290
+ ...credential,
291
+ accessToken: tokens.access_token,
292
+ ...(tokens.refresh_token ? { refreshToken: tokens.refresh_token } : {}),
293
+ scope: tokens.scope ?? credential.scope,
294
+ expiresAt: expiresAt(tokens.expires_in),
295
+ generation: credential.generation + 1,
296
+ };
227
297
  }
228
298
  //# sourceMappingURL=oauth.js.map
package/dist/oauth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"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"}