@slicemachine/manager 0.1.1-dev-plugins.11 → 0.1.1-dev-plugins.13

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 (65) hide show
  1. package/README.md +85 -0
  2. package/dist/constants/API_ENDPOINTS.cjs.map +1 -1
  3. package/dist/constants/API_ENDPOINTS.d.ts +1 -2
  4. package/dist/constants/API_ENDPOINTS.js.map +1 -1
  5. package/dist/errors.cjs.map +1 -1
  6. package/dist/errors.d.ts +1 -1
  7. package/dist/errors.js.map +1 -1
  8. package/dist/lib/buildPrismicRepositoryAPIEndpoint.cjs +9 -0
  9. package/dist/lib/buildPrismicRepositoryAPIEndpoint.cjs.map +1 -0
  10. package/dist/lib/buildPrismicRepositoryAPIEndpoint.d.ts +4 -0
  11. package/dist/lib/buildPrismicRepositoryAPIEndpoint.js +9 -0
  12. package/dist/lib/buildPrismicRepositoryAPIEndpoint.js.map +1 -0
  13. package/dist/lib/decodePackageJSON.cjs +29 -0
  14. package/dist/lib/decodePackageJSON.cjs.map +1 -0
  15. package/dist/lib/decodePackageJSON.d.ts +12 -0
  16. package/dist/lib/decodePackageJSON.js +12 -0
  17. package/dist/lib/decodePackageJSON.js.map +1 -0
  18. package/dist/lib/locateFileUpward.cjs +8 -11
  19. package/dist/lib/locateFileUpward.cjs.map +1 -1
  20. package/dist/lib/locateFileUpward.js +8 -11
  21. package/dist/lib/locateFileUpward.js.map +1 -1
  22. package/dist/managers/SliceMachineManager.cjs +17 -11
  23. package/dist/managers/SliceMachineManager.cjs.map +1 -1
  24. package/dist/managers/SliceMachineManager.d.ts +6 -0
  25. package/dist/managers/SliceMachineManager.js +17 -11
  26. package/dist/managers/SliceMachineManager.js.map +1 -1
  27. package/dist/managers/createSliceMachineManager.cjs +2 -2
  28. package/dist/managers/createSliceMachineManager.cjs.map +1 -1
  29. package/dist/managers/createSliceMachineManager.d.ts +4 -3
  30. package/dist/managers/createSliceMachineManager.js +2 -2
  31. package/dist/managers/createSliceMachineManager.js.map +1 -1
  32. package/dist/managers/slices/SlicesManager.cjs +21 -4
  33. package/dist/managers/slices/SlicesManager.cjs.map +1 -1
  34. package/dist/managers/slices/SlicesManager.d.ts +1 -1
  35. package/dist/managers/slices/SlicesManager.js +21 -4
  36. package/dist/managers/slices/SlicesManager.js.map +1 -1
  37. package/dist/managers/telemetry/TelemetryManager.cjs +3 -1
  38. package/dist/managers/telemetry/TelemetryManager.cjs.map +1 -1
  39. package/dist/managers/telemetry/TelemetryManager.js +3 -1
  40. package/dist/managers/telemetry/TelemetryManager.js.map +1 -1
  41. package/dist/managers/user/UserManager.cjs +6 -2
  42. package/dist/managers/user/UserManager.cjs.map +1 -1
  43. package/dist/managers/user/UserManager.d.ts +2 -0
  44. package/dist/managers/user/UserManager.js +6 -2
  45. package/dist/managers/user/UserManager.js.map +1 -1
  46. package/dist/managers/versions/VersionsManager.cjs +14 -3
  47. package/dist/managers/versions/VersionsManager.cjs.map +1 -1
  48. package/dist/managers/versions/VersionsManager.js +14 -3
  49. package/dist/managers/versions/VersionsManager.js.map +1 -1
  50. package/dist/managers/versions/types.d.ts +1 -1
  51. package/dist/types.d.ts +1 -1
  52. package/package.json +7 -5
  53. package/src/constants/API_ENDPOINTS.ts +1 -1
  54. package/src/errors.ts +1 -74
  55. package/src/lib/buildPrismicRepositoryAPIEndpoint.ts +16 -0
  56. package/src/lib/decodePackageJSON.ts +18 -0
  57. package/src/lib/locateFileUpward.ts +8 -12
  58. package/src/managers/SliceMachineManager.ts +31 -31
  59. package/src/managers/createSliceMachineManager.ts +3 -3
  60. package/src/managers/slices/SlicesManager.ts +24 -7
  61. package/src/managers/telemetry/TelemetryManager.ts +6 -0
  62. package/src/managers/user/UserManager.ts +12 -0
  63. package/src/managers/versions/VersionsManager.ts +22 -6
  64. package/src/managers/versions/types.ts +1 -1
  65. package/src/types.ts +1 -1
