@mapcreator/api 5.0.0-alpha.54 → 5.0.0-alpha.56

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 (48) hide show
  1. package/cjs/api/font.d.ts.map +1 -1
  2. package/cjs/api/font.js.map +1 -1
  3. package/cjs/api/jobRevision.d.ts.map +1 -1
  4. package/cjs/api/jobRevision.js +6 -4
  5. package/cjs/api/jobRevision.js.map +1 -1
  6. package/cjs/api/resources.d.ts +1 -1
  7. package/cjs/api/resources.d.ts.map +1 -1
  8. package/cjs/api/resources.js.map +1 -1
  9. package/cjs/index.d.ts +1 -2
  10. package/cjs/index.d.ts.map +1 -1
  11. package/cjs/index.js +2 -3
  12. package/cjs/index.js.map +1 -1
  13. package/cjs/oauth.d.ts +6 -12
  14. package/cjs/oauth.d.ts.map +1 -1
  15. package/cjs/oauth.js +203 -38
  16. package/cjs/oauth.js.map +1 -1
  17. package/cjs/utils.d.ts +2 -0
  18. package/cjs/utils.d.ts.map +1 -1
  19. package/cjs/utils.js +9 -5
  20. package/cjs/utils.js.map +1 -1
  21. package/esm/api/font.d.ts.map +1 -1
  22. package/esm/api/font.js +1 -1
  23. package/esm/api/font.js.map +1 -1
  24. package/esm/api/jobRevision.d.ts.map +1 -1
  25. package/esm/api/jobRevision.js +7 -5
  26. package/esm/api/jobRevision.js.map +1 -1
  27. package/esm/api/resources.d.ts +1 -1
  28. package/esm/api/resources.d.ts.map +1 -1
  29. package/esm/api/resources.js.map +1 -1
  30. package/esm/index.d.ts +1 -2
  31. package/esm/index.d.ts.map +1 -1
  32. package/esm/index.js +1 -2
  33. package/esm/index.js.map +1 -1
  34. package/esm/oauth.d.ts +6 -12
  35. package/esm/oauth.d.ts.map +1 -1
  36. package/esm/oauth.js +201 -35
  37. package/esm/oauth.js.map +1 -1
  38. package/esm/utils.d.ts +2 -0
  39. package/esm/utils.d.ts.map +1 -1
  40. package/esm/utils.js +7 -4
  41. package/esm/utils.js.map +1 -1
  42. package/package.json +1 -1
  43. package/src/api/font.ts +1 -9
  44. package/src/api/jobRevision.ts +6 -4
  45. package/src/api/resources.ts +2 -1
  46. package/src/index.ts +1 -4
  47. package/src/oauth.ts +253 -36
  48. package/src/utils.ts +7 -4
package/esm/utils.js CHANGED
@@ -1,4 +1,4 @@
1
- import { NetworkError, apiHost, authenticate, getAuthorizationHeaders, token } from './oauth.js';
1
+ import { apiHost, authenticate, token } from './oauth.js';
2
2
  export const myUser = 'me';
3
3
  export const myOrganisations = 'mine';
4
4
  export const lastJobRevision = 'last';
@@ -6,6 +6,9 @@ export const defaultListHeader = { 'X-Per-Page': '50' };
6
6
  export const deletedNoneParam = getSearchParams({ deleted: 'none' });
7
7
  export const keysToRemove = ['created_at', 'deleted_at', 'updated_at'];
8
8
  export const staticContext = { keysToRemove: new Set(keysToRemove), keysToAdd: [], revivers: {} };
