@slicemachine/init 1.0.2-slicecanvas.0 → 1.1.1-alpha.2

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.
@@ -1,7 +1,9 @@
1
1
  import * as inquirer from "inquirer";
2
2
  import Separator from "inquirer/lib/objects/separator";
3
3
  import { Communication, Utils, FileSystem } from "@slicemachine/core";
4
- import { RepoData } from "@slicemachine/core/src/core/communication";
4
+ import { Repositories } from "@slicemachine/core/src/models/Repositories";
5
+ import { Repository } from "@slicemachine/core/src/models/Repository";
6
+ import { parsePrismicAuthToken } from "@slicemachine/core/build/src/utils/cookie";
5
7
 
6
8
  export const CREATE_REPO = "$_CREATE_REPO"; // not a valid domain name
7
9
  const DEFAULT_BASE = Utils.CONSTS.DEFAULT_BASE;
@@ -28,7 +30,7 @@ export async function promptForRepoName(base: string): Promise<string> {
28
30
  type: "input",
29
31
  required: true,
30
32
  transformer: (value) => prettyRepoName(address, String(value)),
31
- async validate(name) {
33
+ async validate(name: string) {
32
34
  const result = await Communication.validateRepositoryName(
33
35
  name,
34
36
  base,
@@ -48,30 +50,24 @@ export type PromptOrSeparator = RepoPrompt | Separator;
48
50
  export type RepoPrompts = Array<PromptOrSeparator>;
49
51
 
50
52
  export function makeReposPretty(base: string) {
51
- return function (
52
- arg: [
53
- string,
54
- { role: Utils.roles.Roles | Record<string, Utils.roles.Roles> }
55
- ]
56
- ): RepoPrompt {
57
- const [repoName, { role }] = arg;
53
+ return function ({ name, domain, role }: Repository): RepoPrompt {
58
54
  const address = new URL(base);
59
- address.hostname = `${repoName}.${address.hostname}`;
55
+ address.hostname = `${domain}.${address.hostname}`;
60
56
  if (Utils.roles.canUpdateCustomTypes(role) === false) {
61
57
  return {
62
58
  name: `${Utils.purple.dim("Use")} ${Utils.bold.dim(
63
- repoName
59
+ name
64
60
  )} ${Utils.purple.dim(`"${address.hostname}"`)}`,
65
- value: repoName,
61
+ value: domain,
66
62
  disabled: "Unauthorized",
67
63
  };
68
64
  }
69
65
 
70
66
  return {
71
- name: `${Utils.purple("Use")} ${Utils.bold(repoName)} ${Utils.purple(
67
+ name: `${Utils.purple("Use")} ${Utils.bold(name)} ${Utils.purple(
72
68
  `"${address.hostname}"`
73
69
  )}`,
74
- value: repoName,
70
+ value: name,
75
71
  };
76
72
  };
77
73
  }
@@ -97,7 +93,7 @@ export function maybeStickTheRepoToTheTopOfTheList(repoName?: string | null) {
97
93
  }
98
94
 
99
95
  export function sortReposForPrompt(
100
- repos: RepoData,
96
+ repos: Repositories,
101
97
  base: string,
102
98
  cwd: string
103
99
  ): RepoPrompts {
@@ -110,7 +106,7 @@ export function sortReposForPrompt(
110
106
 
111
107
  const maybeConfiguredRepoName = FileSystem.maybeRepoNameFromSMFile(cwd, base);
112
108
 
113
- return Object.entries(repos)
109
+ return repos
114
110
  .reverse()
115
111
  .map(makeReposPretty(base))
116
112
  .reduce(maybeStickTheRepoToTheTopOfTheList(maybeConfiguredRepoName), [
@@ -120,13 +116,14 @@ export function sortReposForPrompt(
120
116
  }
121
117
 
122
118
  export async function maybeExistingRepo(
123
- cookie: string,
119
+ cookies: string,
124
120
  cwd: string,
125
121
  base = DEFAULT_BASE
126
122
  ): Promise<{ name: string; existing: boolean }> {
127
- const repos = await Communication.listRepositories(cookie, base);
123
+ const token = parsePrismicAuthToken(cookies);
124
+ const repos = await Communication.listRepositories(token);
128
125
 
129
- if (Object.keys(repos).length === 0) {
126
+ if (repos.length === 0) {
130
127
  const name = await promptForRepoName(base);
131
128
  return { existing: false, name };
132
129
  }
@@ -0,0 +1,66 @@
1
+ import { Utils, FileSystem } from "@slicemachine/core";
2
+ import { execCommand } from "../utils";
3
+
4
+ export type Dependency = string | { name: string; version: string };
5
+ export const Dependencies = {
6
+ fromPkgFormat(
7
+ pkgDeps: Record<string, string> | undefined
8
+ ): ReadonlyArray<Dependency> | undefined {
9
+ if (!pkgDeps) return;
10
+
11
+ return Object.entries(pkgDeps).map(([name, version]) => ({
12
+ name,
13
+ version,
14
+ }));
15
+ },
16
+ };
17
+ function formatDeps(dependencies: ReadonlyArray<Dependency>): string {
18
+ return dependencies
19
+ .map((dep) => {
20
+ if (typeof dep === "string") return dep;
21
+ return `${dep.name}@${dep.version}`;
22
+ })
23
+ .join(" ");
24
+ }
25
+
26
+ export interface PackageManager {
27
+ install(dependencies: ReadonlyArray<Dependency>): Promise<{ stderr: string }>;
28
+ installDev(
29
+ dependencies: ReadonlyArray<Dependency>
30
+ ): Promise<{ stderr: string }>;
31
+ }
32
+
33
+ export const PackageManager = {
34
+ get(cwd: string): PackageManager {
35
+ if (Utils.Files.exists(FileSystem.YarnLockPath(cwd))) {
36
+ return Yarn;
37
+ }
38
+ return Npm;
39
+ },
40
+ };
41
+
42
+ export const Yarn: PackageManager = {
43
+ install(
44
+ dependencies: ReadonlyArray<Dependency>
45
+ ): Promise<{ stderr: string }> {
46
+ return execCommand(`yarn add ${formatDeps(dependencies)}`);
47
+ },
48
+ installDev(
49
+ dependencies: ReadonlyArray<Dependency>
50
+ ): Promise<{ stderr: string }> {
51
+ return execCommand(`yarn add --dev ${formatDeps(dependencies)}`);
52
+ },
53
+ };
54
+
55
+ export const Npm: PackageManager = {
56
+ install(
57
+ dependencies: ReadonlyArray<Dependency>
58
+ ): Promise<{ stderr: string }> {
59
+ return execCommand(`npm i --save ${formatDeps(dependencies)}`);
60
+ },
61
+ installDev(
62
+ dependencies: ReadonlyArray<Dependency>
63
+ ): Promise<{ stderr: string }> {
64
+ return execCommand(`npm i --save-dev ${formatDeps(dependencies)}`);
65
+ },
66
+ };
@@ -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
+ }
@@ -1,15 +1,15 @@
1
1
  import util from "util";
2
2
  import { exec } from "child_process";
3
3
 
4
- export function findArgument(args: string[], name: string): string | null {
4
+ export function findArgument(args: string[], name: string): string | undefined {
5
5
  const flagIndex: number = args.indexOf(`--${name}`);
6
6
 
7
- if (flagIndex === -1) return null;
8
- if (args.length < flagIndex + 2) return null;
7
+ if (flagIndex === -1) return;
8
+ if (args.length < flagIndex + 2) return;
9
9
 
10
10
  const flagValue = args[flagIndex + 1];
11
11
 
12
- if (flagValue.startsWith("--")) return null;
12
+ if (flagValue.startsWith("--")) return;
13
13
  return flagValue;
14
14
  }
15
15
 
@@ -0,0 +1,57 @@
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
+ readonly tracking = true
21
+ ) {}
22
+
23
+ static build(
24
+ writeKey: string,
25
+ repo: string | undefined,
26
+ identifier: { userId: string } | { anonymousId: string },
27
+ tracking = true
28
+ ): Tracker | undefined {
29
+ try {
30
+ if (!repo) return;
31
+ const analytics = new ServerAnalytics(writeKey);
32
+ return new Tracker(analytics, repo, identifier, tracking);
33
+ } catch (error) {
34
+ console.warn(error);
35
+ return;
36
+ }
37
+ }
38
+
39
+ private trackEvent(
40
+ eventType: EventType,
41
+ attributes: Record<string, unknown> = {}
42
+ ): void {
43
+ this.tracking &&
44
+ this.analytics.track({
45
+ event: eventType,
46
+ ...this.identifier,
47
+ properties: attributes,
48
+ });
49
+ }
50
+
51
+ Track = {
52
+ // not called, for demo only
53
+ downloadLibrary: (library: string): void => {
54
+ this.trackEvent(EventType.DownloadLibrary, { library });
55
+ },
56
+ };
57
+ }
@@ -1,29 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.configureProject = void 0;
4
- const core_1 = require("@slicemachine/core");
5
- function configureProject(cwd, base, repository, framework) {
6
- const spinner = core_1.Utils.spinner(`Configuring your ${framework.value} & Prismic project...`);
7
- spinner.start();
8
- try {
9
- const manifest = core_1.FileSystem.retrieveManifest(cwd);
10
- const manifestUpdated = {
11
- ...(manifest.exists && manifest.content ? manifest.content : {}),
12
- apiEndpoint: core_1.Utils.Endpoints.buildRepositoryEndpoint(base, repository),
13
- libraries: ["@/slices"],
14
- ...(framework.manuallyAdded ? { framework: framework.value } : {}),
15
- };
16
- if (!manifest.exists)
17
- core_1.FileSystem.createManifest(cwd, manifestUpdated);
18
- else
19
- core_1.FileSystem.patchManifest(cwd, manifestUpdated);
20
- core_1.FileSystem.addJsonPackageSmScript(cwd);
21
- spinner.succeed("Project configured! Ready to start");
22
- }
23
- catch {
24
- spinner.fail("Failed to configure your Prismic Local Builder");
25
- process.exit(-1);
26
- }
27
- }
28
- exports.configureProject = configureProject;
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJlLXByb2plY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RlcHMvY29uZmlndXJlLXByb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXVEO0FBS3ZELFNBQWdCLGdCQUFnQixDQUM5QixHQUFXLEVBQ1gsSUFBVSxFQUNWLFVBQWtCLEVBQ2xCLFNBQTBCO0lBRTFCLE1BQU0sT0FBTyxHQUFHLFlBQUssQ0FBQyxPQUFPLENBQzNCLG9CQUFvQixTQUFTLENBQUMsS0FBSyx1QkFBdUIsQ0FDM0QsQ0FBQztJQUNGLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUVoQixJQUFJO1FBQ0YsTUFBTSxRQUFRLEdBQUcsaUJBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVsRCxNQUFNLGVBQWUsR0FBd0I7WUFDM0MsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2hFLFdBQVcsRUFBRSxZQUFLLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBRSxVQUFVLENBQUM7WUFDdEUsU0FBUyxFQUFFLENBQUMsVUFBVSxDQUFDO1lBQ3ZCLEdBQUcsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUNuRSxDQUFDO1FBRUYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNO1lBQUUsaUJBQVUsQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLGVBQWUsQ0FBQyxDQUFDOztZQUNqRSxpQkFBVSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFFcEQsaUJBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUV2QyxPQUFPLENBQUMsT0FBTyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7S0FDdkQ7SUFBQyxNQUFNO1FBQ04sT0FBTyxDQUFDLElBQUksQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO1FBQy9ELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNsQjtBQUNILENBQUM7QUEvQkQsNENBK0JDIn0=
@@ -1,26 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createRepository = void 0;
4
- const core_1 = require("@slicemachine/core");
5
- function createRepository(domain, framework, config) {
6
- const spinner = core_1.Utils.spinner("Creating Prismic Repository");
7
- spinner.start();
8
- return core_1.Communication.createRepository(domain, config.cookies, framework, config.base)
9
- .then((res) => {
10
- const addressUrl = new URL(config.base);
11
- addressUrl.hostname = `${res.data.domain || domain}.${addressUrl.hostname}`;
12
- const address = addressUrl.toString();
13
- spinner.succeed(`We created your new repository ${address}`);
14
- })
15
- .catch((error) => {
16
- spinner.fail(`Error creating repository ${domain}`);
17
- if (error.message) {
18
- core_1.Utils.writeError(error.message);
19
- }
20
- core_1.Utils.writeError(`We failed to create you new prismic repository`);
21
- console.log(`Run ${core_1.Utils.bold("npx slicemachine init")} again!`);
22
- process.exit(-1);
23
- });
24
- }
25
- exports.createRepository = createRepository;
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXJlcG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RlcHMvY3JlYXRlLXJlcG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXNFO0FBRXRFLFNBQWdCLGdCQUFnQixDQUM5QixNQUFjLEVBQ2QsU0FBd0MsRUFDeEMsTUFBc0M7SUFFdEMsTUFBTSxPQUFPLEdBQUcsWUFBSyxDQUFDLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQzdELE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUVoQixPQUFPLG9CQUFhLENBQUMsZ0JBQWdCLENBQ25DLE1BQU0sRUFDTixNQUFNLENBQUMsT0FBTyxFQUNkLFNBQVMsRUFDVCxNQUFNLENBQUMsSUFBSSxDQUNaO1NBQ0UsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDWixNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMsVUFBVSxDQUFDLFFBQVEsR0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sSUFDaEQsVUFBVSxDQUFDLFFBQ2IsRUFBRSxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RDLE9BQU8sQ0FBQyxPQUFPLENBQUMsa0NBQWtDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDL0QsQ0FBQyxDQUFDO1NBQ0QsS0FBSyxDQUFDLENBQUMsS0FBWSxFQUFFLEVBQUU7UUFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyw2QkFBNkIsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNwRCxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFDakIsWUFBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDakM7UUFDRCxZQUFLLENBQUMsVUFBVSxDQUFDLGdEQUFnRCxDQUFDLENBQUM7UUFDbkUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLFlBQUssQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQS9CRCw0Q0ErQkMifQ==
@@ -1,86 +0,0 @@
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
- Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.detectFramework = exports.promptForFramework = void 0;
23
- const core_1 = require("@slicemachine/core");
24
- const inquirer = __importStar(require("inquirer"));
25
- async function promptForFramework() {
26
- const choices = core_1.Utils.Framework.SupportedFrameworks.map((framework) => {
27
- return {
28
- name: core_1.Utils.Framework.fancyName(framework),
29
- value: framework,
30
- };
31
- });
32
- return inquirer
33
- .prompt([
34
- {
35
- name: "framework",
36
- type: "list",
37
- message: "Select a framework to use",
38
- required: true,
39
- choices,
40
- },
41
- ])
42
- .then((res) => {
43
- return {
44
- value: res.framework,
45
- manuallyAdded: true,
46
- };
47
- });
48
- }
49
- exports.promptForFramework = promptForFramework;
50
- async function detectFramework(cwd) {
51
- const failMessage = `Please run ${core_1.Utils.bold("npx slicemachine init")} in a Nuxt or Next.js project`;
52
- const spinner = core_1.Utils.spinner("Detecting framework to install correct dependencies");
53
- spinner.start();
54
- try {
55
- const maybeFramework = core_1.Utils.Framework.detectFramework(cwd);
56
- spinner.stop();
57
- if (!maybeFramework ||
58
- maybeFramework === core_1.Utils.Framework.FrameworkEnum.vanillajs) {
59
- core_1.Utils.writeError("Framework not detected");
60
- return await promptForFramework();
61
- }
62
- const nameToPrint = core_1.Utils.Framework.fancyName(maybeFramework);
63
- if (core_1.Utils.Framework.isUnsupported(maybeFramework)) {
64
- core_1.Utils.writeError(`${nameToPrint} is currently not supported`);
65
- console.log(failMessage);
66
- process.exit(1);
67
- }
68
- core_1.Utils.writeCheck(`${nameToPrint} detected`);
69
- return {
70
- value: maybeFramework,
71
- manuallyAdded: false,
72
- };
73
- }
74
- catch (error) {
75
- spinner.fail("package.json not found");
76
- if (error instanceof Error && error.message) {
77
- core_1.Utils.writeError(error.message);
78
- }
79
- else {
80
- console.log(failMessage);
81
- }
82
- process.exit(1);
83
- }
84
- }
85
- exports.detectFramework = detectFramework;
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0ZWN0LWZyYW1ld29yay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGVwcy9kZXRlY3QtZnJhbWV3b3JrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2Q0FBMkM7QUFDM0MsbURBQXFDO0FBTzlCLEtBQUssVUFBVSxrQkFBa0I7SUFDdEMsTUFBTSxPQUFPLEdBQUcsWUFBSyxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtRQUNwRSxPQUFPO1lBQ0wsSUFBSSxFQUFFLFlBQUssQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztZQUMxQyxLQUFLLEVBQUUsU0FBUztTQUNqQixDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLFFBQVE7U0FDWixNQUFNLENBQStDO1FBQ3BEO1lBQ0UsSUFBSSxFQUFFLFdBQVc7WUFDakIsSUFBSSxFQUFFLE1BQU07WUFDWixPQUFPLEVBQUUsMkJBQTJCO1lBQ3BDLFFBQVEsRUFBRSxJQUFJO1lBQ2QsT0FBTztTQUNSO0tBQ0YsQ0FBQztTQUNELElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQ1osT0FBTztZQUNMLEtBQUssRUFBRSxHQUFHLENBQUMsU0FBUztZQUNwQixhQUFhLEVBQUUsSUFBSTtTQUNwQixDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBeEJELGdEQXdCQztBQUVNLEtBQUssVUFBVSxlQUFlLENBQUMsR0FBVztJQUMvQyxNQUFNLFdBQVcsR0FBRyxjQUFjLFlBQUssQ0FBQyxJQUFJLENBQzFDLHVCQUF1QixDQUN4QiwrQkFBK0IsQ0FBQztJQUVqQyxNQUFNLE9BQU8sR0FBRyxZQUFLLENBQUMsT0FBTyxDQUMzQixxREFBcUQsQ0FDdEQsQ0FBQztJQUVGLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUVoQixJQUFJO1FBQ0YsTUFBTSxjQUFjLEdBQUcsWUFBSyxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUQsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRWYsSUFDRSxDQUFDLGNBQWM7WUFDZixjQUFjLEtBQUssWUFBSyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUMxRDtZQUNBLFlBQUssQ0FBQyxVQUFVLENBQUMsd0JBQXdCLENBQUMsQ0FBQztZQUMzQyxPQUFPLE1BQU0sa0JBQWtCLEVBQUUsQ0FBQztTQUNuQztRQUVELE1BQU0sV0FBVyxHQUFHLFlBQUssQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRTlELElBQUksWUFBSyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDakQsWUFBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLFdBQVcsNkJBQTZCLENBQUMsQ0FBQztZQUM5RCxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDakI7UUFFRCxZQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsV0FBVyxXQUFXLENBQUMsQ0FBQztRQUU1QyxPQUFPO1lBQ0wsS0FBSyxFQUFFLGNBQWM7WUFDckIsYUFBYSxFQUFFLEtBQUs7U0FDckIsQ0FBQztLQUNIO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDZCxPQUFPLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFFdkMsSUFBSSxLQUFLLFlBQVksS0FBSyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFDM0MsWUFBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDakM7YUFBTTtZQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDMUI7UUFFRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2pCO0FBQ0gsQ0FBQztBQWhERCwwQ0FnREMifQ==
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.displayFinalMessage = void 0;
4
- const core_1 = require("@slicemachine/core");
5
- function displayFinalMessage(cwd) {
6
- const yarnLock = core_1.Utils.Files.exists(core_1.FileSystem.YarnLockPath(cwd));
7
- const command = `${yarnLock ? "yarn" : "npm"} run ${core_1.Utils.CONSTS.SCRIPT_NAME}`;
8
- console.log(`${core_1.Utils.white("■")} Run ${core_1.Utils.purple(command)} to now launch your Local Builder`);
9
- }
10
- exports.displayFinalMessage = displayFinalMessage;
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGxheS1maW5hbC1tZXNzYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0ZXBzL2Rpc3BsYXktZmluYWwtbWVzc2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBdUQ7QUFFdkQsU0FBZ0IsbUJBQW1CLENBQUMsR0FBVztJQUM3QyxNQUFNLFFBQVEsR0FBRyxZQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxpQkFBVSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLE1BQU0sT0FBTyxHQUFHLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFDMUMsWUFBSyxDQUFDLE1BQU0sQ0FBQyxXQUNmLEVBQUUsQ0FBQztJQUVILE9BQU8sQ0FBQyxHQUFHLENBQ1QsR0FBRyxZQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLFlBQUssQ0FBQyxNQUFNLENBQ3JDLE9BQU8sQ0FDUixtQ0FBbUMsQ0FDckMsQ0FBQztBQUNKLENBQUM7QUFYRCxrREFXQyJ9
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.displayFinalMessage = exports.configureProject = exports.loginOrBypass = exports.detectFramework = exports.createRepository = exports.maybeExistingRepo = exports.validatePkg = exports.installRequiredDependencies = void 0;
4
- var install_required_dependencies_1 = require("./install-required-dependencies");
5
- Object.defineProperty(exports, "installRequiredDependencies", { enumerable: true, get: function () { return install_required_dependencies_1.installRequiredDependencies; } });
6
- var validate_pkg_1 = require("./validate-pkg");
7
- Object.defineProperty(exports, "validatePkg", { enumerable: true, get: function () { return validate_pkg_1.validatePkg; } });
8
- var maybe_existing_repo_1 = require("./maybe-existing-repo");
9
- Object.defineProperty(exports, "maybeExistingRepo", { enumerable: true, get: function () { return maybe_existing_repo_1.maybeExistingRepo; } });
10
- var create_repo_1 = require("./create-repo");
11
- Object.defineProperty(exports, "createRepository", { enumerable: true, get: function () { return create_repo_1.createRepository; } });
12
- var detect_framework_1 = require("./detect-framework");
13
- Object.defineProperty(exports, "detectFramework", { enumerable: true, get: function () { return detect_framework_1.detectFramework; } });
14
- var loginOrBypass_1 = require("./loginOrBypass");
15
- Object.defineProperty(exports, "loginOrBypass", { enumerable: true, get: function () { return loginOrBypass_1.loginOrBypass; } });
16
- var configure_project_1 = require("./configure-project");
17
- Object.defineProperty(exports, "configureProject", { enumerable: true, get: function () { return configure_project_1.configureProject; } });
18
- var display_final_message_1 = require("./display-final-message");
19
- Object.defineProperty(exports, "displayFinalMessage", { enumerable: true, get: function () { return display_final_message_1.displayFinalMessage; } });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RlcHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUZBQThFO0FBQXJFLDRJQUFBLDJCQUEyQixPQUFBO0FBQ3BDLCtDQUE2QztBQUFwQywyR0FBQSxXQUFXLE9BQUE7QUFDcEIsNkRBQTBEO0FBQWpELHdIQUFBLGlCQUFpQixPQUFBO0FBQzFCLDZDQUFpRDtBQUF4QywrR0FBQSxnQkFBZ0IsT0FBQTtBQUN6Qix1REFBcUQ7QUFBNUMsbUhBQUEsZUFBZSxPQUFBO0FBQ3hCLGlEQUFnRDtBQUF2Qyw4R0FBQSxhQUFhLE9BQUE7QUFDdEIseURBQXVEO0FBQTlDLHFIQUFBLGdCQUFnQixPQUFBO0FBQ3pCLGlFQUE4RDtBQUFyRCw0SEFBQSxtQkFBbUIsT0FBQSJ9
@@ -1,49 +0,0 @@
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.installRequiredDependencies = void 0;
7
- const path_1 = __importDefault(require("path"));
8
- const utils_1 = require("../utils");
9
- const core_1 = require("@slicemachine/core");
10
- const { PRISMIC_CLIENT, PRISMIC_DOM_PACKAGE_NAME, PRISMIC_REACT_PACKAGE_NAME, NEXT_SLICEZONE, SM_PACKAGE_NAME, NUXT_PRISMIC, NUXT_SM, VUE_SLICEZONE, PRISMIC_VUE, } = core_1.Utils.CONSTS;
11
- function depsForFramework(framework) {
12
- switch (framework) {
13
- case core_1.Utils.Framework.FrameworkEnum.react:
14
- return `${PRISMIC_REACT_PACKAGE_NAME} ${PRISMIC_CLIENT}`;
15
- case core_1.Utils.Framework.FrameworkEnum.next:
16
- return `${PRISMIC_REACT_PACKAGE_NAME} ${PRISMIC_CLIENT} ${NEXT_SLICEZONE}`;
17
- case core_1.Utils.Framework.FrameworkEnum.svelte:
18
- return `${PRISMIC_DOM_PACKAGE_NAME} ${PRISMIC_CLIENT}`;
19
- case core_1.Utils.Framework.FrameworkEnum.nuxt:
20
- return `${NUXT_PRISMIC} ${NUXT_SM} ${VUE_SLICEZONE}`;
21
- case core_1.Utils.Framework.FrameworkEnum.vue:
22
- return `${PRISMIC_VUE} ${PRISMIC_CLIENT} ${PRISMIC_DOM_PACKAGE_NAME} ${VUE_SLICEZONE}`;
23
- default:
24
- return "";
25
- }
26
- }
27
- async function installRequiredDependencies(cwd, framework) {
28
- const yarnLock = core_1.Utils.Files.exists(core_1.FileSystem.YarnLockPath(cwd));
29
- const installDevDependencyCommand = yarnLock
30
- ? "yarn add -D"
31
- : "npm install --save-dev";
32
- const installDependencyCommand = yarnLock ? "yarn add" : "npm install --save";
33
- const spinner = core_1.Utils.spinner("Downloading Prismic Visual Builder");
34
- spinner.start();
35
- const { stderr } = await (0, utils_1.execCommand)(`${installDevDependencyCommand} ${SM_PACKAGE_NAME}`);
36
- const deps = depsForFramework(framework);
37
- if (deps)
38
- await (0, utils_1.execCommand)(`${installDependencyCommand} ${deps}`);
39
- const pathToPkg = path_1.default.join(core_1.FileSystem.PackagePaths(cwd).value(), SM_PACKAGE_NAME);
40
- const isPackageInstalled = core_1.Utils.Files.exists(pathToPkg);
41
- if (isPackageInstalled || !stderr.length) {
42
- spinner.succeed("The Prismic Visual Builder was installed successfully");
43
- return;
44
- }
45
- spinner.fail();
46
- core_1.Utils.writeWarning(`could not install ${SM_PACKAGE_NAME}. Please do it manually!`);
47
- }
48
- exports.installRequiredDependencies = installRequiredDependencies;
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFsbC1yZXF1aXJlZC1kZXBlbmRlbmNpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RlcHMvaW5zdGFsbC1yZXF1aXJlZC1kZXBlbmRlbmNpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsZ0RBQXdCO0FBQ3hCLG9DQUF1QztBQUN2Qyw2Q0FBdUQ7QUFFdkQsTUFBTSxFQUNKLGNBQWMsRUFDZCx3QkFBd0IsRUFDeEIsMEJBQTBCLEVBQzFCLGNBQWMsRUFDZCxlQUFlLEVBQ2YsWUFBWSxFQUNaLE9BQU8sRUFDUCxhQUFhLEVBQ2IsV0FBVyxHQUNaLEdBQUcsWUFBSyxDQUFDLE1BQU0sQ0FBQztBQUVqQixTQUFTLGdCQUFnQixDQUFDLFNBQXdDO0lBQ2hFLFFBQVEsU0FBUyxFQUFFO1FBQ2pCLEtBQUssWUFBSyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSztZQUN0QyxPQUFPLEdBQUcsMEJBQTBCLElBQUksY0FBYyxFQUFFLENBQUM7UUFDM0QsS0FBSyxZQUFLLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxJQUFJO1lBQ3JDLE9BQU8sR0FBRywwQkFBMEIsSUFBSSxjQUFjLElBQUksY0FBYyxFQUFFLENBQUM7UUFDN0UsS0FBSyxZQUFLLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxNQUFNO1lBQ3ZDLE9BQU8sR0FBRyx3QkFBd0IsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUN6RCxLQUFLLFlBQUssQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLElBQUk7WUFDckMsT0FBTyxHQUFHLFlBQVksSUFBSSxPQUFPLElBQUksYUFBYSxFQUFFLENBQUM7UUFDdkQsS0FBSyxZQUFLLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxHQUFHO1lBQ3BDLE9BQU8sR0FBRyxXQUFXLElBQUksY0FBYyxJQUFJLHdCQUF3QixJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQ3pGO1lBQ0UsT0FBTyxFQUFFLENBQUM7S0FDYjtBQUNILENBQUM7QUFFTSxLQUFLLFVBQVUsMkJBQTJCLENBQy9DLEdBQVcsRUFDWCxTQUF3QztJQUV4QyxNQUFNLFFBQVEsR0FBRyxZQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxpQkFBVSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLE1BQU0sMkJBQTJCLEdBQUcsUUFBUTtRQUMxQyxDQUFDLENBQUMsYUFBYTtRQUNmLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQztJQUM3QixNQUFNLHdCQUF3QixHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQztJQUU5RSxNQUFNLE9BQU8sR0FBRyxZQUFLLENBQUMsT0FBTyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7SUFDcEUsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBRWhCLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUEsbUJBQVcsRUFDbEMsR0FBRywyQkFBMkIsSUFBSSxlQUFlLEVBQUUsQ0FDcEQsQ0FBQztJQUVGLE1BQU0sSUFBSSxHQUFHLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3pDLElBQUksSUFBSTtRQUFFLE1BQU0sSUFBQSxtQkFBVyxFQUFDLEdBQUcsd0JBQXdCLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztJQUVuRSxNQUFNLFNBQVMsR0FBRyxjQUFJLENBQUMsSUFBSSxDQUN6QixpQkFBVSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFDcEMsZUFBZSxDQUNoQixDQUFDO0lBQ0YsTUFBTSxrQkFBa0IsR0FBRyxZQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUV6RCxJQUFJLGtCQUFrQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtRQUN4QyxPQUFPLENBQUMsT0FBTyxDQUFDLHVEQUF1RCxDQUFDLENBQUM7UUFDekUsT0FBTztLQUNSO0lBRUQsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2YsWUFBSyxDQUFDLFlBQVksQ0FDaEIscUJBQXFCLGVBQWUsMEJBQTBCLENBQy9ELENBQUM7QUFDSixDQUFDO0FBbkNELGtFQW1DQyJ9
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.loginOrBypass = void 0;
4
- const core_1 = require("@slicemachine/core");
5
- async function loginOrBypass(base) {
6
- const user = await core_1.Auth.validateSession(base);
7
- if (user)
8
- return core_1.Utils.writeCheck(`Logged in as ${core_1.Utils.bold(user.email)}`);
9
- else
10
- await core_1.Auth.login(base);
11
- }
12
- exports.loginOrBypass = loginOrBypass;
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW5PckJ5cGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGVwcy9sb2dpbk9yQnlwYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFpRDtBQUUxQyxLQUFLLFVBQVUsYUFBYSxDQUFDLElBQVk7SUFDOUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxXQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlDLElBQUksSUFBSTtRQUFFLE9BQU8sWUFBSyxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsWUFBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDOztRQUN2RSxNQUFNLFdBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUpELHNDQUlDIn0=