@@ -2,10 +2,10 @@ import { SliceMachineManager } from "./SliceMachineManager";
2
2
 
3
3
  type CreateSliceMachineManagerArgs = ConstructorParameters<
4
4
  typeof SliceMachineManager
5
- >[0];
5
+ >;
6
6
 
7
7
  export const createSliceMachineManager = (
8
- args?: CreateSliceMachineManagerArgs,
8
+ ...args: CreateSliceMachineManagerArgs
9
9
  ): SliceMachineManager => {
10
- return new SliceMachineManager(args);
10
+ return new SliceMachineManager(...args);
11
11
  };
@@ -104,7 +104,7 @@ type SliceMachineManagerReadSliceMocksArgs = {
104
104
 
105
105
  type SliceMachineManagerReadSliceMocksReturnType = {
106
106
  mocks?: SharedSliceContent[];
107
- errors: HookError[];
107
+ errors: (DecodeError | HookError)[];
108
108
  };
109
109
 
110
110
  type SliceMachineManagerReadSliceMocksConfigArgs = {
@@ -467,19 +467,36 @@ export class SlicesManager extends BaseManager {
467
467
  assetID: `mocks.json`,
468
468
  },
469
469
  );
470
- const data = hookResult.data[0]?.data;
471
-
472
- // TODO: Validate the returned mocks.
470
+ const { data, errors } = decodeHookResult(
471
+ t.type({
472
+ data: t.array(SharedSliceContent),
473
+ }),
474
+ {
475
+ ...hookResult,
476
+ // Convert the asset data from a Buffer to JSON
477
+ // to prepare it for validation.
478
+ data: hookResult.data.map((result) => {
479
+ try {
480
+ return {
481
+ ...result,
482
+ data: JSON.parse(result.data.toString()),
483
+ };
484
+ } catch {
485
+ return result;
486
+ }
487
+ }),
488
+ },
489
+ );
473
490
 
474
491
  if (data) {
475
492
  return {
476
- mocks: JSON.parse(data.toString()),
477
- errors: hookResult.errors,
493
+ mocks: data[0]?.data,
494
+ errors,
478
495
  };
479
496
  } else {
480
497
  return {
481
498
  mocks: [],
482
- errors: hookResult.errors,
499
+ errors,
483
500
  };
484
501
  }
485
502
  }
@@ -56,6 +56,12 @@ export class TelemetryManager extends BaseManager {
56
56
  flushAt: 1,
57
57
  // TODO: Verify that this actually does not send data to Segment when false.
58
58
  enable: this._enabled,
59
+ errorHandler: () => {
60
+ // noop - We don't care if the tracking event
61
+ // failed. Some users or networks intentionally
62
+ // block Segment, so we can't block the app if
63
+ // a tracking event is unsuccessful.
64
+ },
59
65
  });
60
66
  this._anonymousID = randomUUID();
61
67
  }
@@ -1,6 +1,18 @@
1
+ import { SliceMachineError } from "../../errors";
1
2
  import { BaseManager } from "../BaseManager";
