@slicemachine/init 1.0.2-alpha.33 → 1.0.2-alpha.37
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/build/index.js +7 -4
- package/build/steps/loginOrBypass.js +6 -4
- package/build/utils/communication.js +76 -0
- package/package.json +3 -3
- package/src/index.ts +10 -8
- package/src/steps/loginOrBypass.ts +15 -6
- package/src/utils/communication.ts +76 -0
package/build/index.js
CHANGED
|
@@ -6,6 +6,7 @@ const tracker_1 = require("./utils/tracker");
|
|
|
6
6
|
const steps_1 = require("./steps");
|
|
7
7
|
const utils_1 = require("./utils");
|
|
8
8
|
async function init() {
|
|
9
|
+
var _a;
|
|
9
10
|
const cwd = (0, utils_1.findArgument)(process.argv, "cwd") || process.cwd();
|
|
10
11
|
const base = (0, utils_1.findArgument)(process.argv, "base") || core_1.Utils.CONSTS.DEFAULT_BASE;
|
|
11
12
|
const lib = (0, utils_1.findArgument)(process.argv, "library");
|
|
@@ -22,9 +23,11 @@ async function init() {
|
|
|
22
23
|
if (!existing) {
|
|
23
24
|
await (0, steps_1.createRepository)(name, frameworkResult.value, config);
|
|
24
25
|
}
|
|
25
|
-
const tracker =
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
const tracker = ((_a = user.profile) === null || _a === void 0 ? void 0 : _a.shortId)
|
|
27
|
+
? tracker_1.Tracker.build("JfTfmHaATChc4xueS7RcCBsixI71dJIJ", name, {
|
|
28
|
+
userId: user.profile.shortId,
|
|
29
|
+
}, isTrackingAvailable)
|
|
30
|
+
: undefined;
|
|
28
31
|
await (0, steps_1.installRequiredDependencies)(cwd, frameworkResult.value);
|
|
29
32
|
const sliceLibPath = lib
|
|
30
33
|
? await (0, steps_1.installLib)(tracker, cwd, lib, branch)
|
|
@@ -41,4 +44,4 @@ catch (error) {
|
|
|
41
44
|
else
|
|
42
45
|
console.error(error);
|
|
43
46
|
}
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsNkNBQXVEO0FBQ3ZELDZDQUEwQztBQUMxQyxtQ0FVaUI7QUFDakIsbUNBQXVDO0FBRXZDLEtBQUssVUFBVSxJQUFJOztJQUNqQixNQUFNLEdBQUcsR0FBRyxJQUFBLG9CQUFZLEVBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDL0QsTUFBTSxJQUFJLEdBQUcsSUFBQSxvQkFBWSxFQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksWUFBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7SUFDN0UsTUFBTSxHQUFHLEdBQXVCLElBQUEsb0JBQVksRUFBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3RFLE1BQU0sTUFBTSxHQUF1QixJQUFBLG9CQUFZLEVBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN4RSxNQUFNLG1CQUFtQixHQUN2QixJQUFBLG9CQUFZLEVBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBRXBFLE9BQU8sQ0FBQyxHQUFHLENBQ1QsWUFBSyxDQUFDLE1BQU0sQ0FDVixvRUFBb0UsQ0FDckUsQ0FDRixDQUFDO0lBR0YsSUFBQSxtQkFBVyxFQUFDLEdBQUcsQ0FBQyxDQUFDO0lBR2pCLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBQSxxQkFBYSxFQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLElBQUksQ0FBQyxJQUFJO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0lBRzVELE1BQU0sTUFBTSxHQUFHLGlCQUFVLENBQUMsMEJBQTBCLENBQUMsR0FBRyxFQUFFLENBQUM7SUFHM0QsTUFBTSxlQUFlLEdBQUcsTUFBTSxJQUFBLHVCQUFlLEVBQUMsR0FBRyxDQUFDLENBQUM7SUFHbkQsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLElBQUEseUJBQWlCLEVBQ2hELE1BQU0sQ0FBQyxPQUFPLEVBQ2QsR0FBRyxFQUNILE1BQU0sQ0FBQyxJQUFJLENBQ1osQ0FBQztJQUVGLElBQUksQ0FBQyxRQUFRLEVBQUU7UUFDYixNQUFNLElBQUEsd0JBQWdCLEVBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDN0Q7SUFFRCxNQUFNLE9BQU8sR0FBRyxDQUFBLE1BQUEsSUFBSSxDQUFDLE9BQU8sMENBQUUsT0FBTztRQUNuQyxDQUFDLENBQUMsaUJBQU8sQ0FBQyxLQUFLLENBQ1gsa0NBQWtDLEVBQ2xDLElBQUksRUFDSjtZQUNFLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU87U0FDN0IsRUFDRCxtQkFBbUIsQ0FDcEI7UUFDSCxDQUFDLENBQUMsU0FBUyxDQUFDO0lBR2QsTUFBTSxJQUFBLG1DQUEyQixFQUFDLEdBQUcsRUFBRSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFOUQsTUFBTSxZQUFZLEdBQUcsR0FBRztRQUN0QixDQUFDLENBQUMsTUFBTSxJQUFBLGtCQUFVLEVBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDO1FBQzdDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFHZCxJQUFBLHdCQUFnQixFQUNkLEdBQUcsRUFDSCxJQUFJLEVBQ0osSUFBSSxFQUNKLGVBQWUsRUFDZixZQUFZLEVBQ1osbUJBQW1CLENBQ3BCLENBQUM7SUFHRixJQUFBLDJCQUFtQixFQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNCLENBQUM7QUFFRCxJQUFJO0lBQ0YsS0FBSyxJQUFJLEVBQUUsQ0FBQztDQUNiO0FBQUMsT0FBTyxLQUFLLEVBQUU7SUFDZCxJQUFJLEtBQUssWUFBWSxLQUFLO1FBQUUsWUFBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7O1FBQ3ZELE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7Q0FDM0IifQ==
|
|
@@ -2,17 +2,19 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.loginOrBypass = void 0;
|
|
4
4
|
const core_1 = require("@slicemachine/core");
|
|
5
|
+
const communication_1 = require("../utils/communication");
|
|
5
6
|
async function loginOrBypass(base) {
|
|
6
|
-
const user = await
|
|
7
|
+
const user = await (0, communication_1.validateSessionAndGetProfile)(base).catch((err) => console.log(err));
|
|
7
8
|
if (user) {
|
|
8
|
-
|
|
9
|
+
const email = user.info.email;
|
|
10
|
+
core_1.Utils.writeCheck(`Logged in as ${core_1.Utils.bold(email)}`);
|
|
9
11
|
return user;
|
|
10
12
|
}
|
|
11
13
|
else {
|
|
12
14
|
await core_1.Auth.login(base);
|
|
13
|
-
const user = await
|
|
15
|
+
const user = await (0, communication_1.validateSessionAndGetProfile)(base);
|
|
14
16
|
return user;
|
|
15
17
|
}
|
|
16
18
|
}
|
|
17
19
|
exports.loginOrBypass = loginOrBypass;
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW5PckJ5cGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGVwcy9sb2dpbk9yQnlwYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFnRTtBQUNoRSwwREFHZ0M7QUFFekIsS0FBSyxVQUFVLGFBQWEsQ0FBQyxJQUFZO0lBSTlDLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBQSw0Q0FBNEIsRUFBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUNsRSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUNqQixDQUFDO0lBQ0YsSUFBSSxJQUFJLEVBQUU7UUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUM5QixZQUFLLENBQUMsVUFBVSxDQUFDLGdCQUFnQixZQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0RCxPQUFPLElBQUksQ0FBQztLQUNiO1NBQU07UUFDTCxNQUFNLFdBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFBLDRDQUE0QixFQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RELE9BQU8sSUFBSSxDQUFDO0tBQ2I7QUFDSCxDQUFDO0FBaEJELHNDQWdCQyJ9
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
22
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
|
+
};
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.validateSessionAndGetProfile = exports.getUserProfile = void 0;
|
|
26
|
+
const axios_1 = __importDefault(require("axios"));
|
|
27
|
+
const t = __importStar(require("io-ts"));
|
|
28
|
+
const function_1 = require("fp-ts/function");
|
|
29
|
+
const Either_1 = require("fp-ts/Either");
|
|
30
|
+
const core_1 = require("@slicemachine/core");
|
|
31
|
+
const UserProfile = t.exact(t.type({
|
|
32
|
+
userId: t.string,
|
|
33
|
+
shortId: t.string,
|
|
34
|
+
email: t.string,
|
|
35
|
+
firstName: t.string,
|
|
36
|
+
lastName: t.string,
|
|
37
|
+
}));
|
|
38
|
+
async function getUserProfile(cookies, base = core_1.Utils.CONSTS.DEFAULT_BASE) {
|
|
39
|
+
const url = new URL(base);
|
|
40
|
+
url.hostname = `user.${url.hostname}`;
|
|
41
|
+
url.pathname = "profile";
|
|
42
|
+
const endpoint = url.toString();
|
|
43
|
+
const token = core_1.Utils.Cookie.parsePrismicAuthToken(cookies);
|
|
44
|
+
return axios_1.default
|
|
45
|
+
.get(endpoint, {
|
|
46
|
+
headers: {
|
|
47
|
+
Authorization: `Bearer Token ${token}`,
|
|
48
|
+
},
|
|
49
|
+
})
|
|
50
|
+
.then((res) => (0, function_1.pipe)(UserProfile.decode(res.data), (0, Either_1.fold)(() => {
|
|
51
|
+
throw new Error("Can't parse user profile");
|
|
52
|
+
}, (data) => data)));
|
|
53
|
+
}
|
|
54
|
+
exports.getUserProfile = getUserProfile;
|
|
55
|
+
async function validateSessionAndGetProfile(base = core_1.Utils.CONSTS.DEFAULT_BASE) {
|
|
56
|
+
const config = core_1.FileSystem.PrismicSharedConfigManager.get();
|
|
57
|
+
if (!config.cookies.length)
|
|
58
|
+
return Promise.resolve(null);
|
|
59
|
+
if (base != config.base)
|
|
60
|
+
return Promise.resolve(null);
|
|
61
|
+
try {
|
|
62
|
+
const info = await core_1.Communication.validateSession(config.cookies, base);
|
|
63
|
+
const profile = await getUserProfile(config.cookies, base).catch(() => null);
|
|
64
|
+
if (profile === null || profile === void 0 ? void 0 : profile.shortId) {
|
|
65
|
+
core_1.FileSystem.PrismicSharedConfigManager.setProperties({
|
|
66
|
+
shortId: profile.shortId,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
return { info, profile };
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.validateSessionAndGetProfile = validateSessionAndGetProfile;
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbXVuaWNhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9jb21tdW5pY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxrREFBMEI7QUFDMUIseUNBQTJCO0FBQzNCLDZDQUFzQztBQUN0Qyx5Q0FBb0M7QUFDcEMsNkNBQXNFO0FBRXRFLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQ3pCLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDTCxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU07SUFDaEIsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNO0lBQ2pCLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTTtJQUNmLFNBQVMsRUFBRSxDQUFDLENBQUMsTUFBTTtJQUNuQixRQUFRLEVBQUUsQ0FBQyxDQUFDLE1BQU07Q0FDbkIsQ0FBQyxDQUNILENBQUM7QUFJSyxLQUFLLFVBQVUsY0FBYyxDQUNsQyxPQUFlLEVBQ2YsSUFBSSxHQUFHLFlBQUssQ0FBQyxNQUFNLENBQUMsWUFBWTtJQUloQyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixHQUFHLENBQUMsUUFBUSxHQUFHLFFBQVEsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3RDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO0lBRXpCLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNoQyxNQUFNLEtBQUssR0FBRyxZQUFLLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRTFELE9BQU8sZUFBSztTQUNULEdBQUcsQ0FBYyxRQUFRLEVBQUU7UUFDMUIsT0FBTyxFQUFFO1lBQ1AsYUFBYSxFQUFFLGdCQUFnQixLQUFLLEVBQUU7U0FDdkM7S0FDRixDQUFDO1NBQ0QsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDWixJQUFBLGVBQUksRUFDRixXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFDNUIsSUFBQSxhQUFJLEVBQ0YsR0FBRyxFQUFFO1FBQ0gsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQzlDLENBQUMsRUFDRCxDQUFDLElBQWlCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FDNUIsQ0FDRixDQUNGLENBQUM7QUFDTixDQUFDO0FBOUJELHdDQThCQztBQUVNLEtBQUssVUFBVSw0QkFBNEIsQ0FDaEQsSUFBSSxHQUFHLFlBQUssQ0FBQyxNQUFNLENBQUMsWUFBWTtJQUtoQyxNQUFNLE1BQU0sR0FBRyxpQkFBVSxDQUFDLDBCQUEwQixDQUFDLEdBQUcsRUFBRSxDQUFDO0lBRTNELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU07UUFBRSxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekQsSUFBSSxJQUFJLElBQUksTUFBTSxDQUFDLElBQUk7UUFBRSxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFdEQsSUFBSTtRQUNGLE1BQU0sSUFBSSxHQUFHLE1BQU0sb0JBQWEsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN2RSxNQUFNLE9BQU8sR0FBRyxNQUFNLGNBQWMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FDOUQsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUNYLENBQUM7UUFDRixJQUFJLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxPQUFPLEVBQUU7WUFDcEIsaUJBQVUsQ0FBQywwQkFBMEIsQ0FBQyxhQUFhLENBQUM7Z0JBQ2xELE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTzthQUN6QixDQUFDLENBQUM7U0FDSjtRQUNELE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7S0FDMUI7SUFBQyxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUM7S0FDYjtBQUNILENBQUM7QUF6QkQsb0VBeUJDIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@slicemachine/init",
|
|
3
|
-
"version": "1.0.2-alpha.
|
|
3
|
+
"version": "1.0.2-alpha.37",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "The easiest way to add Slice Machine to your project",
|
|
6
6
|
"bin": {
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"typescript": "^4.4.3"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@slicemachine/core": "1.0.2-alpha.
|
|
49
|
+
"@slicemachine/core": "1.0.2-alpha.37",
|
|
50
50
|
"adm-zip": "^0.5.9",
|
|
51
51
|
"analytics-node": "^6.0.0",
|
|
52
52
|
"axios": "^0.24.0",
|
|
@@ -56,5 +56,5 @@
|
|
|
56
56
|
"io-ts": "^2.2.16",
|
|
57
57
|
"tmp": "^0.2.1"
|
|
58
58
|
},
|
|
59
|
-
"gitHead": "
|
|
59
|
+
"gitHead": "3905fa35d8f027fe7ff94c548ac43cb43ea73871"
|
|
60
60
|
}
|
package/src/index.ts
CHANGED
|
@@ -53,14 +53,16 @@ async function init() {
|
|
|
53
53
|
await createRepository(name, frameworkResult.value, config);
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
const tracker =
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
56
|
+
const tracker = user.profile?.shortId
|
|
57
|
+
? Tracker.build(
|
|
58
|
+
"JfTfmHaATChc4xueS7RcCBsixI71dJIJ",
|
|
59
|
+
name,
|
|
60
|
+
{
|
|
61
|
+
userId: user.profile.shortId,
|
|
62
|
+
},
|
|
63
|
+
isTrackingAvailable
|
|
64
|
+
)
|
|
65
|
+
: undefined;
|
|
64
66
|
|
|
65
67
|
// install the required dependencies in the project.
|
|
66
68
|
await installRequiredDependencies(cwd, frameworkResult.value);
|
|
@@ -1,14 +1,23 @@
|
|
|
1
|
-
import { Utils, Auth } from "@slicemachine/core";
|
|
2
|
-
import {
|
|
1
|
+
import { Utils, Communication, Auth } from "@slicemachine/core";
|
|
2
|
+
import {
|
|
3
|
+
validateSessionAndGetProfile,
|
|
4
|
+
UserProfile,
|
|
5
|
+
} from "../utils/communication";
|
|
3
6
|
|
|
4
|
-
export async function loginOrBypass(base: string): Promise<
|
|
5
|
-
|
|
7
|
+
export async function loginOrBypass(base: string): Promise<{
|
|
8
|
+
info: Communication.UserInfo;
|
|
9
|
+
profile: UserProfile | null;
|
|
10
|
+
} | null> {
|
|
11
|
+
const user = await validateSessionAndGetProfile(base).catch((err) =>
|
|
12
|
+
console.log(err)
|
|
13
|
+
);
|
|
6
14
|
if (user) {
|
|
7
|
-
|
|
15
|
+
const email = user.info.email;
|
|
16
|
+
Utils.writeCheck(`Logged in as ${Utils.bold(email)}`);
|
|
8
17
|
return user;
|
|
9
18
|
} else {
|
|
10
19
|
await Auth.login(base);
|
|
11
|
-
const user = await
|
|
20
|
+
const user = await validateSessionAndGetProfile(base);
|
|
12
21
|
return user;
|
|
13
22
|
}
|
|
14
23
|
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import axios from "axios";
|
|
2
|
+
import * as t from "io-ts";
|
|
3
|
+
import { pipe } from "fp-ts/function";
|
|
4
|
+
import { fold } from "fp-ts/Either";
|
|
5
|
+
import { Utils, Communication, FileSystem } from "@slicemachine/core";
|
|
6
|
+
|
|
7
|
+
const UserProfile = t.exact(
|
|
8
|
+
t.type({
|
|
9
|
+
userId: t.string,
|
|
10
|
+
shortId: t.string,
|
|
11
|
+
email: t.string,
|
|
12
|
+
firstName: t.string,
|
|
13
|
+
lastName: t.string,
|
|
14
|
+
})
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
export type UserProfile = t.TypeOf<typeof UserProfile>;
|
|
18
|
+
|
|
19
|
+
export async function getUserProfile(
|
|
20
|
+
cookies: string,
|
|
21
|
+
base = Utils.CONSTS.DEFAULT_BASE
|
|
22
|
+
): Promise<UserProfile> {
|
|
23
|
+
// note the auth server also provides a userId
|
|
24
|
+
|
|
25
|
+
const url = new URL(base);
|
|
26
|
+
url.hostname = `user.${url.hostname}`;
|
|
27
|
+
url.pathname = "profile";
|
|
28
|
+
|
|
29
|
+
const endpoint = url.toString();
|
|
30
|
+
const token = Utils.Cookie.parsePrismicAuthToken(cookies);
|
|
31
|
+
|
|
32
|
+
return axios
|
|
33
|
+
.get<UserProfile>(endpoint, {
|
|
34
|
+
headers: {
|
|
35
|
+
Authorization: `Bearer Token ${token}`,
|
|
36
|
+
},
|
|
37
|
+
})
|
|
38
|
+
.then((res) =>
|
|
39
|
+
pipe(
|
|
40
|
+
UserProfile.decode(res.data),
|
|
41
|
+
fold<t.Errors, UserProfile, UserProfile>(
|
|
42
|
+
() => {
|
|
43
|
+
throw new Error("Can't parse user profile");
|
|
44
|
+
},
|
|
45
|
+
(data: UserProfile) => data
|
|
46
|
+
)
|
|
47
|
+
)
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export async function validateSessionAndGetProfile(
|
|
52
|
+
base = Utils.CONSTS.DEFAULT_BASE
|
|
53
|
+
): Promise<{
|
|
54
|
+
info: Communication.UserInfo;
|
|
55
|
+
profile: UserProfile | null;
|
|
56
|
+
} | null> {
|
|
57
|
+
const config = FileSystem.PrismicSharedConfigManager.get();
|
|
58
|
+
|
|
59
|
+
if (!config.cookies.length) return Promise.resolve(null); // default config, logged out.
|
|
60
|
+
if (base != config.base) return Promise.resolve(null); // not the same base so it doesn't
|
|
61
|
+
|
|
62
|
+
try {
|
|
63
|
+
const info = await Communication.validateSession(config.cookies, base);
|
|
64
|
+
const profile = await getUserProfile(config.cookies, base).catch(
|
|
65
|
+
() => null
|
|
66
|
+
);
|
|
67
|
+
if (profile?.shortId) {
|
|
68
|
+
FileSystem.PrismicSharedConfigManager.setProperties({
|
|
69
|
+
shortId: profile.shortId,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
return { info, profile };
|
|
73
|
+
} catch {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
}
|