@wix/sdk 1.1.15 → 1.1.17
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/dist/cjs/auth/OAuthStrategy.js +78 -0
- package/dist/cjs/auth/OAuthStrategy.js.map +1 -0
- package/dist/cjs/index.js +6 -4
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/wixClient.js +20 -31
- package/dist/cjs/wixClient.js.map +1 -1
- package/dist/cjs/wixMedia.js +25 -41
- package/dist/cjs/wixMedia.js.map +1 -1
- package/dist/esm/auth/OAuthStrategy.js +74 -0
- package/dist/esm/auth/OAuthStrategy.js.map +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/wixClient.js +38 -49
- package/dist/esm/wixClient.js.map +1 -1
- package/dist/esm/wixMedia.js +26 -40
- package/dist/esm/wixMedia.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/auth/OAuthStrategy.d.ts +18 -0
- package/dist/types/auth/OAuthStrategy.d.ts.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/wixClient.d.ts +7 -5
- package/dist/types/wixClient.d.ts.map +1 -1
- package/dist/types/wixMedia.d.ts +8 -8
- package/dist/types/wixMedia.d.ts.map +1 -1
- package/package.json +11 -10
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.OAuthStrategy = OAuthStrategy;
|
|
5
|
+
var _wixClient = require("../wixClient");
|
|
6
|
+
var _identity = require("@wix/identity");
|
|
7
|
+
function OAuthStrategy(config) {
|
|
8
|
+
const wixClient = (0, _wixClient.createClient)({
|
|
9
|
+
modules: {
|
|
10
|
+
oauth: _identity.oauth
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
const generateVisitorTokens = async tokens => {
|
|
14
|
+
if (tokens != null && tokens.accessToken && tokens != null && tokens.refreshToken && !isTokenExpired(tokens.accessToken)) {
|
|
15
|
+
return Promise.resolve(tokens);
|
|
16
|
+
}
|
|
17
|
+
if (tokens != null && tokens.refreshToken) {
|
|
18
|
+
return renewToken(tokens.refreshToken);
|
|
19
|
+
}
|
|
20
|
+
const tokensResponse = await wixClient.oauth.token({
|
|
21
|
+
preAuthenticated: {
|
|
22
|
+
clientId: config.clientId
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
return {
|
|
26
|
+
accessToken: tokensResponse.accessToken.token,
|
|
27
|
+
refreshToken: tokensResponse.refreshToken.token
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
const renewToken = async refreshToken => {
|
|
31
|
+
const tokensResponse = await wixClient.oauth.token({
|
|
32
|
+
refreshToken: {
|
|
33
|
+
token: refreshToken
|
|
34
|
+
},
|
|
35
|
+
preAuthenticated: {
|
|
36
|
+
clientId: config.clientId
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
return {
|
|
40
|
+
accessToken: tokensResponse.accessToken.token,
|
|
41
|
+
refreshToken: tokensResponse.refreshToken.token
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
return setHeaders => ({
|
|
45
|
+
generateVisitorTokens,
|
|
46
|
+
renewToken,
|
|
47
|
+
isTokenExpired,
|
|
48
|
+
setTokens: tokens => {
|
|
49
|
+
setHeaders({
|
|
50
|
+
Authorization: tokens.accessToken
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
function parseJWT(token) {
|
|
56
|
+
const base64Url = token.split('.')[1];
|
|
57
|
+
if (window) {
|
|
58
|
+
const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
|
|
59
|
+
const jsonPayload = decodeURIComponent(window.atob(base64).split('').map(c => {
|
|
60
|
+
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
|
|
61
|
+
}).join(''));
|
|
62
|
+
return JSON.parse(jsonPayload);
|
|
63
|
+
} else {
|
|
64
|
+
return JSON.parse(Buffer.from(base64Url, 'base64').toString());
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
function isTokenExpired(token) {
|
|
68
|
+
const {
|
|
69
|
+
expirationDate
|
|
70
|
+
} = parseJWT(token);
|
|
71
|
+
if (expirationDate) {
|
|
72
|
+
const expirationDateObj = new Date(expirationDate);
|
|
73
|
+
const currentDateObj = new Date();
|
|
74
|
+
return currentDateObj > expirationDateObj;
|
|
75
|
+
}
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=OAuthStrategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["OAuthStrategy","config","wixClient","createClient","modules","oauth","generateVisitorTokens","tokens","accessToken","refreshToken","isTokenExpired","Promise","resolve","renewToken","tokensResponse","token","preAuthenticated","clientId","setHeaders","setTokens","Authorization","parseJWT","base64Url","split","window","base64","replace","jsonPayload","decodeURIComponent","atob","map","c","charCodeAt","toString","slice","join","JSON","parse","Buffer","from","expirationDate","expirationDateObj","Date","currentDateObj"],"sources":["../../../src/auth/OAuthStrategy.ts"],"sourcesContent":["import { createClient } from '../wixClient';\nimport { oauth } from '@wix/identity';\n\ninterface Tokens {\n accessToken: string;\n refreshToken: string;\n}\n\ninterface IOAuthStrategy {\n generateVisitorTokens(tokens?: {\n refreshToken?: string;\n accessToken?: string;\n }): Promise<Tokens>;\n renewToken: (refreshToken: string) => Promise<Tokens>;\n isTokenExpired: (accessToken: string) => boolean;\n setTokens: (tokens: Tokens) => void;\n}\n\nexport function OAuthStrategy(config: { clientId: string }) {\n const wixClient = createClient({ modules: { oauth } });\n\n const generateVisitorTokens = async (\n tokens?: Partial<Tokens>,\n ): Promise<Tokens> => {\n if (\n tokens?.accessToken &&\n tokens?.refreshToken &&\n !isTokenExpired(tokens.accessToken)\n ) {\n return Promise.resolve(tokens) as Promise<Tokens>;\n }\n\n if (tokens?.refreshToken) {\n return renewToken(tokens.refreshToken);\n }\n\n const tokensResponse = await wixClient.oauth.token({\n preAuthenticated: {\n clientId: config.clientId,\n },\n });\n\n return {\n accessToken: tokensResponse.accessToken!.token!,\n refreshToken: tokensResponse.refreshToken!.token!,\n };\n };\n\n const renewToken = async (refreshToken: string): Promise<Tokens> => {\n const tokensResponse = await wixClient.oauth.token({\n refreshToken: { token: refreshToken },\n preAuthenticated: {\n clientId: config.clientId,\n },\n });\n return {\n accessToken: tokensResponse.accessToken!.token!,\n refreshToken: tokensResponse.refreshToken!.token!,\n };\n };\n\n return (setHeaders: Function): IOAuthStrategy => ({\n generateVisitorTokens,\n renewToken,\n isTokenExpired,\n setTokens: (tokens: Tokens): void => {\n setHeaders({ Authorization: tokens.accessToken });\n },\n });\n}\n\nfunction parseJWT(token: string) {\n const base64Url = token.split('.')[1];\n if (window) {\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n const jsonPayload = decodeURIComponent(\n window\n .atob(base64)\n .split('')\n .map((c) => {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n })\n .join(''),\n );\n\n return JSON.parse(jsonPayload);\n } else {\n return JSON.parse(Buffer.from(base64Url, 'base64').toString());\n }\n}\n\nfunction isTokenExpired(token: string): boolean {\n const { expirationDate } = parseJWT(token);\n if (expirationDate) {\n const expirationDateObj = new Date(expirationDate);\n const currentDateObj = new Date();\n return currentDateObj > expirationDateObj;\n }\n return false;\n}\n"],"mappings":"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"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
|
-
|
|
5
4
|
var _wixClient = require("./wixClient");
|
|
6
|
-
|
|
7
5
|
Object.keys(_wixClient).forEach(function (key) {
|
|
8
6
|
if (key === "default" || key === "__esModule") return;
|
|
9
7
|
if (key in exports && exports[key] === _wixClient[key]) return;
|
|
10
8
|
exports[key] = _wixClient[key];
|
|
11
9
|
});
|
|
12
|
-
|
|
13
10
|
var _wixMedia = require("./wixMedia");
|
|
14
|
-
|
|
15
11
|
Object.keys(_wixMedia).forEach(function (key) {
|
|
16
12
|
if (key === "default" || key === "__esModule") return;
|
|
17
13
|
if (key in exports && exports[key] === _wixMedia[key]) return;
|
|
18
14
|
exports[key] = _wixMedia[key];
|
|
19
15
|
});
|
|
16
|
+
var _OAuthStrategy = require("./auth/OAuthStrategy");
|
|
17
|
+
Object.keys(_OAuthStrategy).forEach(function (key) {
|
|
18
|
+
if (key === "default" || key === "__esModule") return;
|
|
19
|
+
if (key in exports && exports[key] === _OAuthStrategy[key]) return;
|
|
20
|
+
exports[key] = _OAuthStrategy[key];
|
|
21
|
+
});
|
|
20
22
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["../../src/index.ts"],"sourcesContent":["export * from './wixClient';\nexport * from './wixMedia';\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":[],"sources":["../../src/index.ts"],"sourcesContent":["export * from './wixClient';\nexport * from './wixMedia';\nexport * from './auth/OAuthStrategy';\n"],"mappings":";;;AAAA;AAAA;EAAA;EAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;AAAA"}
|
package/dist/cjs/wixClient.js
CHANGED
|
@@ -3,22 +3,20 @@
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
exports.createClient = createClient;
|
|
5
5
|
const API_URL = 'www.wixapis.com';
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
const wrapperBuilder = (origFunc, headers
|
|
7
|
+
// @ts-expect-error
|
|
8
8
|
) => {
|
|
9
9
|
return origFunc({
|
|
10
10
|
request: async factory => {
|
|
11
|
-
if (!headers.Authorization) {
|
|
12
|
-
// eslint-disable-next-line no-throw-literal
|
|
13
|
-
throw errorBuilder(500, 'You must set Authorization header before triggering a call');
|
|
14
|
-
}
|
|
15
|
-
|
|
16
11
|
const requestOptions = factory({
|
|
17
12
|
host: API_URL
|
|
18
13
|
});
|
|
19
|
-
|
|
14
|
+
let url = `https://${API_URL}${requestOptions.url}`;
|
|
15
|
+
if (requestOptions.params) {
|
|
16
|
+
url += `?${new URLSearchParams(requestOptions.params)}`;
|
|
17
|
+
}
|
|
20
18
|
try {
|
|
21
|
-
const res = await fetch(
|
|
19
|
+
const res = await fetch(url, {
|
|
22
20
|
method: requestOptions.method,
|
|
23
21
|
...(requestOptions.data && {
|
|
24
22
|
body: JSON.stringify(requestOptions.data)
|
|
@@ -28,42 +26,36 @@ const wrapperBuilder = (origFunc, headers // @ts-expect-error
|
|
|
28
26
|
...headers
|
|
29
27
|
}
|
|
30
28
|
});
|
|
31
|
-
|
|
32
29
|
if (res.status !== 200) {
|
|
33
30
|
var _dataError, _dataError2;
|
|
34
|
-
|
|
35
31
|
let dataError = null;
|
|
36
|
-
|
|
37
32
|
try {
|
|
38
33
|
dataError = await res.json();
|
|
39
|
-
} catch (e) {
|
|
34
|
+
} catch (e) {
|
|
35
|
+
//
|
|
40
36
|
}
|
|
41
|
-
|
|
42
37
|
throw errorBuilder(res.status, (_dataError = dataError) == null ? void 0 : _dataError.message, (_dataError2 = dataError) == null ? void 0 : _dataError2.details);
|
|
43
38
|
}
|
|
44
|
-
|
|
45
39
|
const data = await res.json();
|
|
46
40
|
return {
|
|
47
41
|
data
|
|
48
42
|
};
|
|
49
43
|
} catch (e) {
|
|
50
44
|
var _e$message;
|
|
51
|
-
|
|
52
45
|
if ((_e$message = e.message) != null && _e$message.includes('fetch is not defined')) {
|
|
53
46
|
console.error('Node.js v18+ is required');
|
|
54
47
|
}
|
|
55
|
-
|
|
56
48
|
throw e;
|
|
57
49
|
}
|
|
58
50
|
}
|
|
59
51
|
});
|
|
60
52
|
};
|
|
61
|
-
|
|
62
53
|
const errorBuilder = (code, description, details) => {
|
|
63
54
|
return {
|
|
64
55
|
response: {
|
|
65
56
|
data: {
|
|
66
|
-
details: {
|
|
57
|
+
details: {
|
|
58
|
+
...details,
|
|
67
59
|
...(!(details != null && details.validationError) && {
|
|
68
60
|
applicationError: {
|
|
69
61
|
description,
|
|
@@ -77,18 +69,14 @@ const errorBuilder = (code, description, details) => {
|
|
|
77
69
|
}
|
|
78
70
|
};
|
|
79
71
|
};
|
|
80
|
-
|
|
81
72
|
function createClient(config) {
|
|
82
73
|
if (!config.modules || Object.entries(config.modules).length < 1) {
|
|
83
74
|
throw new Error('Missing modules');
|
|
84
75
|
}
|
|
85
|
-
|
|
86
76
|
const _headers = config.headers || {
|
|
87
77
|
Authorization: ''
|
|
88
78
|
};
|
|
89
|
-
|
|
90
79
|
const isObject = val => val && typeof val === 'object' && !Array.isArray(val);
|
|
91
|
-
|
|
92
80
|
const traverse = obj => {
|
|
93
81
|
return Object.entries(obj).reduce((prev, [key, value]) => {
|
|
94
82
|
if (isObject(value)) {
|
|
@@ -98,18 +86,19 @@ function createClient(config) {
|
|
|
98
86
|
} else {
|
|
99
87
|
prev[key] = value;
|
|
100
88
|
}
|
|
101
|
-
|
|
102
89
|
return prev;
|
|
103
90
|
}, {});
|
|
104
91
|
};
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
setHeaders: headers => {
|
|
109
|
-
for (const k in headers) {
|
|
110
|
-
_headers[k] = headers[k];
|
|
111
|
-
}
|
|
92
|
+
const setHeaders = headers => {
|
|
93
|
+
for (const k in headers) {
|
|
94
|
+
_headers[k] = headers[k];
|
|
112
95
|
}
|
|
113
96
|
};
|
|
97
|
+
const wrappedModules = traverse(config.modules);
|
|
98
|
+
return {
|
|
99
|
+
...wrappedModules,
|
|
100
|
+
auth: config.auth == null ? void 0 : config.auth(setHeaders),
|
|
101
|
+
setHeaders
|
|
102
|
+
};
|
|
114
103
|
}
|
|
115
104
|
//# sourceMappingURL=wixClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["API_URL","wrapperBuilder","origFunc","headers","request","factory","
|
|
1
|
+
{"version":3,"names":["API_URL","wrapperBuilder","origFunc","headers","request","factory","requestOptions","host","url","params","URLSearchParams","res","fetch","method","data","body","JSON","stringify","status","dataError","json","e","errorBuilder","message","details","includes","console","error","code","description","response","validationError","applicationError","createClient","config","modules","Object","entries","length","Error","_headers","Authorization","isObject","val","Array","isArray","traverse","obj","reduce","prev","key","value","setHeaders","k","wrappedModules","auth"],"sources":["../../src/wixClient.ts"],"sourcesContent":["import { Simplify } from 'type-fest';\n\ntype Headers = { Authorization: string } & Record<string, string>;\n\ntype WithoutFunctionWrapper<T> = {\n [Key in keyof T]: T[Key] extends (...args: any) => any\n ? ReturnType<T[Key]>\n : Simplify<WithoutFunctionWrapper<T[Key]>>;\n};\n\nexport interface IWrapper<Z extends (...args: any) => any> {\n setHeaders(headers: Headers): void;\n auth: ReturnType<Z>;\n}\n\nconst API_URL = 'www.wixapis.com';\n\nconst wrapperBuilder = <T extends Function>(\n origFunc: T,\n headers: Headers,\n // @ts-expect-error\n): ReturnType<T> => {\n return origFunc({\n request: async (factory: any) => {\n const requestOptions = factory({ host: API_URL });\n let url = `https://${API_URL}${requestOptions.url}`;\n if (requestOptions.params) {\n url += `?${new URLSearchParams(requestOptions.params)}`;\n }\n try {\n const res = await fetch(url, {\n method: requestOptions.method,\n ...(requestOptions.data && {\n body: JSON.stringify(requestOptions.data),\n }),\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n });\n if (res.status !== 200) {\n let dataError: any = null;\n try {\n dataError = await res.json();\n } catch (e) {\n //\n }\n throw errorBuilder(\n res.status,\n dataError?.message,\n dataError?.details,\n );\n }\n const data = await res.json();\n return { data };\n } catch (e: any) {\n if (e.message?.includes('fetch is not defined')) {\n console.error('Node.js v18+ is required');\n }\n throw e;\n }\n },\n });\n};\n\nconst errorBuilder = (code: number, description: string, details?: any) => {\n return {\n response: {\n data: {\n details: {\n ...details,\n ...(!details?.validationError && {\n applicationError: {\n description,\n code,\n },\n }),\n },\n message: description,\n },\n status: code,\n },\n };\n};\n\nexport function createClient<\n T = any,\n Z extends (...args: any) => any = any,\n>(config: {\n modules: T;\n auth?: Z;\n headers?: Headers;\n}): WithoutFunctionWrapper<T> & IWrapper<Z> {\n if (!config.modules || Object.entries(config.modules).length < 1) {\n throw new Error('Missing modules');\n }\n\n const _headers: Headers = config.headers || { Authorization: '' };\n const isObject = (val: any) =>\n val && typeof val === 'object' && !Array.isArray(val);\n\n const traverse = (obj: any) => {\n return Object.entries(obj).reduce((prev: any, [key, value]) => {\n if (isObject(value)) {\n prev[key] = traverse(value);\n } else if (typeof obj[key] === 'function') {\n prev[key] = wrapperBuilder(value as Function, _headers);\n } else {\n prev[key] = value;\n }\n return prev;\n }, {});\n };\n\n const setHeaders = (headers: Headers) => {\n for (const k in headers) {\n _headers[k] = headers[k];\n }\n };\n\n const wrappedModules = traverse(config.modules);\n return {\n ...wrappedModules,\n auth: config.auth?.(setHeaders),\n setHeaders,\n };\n}\n"],"mappings":"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"}
|
package/dist/cjs/wixMedia.js
CHANGED
|
@@ -3,45 +3,34 @@
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
exports.decodeText = decodeText;
|
|
5
5
|
exports.media = void 0;
|
|
6
|
-
|
|
7
6
|
var _imageKit = require("@wix/image-kit");
|
|
8
|
-
|
|
9
7
|
var _querystring = require("querystring");
|
|
10
|
-
|
|
11
8
|
const URL_HASH_PREFIX = '#';
|
|
12
9
|
const WIX_PROTOCOL = 'wix:';
|
|
13
10
|
const WIX_IMAGE = 'image';
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const img = getRawImageUrl(wixMediaIdentifier);
|
|
11
|
+
function getScaledToFillImageUrl(wixMediaIdentifier, targetWidth, targetHeight, options) {
|
|
12
|
+
const img = getImageUrl(wixMediaIdentifier);
|
|
17
13
|
return _imageKit.sdk.getScaleToFillImageURL(img.id, img.height, img.width, targetWidth, targetHeight, options);
|
|
18
14
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const img = getRawImageUrl(wixMediaIdentifier);
|
|
15
|
+
function getScaledToFitImageUrl(wixMediaIdentifier, targetWidth, targetHeight, options) {
|
|
16
|
+
const img = getImageUrl(wixMediaIdentifier);
|
|
22
17
|
return _imageKit.sdk.getScaleToFitImageURL(img.id, img.height, img.width, targetWidth, targetHeight, options);
|
|
23
18
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const img = getRawImageUrl(wixMediaIdentifier);
|
|
19
|
+
function getCroppedImageUrl(wixMediaIdentifier, cropX, cropY, cropWidth, cropHeight, targetWidth, targetHeight, options) {
|
|
20
|
+
const img = getImageUrl(wixMediaIdentifier);
|
|
27
21
|
return _imageKit.sdk.getCropImageURL(img.id, img.height, img.width, cropX, cropY, cropWidth, cropHeight, targetWidth, targetHeight, options);
|
|
28
22
|
}
|
|
29
|
-
|
|
30
|
-
function getRawImageUrl(val) {
|
|
23
|
+
function getImageUrl(val) {
|
|
31
24
|
const alignedImage = alignIfLegacy(val, WIX_IMAGE);
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
const _pathname$replace$spl = pathname.replace(`${WIX_IMAGE}://v1/`, '').split('/'),
|
|
42
|
-
id = _pathname$replace$spl[0],
|
|
43
|
-
filenameOrAltText = _pathname$replace$spl[1];
|
|
44
|
-
|
|
25
|
+
const {
|
|
26
|
+
hash,
|
|
27
|
+
pathname
|
|
28
|
+
} = new URL(alignedImage);
|
|
29
|
+
const {
|
|
30
|
+
originHeight: height,
|
|
31
|
+
originWidth: width
|
|
32
|
+
} = (0, _querystring.parse)(hash.replace(URL_HASH_PREFIX, ''));
|
|
33
|
+
const [id, filenameOrAltText] = pathname.replace(`${WIX_IMAGE}://v1/`, '').split('/');
|
|
45
34
|
const decodedFilenameOrAltText = decodeText(filenameOrAltText);
|
|
46
35
|
const res = {
|
|
47
36
|
id,
|
|
@@ -49,37 +38,32 @@ function getRawImageUrl(val) {
|
|
|
49
38
|
height: Number(height),
|
|
50
39
|
width: Number(width)
|
|
51
40
|
};
|
|
52
|
-
|
|
53
41
|
if (!decodedFilenameOrAltText) {
|
|
54
42
|
return res;
|
|
55
43
|
}
|
|
56
|
-
|
|
57
|
-
|
|
44
|
+
return {
|
|
45
|
+
...res,
|
|
58
46
|
altText: decodedFilenameOrAltText,
|
|
59
47
|
filename: decodedFilenameOrAltText
|
|
60
48
|
};
|
|
61
49
|
}
|
|
62
|
-
|
|
63
50
|
function decodeText(s) {
|
|
64
51
|
if (!s) {
|
|
65
52
|
return s;
|
|
66
53
|
}
|
|
67
|
-
|
|
68
54
|
return decodeURIComponent(s);
|
|
69
55
|
}
|
|
70
|
-
|
|
71
56
|
function alignIfLegacy(url, type) {
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
57
|
+
const {
|
|
58
|
+
protocol
|
|
59
|
+
} = new URL(url);
|
|
75
60
|
return protocol === `${type}:` ? `${WIX_PROTOCOL}${url}` : url;
|
|
76
61
|
}
|
|
77
|
-
|
|
78
62
|
const media = {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
63
|
+
getCroppedImageUrl,
|
|
64
|
+
getScaledToFillImageUrl,
|
|
65
|
+
getScaledToFitImageUrl,
|
|
66
|
+
getImageUrl
|
|
83
67
|
};
|
|
84
68
|
exports.media = media;
|
|
85
69
|
//# sourceMappingURL=wixMedia.js.map
|
package/dist/cjs/wixMedia.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["URL_HASH_PREFIX","WIX_PROTOCOL","WIX_IMAGE","
|
|
1
|
+
{"version":3,"names":["URL_HASH_PREFIX","WIX_PROTOCOL","WIX_IMAGE","getScaledToFillImageUrl","wixMediaIdentifier","targetWidth","targetHeight","options","img","getImageUrl","sdk","getScaleToFillImageURL","id","height","width","getScaledToFitImageUrl","getScaleToFitImageURL","getCroppedImageUrl","cropX","cropY","cropWidth","cropHeight","getCropImageURL","val","alignedImage","alignIfLegacy","hash","pathname","URL","originHeight","originWidth","parse","replace","filenameOrAltText","split","decodedFilenameOrAltText","decodeText","res","url","Number","altText","filename","s","decodeURIComponent","type","protocol","media"],"sources":["../../src/wixMedia.ts"],"sourcesContent":["import { sdk, ImageTransformOptions } from '@wix/image-kit';\nimport { parse } from 'querystring';\n\nconst URL_HASH_PREFIX = '#';\nconst WIX_PROTOCOL = 'wix:';\nconst WIX_IMAGE = 'image';\n\nfunction getScaledToFillImageUrl(\n wixMediaIdentifier: string,\n targetWidth: number,\n targetHeight: number,\n options: ImageTransformOptions,\n) {\n const img = getImageUrl(wixMediaIdentifier);\n\n return sdk.getScaleToFillImageURL(\n img.id,\n img.height,\n img.width,\n targetWidth,\n targetHeight,\n options,\n );\n}\n\nfunction getScaledToFitImageUrl(\n wixMediaIdentifier: string,\n targetWidth: number,\n targetHeight: number,\n options: ImageTransformOptions,\n) {\n const img = getImageUrl(wixMediaIdentifier);\n\n return sdk.getScaleToFitImageURL(\n img.id,\n img.height,\n img.width,\n targetWidth,\n targetHeight,\n options,\n );\n}\n\nfunction getCroppedImageUrl(\n wixMediaIdentifier: string,\n cropX: number,\n cropY: number,\n cropWidth: number,\n cropHeight: number,\n targetWidth: number,\n targetHeight: number,\n options?: ImageTransformOptions,\n) {\n const img = getImageUrl(wixMediaIdentifier);\n\n return sdk.getCropImageURL(\n img.id,\n img.height,\n img.width,\n cropX,\n cropY,\n cropWidth,\n cropHeight,\n targetWidth,\n targetHeight,\n options,\n );\n}\n\nfunction getImageUrl(val: string) {\n const alignedImage = alignIfLegacy(val, WIX_IMAGE);\n\n const { hash, pathname } = new URL(alignedImage);\n\n const { originHeight: height, originWidth: width } = parse(\n hash.replace(URL_HASH_PREFIX, ''),\n );\n const [id, filenameOrAltText] = pathname\n .replace(`${WIX_IMAGE}://v1/`, '')\n .split('/');\n\n const decodedFilenameOrAltText = decodeText(filenameOrAltText);\n\n const res = {\n id,\n url: `https://static.wixstatic.com/media/${id}`,\n height: Number(height),\n width: Number(width),\n };\n\n if (!decodedFilenameOrAltText) {\n return res;\n }\n\n return {\n ...res,\n altText: decodedFilenameOrAltText,\n filename: decodedFilenameOrAltText,\n };\n}\n\nexport function decodeText(s: string) {\n if (!s) {\n return s;\n }\n\n return decodeURIComponent(s);\n}\n\nfunction alignIfLegacy(url: string, type: string): string {\n const { protocol } = new URL(url);\n\n return protocol === `${type}:` ? `${WIX_PROTOCOL}${url}` : url;\n}\n\nexport const media = {\n getCroppedImageUrl,\n getScaledToFillImageUrl,\n getScaledToFitImageUrl,\n getImageUrl,\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { createClient } from '../wixClient';
|
|
2
|
+
import { oauth } from '@wix/identity';
|
|
3
|
+
export function OAuthStrategy(config) {
|
|
4
|
+
const wixClient = createClient({
|
|
5
|
+
modules: {
|
|
6
|
+
oauth
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
const generateVisitorTokens = async tokens => {
|
|
10
|
+
if (tokens != null && tokens.accessToken && tokens != null && tokens.refreshToken && !isTokenExpired(tokens.accessToken)) {
|
|
11
|
+
return Promise.resolve(tokens);
|
|
12
|
+
}
|
|
13
|
+
if (tokens != null && tokens.refreshToken) {
|
|
14
|
+
return renewToken(tokens.refreshToken);
|
|
15
|
+
}
|
|
16
|
+
const tokensResponse = await wixClient.oauth.token({
|
|
17
|
+
preAuthenticated: {
|
|
18
|
+
clientId: config.clientId
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
return {
|
|
22
|
+
accessToken: tokensResponse.accessToken.token,
|
|
23
|
+
refreshToken: tokensResponse.refreshToken.token
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
const renewToken = async refreshToken => {
|
|
27
|
+
const tokensResponse = await wixClient.oauth.token({
|
|
28
|
+
refreshToken: {
|
|
29
|
+
token: refreshToken
|
|
30
|
+
},
|
|
31
|
+
preAuthenticated: {
|
|
32
|
+
clientId: config.clientId
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
return {
|
|
36
|
+
accessToken: tokensResponse.accessToken.token,
|
|
37
|
+
refreshToken: tokensResponse.refreshToken.token
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
return setHeaders => ({
|
|
41
|
+
generateVisitorTokens,
|
|
42
|
+
renewToken,
|
|
43
|
+
isTokenExpired,
|
|
44
|
+
setTokens: tokens => {
|
|
45
|
+
setHeaders({
|
|
46
|
+
Authorization: tokens.accessToken
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
function parseJWT(token) {
|
|
52
|
+
const base64Url = token.split('.')[1];
|
|
53
|
+
if (window) {
|
|
54
|
+
const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
|
|
55
|
+
const jsonPayload = decodeURIComponent(window.atob(base64).split('').map(c => {
|
|
56
|
+
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
|
|
57
|
+
}).join(''));
|
|
58
|
+
return JSON.parse(jsonPayload);
|
|
59
|
+
} else {
|
|
60
|
+
return JSON.parse(Buffer.from(base64Url, 'base64').toString());
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function isTokenExpired(token) {
|
|
64
|
+
const {
|
|
65
|
+
expirationDate
|
|
66
|
+
} = parseJWT(token);
|
|
67
|
+
if (expirationDate) {
|
|
68
|
+
const expirationDateObj = new Date(expirationDate);
|
|
69
|
+
const currentDateObj = new Date();
|
|
70
|
+
return currentDateObj > expirationDateObj;
|
|
71
|
+
}
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=OAuthStrategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createClient","oauth","OAuthStrategy","config","wixClient","modules","generateVisitorTokens","tokens","accessToken","refreshToken","isTokenExpired","Promise","resolve","renewToken","tokensResponse","token","preAuthenticated","clientId","setHeaders","setTokens","Authorization","parseJWT","base64Url","split","window","base64","replace","jsonPayload","decodeURIComponent","atob","map","c","charCodeAt","toString","slice","join","JSON","parse","Buffer","from","expirationDate","expirationDateObj","Date","currentDateObj"],"sources":["../../../src/auth/OAuthStrategy.ts"],"sourcesContent":["import { createClient } from '../wixClient';\nimport { oauth } from '@wix/identity';\n\ninterface Tokens {\n accessToken: string;\n refreshToken: string;\n}\n\ninterface IOAuthStrategy {\n generateVisitorTokens(tokens?: {\n refreshToken?: string;\n accessToken?: string;\n }): Promise<Tokens>;\n renewToken: (refreshToken: string) => Promise<Tokens>;\n isTokenExpired: (accessToken: string) => boolean;\n setTokens: (tokens: Tokens) => void;\n}\n\nexport function OAuthStrategy(config: { clientId: string }) {\n const wixClient = createClient({ modules: { oauth } });\n\n const generateVisitorTokens = async (\n tokens?: Partial<Tokens>,\n ): Promise<Tokens> => {\n if (\n tokens?.accessToken &&\n tokens?.refreshToken &&\n !isTokenExpired(tokens.accessToken)\n ) {\n return Promise.resolve(tokens) as Promise<Tokens>;\n }\n\n if (tokens?.refreshToken) {\n return renewToken(tokens.refreshToken);\n }\n\n const tokensResponse = await wixClient.oauth.token({\n preAuthenticated: {\n clientId: config.clientId,\n },\n });\n\n return {\n accessToken: tokensResponse.accessToken!.token!,\n refreshToken: tokensResponse.refreshToken!.token!,\n };\n };\n\n const renewToken = async (refreshToken: string): Promise<Tokens> => {\n const tokensResponse = await wixClient.oauth.token({\n refreshToken: { token: refreshToken },\n preAuthenticated: {\n clientId: config.clientId,\n },\n });\n return {\n accessToken: tokensResponse.accessToken!.token!,\n refreshToken: tokensResponse.refreshToken!.token!,\n };\n };\n\n return (setHeaders: Function): IOAuthStrategy => ({\n generateVisitorTokens,\n renewToken,\n isTokenExpired,\n setTokens: (tokens: Tokens): void => {\n setHeaders({ Authorization: tokens.accessToken });\n },\n });\n}\n\nfunction parseJWT(token: string) {\n const base64Url = token.split('.')[1];\n if (window) {\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n const jsonPayload = decodeURIComponent(\n window\n .atob(base64)\n .split('')\n .map((c) => {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n })\n .join(''),\n );\n\n return JSON.parse(jsonPayload);\n } else {\n return JSON.parse(Buffer.from(base64Url, 'base64').toString());\n }\n}\n\nfunction isTokenExpired(token: string): boolean {\n const { expirationDate } = parseJWT(token);\n if (expirationDate) {\n const expirationDateObj = new Date(expirationDate);\n const currentDateObj = new Date();\n return currentDateObj > expirationDateObj;\n }\n return false;\n}\n"],"mappings":"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"}
|
package/dist/esm/index.js
CHANGED
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["../../src/index.ts"],"sourcesContent":["export * from './wixClient';\nexport * from './wixMedia';\n"],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"names":[],"sources":["../../src/index.ts"],"sourcesContent":["export * from './wixClient';\nexport * from './wixMedia';\nexport * from './auth/OAuthStrategy';\n"],"mappings":"AAAA,cAAc,aAAa;AAC3B,cAAc,YAAY;AAC1B,cAAc,sBAAsB"}
|