@slicemachine/init 1.0.2-alpha.21 → 1.0.2-alpha.25
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 +11 -3
- package/build/steps/install-lib.js +3 -2
- package/build/steps/loginOrBypass.js +9 -4
- package/build/utils/tracker.js +44 -0
- package/package.json +5 -3
- package/src/index.ts +10 -2
- package/src/steps/install-lib.ts +3 -0
- package/src/steps/loginOrBypass.ts +10 -3
- package/src/utils/tracker.ts +54 -0
package/build/index.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
const core_1 = require("@slicemachine/core");
|
|
5
|
+
const tracker_1 = require("./utils/tracker");
|
|
5
6
|
const steps_1 = require("./steps");
|
|
6
7
|
const utils_1 = require("./utils");
|
|
7
8
|
async function init() {
|
|
@@ -11,15 +12,22 @@ async function init() {
|
|
|
11
12
|
const branch = (0, utils_1.findArgument)(process.argv, "branch");
|
|
12
13
|
console.log(core_1.Utils.purple("You're about to configure Slicemachine... Press ctrl + C to cancel"));
|
|
13
14
|
(0, steps_1.validatePkg)(cwd);
|
|
14
|
-
await (0, steps_1.loginOrBypass)(base);
|
|
15
|
+
const user = await (0, steps_1.loginOrBypass)(base);
|
|
16
|
+
if (!user)
|
|
17
|
+
throw new Error("The user should be logged in!");
|
|
15
18
|
const config = core_1.FileSystem.PrismicSharedConfigManager.get();
|
|
16
19
|
const frameworkResult = await (0, steps_1.detectFramework)(cwd);
|
|
17
20
|
const { existing, name } = await (0, steps_1.maybeExistingRepo)(config.cookies, cwd, config.base);
|
|
18
21
|
if (!existing) {
|
|
19
22
|
await (0, steps_1.createRepository)(name, frameworkResult.value, config);
|
|
20
23
|
}
|
|
24
|
+
const tracker = tracker_1.Tracker.build("JfTfmHaATChc4xueS7RcCBsixI71dJIJ", name, {
|
|
25
|
+
userId: user.userId,
|
|
26
|
+
});
|
|
21
27
|
await (0, steps_1.installRequiredDependencies)(cwd, frameworkResult.value);
|
|
22
|
-
const sliceLibPath = lib
|
|
28
|
+
const sliceLibPath = lib
|
|
29
|
+
? await (0, steps_1.installLib)(tracker, cwd, lib, branch)
|
|
30
|
+
: undefined;
|
|
23
31
|
(0, steps_1.configureProject)(cwd, base, name, frameworkResult, sliceLibPath);
|
|
24
32
|
(0, steps_1.displayFinalMessage)(cwd);
|
|
25
33
|
}
|
|
@@ -32,4 +40,4 @@ catch (error) {
|
|
|
32
40
|
else
|
|
33
41
|
console.error(error);
|
|
34
42
|
}
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsNkNBQXVEO0FBQ3ZELDZDQUEwQztBQUMxQyxtQ0FVaUI7QUFDakIsbUNBQXVDO0FBRXZDLEtBQUssVUFBVSxJQUFJO0lBQ2pCLE1BQU0sR0FBRyxHQUFHLElBQUEsb0JBQVksRUFBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUMvRCxNQUFNLElBQUksR0FBRyxJQUFBLG9CQUFZLEVBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxZQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztJQUM3RSxNQUFNLEdBQUcsR0FBdUIsSUFBQSxvQkFBWSxFQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDdEUsTUFBTSxNQUFNLEdBQXVCLElBQUEsb0JBQVksRUFBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRXhFLE9BQU8sQ0FBQyxHQUFHLENBQ1QsWUFBSyxDQUFDLE1BQU0sQ0FDVixvRUFBb0UsQ0FDckUsQ0FDRixDQUFDO0lBR0YsSUFBQSxtQkFBVyxFQUFDLEdBQUcsQ0FBQyxDQUFDO0lBR2pCLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBQSxxQkFBYSxFQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLElBQUksQ0FBQyxJQUFJO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0lBRzVELE1BQU0sTUFBTSxHQUFHLGlCQUFVLENBQUMsMEJBQTBCLENBQUMsR0FBRyxFQUFFLENBQUM7SUFHM0QsTUFBTSxlQUFlLEdBQUcsTUFBTSxJQUFBLHVCQUFlLEVBQUMsR0FBRyxDQUFDLENBQUM7SUFHbkQsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLElBQUEseUJBQWlCLEVBQ2hELE1BQU0sQ0FBQyxPQUFPLEVBQ2QsR0FBRyxFQUNILE1BQU0sQ0FBQyxJQUFJLENBQ1osQ0FBQztJQUVGLElBQUksQ0FBQyxRQUFRLEVBQUU7UUFDYixNQUFNLElBQUEsd0JBQWdCLEVBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDN0Q7SUFFRCxNQUFNLE9BQU8sR0FBRyxpQkFBTyxDQUFDLEtBQUssQ0FBQyxrQ0FBa0MsRUFBRSxJQUFJLEVBQUU7UUFDdEUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO0tBQ3BCLENBQUMsQ0FBQztJQUdILE1BQU0sSUFBQSxtQ0FBMkIsRUFBQyxHQUFHLEVBQUUsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTlELE1BQU0sWUFBWSxHQUFHLEdBQUc7UUFDdEIsQ0FBQyxDQUFDLE1BQU0sSUFBQSxrQkFBVSxFQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQztRQUM3QyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBR2QsSUFBQSx3QkFBZ0IsRUFBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFHakUsSUFBQSwyQkFBbUIsRUFBQyxHQUFHLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBRUQsSUFBSTtJQUNGLEtBQUssSUFBSSxFQUFFLENBQUM7Q0FDYjtBQUFDLE9BQU8sS0FBSyxFQUFFO0lBQ2QsSUFBSSxLQUFLLFlBQVksS0FBSztRQUFFLFlBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDOztRQUN2RCxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0NBQzNCIn0=
|
|
@@ -34,7 +34,7 @@ const downloadFile = async (reqUrl) => {
|
|
|
34
34
|
}
|
|
35
35
|
});
|
|
36
36
|
};
|
|
37
|
-
async function installLib(cwd, libGithubPath, branch = "main") {
|
|
37
|
+
async function installLib(tracker, cwd, libGithubPath, branch = "main") {
|
|
38
38
|
const spinner = core_1.Utils.spinner(`Installing the ${libGithubPath} lib in your project...`);
|
|
39
39
|
try {
|
|
40
40
|
spinner.start();
|
|
@@ -69,6 +69,7 @@ async function installLib(cwd, libGithubPath, branch = "main") {
|
|
|
69
69
|
return `~/${name}/${path.replace("src/", "")}`;
|
|
70
70
|
});
|
|
71
71
|
spinner.succeed(`Slice library "${libGithubPath}" was installed successfully`);
|
|
72
|
+
tracker === null || tracker === void 0 ? void 0 : tracker.Track.downloadLibrary(libGithubPath);
|
|
72
73
|
return localLibs;
|
|
73
74
|
}
|
|
74
75
|
catch {
|
|
@@ -77,4 +78,4 @@ async function installLib(cwd, libGithubPath, branch = "main") {
|
|
|
77
78
|
}
|
|
78
79
|
}
|
|
79
80
|
exports.installLib = installLib;
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFsbC1saWIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RlcHMvaW5zdGFsbC1saWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNkNBQTJDO0FBQzNDLDhDQUFzQjtBQUN0QixzREFBNkI7QUFDN0Isd0RBQStCO0FBQy9CLGtEQUEwQjtBQUUxQiw0Q0FBb0I7QUFDcEIsZ0RBQXdCO0FBQ3hCLHlDQUEwQztBQUMxQyw0REFBdUU7QUFDdkUsZ0ZBQW1GO0FBQ25GLDJFQUdzRDtBQUN0RCxxRkFBNkQ7QUFHN0QsTUFBTSxZQUFZLEdBQUcsS0FBSyxFQUFFLE1BQWMsRUFBbUIsRUFBRTtJQUM3RCxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUEsZUFBSyxFQUFDO1FBQ3RCLE1BQU0sRUFBRSxLQUFLO1FBQ2IsR0FBRyxFQUFFLE1BQU07UUFDWCxZQUFZLEVBQUUsYUFBYTtLQUM1QixDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3JDLElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLEVBQUU7WUFDckIsTUFBTSxVQUFVLEdBQUcsYUFBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sR0FBRyxHQUFHLElBQUksaUJBQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakMsR0FBRyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM3QixPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDckI7YUFBTTtZQUNMLE1BQU0sRUFBRSxDQUFDO1NBQ1Y7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVLLEtBQUssVUFBVSxVQUFVLENBQzlCLE9BQTRCLEVBQzVCLEdBQVcsRUFDWCxhQUFxQixFQUNyQixTQUE2QixNQUFNO0lBRW5DLE1BQU0sT0FBTyxHQUFHLFlBQUssQ0FBQyxPQUFP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
|
|
@@ -4,10 +4,15 @@ exports.loginOrBypass = void 0;
|
|
|
4
4
|
const core_1 = require("@slicemachine/core");
|
|
5
5
|
async function loginOrBypass(base) {
|
|
6
6
|
const user = await core_1.Auth.validateSession(base);
|
|
7
|
-
if (user)
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
if (user) {
|
|
8
|
+
core_1.Utils.writeCheck(`Logged in as ${core_1.Utils.bold(user.email)}`);
|
|
9
|
+
return user;
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
10
12
|
await core_1.Auth.login(base);
|
|
13
|
+
const user = await core_1.Auth.validateSession(base);
|
|
14
|
+
return user;
|
|
15
|
+
}
|
|
11
16
|
}
|
|
12
17
|
exports.loginOrBypass = loginOrBypass;
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW5PckJ5cGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGVwcy9sb2dpbk9yQnlwYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFpRDtBQUcxQyxLQUFLLFVBQVUsYUFBYSxDQUFDLElBQVk7SUFDOUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxXQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlDLElBQUksSUFBSSxFQUFFO1FBQ1IsWUFBSyxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsWUFBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNELE9BQU8sSUFBSSxDQUFDO0tBQ2I7U0FBTTtRQUNMLE1BQU0sV0FBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QixNQUFNLElBQUksR0FBRyxNQUFNLFdBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUMsT0FBTyxJQUFJLENBQUM7S0FDYjtBQUNILENBQUM7QUFWRCxzQ0FVQyJ9
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Tracker = exports.EventType = void 0;
|
|
7
|
+
const analytics_node_1 = __importDefault(require("analytics-node"));
|
|
8
|
+
var EventType;
|
|
9
|
+
(function (EventType) {
|
|
10
|
+
EventType["DownloadLibrary"] = "SliceMachine Download Library";
|
|
11
|
+
})(EventType = exports.EventType || (exports.EventType = {}));
|
|
12
|
+
class Tracker {
|
|
13
|
+
constructor(analytics, repo, identifier) {
|
|
14
|
+
this.analytics = analytics;
|
|
15
|
+
this.repo = repo;
|
|
16
|
+
this.identifier = identifier;
|
|
17
|
+
this.Track = {
|
|
18
|
+
downloadLibrary: (library) => {
|
|
19
|
+
this.trackEvent(EventType.DownloadLibrary, { library });
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
static build(writeKey, repo, identifier) {
|
|
24
|
+
try {
|
|
25
|
+
if (!repo)
|
|
26
|
+
return;
|
|
27
|
+
const analytics = new analytics_node_1.default(writeKey);
|
|
28
|
+
return new Tracker(analytics, repo, identifier);
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
console.warn(error);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
trackEvent(eventType, attributes = {}) {
|
|
36
|
+
this.analytics.track({
|
|
37
|
+
event: eventType,
|
|
38
|
+
...this.identifier,
|
|
39
|
+
properties: attributes,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.Tracker = Tracker;
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2tlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy90cmFja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQVFBLG9FQUE2QztBQUU3QyxJQUFZLFNBRVg7QUFGRCxXQUFZLFNBQVM7SUFDbkIsOERBQWlELENBQUE7QUFDbkQsQ0FBQyxFQUZXLFNBQVMsR0FBVCxpQkFBUyxLQUFULGlCQUFTLFFBRXBCO0FBRUQsTUFBYSxPQUFPO0lBQ2xCLFlBQ1csU0FBMEIsRUFDMUIsSUFBWSxFQUNaLFVBQXdEO1FBRnhELGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQzFCLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixlQUFVLEdBQVYsVUFBVSxDQUE4QztRQTZCbkUsVUFBSyxHQUFHO1lBRU4sZUFBZSxFQUFFLENBQUMsT0FBZSxFQUFFLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLGVBQWUsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDMUQsQ0FBQztTQUNGLENBQUM7SUFqQ0MsQ0FBQztJQUVKLE1BQU0sQ0FBQyxLQUFLLENBQ1YsUUFBZ0IsRUFDaEIsSUFBd0IsRUFDeEIsVUFBd0Q7UUFFeEQsSUFBSTtZQUNGLElBQUksQ0FBQyxJQUFJO2dCQUFFLE9BQU87WUFDbEIsTUFBTSxTQUFTLEdBQUcsSUFBSSx3QkFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2hELE9BQU8sSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztTQUNqRDtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwQixPQUFPO1NBQ1I7SUFDSCxDQUFDO0lBRU8sVUFBVSxDQUNoQixTQUFvQixFQUNwQixhQUFzQyxFQUFFO1FBRXhDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1lBQ25CLEtBQUssRUFBRSxTQUFTO1lBQ2hCLEdBQUcsSUFBSSxDQUFDLFVBQVU7WUFDbEIsVUFBVSxFQUFFLFVBQVU7U0FDdkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQVFGO0FBdkNELDBCQXVDQyJ9
|
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.25",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "The easiest way to add Slice Machine to your project",
|
|
6
6
|
"bin": {
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"@babel/preset-env": "^7.15.8",
|
|
25
25
|
"@babel/preset-typescript": "^7.15.0",
|
|
26
26
|
"@types/adm-zip": "^0.4.34",
|
|
27
|
+
"@types/analytics-node": "^3.1.7",
|
|
27
28
|
"@types/fs-extra": "^9.0.13",
|
|
28
29
|
"@types/inquirer": "^8.1.3",
|
|
29
30
|
"@types/jest": "^27.0.2",
|
|
@@ -45,8 +46,9 @@
|
|
|
45
46
|
"typescript": "^4.4.3"
|
|
46
47
|
},
|
|
47
48
|
"dependencies": {
|
|
48
|
-
"@slicemachine/core": "1.0.2-alpha.
|
|
49
|
+
"@slicemachine/core": "1.0.2-alpha.25",
|
|
49
50
|
"adm-zip": "^0.5.9",
|
|
51
|
+
"analytics-node": "^6.0.0",
|
|
50
52
|
"axios": "^0.24.0",
|
|
51
53
|
"fp-ts": "^2.11.5",
|
|
52
54
|
"fs-extra": "^10.0.0",
|
|
@@ -54,5 +56,5 @@
|
|
|
54
56
|
"io-ts": "^2.2.16",
|
|
55
57
|
"tmp": "^0.2.1"
|
|
56
58
|
},
|
|
57
|
-
"gitHead": "
|
|
59
|
+
"gitHead": "802d151e175b3719834f97b45a7871083b96bfdc"
|
|
58
60
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
import { Utils, FileSystem } from "@slicemachine/core";
|
|
4
|
+
import { Tracker } from "./utils/tracker";
|
|
4
5
|
import {
|
|
5
6
|
installRequiredDependencies,
|
|
6
7
|
validatePkg,
|
|
@@ -30,7 +31,8 @@ async function init() {
|
|
|
30
31
|
validatePkg(cwd);
|
|
31
32
|
|
|
32
33
|
// login
|
|
33
|
-
await loginOrBypass(base);
|
|
34
|
+
const user = await loginOrBypass(base);
|
|
35
|
+
if (!user) throw new Error("The user should be logged in!");
|
|
34
36
|
|
|
35
37
|
// retrieve tokens for api calls
|
|
36
38
|
const config = FileSystem.PrismicSharedConfigManager.get();
|
|
@@ -49,10 +51,16 @@ async function init() {
|
|
|
49
51
|
await createRepository(name, frameworkResult.value, config);
|
|
50
52
|
}
|
|
51
53
|
|
|
54
|
+
const tracker = Tracker.build("JfTfmHaATChc4xueS7RcCBsixI71dJIJ", name, {
|
|
55
|
+
userId: user.userId,
|
|
56
|
+
});
|
|
57
|
+
|
|
52
58
|
// install the required dependencies in the project.
|
|
53
59
|
await installRequiredDependencies(cwd, frameworkResult.value);
|
|
54
60
|
|
|
55
|
-
const sliceLibPath = lib
|
|
61
|
+
const sliceLibPath = lib
|
|
62
|
+
? await installLib(tracker, cwd, lib, branch)
|
|
63
|
+
: undefined;
|
|
56
64
|
|
|
57
65
|
// configure the SM.json file and the json package file of the project..
|
|
58
66
|
configureProject(cwd, base, name, frameworkResult, sliceLibPath);
|
package/src/steps/install-lib.ts
CHANGED
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
ManifestHelper,
|
|
15
15
|
} from "@slicemachine/core/build/src/models/Manifest";
|
|
16
16
|
import Files from "@slicemachine/core/build/src/utils/files";
|
|
17
|
+
import { Tracker } from "../utils/tracker";
|
|
17
18
|
|
|
18
19
|
const downloadFile = async (reqUrl: string): Promise<string> => {
|
|
19
20
|
const res = await axios({
|
|
@@ -35,6 +36,7 @@ const downloadFile = async (reqUrl: string): Promise<string> => {
|
|
|
35
36
|
};
|
|
36
37
|
|
|
37
38
|
export async function installLib(
|
|
39
|
+
tracker: Tracker | undefined,
|
|
38
40
|
cwd: string,
|
|
39
41
|
libGithubPath: string,
|
|
40
42
|
branch: string | undefined = "main"
|
|
@@ -101,6 +103,7 @@ export async function installLib(
|
|
|
101
103
|
`Slice library "${libGithubPath}" was installed successfully`
|
|
102
104
|
);
|
|
103
105
|
|
|
106
|
+
tracker?.Track.downloadLibrary(libGithubPath);
|
|
104
107
|
return localLibs;
|
|
105
108
|
} catch {
|
|
106
109
|
spinner.fail(`Error installing ${libGithubPath} lib!`);
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import { Utils, Auth } from "@slicemachine/core";
|
|
2
|
+
import { UserInfo } from "@slicemachine/core/build/src/core/communication";
|
|
2
3
|
|
|
3
|
-
export async function loginOrBypass(base: string): Promise<
|
|
4
|
+
export async function loginOrBypass(base: string): Promise<UserInfo | null> {
|
|
4
5
|
const user = await Auth.validateSession(base);
|
|
5
|
-
if (user)
|
|
6
|
-
|
|
6
|
+
if (user) {
|
|
7
|
+
Utils.writeCheck(`Logged in as ${Utils.bold(user.email)}`);
|
|
8
|
+
return user;
|
|
9
|
+
} else {
|
|
10
|
+
await Auth.login(base);
|
|
11
|
+
const user = await Auth.validateSession(base);
|
|
12
|
+
return user;
|
|
13
|
+
}
|
|
7
14
|
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* DUPLICATION
|
|
3
|
+
* this file is a duplication of ServerTracker in sm-ui
|
|
4
|
+
* this duplication has been done on purpose to simplify the merge if init becomes part of sm-ui
|
|
5
|
+
* or if we decide to share the tracker implementation from a lib, but it'll need some refactoring
|
|
6
|
+
* Duplication means no entanglement so don't merge this with the other implem and keep the structure.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import ServerAnalytics from "analytics-node";
|
|
10
|
+
|
|
11
|
+
export enum EventType {
|
|
12
|
+
DownloadLibrary = "SliceMachine Download Library",
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export class Tracker {
|
|
16
|
+
constructor(
|
|
17
|
+
readonly analytics: ServerAnalytics,
|
|
18
|
+
readonly repo: string,
|
|
19
|
+
readonly identifier: { userId: string } | { anonymousId: string }
|
|
20
|
+
) {}
|
|
21
|
+
|
|
22
|
+
static build(
|
|
23
|
+
writeKey: string,
|
|
24
|
+
repo: string | undefined,
|
|
25
|
+
identifier: { userId: string } | { anonymousId: string }
|
|
26
|
+
): Tracker | undefined {
|
|
27
|
+
try {
|
|
28
|
+
if (!repo) return;
|
|
29
|
+
const analytics = new ServerAnalytics(writeKey);
|
|
30
|
+
return new Tracker(analytics, repo, identifier);
|
|
31
|
+
} catch (error) {
|
|
32
|
+
console.warn(error);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
private trackEvent(
|
|
38
|
+
eventType: EventType,
|
|
39
|
+
attributes: Record<string, unknown> = {}
|
|
40
|
+
): void {
|
|
41
|
+
this.analytics.track({
|
|
42
|
+
event: eventType,
|
|
43
|
+
...this.identifier,
|
|
44
|
+
properties: attributes,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
Track = {
|
|
49
|
+
// not called, for demo only
|
|
50
|
+
downloadLibrary: (library: string) => {
|
|
51
|
+
this.trackEvent(EventType.DownloadLibrary, { library });
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
}
|