9
+ // class AuthorizationError extends Error {}
10
+ export class NetworkError extends Error {
11
+ }
9
12
  export class HTTPError extends Error {
10
13
  constructor(response) {
11
14
  super(response.statusText);
@@ -127,6 +130,7 @@ export async function request(path, body, extraHeaders, extraOptions) {
127
130
  }
128
131
  function getRequestInit(body, extraHeaders, extraOptions) {
129
132
  var _a;
133
+ const authorization = token ? { Authorization: token.toString() } : null;
130
134
  let contentType = null;
131
135
  if (body !== undefined) {
132
136
  switch (true) {
@@ -150,10 +154,9 @@ function getRequestInit(body, extraHeaders, extraOptions) {
150
154
  body = JSON.stringify(body);
151
155
  }
152
156
  }
153
- const method = (_a = extraOptions === null || extraOptions === void 0 ? void 0 : extraOptions.method) !== null && _a !== void 0 ? _a : (body != null ? 'POST' : 'GET'); // don't touch `!=` please
154
- const authorization = getAuthorizationHeaders(method);
155
157
  const headers = Object.assign(Object.assign(Object.assign({ Accept: 'application/json' }, authorization), contentType), extraHeaders);
156
- return Object.assign({ body, headers, method }, !token && { credentials: 'include' });
158
+ const method = (_a = extraOptions === null || extraOptions === void 0 ? void 0 : extraOptions.method) !== null && _a !== void 0 ? _a : (body != null ? 'POST' : 'GET'); // don't touch `!=` please
159
+ return { body, headers, method };
157
160
  }
158
161
  export function getContext(revivers, keys = Object.keys(revivers)) {
159
162
  return {
package/esm/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mapcreator/api",
3
- "version": "5.0.0-alpha.54",
3
+ "version": "5.0.0-alpha.56",
4
4
  "description": "Mapcreator JavaScript API",
5
5
  "license": "BSD-3-Clause",
6
6
  "main": "./cjs/index.js",
package/src/api/font.ts CHANGED
@@ -1,12 +1,4 @@
1
- import {
2
- type ApiCommonData,
3
- type ApiError,
4
- type ApiSuccess,
5
- type Flatten,
6
- type Revivers,
7
- getSearchParams,
8
- request,
9
- } from '../utils.js';
1
+ import { type ApiCommonData, type ApiError, type ApiSuccess, type Flatten, type Revivers, getSearchParams, request } from '../utils.js';
10
2
 
11
3
  export type Font = {
12
4
  id: number;
@@ -1,5 +1,5 @@
1
- import { NetworkError, apiHost, authenticate, getAuthorizationHeaders, token } from '../oauth.js';
2
1
  import { type ApiLayerData, type Layer, layerRevivers } from './layer.js';
2
+ import { apiHost, authenticate, token } from '../oauth.js';
3
3
  import type { ApiMapstyleSetData } from './mapstyleSet.js';
4
4
  import type { ApiLanguageData } from './language.js';
5
5
  import {
@@ -10,6 +10,7 @@ import {
10
10
  type ApiSuccess,
11
11
  type Flatten,
12
12
  HTTPError,
13
+ NetworkError,
13
14
  type Revivers,
14
15
  defaultListHeader,
15
16
  deletedNoneParam,
@@ -219,9 +220,10 @@ export async function getJobRevisionOutput(jobId: number): Promise<JobRevisionOu
219
220
  await createJobRevisionBuild(jobId);
220
221
 
221
222
  const href = `${apiHost}/v1/jobs/${jobId}/revisions/${lastJobRevision}/result/output`;
222
- const headers = getAuthorizationHeaders('GET');
223
- const response = await fetch(href, { headers, ...!token && { credentials: 'include' } })
224
- .catch((error: Error) => { throw new NetworkError(error?.message ?? error) });
223
+ const headers = { ...(token ? { Authorization: token.toString() } : null) };
224
+ const response = await fetch(href, { headers }).catch((error: Error) => {
225
+ throw new NetworkError(error?.message ?? error);
226
+ });
225
227
 
226
228
  if (response.ok) {
227
229
  const blob = await response.blob().catch(() => {
@@ -44,7 +44,8 @@ export type CustomFeature =
44
44
  | 'export_templates'
45
45
  | 'hosted_svg_output'
46
46
  | 'hosted_png_output'
47
- | 'hosted_jpg_output';
47
+ | 'hosted_jpg_output'
48
+ | 'developer_menu';
48
49
 
49
50
  export interface Resources {
50
51
  organisation: Organisation;
package/src/index.ts CHANGED
@@ -36,10 +36,7 @@ export {
36
36
  myUser,
37
37
  APIError,
38
38
  HTTPError,
39
+ NetworkError,
39
40
  getSearchParams,
40
41
  request,
41
42
  } from './utils.js';
42
-
43
- export {
44
- NetworkError,
45
- } from './oauth.js';
package/src/oauth.ts CHANGED
@@ -8,22 +8,27 @@ export let token: {
8
8
  toString: () => string;
9
9
  } | null = null;
10
10
 
11
+ let apiClientId = '';
11
12
  let callbackUrl = '';
13
+ let oauthScopes = ['*'];
12
14
 
13
- // class AuthorizationError extends Error {}
14
- export class NetworkError extends Error {}
15
+ const anchorParams = ['access_token', 'token_type', 'expires_in', 'state'];
15
16
 
16
- /**
17
- * Cleanup of previously used data. The code part can be removed in a while.
18
- */
19
- for (let i = 0; i < window.localStorage.length; ++i) {
20
- const key = window.localStorage.key(i);
17
+ const storagePrefix = '_m4n_';
18
+ const statePrefix = 'oauth_state_';
19
+ const storageName = 'api_token';
21
20
 
22
- if (key?.startsWith('_m4n_')) {
23
- window.localStorage.removeItem(key);
24
- }
21
+ const dummyTokenExpires = new Date('2100-01-01T01:00:00');
22
+
23
+ interface AnchorToken {
24
+ access_token: string;
25
+ token_type: string;
26
+ expires_in: string;
27
+ state: string;
25
28
  }
26
29
 
30
+ const titleCase = (str: unknown): string => String(str).toLowerCase().replace(/\b\w/g, c => c.toUpperCase());
31
+
27
32
  /**
28
33
  * Setup internal structures to use dummy authentication flow
29
34
  *
@@ -35,9 +40,9 @@ export function initDummyFlow(apiUrl: string, oauthToken: string): void {
35
40
 
36
41
  apiHost = apiUrl.replace(/\/+$/, '');
37
42
  token = {
38
- type: parts[0].toLowerCase().replace(/\b\w/g, c => c.toUpperCase()),
43
+ type: titleCase(parts[0]),
39
44
  token: parts[1],
40
- expires: new Date('2100-01-01T01:00:00'),
45
+ expires: dummyTokenExpires,
41
46
 
42
47
  toString(): string {
43
48
  return `${this.type} ${this.token}`;
@@ -49,49 +54,261 @@ export function initDummyFlow(apiUrl: string, oauthToken: string): void {
49
54
  * Setup internal structures to use implicit authentication flow
50
55
  *
51
56
  * @param {string} apiUrl - Full API URL
57
+ * @param {string} clientId - OAuth client id
52
58
  * @param {string} [redirectUrl] - Callback URL
59
+ * @param {string[]} [scopes] - A list of required scopes
53
60
  */
54
- export function initImplicitFlow(apiUrl: string, redirectUrl = ''): void {
61
+ export function initImplicitFlow(apiUrl: string, clientId: string, redirectUrl = '', scopes = ['*']): void {
55
62
  apiHost = apiUrl.replace(/\/+$/, '');
56
63
 
64
+ apiClientId = String(clientId);
57
65
  callbackUrl = String(redirectUrl || window.location.href.split('#')[0]);
66
+ oauthScopes = scopes;
67
+
68
+ {
69
+ const key = `${storagePrefix}${storageName}`;
70
+ const data = window.localStorage.getItem(key);
71
+
72
+ if (data) {
73
+ try {
74
+ const obj = JSON.parse(data) as { type?: unknown; token?: unknown; expires?: unknown };
75
+
76
+ if (
77
+ typeof obj.type === 'string' &&
78
+ typeof obj.token === 'string' &&
79
+ typeof obj.expires === 'string' &&
80
+ new Date(obj.expires) > new Date()
81
+ ) {
82
+ token = {
83
+ type: titleCase(obj.type),
84
+ token: obj.token,
85
+ expires: new Date(obj.expires),
86
+
87
+ toString(): string {
88
+ return `${this.type} ${this.token}`;
89
+ },
90
+ };
91
+ } else {
92
+ window.localStorage.removeItem(key);
93
+ }
94
+ } catch (e) {
95
+ /* */
96
+ }
97
+ }
98
+ }
99
+
100
+ {
101
+ const obj = getAnchorToken();
102
+
103
+ if (isAnchorToken(obj)) {
104
+ // We'll not go there if anchor contains error and/or message
105
+ // This means that anchor parameters will be preserved for the next processing
106
+ cleanAnchorParams();
107
+
108
+ const expires = new Date(Date.now() + Number(obj.expires_in) * 1000);
109
+
110
+ if (isValidState(obj.state) && expires > new Date()) {
111
+ token = {
112
+ type: titleCase(obj.token_type),
113
+ token: obj.access_token,
114
+ expires,
115
+
116
+ toString(): string {
117
+ return `${this.type} ${this.token}`;
118
+ },
119
+ };
120
+
121
+ const key = `${storagePrefix}${storageName}`;
122
+ const data = { type: token.type, token: token.token, expires: expires.toUTCString() };
123
+
124
+ window.localStorage.setItem(key, JSON.stringify(data));
125
+ } else {
126
+ // TODO: add some logic to handle this
127
+ // throw Error('Invalid state in url');
128
+ }
129
+ }
130
+ }
58
131
 
59
- const href = sessionStorage.getItem('redirect-url');
132
+ if (authenticated()) {
133
+ const href = sessionStorage.getItem('redirect-url');
60
134
 
61
- if (href) {
62
- sessionStorage.removeItem('redirect-url');
63
- window.history.replaceState(null, document.title, href);
135
+ if (href) {
136
+ sessionStorage.removeItem('redirect-url');
137
+ window.history.replaceState(null, document.title, href);
138
+ }
64
139
  }
65
140
  }
66
141
 
67
- export async function authenticate(): Promise<never> {
142
+ export async function authenticate(): Promise<string> | never {
68
143
  return new Promise(() => {
144
+ if (anchorContainsError()) {
145
+ console.error(getError());
146
+ cleanAnchorParams();
147
+ }
148
+
149
+ forget();
150
+
69
151
  sessionStorage.setItem('redirect-url', window.location.href);
70
- window.location.assign(`${apiHost}/login?${new URLSearchParams({ redirect_uri: callbackUrl })}`);
152
+ window.location.assign(buildRedirectUrl());
71
153
  });
72
154
  }
73
155
 
74
- export async function authenticated(): Promise<boolean> {
75
- const href = `${apiHost}/v1/users/me`;
76
- const headers = getAuthorizationHeaders('GET');
156
+ export function authenticated(): boolean {
157
+ return token != null && token.expires > new Date() && (
158
+ token.expires.valueOf() === dummyTokenExpires.valueOf() ||
159
+ !!window.localStorage.getItem(`${storagePrefix}${storageName}`)
160
+ );
161
+ }
162
+
163
+ export async function logout(): Promise<void> {
164
+ if (token) {
165
+ await fetch(`${apiHost}/oauth/logout`, {
166
+ method: 'POST',
167
+ headers: {
168
+ Accept: 'application/json',
169
+ Authorization: token.toString(),
170
+ },
171
+ });
172
+ }
173
+
174
+ forget();
175
+ }
176
+
177
+ function forget(): void {
178
+ for (let i = 0; i < window.localStorage.length; ++i) {
179
+ const key = window.localStorage.key(i);
180
+
181
+ if (key?.startsWith(storagePrefix)) {
182
+ window.localStorage.removeItem(key);
183
+ }
184
+ }
185
+
186
+ token = null;
187
+ }
188
+
189
+ function buildRedirectUrl(): string {
190
+ const queryParams = new URLSearchParams({
191
+ client_id: apiClientId,
192
+ redirect_uri: callbackUrl,
193
+ response_type: 'token',
194
+ scope: oauthScopes.join(' '),
195
+ state: generateState(),
196
+ });
197
+
198
+ return `${apiHost}/oauth/authorize?${queryParams}`;
199
+ }
200
+
201
+ function getAnchorQuery(): string {
202
+ return window.location.hash.replace(/^#\/?/, '');
203
+ }
77
204
 
78
- return fetch(href, { headers, ...!token && { credentials: 'include' } }).then(
79
- response => response.ok,
80
- (error: Error) => { throw new NetworkError(error?.message ?? error) }
205
+ function getAnchorParams(): Record<string, unknown> {
206
+ const query = getAnchorQuery();
207
+ // eslint-disable-next-line @stylistic/padding-line-between-statements,@typescript-eslint/no-unsafe-return
208
+ return Object.fromEntries(query.split('&').map(pair => pair.split('=').map(decodeURIComponent)));
209
+ }
210
+
211
+ function getAnchorToken(): Partial<AnchorToken> {
212
+ const params = getAnchorParams();
213
+
214
+ return Object.fromEntries(Object.entries(params).filter(([key]) => anchorParams.includes(key)));
215
+ }
216
+
217
+ function isAnchorToken(anchorToken: Partial<AnchorToken>): anchorToken is AnchorToken {
218
+ const queryKeys = Object.keys(anchorToken);
219
+
220
+ return anchorParams.every(key => queryKeys.includes(key));
221
+ }
222
+
223
+ function cleanAnchorParams(): void {
224
+ const query = window.location.hash.replace(/^#\/?/, '');
225
+ const targets = [...anchorParams, 'error', 'message'];
226
+ const newHash = query
227
+ .split('&')
228
+ .filter(pair => !targets.includes(decodeURIComponent(pair.split('=')[0])))
229
+ .join('&');
230
+
231
+ if (newHash) {
232
+ window.location.hash = newHash;
233
+ } else {
234
+ const { origin, pathname, search } = window.location;
235
+
236
+ window.history.replaceState(null, document.title, `${origin}${pathname}${search}`);
237
+ }
238
+ }
239
+
240
+ function isValidState(state: string): boolean {
241
+ const key = `${storagePrefix}${statePrefix}${state}`;
242
+ const found = window.localStorage.getItem(key) != null;
243
+
244
+ if (found) {
245
+ window.localStorage.removeItem(key);
246
+ }
247
+
248
+ return found;
249
+ }
250
+
251
+ function anchorContainsError(): boolean {
252
+ return 'error' in getAnchorParams();
253
+ }
254
+
255
+ function generateState(): string {
256
+ // @ts-expect-error TS2365
257
+ // eslint-disable-next-line @typescript-eslint/restrict-plus-operands
258
+ const state = (([1e7] + -1e3 + -4e3 + -8e3 + -1e11) as string).replace(
259
+ /[018]/g, // @ts-expect-error TS2362
260
+ c => (c ^ ((Math.random() * 256) & (0x0f >>> (c >>> 2)))).toString(16),
81
261
  );
262
+ const key = `${storagePrefix}${statePrefix}${state}`;
263
+
264
+ window.localStorage.setItem(key, `${Date.now()}`);
265
+
266
+ return state;
267
+ }
268
+
269
+ class OAuthError extends Error {
270
+ error: string;
271
+
272
+ constructor(message: string, error: unknown) {
273
+ super(message);
274
+
275
+ this.error = String(error);
276
+ }
277
+
278
+ toString(): string {
279
+ let error = this.error;
280
+
281
+ if (error.includes('_')) {
282
+ error = error.replace('_', ' ').replace(/^./, c => c.toUpperCase());
283
+ }
284
+
285
+ return this.message ? `${error}: ${this.message}` : error;
286
+ }
82
287
  }
83
288
 
84
- // eslint-disable-next-line @typescript-eslint/naming-convention
85
- type AuthHeaders = { Authorization: string } | { 'X-XSRF-Token': string } | undefined;
289
+ function getError(): OAuthError {
290
+ const params = getAnchorParams();
86
291
 
87
- export function getAuthorizationHeaders(method: 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'): AuthHeaders {
88
- const cookie = !token && method !== 'GET' && method !== 'HEAD'
89
- ? document.cookie.split(/ *; */).find(pair => pair.startsWith('XSRF-TOKEN'))?.split('=')[1]
90
- : undefined;
292
+ return params.message
293
+ ? new OAuthError(params.message as string, params.error)
294
+ : new OAuthError(titleCase(params.error), params.error);
295
+ }
91
296
 
92
- return token
93
- ? { Authorization: token.toString() }
94
- : cookie
95
- ? { 'X-XSRF-Token': decodeURIComponent(cookie) }
96
- : undefined;
297
+ /**
298
+ * Our goal is to support even obsolete platforms (ES2017+ / Node.js 8.10+).
299
+ * This is a small polyfill for possibly missing method used in our codebase.
300
+ */
301
+ if (!Object.fromEntries) { // eslint-disable-next-line arrow-body-style
302
+ Object.fromEntries = <T = never>(entries: Iterable<readonly [string | number, T]>): { [k: string]: T } => {
303
+ return Array.from(entries).reduce<{ [k: string]: T }>(
304
+ (object, entry) => {
305
+ if (!Array.isArray(entry)) {
306
+ throw new TypeError(`Iterator value ${entry as unknown as string} is not an entry object.`);
307
+ }
308
+ object[`${entry[0]}`] = entry[1];
309
+
310
+ return object;
311
+ }, {}
312
+ );
313
+ };
97
314
  }
package/src/utils.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { NetworkError, apiHost, authenticate, getAuthorizationHeaders, token } from './oauth.js';
2
1
  import type { CamelCasedProperties, SnakeCasedProperties } from 'type-fest';
2
+ import { apiHost, authenticate, token } from './oauth.js';
3
3
 
4
4
  export type Flatten<Type> = Type extends Array<infer Item> ? Item : Type;
5
5
 
@@ -36,6 +36,9 @@ export const deletedNoneParam = getSearchParams({ deleted: 'none' });
36
36
  export const keysToRemove = ['created_at', 'deleted_at', 'updated_at'];
37
37
  export const staticContext = { keysToRemove: new Set(keysToRemove), keysToAdd: [], revivers: {} };
38
38
 
39
+ // class AuthorizationError extends Error {}
40
+ export class NetworkError extends Error {}
41
+
39
42
  export class HTTPError extends Error {
40
43
  statusCode: number;
41
44
  constructor(response: Response) {
@@ -230,6 +233,7 @@ function getRequestInit<I extends ApiCommon, O extends Record<string, unknown>>(
230
233
  extraHeaders?: Record<string, string> | null,
231
234
  extraOptions?: ExtraOptions<I, O>,
232
235
  ): RequestInit {
236
+ const authorization = token ? { Authorization: token.toString() } : null;
233
237
  let contentType = null as { 'Content-Type': string } | null;
234
238
 
235
239
  if (body !== undefined) {
@@ -255,11 +259,10 @@ function getRequestInit<I extends ApiCommon, O extends Record<string, unknown>>(
255
259
  }
256
260
  }
257
261
 
258
- const method = extraOptions?.method ?? (body != null ? 'POST' : 'GET'); // don't touch `!=` please
259
- const authorization = getAuthorizationHeaders(method);
260
262
  const headers = { Accept: 'application/json', ...authorization, ...contentType, ...extraHeaders };
263
+ const method = extraOptions?.method ?? (body != null ? 'POST' : 'GET'); // don't touch `!=` please
261
264
 
262
- return { body, headers, method, ...!token && { credentials: 'include' } } as RequestInit;
265
+ return { body, headers, method } as RequestInit;
263
266
  }
264
267
 
265
268
  interface Context<I extends ApiCommon, O extends Record<string, unknown>> {