@slicemachine/manager 0.1.1-dev-plugins-validation.1 → 0.1.1-dev-plugins-m1-validation.0
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/constants/API_ENDPOINTS.cjs +6 -5
- package/dist/constants/API_ENDPOINTS.cjs.map +1 -1
- package/dist/constants/API_ENDPOINTS.js +6 -5
- package/dist/constants/API_ENDPOINTS.js.map +1 -1
- package/dist/lib/addTrailingSlash.cjs +7 -0
- package/dist/lib/addTrailingSlash.cjs.map +1 -0
- package/dist/lib/addTrailingSlash.d.ts +1 -0
- package/dist/lib/addTrailingSlash.js +7 -0
- package/dist/lib/addTrailingSlash.js.map +1 -0
- package/dist/lib/decodeSliceMachineConfig.cjs +0 -1
- package/dist/lib/decodeSliceMachineConfig.cjs.map +1 -1
- package/dist/lib/decodeSliceMachineConfig.js +0 -1
- package/dist/lib/decodeSliceMachineConfig.js.map +1 -1
- package/dist/lib/locateFileUpward.cjs.map +1 -1
- package/dist/lib/locateFileUpward.js.map +1 -1
- package/dist/managers/SliceMachineManager.cjs +7 -7
- package/dist/managers/SliceMachineManager.cjs.map +1 -1
- package/dist/managers/SliceMachineManager.d.ts +0 -4
- package/dist/managers/SliceMachineManager.js +7 -7
- package/dist/managers/SliceMachineManager.js.map +1 -1
- package/dist/managers/prismicRepository/PrismicRepositoryManager.cjs +18 -2
- package/dist/managers/prismicRepository/PrismicRepositoryManager.cjs.map +1 -1
- package/dist/managers/prismicRepository/PrismicRepositoryManager.js +18 -2
- package/dist/managers/prismicRepository/PrismicRepositoryManager.js.map +1 -1
- package/dist/managers/project/ProjectManager.cjs.map +1 -1
- package/dist/managers/project/ProjectManager.js.map +1 -1
- package/dist/managers/screenshots/ScreenshotsManager.cjs +7 -1
- package/dist/managers/screenshots/ScreenshotsManager.cjs.map +1 -1
- package/dist/managers/screenshots/ScreenshotsManager.js +7 -1
- package/dist/managers/screenshots/ScreenshotsManager.js.map +1 -1
- package/dist/managers/slices/SlicesManager.cjs +27 -19
- package/dist/managers/slices/SlicesManager.cjs.map +1 -1
- package/dist/managers/slices/SlicesManager.d.ts +5 -1
- package/dist/managers/slices/SlicesManager.js +27 -19
- package/dist/managers/slices/SlicesManager.js.map +1 -1
- package/dist/managers/telemetry/TelemetryManager.cjs +39 -12
- package/dist/managers/telemetry/TelemetryManager.cjs.map +1 -1
- package/dist/managers/telemetry/TelemetryManager.d.ts +14 -1
- package/dist/managers/telemetry/TelemetryManager.js +39 -12
- package/dist/managers/telemetry/TelemetryManager.js.map +1 -1
- package/dist/managers/telemetry/types.cjs +0 -4
- package/dist/managers/telemetry/types.cjs.map +1 -1
- package/dist/managers/telemetry/types.d.ts +5 -30
- package/dist/managers/telemetry/types.js +0 -4
- package/dist/managers/telemetry/types.js.map +1 -1
- package/dist/types.d.ts +0 -1
- package/package.json +5 -4
- package/src/constants/API_ENDPOINTS.ts +8 -5
- package/src/lib/addTrailingSlash.ts +5 -0
- package/src/lib/decodeSliceMachineConfig.ts +0 -1
- package/src/lib/locateFileUpward.ts +0 -1
- package/src/managers/SliceMachineManager.ts +9 -9
- package/src/managers/prismicRepository/PrismicRepositoryManager.ts +24 -2
- package/src/managers/project/ProjectManager.ts +0 -1
- package/src/managers/screenshots/ScreenshotsManager.ts +11 -1
- package/src/managers/slices/SlicesManager.ts +34 -29
- package/src/managers/telemetry/TelemetryManager.ts +77 -13
- package/src/managers/telemetry/types.ts +6 -32
- package/src/types.ts +0 -2
|
@@ -14,6 +14,11 @@ import {
|
|
|
14
14
|
SegmentEvents,
|
|
15
15
|
} from "./types";
|
|
16
16
|
|
|
17
|
+
type TelemetryManagerInitTelemetryArgs = {
|
|
18
|
+
appName: string;
|
|
19
|
+
appVersion: string;
|
|
20
|
+
};
|
|
21
|
+
|
|
17
22
|
type TelemetryManagerTrackArgs = SegmentEvents;
|
|
18
23
|
|
|
19
24
|
type TelemetryManagerIdentifyArgs = {
|
|
@@ -21,6 +26,21 @@ type TelemetryManagerIdentifyArgs = {
|
|
|
21
26
|
intercomHash: string;
|
|
22
27
|
};
|
|
23
28
|
|
|
29
|
+
type TelemetryManagerGroupArgs = {
|
|
30
|
+
repositoryName: string;
|
|
31
|
+
manualLibsCount: number;
|
|
32
|
+
downloadedLibsCount: number;
|
|
33
|
+
npmLibsCount: number;
|
|
34
|
+
downloadedLibs: string[];
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
type TelemetryManagerContext = {
|
|
38
|
+
app: {
|
|
39
|
+
name: string;
|
|
40
|
+
version: string;
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
|
|
24
44
|
function assertTelemetryInitialized(
|
|
25
45
|
segmentClient: SegmentClient | undefined,
|
|
26
46
|
): asserts segmentClient is NonNullable<typeof segmentClient> {
|
|
@@ -35,8 +55,9 @@ export class TelemetryManager extends BaseManager {
|
|
|
35
55
|
private _segmentClient: SegmentClient | undefined = undefined;
|
|
36
56
|
private _anonymousID: string | undefined = undefined;
|
|
37
57
|
private _userID: string | undefined = undefined;
|
|
58
|
+
private _context: TelemetryManagerContext | undefined = undefined;
|
|
38
59
|
|
|
39
|
-
async initTelemetry(): Promise<void> {
|
|
60
|
+
async initTelemetry(args: TelemetryManagerInitTelemetryArgs): Promise<void> {
|
|
40
61
|
if (this._segmentClient) {
|
|
41
62
|
// Prevent subsequent initializations.
|
|
42
63
|
return;
|
|
@@ -55,6 +76,7 @@ export class TelemetryManager extends BaseManager {
|
|
|
55
76
|
},
|
|
56
77
|
});
|
|
57
78
|
this._anonymousID = randomUUID();
|
|
79
|
+
this._context = { app: { name: args.appName, version: args.appVersion } };
|
|
58
80
|
}
|
|
59
81
|
|
|
60
82
|
// TODO: Should `userId` be automatically populated by the logged in
|
|
@@ -67,7 +89,7 @@ export class TelemetryManager extends BaseManager {
|
|
|
67
89
|
userId?: string;
|
|
68
90
|
anonymousId?: string;
|
|
69
91
|
properties?: Record<string, unknown>;
|
|
70
|
-
context?: {
|
|
92
|
+
context?: Partial<TelemetryManagerContext> & {
|
|
71
93
|
groupId?: {
|
|
72
94
|
Repository?: string;
|
|
73
95
|
};
|
|
@@ -75,9 +97,11 @@ export class TelemetryManager extends BaseManager {
|
|
|
75
97
|
} = {
|
|
76
98
|
event: HumanSegmentEventType[event],
|
|
77
99
|
properties: {
|
|
100
|
+
nodeVersion: process.versions.node,
|
|
78
101
|
repo: repository,
|
|
79
102
|
...properties,
|
|
80
103
|
},
|
|
104
|
+
context: { ...this._context },
|
|
81
105
|
};
|
|
82
106
|
|
|
83
107
|
if (this._userID) {
|
|
@@ -117,20 +141,22 @@ export class TelemetryManager extends BaseManager {
|
|
|
117
141
|
// by the logged in user? We already have their info via
|
|
118
142
|
// UserRepository.
|
|
119
143
|
identify(args: TelemetryManagerIdentifyArgs): Promise<void> {
|
|
144
|
+
const payload = {
|
|
145
|
+
userId: args.userID,
|
|
146
|
+
anonymousId: this._anonymousID,
|
|
147
|
+
integrations: {
|
|
148
|
+
Intercom: {
|
|
149
|
+
user_hash: args.intercomHash,
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
context: { ...this._context },
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
this._userID = args.userID;
|
|
156
|
+
|
|
120
157
|
return new Promise((resolve) => {
|
|
121
158
|
assertTelemetryInitialized(this._segmentClient);
|
|
122
159
|
|
|
123
|
-
const payload = {
|
|
124
|
-
userId: args.userID,
|
|
125
|
-
anonymousId: this._anonymousID,
|
|
126
|
-
integrations: {
|
|
127
|
-
Intercom: {
|
|
128
|
-
user_hash: args.intercomHash,
|
|
129
|
-
},
|
|
130
|
-
},
|
|
131
|
-
};
|
|
132
|
-
this._userID = args.userID;
|
|
133
|
-
|
|
134
160
|
// TODO: Make sure client fails gracefully when no internet connection
|
|
135
161
|
this._segmentClient.identify(payload, (maybeError?: Error) => {
|
|
136
162
|
if (maybeError) {
|
|
@@ -143,6 +169,44 @@ export class TelemetryManager extends BaseManager {
|
|
|
143
169
|
});
|
|
144
170
|
}
|
|
145
171
|
|
|
172
|
+
group(args: TelemetryManagerGroupArgs): Promise<void> {
|
|
173
|
+
const { repositoryName, ...traits } = args;
|
|
174
|
+
|
|
175
|
+
const payload: {
|
|
176
|
+
groupId: string;
|
|
177
|
+
userId?: string;
|
|
178
|
+
anonymousId?: string;
|
|
179
|
+
traits?: Record<string, unknown>;
|
|
180
|
+
context?: Partial<TelemetryManagerContext>;
|
|
181
|
+
} = {
|
|
182
|
+
groupId: repositoryName,
|
|
183
|
+
traits,
|
|
184
|
+
context: { ...this._context },
|
|
185
|
+
};
|
|
186
|
+
|
|
187
|
+
if (this._userID) {
|
|
188
|
+
payload.userId = this._userID;
|
|
189
|
+
} else {
|
|
190
|
+
payload.anonymousId = this._anonymousID;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
return new Promise((resolve) => {
|
|
194
|
+
assertTelemetryInitialized(this._segmentClient);
|
|
195
|
+
|
|
196
|
+
this._segmentClient.group(
|
|
197
|
+
payload as Parameters<typeof this._segmentClient.group>[0],
|
|
198
|
+
(maybeError?: Error) => {
|
|
199
|
+
if (maybeError) {
|
|
200
|
+
// TODO: Not sure how we want to deal with that
|
|
201
|
+
console.warn(`An error occurred during Segment group`, maybeError);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
resolve();
|
|
205
|
+
},
|
|
206
|
+
);
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
|
|
146
210
|
async checkIsTelemetryEnabled(): Promise<boolean> {
|
|
147
211
|
let root: string;
|
|
148
212
|
try {
|
|
@@ -21,8 +21,6 @@ export const SegmentEventType = {
|
|
|
21
21
|
customType_sliceZoneUpdated: "custom-type:slice-zone-updated",
|
|
22
22
|
customType_saved: "custom-type:saved",
|
|
23
23
|
slice_created: "slice:created",
|
|
24
|
-
identifyUser: "identify-user",
|
|
25
|
-
groupLibraries: "group-libraries",
|
|
26
24
|
screenshotTaken: "screenshot-taken",
|
|
27
25
|
changes_pushed: "changes:pushed",
|
|
28
26
|
changes_limitReach: "changes:limit-reach",
|
|
@@ -59,8 +57,6 @@ export const HumanSegmentEventType = {
|
|
|
59
57
|
"SliceMachine Slicezone Updated",
|
|
60
58
|
[SegmentEventType.customType_saved]: "SliceMachine Custom Type Saved",
|
|
61
59
|
[SegmentEventType.slice_created]: "SliceMachine Slice Created",
|
|
62
|
-
[SegmentEventType.identifyUser]: "IdentifyUser",
|
|
63
|
-
[SegmentEventType.groupLibraries]: "GroupLibraries",
|
|
64
60
|
[SegmentEventType.screenshotTaken]: "SliceMachine Screenshot Taken",
|
|
65
61
|
[SegmentEventType.changes_pushed]: "SliceMachine Changes Pushed",
|
|
66
62
|
[SegmentEventType.changes_limitReach]: "SliceMachine Changes Limit Reach",
|
|
@@ -98,7 +94,7 @@ type CommandInitEndSegmentEvent = SegmentEvent<
|
|
|
98
94
|
|
|
99
95
|
type ReviewSegmentEvent = SegmentEvent<
|
|
100
96
|
typeof SegmentEventType.review,
|
|
101
|
-
{
|
|
97
|
+
{ rating: number; comment: string }
|
|
102
98
|
>;
|
|
103
99
|
|
|
104
100
|
type OnboardingStartSegmentEvent = SegmentEvent<
|
|
@@ -127,18 +123,15 @@ type OnboardingContinueScreen3SegmentEvent = SegmentEvent<
|
|
|
127
123
|
>;
|
|
128
124
|
|
|
129
125
|
type SliceSimulatorSetupSegmentEvent = SegmentEvent<
|
|
130
|
-
typeof SegmentEventType.sliceSimulator_setup
|
|
131
|
-
{ framework: string; version: string }
|
|
126
|
+
typeof SegmentEventType.sliceSimulator_setup
|
|
132
127
|
>;
|
|
133
128
|
|
|
134
129
|
type SliceSimulatorOpenSegmentEvent = SegmentEvent<
|
|
135
|
-
typeof SegmentEventType.sliceSimulator_open
|
|
136
|
-
{ framework: string; version: string }
|
|
130
|
+
typeof SegmentEventType.sliceSimulator_open
|
|
137
131
|
>;
|
|
138
132
|
|
|
139
133
|
type SliceSimulatorIsNotRunningSegmentEvent = SegmentEvent<
|
|
140
|
-
typeof SegmentEventType.sliceSimulator_isNotRunning
|
|
141
|
-
{ framework: string }
|
|
134
|
+
typeof SegmentEventType.sliceSimulator_isNotRunning
|
|
142
135
|
>;
|
|
143
136
|
|
|
144
137
|
type PageViewSegmentEvent = SegmentEvent<
|
|
@@ -149,14 +142,13 @@ type PageViewSegmentEvent = SegmentEvent<
|
|
|
149
142
|
search: string;
|
|
150
143
|
title: string;
|
|
151
144
|
referrer: string;
|
|
152
|
-
|
|
153
|
-
slicemachineVersion: string;
|
|
145
|
+
adapter: string;
|
|
154
146
|
}
|
|
155
147
|
>;
|
|
156
148
|
|
|
157
149
|
type OpenVideoTutorialsSegmentEvent = SegmentEvent<
|
|
158
150
|
typeof SegmentEventType.openVideoTutorials,
|
|
159
|
-
{
|
|
151
|
+
{ video: string }
|
|
160
152
|
>;
|
|
161
153
|
|
|
162
154
|
type CustomTypeCreatedSegmentEvent = SegmentEvent<
|
|
@@ -189,22 +181,6 @@ type SliceCreatedSegmentEvent = SegmentEvent<
|
|
|
189
181
|
{ id: string; name: string; library: string }
|
|
190
182
|
>;
|
|
191
183
|
|
|
192
|
-
type IdentifyUserSegmentEvent = SegmentEvent<
|
|
193
|
-
typeof SegmentEventType.identifyUser
|
|
194
|
-
>;
|
|
195
|
-
|
|
196
|
-
type GroupLibrariesSegmentEvent = SegmentEvent<
|
|
197
|
-
typeof SegmentEventType.groupLibraries,
|
|
198
|
-
{
|
|
199
|
-
repoName: string;
|
|
200
|
-
manualLibsCount: number;
|
|
201
|
-
downloadedLibsCount: number;
|
|
202
|
-
npmLibsCount: number;
|
|
203
|
-
downloadedLibs: Array<string>;
|
|
204
|
-
slicemachineVersion: string;
|
|
205
|
-
}
|
|
206
|
-
>;
|
|
207
|
-
|
|
208
184
|
type ScreenshotTakenSegmentEvent = SegmentEvent<
|
|
209
185
|
typeof SegmentEventType.screenshotTaken,
|
|
210
186
|
{
|
|
@@ -260,8 +236,6 @@ export type SegmentEvents =
|
|
|
260
236
|
| CustomTypeSliceZoneUpdatedSegmentEvent
|
|
261
237
|
| CustomTypeSavedSegmentEvent
|
|
262
238
|
| SliceCreatedSegmentEvent
|
|
263
|
-
| IdentifyUserSegmentEvent
|
|
264
|
-
| GroupLibrariesSegmentEvent
|
|
265
239
|
| ScreenshotTakenSegmentEvent
|
|
266
240
|
| ChangesPushedSegmentEvent
|
|
267
241
|
| ChangesLimitReachSegmentEvent
|
package/src/types.ts
CHANGED
|
@@ -36,8 +36,6 @@ export type SliceMachineConfigPluginRegistration<
|
|
|
36
36
|
* Slice Machine configuration from `slicemachine.config.js`.
|
|
37
37
|
*/
|
|
38
38
|
export type SliceMachineConfig = {
|
|
39
|
-
// TODO: Is `_latest` necessary? Can we deprecate it?
|
|
40
|
-
_latest: string;
|
|
41
39
|
// TODO: Can we make `apiEndpoint` optional?
|
|
42
40
|
apiEndpoint?: string;
|
|
43
41
|
// NOTE: This is a new property.
|