3
+ import { SliceMachineManager } from "../SliceMachineManager";
2
4
 
3
5
  export class UserManager extends BaseManager {
6
+ constructor(sliceMachineManager: SliceMachineManager) {
7
+ super(sliceMachineManager);
8
+
9
+ if (!sliceMachineManager.getPrismicAuthManager()) {
10
+ throw new SliceMachineError(
11
+ "SliceMachineManager._prismicAuthManager must be set with a PrismicAuthManager instance before instantiating UserManager.",
12
+ );
13
+ }
14
+ }
15
+
4
16
  login = this.prismicAuthManager.login.bind(this.prismicAuthManager);
5
17
  getLoginSessionInfo = this.prismicAuthManager.getLoginSessionInfo.bind(
6
18
  this.prismicAuthManager,
@@ -2,6 +2,7 @@ import * as fs from "node:fs/promises";
2
2
  import * as path from "node:path";
3
3
  import semver from "semver";
4
4
 
5
+ import { decodePackageJSON } from "../../lib/decodePackageJSON";
5
6
  import {
6
7
  fetchGitHubReleaseBodyForRelease,
7
8
  GitHubReleaseMetadata,
@@ -21,12 +22,14 @@ import { Version } from "./types";
21
22
  const detectVersionBumpKind = (
22
23
  to: string,
23
24
  from?: string,
24
- ): typeof VERSION_KIND[keyof typeof VERSION_KIND] => {
25
+ ): typeof VERSION_KIND[keyof typeof VERSION_KIND] | undefined => {
25
26
  if (!from) {
26
27
  return VERSION_KIND.FIRST;
27
28
  }
28
29
 
29
- if (semver.satisfies(to, `~${from}`)) {
30
+ if (semver.eq(to, from)) {
31
+ return undefined;
32
+ } else if (semver.satisfies(to, `~${from}`)) {
30
33
  return VERSION_KIND.PATCH;
31
34
  } else if (semver.satisfies(to, `^${from}`)) {
32
35
  return VERSION_KIND.MINOR;
@@ -56,11 +59,24 @@ export class VersionsManager extends BaseManager {
56
59
  "utf8",
57
60
  );
58
61
 
59
- // TODO: Validate the contents? This code currently assumes a
60
- // well-formed document.
61
- const json = JSON.parse(sliceMachinePackageJSONContents);
62
+ let sliceMachinePackageJSON: unknown;
63
+ try {
64
+ sliceMachinePackageJSON = JSON.parse(sliceMachinePackageJSONContents);
65
+ } catch {
66
+ // noop
67
+ }
62
68
 
63
- return json.version;
69
+ const { value, error } = decodePackageJSON(sliceMachinePackageJSON);
70
+
71
+ if (error) {
72
+ throw new Error(
73
+ `Invalid ${SLICE_MACHINE_NPM_PACKAGE_NAME} \`package.json\` file. ${error.errors.join(
74
+ ", ",
75
+ )}`,
76
+ );
77
+ }
78
+
79
+ return value.version;
64
80
  }
65
81
 
66
82
  async getAllStableSliceMachineVersions(): Promise<string[]> {
@@ -2,5 +2,5 @@ import { VERSION_KIND } from "../../constants/VERSION_KIND";
2
2
 
3
3
  export type Version = {
4
4
  version: string;
5
- kind: typeof VERSION_KIND[keyof typeof VERSION_KIND];
5
+ kind: typeof VERSION_KIND[keyof typeof VERSION_KIND] | undefined;
6
6
  };
package/src/types.ts CHANGED
@@ -13,7 +13,7 @@ export type PackageChangelog = {
13
13
  export type PackageVersion = {
14
14
  versionNumber: string;
15
15
  releaseNote: string | null;
16
- kind: typeof VERSION_KIND[keyof typeof VERSION_KIND] | null;
16
+ kind: typeof VERSION_KIND[keyof typeof VERSION_KIND] | undefined;
17
17
  };
18
18
 
19
19
  /**