@swan-admin/swan-ai-measurements 1.0.52 → 1.0.53
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/auth.js +4 -10
- package/constants.js +25 -22
- package/custom.js +6 -4
- package/fileUpload.js +24 -10
- package/index.js +9 -7
- package/measurement.js +9 -13
- package/package.json +1 -2
- package/poseDetection.js +5 -3
- package/tryOn.js +4 -4
- package/utils.js +8 -12
package/auth.js
CHANGED
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
APP_AUTH_BASE_URL,
|
|
5
|
-
APP_AUTH_WEBSOCKET_URL,
|
|
6
|
-
APP_BASE_URL,
|
|
7
|
-
REQUIRED_MESSAGE,
|
|
8
|
-
} from "./constants.js";
|
|
9
|
-
import { checkParameters } from "./utils.js";
|
|
1
|
+
const axios = require("axios");
|
|
2
|
+
const { API_ENDPOINTS, APP_AUTH_BASE_URL, APP_AUTH_WEBSOCKET_URL, APP_BASE_URL, REQUIRED_MESSAGE } = require("./constants.js");
|
|
3
|
+
const { checkParameters } = require("./utils.js");
|
|
10
4
|
|
|
11
5
|
class Auth {
|
|
12
6
|
#socketRef;
|
|
@@ -96,4 +90,4 @@ class Auth {
|
|
|
96
90
|
};
|
|
97
91
|
}
|
|
98
92
|
|
|
99
|
-
|
|
93
|
+
module.exports = Auth;
|
package/constants.js
CHANGED
|
@@ -1,19 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
"https://posedetect-service-staging.ft2a64raup4pg.us-east-1.cs.amazonlightsail.com";
|
|
1
|
+
const APP_BASE_URL = "https://fitview-server-staging.ft2a64raup4pg.us-east-1.cs.amazonlightsail.com";
|
|
2
|
+
const APP_AUTH_BASE_URL = "https://staging.api.getswan.co";
|
|
3
|
+
const APP_AUTH_WEBSOCKET_URL = "wss://staging.wsnotify.api.getswan.co";
|
|
4
|
+
const APP_TRY_ON_WEBSOCKET_URL = "wss://bucbzczxjk.execute-api.ap-south-1.amazonaws.com";
|
|
5
|
+
const APP_RECOMMENDATION_WEBSOCKET_URL = "wss://staging.wsnotify.api.getswan.co/scanning";
|
|
6
|
+
const APP_POSE_DETECTION_WEbSOCKET_URL = "https://posedetect-service-staging.ft2a64raup4pg.us-east-1.cs.amazonlightsail.com";
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
const UPPY_FILE_UPLOAD_ENDPOINT = {
|
|
10
9
|
UPLOAD_START: "/upload/start",
|
|
11
10
|
UPLOAD_COMPLETE: "/upload/complete",
|
|
12
11
|
UPLOAD_SIGN_PART: "/upload/signpart",
|
|
13
12
|
UPLOAD_ABORT: "/upload/abort",
|
|
14
13
|
};
|
|
15
14
|
|
|
16
|
-
|
|
15
|
+
const API_ENDPOINTS = {
|
|
17
16
|
GET_USER_DETAIL: "/api/user",
|
|
18
17
|
REGISTER_USER: "/auth/register",
|
|
19
18
|
VERIFY_USER: "/auth/verify",
|
|
@@ -28,16 +27,20 @@ export const API_ENDPOINTS = {
|
|
|
28
27
|
TRY_ON: "/tryon",
|
|
29
28
|
AUTH: "/auth",
|
|
30
29
|
};
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
30
|
+
const requiredMetaData = ["gender", "scan_id", "email", "focal_length", "height", "customer_store_url", "scan_type", "callback_url", "clothes_fit"];
|
|
31
|
+
const REQUIRED_MESSAGE = "Please verify required parameters";
|
|
32
|
+
const REQUIRED_MESSAGE_FOR_META_DATA = "Please verify required parameters in meta data";
|
|
33
|
+
|
|
34
|
+
module.exports = {
|
|
35
|
+
APP_BASE_URL,
|
|
36
|
+
APP_AUTH_BASE_URL,
|
|
37
|
+
APP_AUTH_WEBSOCKET_URL,
|
|
38
|
+
APP_TRY_ON_WEBSOCKET_URL,
|
|
39
|
+
APP_RECOMMENDATION_WEBSOCKET_URL,
|
|
40
|
+
APP_POSE_DETECTION_WEbSOCKET_URL,
|
|
41
|
+
REQUIRED_MESSAGE_FOR_META_DATA,
|
|
42
|
+
REQUIRED_MESSAGE,
|
|
43
|
+
requiredMetaData,
|
|
44
|
+
API_ENDPOINTS,
|
|
45
|
+
UPPY_FILE_UPLOAD_ENDPOINT,
|
|
46
|
+
};
|
package/custom.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
const axios = require("axios");
|
|
2
|
+
const { API_ENDPOINTS, APP_AUTH_BASE_URL, REQUIRED_MESSAGE } = require("./constants.js");
|
|
3
|
+
const { checkParameters } = require("./utils.js");
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
class Custom {
|
|
6
6
|
getCustomCustomerConfig = (store_url, accessKey) => {
|
|
7
7
|
if (checkParameters(store_url, accessKey) === false) {
|
|
8
8
|
throw new Error(REQUIRED_MESSAGE);
|
|
@@ -20,3 +20,5 @@ export default class Custom {
|
|
|
20
20
|
return axios.get(`${APP_AUTH_BASE_URL}${API_ENDPOINTS.MODEL}/${id}`, { headers: { "X-Api-Key": accessKey } });
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
|
+
|
|
24
|
+
module.exports = Custom;
|
package/fileUpload.js
CHANGED
|
@@ -1,24 +1,38 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import { REQUIRED_MESSAGE, REQUIRED_MESSAGE_FOR_META_DATA, UPPY_FILE_UPLOAD_ENDPOINT } from "./constants.js";
|
|
4
|
-
import { checkMetaDataValue, checkParameters, fetchData } from "./utils.js";
|
|
1
|
+
const { REQUIRED_MESSAGE, REQUIRED_MESSAGE_FOR_META_DATA, UPPY_FILE_UPLOAD_ENDPOINT } = require("./constants.js");
|
|
2
|
+
const { checkMetaDataValue, checkParameters, fetchData } = require("./utils.js");
|
|
5
3
|
|
|
6
|
-
|
|
4
|
+
class FileUpload {
|
|
7
5
|
#uppyIns;
|
|
6
|
+
#Uppy;
|
|
7
|
+
#AwsS3Multipart;
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
constructor() {
|
|
10
|
+
this.initializeModules();
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
async initializeModules() {
|
|
14
|
+
this.#Uppy = (await import("@uppy/core")).default;
|
|
15
|
+
this.#AwsS3Multipart = (await import("@uppy/aws-s3-multipart")).default;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
async uploadFile({ file, objMetaData, scanId, accessKey }) {
|
|
10
19
|
if (checkParameters(file, objMetaData, scanId, accessKey) === false) {
|
|
11
20
|
throw new Error(REQUIRED_MESSAGE);
|
|
12
21
|
}
|
|
13
22
|
if (checkMetaDataValue(objMetaData) === false) {
|
|
14
23
|
throw new Error(REQUIRED_MESSAGE_FOR_META_DATA);
|
|
15
24
|
}
|
|
25
|
+
|
|
26
|
+
if (!this.#Uppy || !this.#AwsS3Multipart) {
|
|
27
|
+
await this.initializeModules();
|
|
28
|
+
}
|
|
29
|
+
|
|
16
30
|
return new Promise((resolve, reject) => {
|
|
17
31
|
if (this.#uppyIns) {
|
|
18
32
|
this.#uppyIns.close();
|
|
19
33
|
}
|
|
20
|
-
this.#uppyIns = new Uppy({ autoProceed: true });
|
|
21
|
-
this.#uppyIns.use(AwsS3Multipart, {
|
|
34
|
+
this.#uppyIns = new this.#Uppy({ autoProceed: true });
|
|
35
|
+
this.#uppyIns.use(this.#AwsS3Multipart, {
|
|
22
36
|
limit: 10,
|
|
23
37
|
retryDelays: [0, 1000, 3000, 5000],
|
|
24
38
|
getChunkSize: () => 5 * 1024 * 1024,
|
|
@@ -45,7 +59,6 @@ export default class FileUpload {
|
|
|
45
59
|
originalFileName: file.name,
|
|
46
60
|
},
|
|
47
61
|
}),
|
|
48
|
-
|
|
49
62
|
signPart: (file, partData) =>
|
|
50
63
|
fetchData({
|
|
51
64
|
path: UPPY_FILE_UPLOAD_ENDPOINT.UPLOAD_SIGN_PART,
|
|
@@ -56,7 +69,6 @@ export default class FileUpload {
|
|
|
56
69
|
partNumber: partData.partNumber,
|
|
57
70
|
},
|
|
58
71
|
}),
|
|
59
|
-
|
|
60
72
|
abortMultipartUpload: (file, { uploadId, key }) =>
|
|
61
73
|
fetchData({
|
|
62
74
|
path: UPPY_FILE_UPLOAD_ENDPOINT.UPLOAD_ABORT,
|
|
@@ -90,3 +102,5 @@ export default class FileUpload {
|
|
|
90
102
|
});
|
|
91
103
|
}
|
|
92
104
|
}
|
|
105
|
+
|
|
106
|
+
module.exports = FileUpload;
|
package/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
const Auth = require("./auth.js");
|
|
2
|
+
const Custom = require("./custom.js");
|
|
3
|
+
const FileUpload = require("./fileUpload.js");
|
|
4
|
+
const Measurement = require("./measurement.js");
|
|
5
|
+
const PoseDetection = require("./poseDetection.js");
|
|
6
|
+
const TryOn = require("./tryOn.js");
|
|
7
|
+
class Swan {
|
|
8
8
|
auth = new Auth();
|
|
9
9
|
|
|
10
10
|
custom = new Custom();
|
|
@@ -17,3 +17,5 @@ export default class Swan {
|
|
|
17
17
|
|
|
18
18
|
tryOn = new TryOn();
|
|
19
19
|
}
|
|
20
|
+
|
|
21
|
+
module.exports = Swan;
|
package/measurement.js
CHANGED
|
@@ -1,19 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
APP_TRY_ON_WEBSOCKET_URL,
|
|
7
|
-
REQUIRED_MESSAGE,
|
|
8
|
-
} from "./constants.js";
|
|
9
|
-
import { checkParameters } from "./utils.js";
|
|
10
|
-
|
|
11
|
-
export default class Measurement {
|
|
1
|
+
const axios = require("axios");
|
|
2
|
+
const { API_ENDPOINTS, APP_AUTH_BASE_URL, APP_RECOMMENDATION_WEBSOCKET_URL, APP_TRY_ON_WEBSOCKET_URL, REQUIRED_MESSAGE } = require("./constants.js");
|
|
3
|
+
const { checkParameters } = require("./utils.js");
|
|
4
|
+
|
|
5
|
+
class Measurement {
|
|
12
6
|
#tryOnSocketRef = null;
|
|
13
7
|
#measurementSocketRef = null;
|
|
14
8
|
#timerPollingRef = null;
|
|
15
9
|
#timerWaitingRef = null;
|
|
16
10
|
#count = 1;
|
|
11
|
+
|
|
17
12
|
getMeasurementStatus(scanId, accessKey) {
|
|
18
13
|
if (checkParameters(scanId, accessKey) === false) {
|
|
19
14
|
throw new Error(REQUIRED_MESSAGE);
|
|
@@ -75,7 +70,7 @@ export default class Measurement {
|
|
|
75
70
|
} else {
|
|
76
71
|
this.#count = 1;
|
|
77
72
|
clearInterval(this.#timerPollingRef);
|
|
78
|
-
onError?.({ scanStatus: "failed", message: "Scan not found" });
|
|
73
|
+
onError?.({ scanStatus: "failed", message: "Scan not found", isMeasured: false });
|
|
79
74
|
}
|
|
80
75
|
}
|
|
81
76
|
} catch (e) {
|
|
@@ -112,7 +107,6 @@ export default class Measurement {
|
|
|
112
107
|
this.#disconnectSocket();
|
|
113
108
|
const url = `${APP_RECOMMENDATION_WEBSOCKET_URL}?scanId=${scanId}`;
|
|
114
109
|
this.#measurementSocketRef = new WebSocket(url);
|
|
115
|
-
|
|
116
110
|
this.#measurementSocketRef.onopen = () => {
|
|
117
111
|
onOpen?.();
|
|
118
112
|
this.#handleTimeOut({ scanId, onSuccess, onError, accessKey });
|
|
@@ -138,3 +132,5 @@ export default class Measurement {
|
|
|
138
132
|
}, 5000);
|
|
139
133
|
};
|
|
140
134
|
}
|
|
135
|
+
|
|
136
|
+
module.exports = Measurement;
|
package/package.json
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@swan-admin/swan-ai-measurements",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.53",
|
|
4
4
|
"description": "provides ai measurement suggestion",
|
|
5
5
|
"main": "index.js",
|
|
6
|
-
"type": "module",
|
|
7
6
|
"dependencies": {
|
|
8
7
|
"@uppy/aws-s3-multipart": "^3.10.2",
|
|
9
8
|
"@uppy/core": "^3.9.3",
|
package/poseDetection.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
const { APP_POSE_DETECTION_WEbSOCKET_URL, REQUIRED_MESSAGE } = require("./constants.js");
|
|
2
|
+
const { io } = require("socket.io-client");
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
class PoseDetection {
|
|
5
5
|
#socketRef = null;
|
|
6
6
|
|
|
7
7
|
connect(accessKey) {
|
|
@@ -51,3 +51,5 @@ export default class PoseDetection {
|
|
|
51
51
|
return !!this.#socketRef?.connected;
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
|
+
|
|
55
|
+
module.exports = PoseDetection;
|
package/tryOn.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
const axios = require("axios");
|
|
2
|
+
const { API_ENDPOINTS, APP_AUTH_BASE_URL, APP_AUTH_WEBSOCKET_URL, REQUIRED_MESSAGE } = require("./constants.js");
|
|
3
|
+
const { checkParameters } = require("./utils.js");
|
|
4
4
|
|
|
5
5
|
class TryOn {
|
|
6
6
|
#tryOnSocketRef = null;
|
|
@@ -155,4 +155,4 @@ class TryOn {
|
|
|
155
155
|
};
|
|
156
156
|
}
|
|
157
157
|
|
|
158
|
-
|
|
158
|
+
module.exports = TryOn;
|
package/utils.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
const { APP_AUTH_BASE_URL, requiredMetaData } = require("./constants.js");
|
|
2
|
+
const axios = require("axios");
|
|
3
|
+
async function fetchData({
|
|
4
4
|
path,
|
|
5
5
|
body,
|
|
6
6
|
queryParams,
|
|
@@ -22,7 +22,7 @@ export async function fetchData({
|
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
const checkParameters = (...args) => {
|
|
26
26
|
for (const element of args) {
|
|
27
27
|
if (!element) {
|
|
28
28
|
return false;
|
|
@@ -31,17 +31,11 @@ export const checkParameters = (...args) => {
|
|
|
31
31
|
return true;
|
|
32
32
|
};
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
const checkMetaDataValue = (arr) => {
|
|
35
35
|
for (const key of requiredMetaData) {
|
|
36
36
|
let hasRequiredKey = false;
|
|
37
37
|
inner: for (const obj of arr) {
|
|
38
|
-
if (
|
|
39
|
-
obj.hasOwnProperty(key) &&
|
|
40
|
-
obj[key] !== undefined &&
|
|
41
|
-
obj[key] !== null &&
|
|
42
|
-
obj[key] !== "" &&
|
|
43
|
-
typeof obj[key] !== "number"
|
|
44
|
-
) {
|
|
38
|
+
if (obj.hasOwnProperty(key) && obj[key] !== undefined && obj[key] !== null && obj[key] !== "" && typeof obj[key] !== "number") {
|
|
45
39
|
hasRequiredKey = true;
|
|
46
40
|
break inner;
|
|
47
41
|
}
|
|
@@ -61,3 +55,5 @@ export const checkMetaDataValue = (arr) => {
|
|
|
61
55
|
}
|
|
62
56
|
return true;
|
|
63
57
|
};
|
|
58
|
+
|
|
59
|
+
module.exports = { checkMetaDataValue, checkParameters, fetchData };
|