@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.
Files changed (59) hide show
  1. package/dist/constants/API_ENDPOINTS.cjs +6 -5
  2. package/dist/constants/API_ENDPOINTS.cjs.map +1 -1
  3. package/dist/constants/API_ENDPOINTS.js +6 -5
  4. package/dist/constants/API_ENDPOINTS.js.map +1 -1
  5. package/dist/lib/addTrailingSlash.cjs +7 -0
  6. package/dist/lib/addTrailingSlash.cjs.map +1 -0
  7. package/dist/lib/addTrailingSlash.d.ts +1 -0
  8. package/dist/lib/addTrailingSlash.js +7 -0
  9. package/dist/lib/addTrailingSlash.js.map +1 -0
  10. package/dist/lib/decodeSliceMachineConfig.cjs +0 -1
  11. package/dist/lib/decodeSliceMachineConfig.cjs.map +1 -1
  12. package/dist/lib/decodeSliceMachineConfig.js +0 -1
  13. package/dist/lib/decodeSliceMachineConfig.js.map +1 -1
  14. package/dist/lib/locateFileUpward.cjs.map +1 -1
  15. package/dist/lib/locateFileUpward.js.map +1 -1
  16. package/dist/managers/SliceMachineManager.cjs +7 -7
  17. package/dist/managers/SliceMachineManager.cjs.map +1 -1
  18. package/dist/managers/SliceMachineManager.d.ts +0 -4
  19. package/dist/managers/SliceMachineManager.js +7 -7
  20. package/dist/managers/SliceMachineManager.js.map +1 -1
  21. package/dist/managers/prismicRepository/PrismicRepositoryManager.cjs +18 -2
  22. package/dist/managers/prismicRepository/PrismicRepositoryManager.cjs.map +1 -1
  23. package/dist/managers/prismicRepository/PrismicRepositoryManager.js +18 -2
  24. package/dist/managers/prismicRepository/PrismicRepositoryManager.js.map +1 -1
  25. package/dist/managers/project/ProjectManager.cjs.map +1 -1
  26. package/dist/managers/project/ProjectManager.js.map +1 -1
  27. package/dist/managers/screenshots/ScreenshotsManager.cjs +7 -1
  28. package/dist/managers/screenshots/ScreenshotsManager.cjs.map +1 -1
  29. package/dist/managers/screenshots/ScreenshotsManager.js +7 -1
  30. package/dist/managers/screenshots/ScreenshotsManager.js.map +1 -1
  31. package/dist/managers/slices/SlicesManager.cjs +27 -19
  32. package/dist/managers/slices/SlicesManager.cjs.map +1 -1
  33. package/dist/managers/slices/SlicesManager.d.ts +5 -1
  34. package/dist/managers/slices/SlicesManager.js +27 -19
  35. package/dist/managers/slices/SlicesManager.js.map +1 -1
  36. package/dist/managers/telemetry/TelemetryManager.cjs +39 -12
  37. package/dist/managers/telemetry/TelemetryManager.cjs.map +1 -1
  38. package/dist/managers/telemetry/TelemetryManager.d.ts +14 -1
  39. package/dist/managers/telemetry/TelemetryManager.js +39 -12
  40. package/dist/managers/telemetry/TelemetryManager.js.map +1 -1
  41. package/dist/managers/telemetry/types.cjs +0 -4
  42. package/dist/managers/telemetry/types.cjs.map +1 -1
  43. package/dist/managers/telemetry/types.d.ts +5 -30
  44. package/dist/managers/telemetry/types.js +0 -4
  45. package/dist/managers/telemetry/types.js.map +1 -1
  46. package/dist/types.d.ts +0 -1
  47. package/package.json +5 -4
  48. package/src/constants/API_ENDPOINTS.ts +8 -5
  49. package/src/lib/addTrailingSlash.ts +5 -0
  50. package/src/lib/decodeSliceMachineConfig.ts +0 -1
  51. package/src/lib/locateFileUpward.ts +0 -1
  52. package/src/managers/SliceMachineManager.ts +9 -9
  53. package/src/managers/prismicRepository/PrismicRepositoryManager.ts +24 -2
  54. package/src/managers/project/ProjectManager.ts +0 -1
  55. package/src/managers/screenshots/ScreenshotsManager.ts +11 -1
  56. package/src/managers/slices/SlicesManager.ts +34 -29
  57. package/src/managers/telemetry/TelemetryManager.ts +77 -13
  58. package/src/managers/telemetry/types.ts +6 -32
  59. 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
- { framework: string; rating: number; comment: string }
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
- framework: string;
153
- slicemachineVersion: string;
145
+ adapter: string;
154
146
  }
155
147
  >;
156
148
 
157
149
  type OpenVideoTutorialsSegmentEvent = SegmentEvent<
158
150
  typeof SegmentEventType.openVideoTutorials,
159
- { framework: string; slicemachineVersion: string; video: string }
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.