@stackbit/dev 0.0.14 → 0.0.17-alpha.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.
@@ -30,15 +30,21 @@
30
30
  fill: #f25458;
31
31
  }
32
32
  #info-text a {
33
- color: #fff;
33
+ color: #0b69db;
34
34
  }
35
35
  </style>
36
36
  </head>
37
37
  <body>
38
38
  <div id="main-container">
39
- <svg id="logo" width="26" height="23" viewBox="0 0 23 23" fill="#fff"><path d="M5.728 0C4.533 0 3.387.47 2.542 1.304a4.426 4.426 0 00-1.32 3.149v6.68c0 .55.155 1.091.447 1.56.293.47.71.85 1.209 1.1l5.87 2.922V7.42h9.406L25.65 0H5.728z"></path><path d="M19.92 22.684a4.542 4.542 0 003.188-1.303 4.417 4.417 0 001.322-3.146v-6.672a2.951 2.951 0 00-.45-1.557 3.007 3.007 0 00-1.208-1.096L16.93 5.97v9.286H7.515L0 22.684h19.92z"></path></svg>
40
- <h1>Local Server Unavailable</h1>
41
- <div id="info-text">Is your site running and available at <a href="__URL__" target="_blank">__URL__</a>?</div>
39
+ <svg width="239" height="81" viewBox="0 0 239 81" fill="none" xmlns="http://www.w3.org/2000/svg">
40
+ <path d="M119.641 79.7368C141.383 79.7368 159.009 62.111 159.009 40.3684C159.009 18.6258 141.383 1 119.641 1C97.8983 1 80.2725 18.6258 80.2725 40.3684C80.2725 62.111 97.8983 79.7368 119.641 79.7368Z" stroke="#979797" stroke-miterlimit="10"/>
41
+ <path d="M198.538 79.7368C220.28 79.7368 237.906 62.111 237.906 40.3684C237.906 18.6258 220.28 1 198.538 1C176.795 1 159.169 18.6258 159.169 40.3684C159.169 62.111 176.795 79.7368 198.538 79.7368Z" stroke="#979797" stroke-miterlimit="10"/>
42
+ <path d="M1.37549 79.7369L80.2723 1.00006L159.009 79.7369L237.906 1.00006" stroke="#979797" stroke-miterlimit="10"/>
43
+ <path d="M1.37549 1.00006L80.2723 79.7369L159.009 1.00006L237.906 79.7369" stroke="#979797" stroke-miterlimit="10"/>
44
+ <path d="M40.7439 79.7369C62.4865 79.7369 80.1123 62.111 80.1123 40.3685C80.1123 18.6259 62.4865 1.00006 40.7439 1.00006C19.0013 1.00006 1.37549 18.6259 1.37549 40.3685C1.37549 62.111 19.0013 79.7369 40.7439 79.7369Z" stroke="#979797" stroke-miterlimit="10"/>
45
+ </svg>
46
+ <h1>Failed to connect to your site's local server</h1>
47
+ <div id="info-text">Your local stackbit dev cannot connect to the dev server of your site, which should be running at __URL__.<br/>Please check that it is up and running. <a href="https://docs.stackbit.com/how-to-guides/local-dev/#troubleshooting" target="_blank">Learn more.</a></div>
42
48
  </div>
43
49
  <script type="application/javascript">
44
50
  function poll() {
package/dist/command.js CHANGED
@@ -1,6 +1,22 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.handler = exports.builder = void 0;
7
+ const lodash_1 = __importDefault(require("lodash"));
8
+ function possibleArray(val) {
9
+ let result;
10
+ if (!lodash_1.default.isEmpty(val)) {
11
+ if (lodash_1.default.isArray(val)) {
12
+ result = val;
13
+ }
14
+ else {
15
+ result = [val];
16
+ }
17
+ }
18
+ return result;
19
+ }
4
20
  function builder(yargs) {
5
21
  yargs
6
22
  .option('port', {
@@ -17,6 +33,24 @@ function builder(yargs) {
17
33
  alias: 'd',
18
34
  description: 'root dir',
19
35
  default: process.cwd()
36
+ })
37
+ .options('cms', {
38
+ alias: 'c',
39
+ description: 'CMS type',
40
+ default: '',
41
+ choices: ['', 'git', 'contentful']
42
+ })
43
+ .options('contentful-access-token', {
44
+ description: 'Contentful access token',
45
+ default: ''
46
+ })
47
+ .options('contentful-space-id', {
48
+ description: 'Contentful space ID',
49
+ default: ''
50
+ })
51
+ .options('contentful-preview-key', {
52
+ description: 'Contentful preview key',
53
+ default: ''
20
54
  })
21
55
  .options('runnable-dir', {
22
56
  description: 'runnable dir',
@@ -26,7 +60,29 @@ function builder(yargs) {
26
60
  description: 'log level',
27
61
  default: 'info'
28
62
  })
29
- .options('help', {});
63
+ .options('open', {
64
+ description: 'Auto open',
65
+ type: 'boolean'
66
+ })
67
+ .options('help', {})
68
+ .check(argv => {
69
+ var _a, _b;
70
+ if (argv.cms === 'contentful') {
71
+ if (!argv.contentfulAccessToken) {
72
+ throw new Error('Missing Contentful access token: --contentful-access-token <access-token>');
73
+ }
74
+ if (!argv.contentfulPreviewToken) {
75
+ throw new Error('Missing Contentful preview token: --contentful-preview-token <preview-token>');
76
+ }
77
+ if (!argv.contentfulSpaceId) {
78
+ throw new Error('Missing Contentful space ID: --contentful-space-id <space-id>');
79
+ }
80
+ if (((_a = possibleArray(argv.contentfulSpaceId)) === null || _a === void 0 ? void 0 : _a.length) !== ((_b = possibleArray(argv.contentfulPreviewToken)) === null || _b === void 0 ? void 0 : _b.length)) {
81
+ throw new Error('Mismatch between number of space ID\'s and preview tokens provided.');
82
+ }
83
+ }
84
+ return true;
85
+ });
30
86
  }
31
87
  exports.builder = builder;
32
88
  async function handler(argv) {
@@ -37,7 +93,12 @@ async function handler(argv) {
37
93
  ssgPort: argv.port,
38
94
  ssgHost: argv.host,
39
95
  rootDir: argv.dir,
40
- runnableDir: argv['runnable-dir']
96
+ autoOpen: argv.open,
97
+ cmsType: argv.cms,
98
+ runnableDir: argv['runnable-dir'],
99
+ contentfulAccessToken: argv.contentfulAccessToken,
100
+ contentfulSpaceIds: possibleArray(argv.contentfulSpaceId),
101
+ contentfulPreviewTokens: possibleArray(argv.contentfulPreviewToken)
41
102
  });
42
103
  }
43
104
  exports.handler = handler;
@@ -1 +1 @@
1
- {"version":3,"file":"command.js","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":";;;AAEA,SAAgB,OAAO,CAAC,KAAiB;IACrC,KAAK;SACA,MAAM,CAAC,MAAM,EAAE;QACZ,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,MAAM;QACnB,OAAO,EAAE,IAAI;KAChB,CAAC;SACD,OAAO,CAAC,MAAM,EAAE;QACb,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,UAAU;QACvB,OAAO,EAAE,WAAW;KACvB,CAAC;SACD,OAAO,CAAC,KAAK,EAAE;QACZ,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,UAAU;QACvB,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE;KACzB,CAAC;SACD,OAAO,CAAC,cAAc,EAAE;QACrB,WAAW,EAAE,cAAc;QAC3B,OAAO,EAAE,EAAE;KACd,CAAC;SACD,OAAO,CAAC,WAAW,EAAE;QAClB,WAAW,EAAE,WAAW;QACxB,OAAO,EAAE,MAAM;KAClB,CAAC;SACD,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC;AA1BD,0BA0BC;AAEM,KAAK,UAAU,OAAO,CAAC,IAAS;IACnC,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE;QACnB,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;KAC7C;IACD,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC;QAC1B,OAAO,EAAE,IAAI,CAAC,IAAI;QAClB,OAAO,EAAE,IAAI,CAAC,IAAI;QAClB,OAAO,EAAE,IAAI,CAAC,GAAG;QACjB,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC;KACpC,CAAC,CAAC;AACP,CAAC;AAVD,0BAUC"}
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"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"}
package/dist/dev.d.ts CHANGED
@@ -1,6 +1,13 @@
1
- export declare function start({ ssgPort, ssgHost, rootDir, runnableDir }: {
1
+ interface DevOptions {
2
2
  ssgPort: number;
3
3
  ssgHost: string;
4
4
  rootDir: string;
5
5
  runnableDir?: string;
6
- }): Promise<false | undefined>;
6
+ autoOpen?: boolean;
7
+ cmsType?: string;
8
+ contentfulAccessToken?: string;
9
+ contentfulSpaceIds?: [string];
10
+ contentfulPreviewTokens?: [string];
11
+ }
12
+ export declare function start(options: DevOptions): Promise<false | undefined>;
13
+ export {};
package/dist/dev.js CHANGED
@@ -11,34 +11,68 @@ const logger_1 = __importDefault(require("./services/logger"));
11
11
  const api_1 = __importDefault(require("./services/api"));
12
12
  const config_1 = __importDefault(require("./config"));
13
13
  const chalk_1 = __importDefault(require("chalk"));
14
- async function start({ ssgPort = 3000, ssgHost = 'localhost', rootDir = process.cwd(), runnableDir }) {
15
- logger_1.default.info('Site directory: ' + rootDir);
14
+ const open_1 = __importDefault(require("open"));
15
+ async function start(options) {
16
+ logger_1.default.info('Site directory: ' + options.rootDir);
16
17
  let serverPort = await (0, detect_port_1.default)(8090);
17
18
  const userId = (0, user_config_1.getUserId)();
18
19
  logger_1.default.debug('id: ' + userId);
19
- try {
20
- await (0, server_1.start)({ serverPort, ssgHost, ssgPort, rootDir, runnableDir, uuid: userId });
21
- }
22
- catch (err) {
23
- logger_1.default.error('Error starting Stackbit dev server');
24
- logger_1.default.debug('startServer failed', { err });
25
- return false;
26
- }
27
20
  const localDetails = {
28
21
  i: userId,
29
22
  p: serverPort,
30
- v: require('../package.json').version
23
+ v: require('../package.json').version,
24
+ cms: options.cmsType || 'git'
31
25
  };
32
26
  logger_1.default.debug('Local details', { localDetails });
33
27
  const studioUrl = `${config_1.default.appUrl}/local/${Buffer.from(JSON.stringify(localDetails)).toString('base64')}`;
28
+ let updateLocalDevDetails = () => {
29
+ var _a;
30
+ return api_1.default.updateLocalDev(userId, {
31
+ ...localDetails,
32
+ ...(options.cmsType === 'contentful'
33
+ ? {
34
+ contentfulAccessToken: options.contentfulAccessToken,
35
+ contentfulSpaces: (_a = options.contentfulSpaceIds) === null || _a === void 0 ? void 0 : _a.map((spaceId, i) => {
36
+ var _a;
37
+ return ({
38
+ spaceId,
39
+ previewApiKey: (_a = options.contentfulPreviewTokens) === null || _a === void 0 ? void 0 : _a[i]
40
+ });
41
+ })
42
+ }
43
+ : {})
44
+ });
45
+ };
34
46
  try {
35
- await api_1.default.updateLocalDev(userId, localDetails);
47
+ await updateLocalDevDetails();
48
+ updateLocalDevDetails = undefined;
36
49
  }
37
50
  catch (err) {
38
- logger_1.default.debug('updateLocalDev failed', { err });
51
+ // failure here is expected if user hasn't pressed the link yet.
52
+ // in that case we defer the update to when the server starts getting accessed.
53
+ logger_1.default.debug('updateLocalDev failed', { err: err.message || err });
54
+ }
55
+ try {
56
+ await (0, server_1.start)({
57
+ serverPort,
58
+ uuid: userId,
59
+ updateLocalDevDetails,
60
+ ...options
61
+ });
62
+ }
63
+ catch (err) {
64
+ logger_1.default.error('Error starting Stackbit dev server');
65
+ logger_1.default.debug('startServer failed', { err });
66
+ return false;
67
+ }
68
+ logger_1.default.info(`Server started. Forwarding requests to: ${options.ssgHost}:${options.ssgPort}`);
69
+ logger_1.default.info(`⚡ Open${options.autoOpen ? 'ing' : ''} ${chalk_1.default.bold(studioUrl)} in your browser`);
70
+ if (options.autoOpen) {
71
+ (0, open_1.default)(studioUrl).catch(err => {
72
+ logger_1.default.debug('Auto open error', { err });
73
+ logger_1.default.error('Error auto opening');
74
+ });
39
75
  }
40
- logger_1.default.info(`Server started. Forwarding requests to: ${ssgHost}:${ssgPort}`);
41
- logger_1.default.info(`Open ${chalk_1.default.bold(studioUrl)} in your browser`);
42
76
  }
43
77
  exports.start = start;
44
78
  //# sourceMappingURL=dev.js.map
package/dist/dev.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"dev.js","sourceRoot":"","sources":["../src/dev.ts"],"names":[],"mappings":";;;;;;AACA,8DAAqC;AAErC,qCAAgD;AAChD,wDAAmD;AACnD,+DAAuC;AACvC,yDAAwC;AACxC,sDAA8B;AAC9B,kDAA0B;AAEnB,KAAK,UAAU,KAAK,CAAC,EACxB,OAAO,GAAG,IAAI,EACd,OAAO,GAAG,WAAW,EACrB,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,EACvB,WAAW,EAMd;IACG,gBAAM,CAAC,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,CAAC;IAE1C,IAAI,UAAU,GAAG,MAAM,IAAA,qBAAU,EAAC,IAAI,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,IAAA,uBAAS,GAAE,CAAC;IAC3B,gBAAM,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAE9B,IAAI;QACA,MAAM,IAAA,cAAW,EAAC,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;KAC3F;IAAC,OAAO,GAAG,EAAE;QACV,gBAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACnD,gBAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAC5C,OAAO,KAAK,CAAC;KAChB;IAED,MAAM,YAAY,GAAG;QACjB,CAAC,EAAE,MAAM;QACT,CAAC,EAAE,UAAU;QACb,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO;KACxC,CAAC;IAEF,gBAAM,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,GAAG,gBAAM,CAAC,MAAM,UAAU,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;IAE3G,IAAI;QACA,MAAM,aAAU,CAAC,cAAc,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;KACzD;IAAC,OAAO,GAAG,EAAE;QACV,gBAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;KAClD;IAED,gBAAM,CAAC,IAAI,CAAC,2CAA2C,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC;IAC7E,gBAAM,CAAC,IAAI,CAAC,QAAQ,eAAK,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;AACjE,CAAC;AA1CD,sBA0CC"}
1
+ {"version":3,"file":"dev.js","sourceRoot":"","sources":["../src/dev.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,26 @@
1
+ import GitCMS from '@stackbit/dev-common/dist/cms/git/git';
2
+ import { Contentful as ContentfulCMS } from '@stackbit/dev-common/dist/cms/contentful/contentful';
3
+ interface RunnerOptions {
4
+ rootDir: string;
5
+ runnableDir?: string;
6
+ cmsType?: string;
7
+ contentfulAccessToken?: string;
8
+ contentfulSpaceIds?: [string];
9
+ contentfulPreviewTokens?: [string];
10
+ }
1
11
  export default class Runner {
2
12
  private editor;
13
+ private cmsType?;
3
14
  private cms;
4
15
  private stackbitYaml;
5
16
  private workers;
6
17
  private watcher;
18
+ private readonly options;
7
19
  private rootDir;
8
20
  private appDir?;
9
- constructor({ rootDir, runnableDir }: {
10
- rootDir: string;
11
- runnableDir?: string;
12
- });
21
+ constructor(options: RunnerOptions);
13
22
  install(): Promise<void>;
23
+ createCms(): GitCMS | ContentfulCMS;
14
24
  handleFileChanges(filePaths: string[]): Promise<void>;
15
25
  getDirectPaths(): string[];
16
26
  /**
@@ -33,4 +43,6 @@ export default class Runner {
33
43
  listAssets(filterParams: any): Promise<any>;
34
44
  uploadAsset(url: string, filename: string, user: any): Promise<any>;
35
45
  makeAction(action: string, data: any): Promise<any>;
46
+ keepAlive(): void;
36
47
  }
48
+ export {};
@@ -7,7 +7,8 @@ const lodash_1 = __importDefault(require("lodash"));
7
7
  const path_1 = __importDefault(require("path"));
8
8
  const ssg_1 = __importDefault(require("./ssg"));
9
9
  const editor_1 = __importDefault(require("@stackbit/dev-common/dist/runner/editor"));
10
- const git_1 = __importDefault(require("@stackbit/dev-common/dist/cms/git"));
10
+ const git_1 = __importDefault(require("@stackbit/dev-common/dist/cms/git/git"));
11
+ const contentful_1 = require("@stackbit/dev-common/dist/cms/contentful/contentful");
11
12
  const worker_1 = __importDefault(require("@stackbit/dev-common/dist/utils/worker"));
12
13
  const stackbit_yaml_1 = require("@stackbit/dev-common/dist/services/stackbit-yaml");
13
14
  const socket_service_1 = __importDefault(require("@stackbit/dev-common/dist/services/socket-service"));
@@ -15,9 +16,11 @@ const file_watcher_1 = require("../services/file-watcher");
15
16
  const logger_1 = __importDefault(require("../services/logger"));
16
17
  const consts_1 = __importDefault(require("../consts"));
17
18
  class Runner {
18
- constructor({ rootDir, runnableDir }) {
19
- this.rootDir = rootDir;
20
- this.appDir = runnableDir ? path_1.default.join(this.rootDir, runnableDir) : this.rootDir;
19
+ constructor(options) {
20
+ this.options = options;
21
+ this.rootDir = options.rootDir;
22
+ this.appDir = options.runnableDir ? path_1.default.join(this.rootDir, options.runnableDir) : this.rootDir;
23
+ this.cmsType = options.cmsType;
21
24
  this.workers = {
22
25
  gitApp: new worker_1.default()
23
26
  };
@@ -33,21 +36,7 @@ class Runner {
33
36
  envName: 'local' //TODO
34
37
  });
35
38
  await this.stackbitYaml.load();
36
- this.cms = new git_1.default({
37
- rootDir: this.rootDir,
38
- repoDir: this.rootDir,
39
- appDir: this.appDir,
40
- stackbitYaml: this.stackbitYaml,
41
- workers: this.workers,
42
- assetIdPrefix: consts_1.default.ASSET_ID_PREFIX,
43
- staticAssetsFilePath: consts_1.default.STATIC_ASSETS_FILE_PATH,
44
- staticAssetsPublicPath: consts_1.default.STATIC_ASSETS_PUBLIC_PATH,
45
- staticThemeAssetsFilePath: consts_1.default.STATIC_THEME_ASSETS_FILE_PATH,
46
- staticThemeAssetsPublicPath: consts_1.default.STATIC_THEME_ASSETS_PUBLIC_PATH,
47
- defaultContentTypeExtensions: consts_1.default.DEFAULT_CONTENT_TYPE_EXTENSIONS,
48
- logger: logger_1.default,
49
- userLogger: logger_1.default
50
- });
39
+ this.cms = this.createCms();
51
40
  await this.cms.run();
52
41
  this.editor = new editor_1.default(null, this.cms, this.stackbitYaml, {
53
42
  logger: logger_1.default,
@@ -56,10 +45,53 @@ class Runner {
56
45
  this.watcher = (0, file_watcher_1.watchDir)(this.rootDir, (filePaths) => {
57
46
  logger_1.default.debug(`File change detected: ${filePaths}`);
58
47
  this.handleFileChanges(filePaths).catch((err) => {
48
+ logger_1.default.debug('Handle file change error', { err, filePaths });
59
49
  logger_1.default.error('Error handling file changes: ' + filePaths.join(', '));
60
50
  });
61
51
  });
62
52
  }
53
+ createCms() {
54
+ var _a;
55
+ let result;
56
+ if (this.cmsType === 'contentful') {
57
+ result = new contentful_1.Contentful({
58
+ accessToken: (_a = this.options.contentfulAccessToken) !== null && _a !== void 0 ? _a : null,
59
+ spaces: this.options.contentfulSpaceIds.map((spaceId, i) => ({
60
+ spaceId,
61
+ previewToken: this.options.contentfulPreviewTokens[i]
62
+ })),
63
+ stackbitYaml: this.stackbitYaml,
64
+ encodeDelimiter: '',
65
+ rootDir: this.rootDir,
66
+ appDir: this.appDir,
67
+ repoDir: this.rootDir,
68
+ staticThemeAssetsFilePath: consts_1.default.STATIC_THEME_ASSETS_FILE_PATH,
69
+ staticThemeAssetsPublicPath: consts_1.default.STATIC_THEME_ASSETS_PUBLIC_PATH,
70
+ watchForContentUpdates: true,
71
+ onContentUpdate: () => { },
72
+ logger: logger_1.default,
73
+ userLogger: logger_1.default
74
+ });
75
+ }
76
+ else {
77
+ result = new git_1.default({
78
+ rootDir: this.rootDir,
79
+ repoDir: this.rootDir,
80
+ appDir: this.appDir,
81
+ stackbitYaml: this.stackbitYaml,
82
+ workers: this.workers,
83
+ assetIdPrefix: consts_1.default.ASSET_ID_PREFIX,
84
+ staticAssetsFilePath: consts_1.default.STATIC_ASSETS_FILE_PATH,
85
+ staticAssetsPublicPath: consts_1.default.STATIC_ASSETS_PUBLIC_PATH,
86
+ staticThemeAssetsFilePath: consts_1.default.STATIC_THEME_ASSETS_FILE_PATH,
87
+ staticThemeAssetsPublicPath: consts_1.default.STATIC_THEME_ASSETS_PUBLIC_PATH,
88
+ defaultContentTypeExtensions: consts_1.default.DEFAULT_CONTENT_TYPE_EXTENSIONS,
89
+ logger: logger_1.default,
90
+ userLogger: logger_1.default
91
+ });
92
+ }
93
+ return result;
94
+ }
63
95
  async handleFileChanges(filePaths) {
64
96
  const pullResult = await this.cms.postPull(filePaths.map((filePath) => path_1.default.join(this.rootDir, filePath))).catch((err) => {
65
97
  logger_1.default.debug('Error in postPull', { err });
@@ -141,6 +173,9 @@ class Runner {
141
173
  throw new Error('Unsupported Operation');
142
174
  }
143
175
  }
176
+ keepAlive() {
177
+ lodash_1.default.invoke(this.cms, 'keepAlive');
178
+ }
144
179
  }
145
180
  exports.default = Runner;
146
181
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runner/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runner/index.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,15 @@
1
- export declare function start({ serverPort, ssgPort, ssgHost, rootDir, runnableDir, uuid }: {
1
+ interface ServerOptions {
2
2
  serverPort: number;
3
3
  ssgPort: number;
4
4
  ssgHost: string;
5
5
  rootDir: string;
6
6
  runnableDir?: string;
7
7
  uuid: string;
8
- }): Promise<void>;
8
+ cmsType?: string;
9
+ contentfulAccessToken?: string;
10
+ contentfulSpaceIds?: [string];
11
+ contentfulPreviewTokens?: [string];
12
+ updateLocalDevDetails?: () => Promise<any>;
13
+ }
14
+ export declare function start({ serverPort, ssgPort, ssgHost, rootDir, runnableDir, uuid, cmsType, ...options }: ServerOptions): Promise<void>;
15
+ export {};
@@ -13,11 +13,13 @@ const proxy_1 = __importDefault(require("./proxy"));
13
13
  const runner_1 = __importDefault(require("../runner"));
14
14
  const consts_1 = __importDefault(require("../consts"));
15
15
  const socket_service_1 = __importDefault(require("@stackbit/dev-common/dist/services/socket-service"));
16
- async function start({ serverPort, ssgPort, ssgHost, rootDir, runnableDir, uuid }) {
16
+ async function start({ serverPort, ssgPort, ssgHost, rootDir, runnableDir, uuid, cmsType, ...options }) {
17
17
  logger_1.default.debug('Runner init...');
18
18
  const runner = new runner_1.default({
19
19
  rootDir,
20
- runnableDir
20
+ runnableDir,
21
+ cmsType,
22
+ ...options
21
23
  });
22
24
  await runner.install();
23
25
  logger_1.default.debug('Done runner init');
@@ -25,16 +27,19 @@ async function start({ serverPort, ssgPort, ssgHost, rootDir, runnableDir, uuid
25
27
  const httpServer = http_1.default.createServer(server);
26
28
  socket_service_1.default.use(httpServer, logger_1.default);
27
29
  server.use(require('cors')());
28
- // if (config.setContentSecurityPolicy) {
29
- // server.use((req, res, next) => {
30
- // const hosts = getClientAllowedHosts(req).join(' ');
31
- // res.set('Content-Security-Policy', `frame-ancestors 'self' ${hosts}`);
32
- // next();
33
- // });
34
- // }
35
- // log requests
30
+ let updateLocalDevDetails = options.updateLocalDevDetails;
36
31
  server.use((req, res, next) => {
32
+ // log requests
37
33
  logger_1.default.debug(`got request ${req.method} ${req.path}`, { method: req.method, originalUrl: req.originalUrl, url: req.url, path: req.path });
34
+ // handle details update if not handled yet
35
+ const runUpdateLocalDevDetails = updateLocalDevDetails;
36
+ updateLocalDevDetails = undefined;
37
+ runUpdateLocalDevDetails === null || runUpdateLocalDevDetails === void 0 ? void 0 : runUpdateLocalDevDetails().then(() => {
38
+ logger_1.default.debug('Updated local dev details after startup');
39
+ }).catch(err => {
40
+ logger_1.default.debug('Error updating local details', { err });
41
+ logger_1.default.error('Error configuring Stackbit with local details');
42
+ });
38
43
  next();
39
44
  });
40
45
  server.use('/_static', express_1.default.static('static'));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":";;;;;;AACA,gDAAwB;AACxB,sDAA8B;AAC9B,gDAAwB;AAExB,gEAAwC;AAExC,sDAA8B;AAC9B,oDAA4B;AAC5B,uDAA+B;AAC/B,uDAA+B;AAC/B,uGAA8E;AAEvE,KAAK,UAAU,KAAK,CAAC,EACxB,UAAU,EACV,OAAO,EACP,OAAO,EACP,OAAO,EACP,WAAW,EACX,IAAI,EAQP;IACG,gBAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAE/B,MAAM,MAAM,GAAG,IAAI,gBAAM,CAAC;QACtB,OAAO;QACP,WAAW;KACd,CAAC,CAAC;IACH,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;IAEvB,gBAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAEjC,MAAM,MAAM,GAAG,IAAA,iBAAO,GAAE,CAAC;IACzB,MAAM,UAAU,GAAG,cAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC7C,wBAAa,CAAC,GAAG,CAAC,UAAU,EAAE,gBAAM,CAAC,CAAC;IAEtC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9B,yCAAyC;IACzC,uCAAuC;IACvC,8DAA8D;IAC9D,iFAAiF;IACjF,kBAAkB;IAClB,UAAU;IACV,IAAI;IAEJ,eAAe;IACf,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC1B,gBAAM,CAAC,KAAK,CAAC,eAAe,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1I,IAAI,EAAE,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,iBAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjD,MAAM,CAAC,GAAG,CAAC,gBAAM,CAAC,yBAAyB,EAAE,iBAAO,CAAC,MAAM,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;IACjH,MAAM,CAAC,GAAG,CAAC,gBAAM,CAAC,+BAA+B,EAAE,iBAAO,CAAC,MAAM,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC;IAE7H,IAAA,gBAAM,EAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7B,IAAA,eAAK,EAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAExC,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACzC,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE;YAC/B,gBAAM,CAAC,KAAK,CAAC,yBAAyB,GAAG,UAAU,CAAC,CAAC;YACrD,OAAO,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAzDD,sBAyDC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,10 @@ const authMiddleware = (uuid) => {
28
28
  };
29
29
  };
30
30
  function routes(router, runner, uuid) {
31
+ router.use((req, res, next) => {
32
+ runner.keepAlive();
33
+ next();
34
+ });
31
35
  router.post('/_objects', [body_parser_1.default.json({ limit: '500kb' })], (req, res, next) => {
32
36
  const { objectIds } = req.body;
33
37
  return runner
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/server/routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/server/routes.ts"],"names":[],"mappings":"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"}
@@ -5,9 +5,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getUserId = void 0;
7
7
  const configstore_1 = __importDefault(require("configstore"));
8
- const uuid_1 = __importDefault(require("uuid"));
8
+ const uuid_1 = require("uuid");
9
9
  const config = new configstore_1.default('stackbit-dev', {
10
- userId: uuid_1.default.v4().toString().replace(/\-/g, '')
10
+ userId: (0, uuid_1.v4)().toString().replace(/\-/g, '')
11
11
  }, { globalConfigPath: true });
12
12
  function getUserId() {
13
13
  return config.get('userId');
@@ -1 +1 @@
1
- {"version":3,"file":"user-config.js","sourceRoot":"","sources":["../../src/services/user-config.ts"],"names":[],"mappings":";;;;;;AAAA,8DAAsC;AACtC,gDAAwB;AAExB,MAAM,MAAM,GAAG,IAAI,qBAAW,CAC1B,cAAc,EACd;IACI,MAAM,EAAE,cAAI,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;CAClD,EACD,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAC7B,CAAC;AAEF,SAAgB,SAAS;IACrB,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC;AAFD,8BAEC"}
1
+ {"version":3,"file":"user-config.js","sourceRoot":"","sources":["../../src/services/user-config.ts"],"names":[],"mappings":";;;;;;AAAA,8DAAsC;AACtC,+BAAoC;AAEpC,MAAM,MAAM,GAAG,IAAI,qBAAW,CAC1B,cAAc,EACd;IACI,MAAM,EAAE,IAAA,SAAM,GAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;CACjD,EACD,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAC7B,CAAC;AAEF,SAAgB,SAAS;IACrB,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC;AAFD,8BAEC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stackbit/dev",
3
- "version": "0.0.14",
3
+ "version": "0.0.17-alpha.0",
4
4
  "description": "stackbit-dev",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -22,8 +22,8 @@
22
22
  "author": "Stackbit Inc.",
23
23
  "license": "MIT",
24
24
  "dependencies": {
25
- "@stackbit/cms-core": "^0.0.8",
26
- "@stackbit/dev-common": "^0.0.12",
25
+ "@stackbit/cms-core": "^0.0.9-alpha.0",
26
+ "@stackbit/dev-common": "^0.0.15-alpha.0",
27
27
  "@stackbit/sdk": "^0.2.22",
28
28
  "axios": "^0.25.0",
29
29
  "chalk": "^4.1.0",
@@ -35,8 +35,9 @@
35
35
  "fs-extra": "^10.0.0",
36
36
  "http-proxy-middleware": "^0.20.0",
37
37
  "lodash": "^4.17.21",
38
+ "open": "^8.4.0",
38
39
  "rimraf": "^3.0.2",
39
- "uuid": "^3.4.0",
40
+ "uuid": "^8.3.2",
40
41
  "winston": "^3.4.0",
41
42
  "yargs": "^17.3.1"
42
43
  },
@@ -54,5 +55,5 @@
54
55
  "ts-jest": "^27.1.3",
55
56
  "typescript": "^4.5.4"
56
57
  },
57
- "gitHead": "4aeabed809ae8b7f407357fe9655ee24a5346e27"
58
+ "gitHead": "3183c88a1c25dcb7349eb7e9f455935ec8c658bb"
58
59
  }
@@ -30,15 +30,21 @@
30
30
  fill: #f25458;
31
31
  }
32
32
  #info-text a {
33
- color: #fff;
33
+ color: #0b69db;
34
34
  }
35
35
  </style>
36
36
  </head>
37
37
  <body>
38
38
  <div id="main-container">
39
- <svg id="logo" width="26" height="23" viewBox="0 0 23 23" fill="#fff"><path d="M5.728 0C4.533 0 3.387.47 2.542 1.304a4.426 4.426 0 00-1.32 3.149v6.68c0 .55.155 1.091.447 1.56.293.47.71.85 1.209 1.1l5.87 2.922V7.42h9.406L25.65 0H5.728z"></path><path d="M19.92 22.684a4.542 4.542 0 003.188-1.303 4.417 4.417 0 001.322-3.146v-6.672a2.951 2.951 0 00-.45-1.557 3.007 3.007 0 00-1.208-1.096L16.93 5.97v9.286H7.515L0 22.684h19.92z"></path></svg>
40
- <h1>Local Server Unavailable</h1>
41
- <div id="info-text">Is your site running and available at <a href="__URL__" target="_blank">__URL__</a>?</div>
39
+ <svg width="239" height="81" viewBox="0 0 239 81" fill="none" xmlns="http://www.w3.org/2000/svg">
40
+ <path d="M119.641 79.7368C141.383 79.7368 159.009 62.111 159.009 40.3684C159.009 18.6258 141.383 1 119.641 1C97.8983 1 80.2725 18.6258 80.2725 40.3684C80.2725 62.111 97.8983 79.7368 119.641 79.7368Z" stroke="#979797" stroke-miterlimit="10"/>
41
+ <path d="M198.538 79.7368C220.28 79.7368 237.906 62.111 237.906 40.3684C237.906 18.6258 220.28 1 198.538 1C176.795 1 159.169 18.6258 159.169 40.3684C159.169 62.111 176.795 79.7368 198.538 79.7368Z" stroke="#979797" stroke-miterlimit="10"/>
42
+ <path d="M1.37549 79.7369L80.2723 1.00006L159.009 79.7369L237.906 1.00006" stroke="#979797" stroke-miterlimit="10"/>
43
+ <path d="M1.37549 1.00006L80.2723 79.7369L159.009 1.00006L237.906 79.7369" stroke="#979797" stroke-miterlimit="10"/>
44
+ <path d="M40.7439 79.7369C62.4865 79.7369 80.1123 62.111 80.1123 40.3685C80.1123 18.6259 62.4865 1.00006 40.7439 1.00006C19.0013 1.00006 1.37549 18.6259 1.37549 40.3685C1.37549 62.111 19.0013 79.7369 40.7439 79.7369Z" stroke="#979797" stroke-miterlimit="10"/>
45
+ </svg>
46
+ <h1>Failed to connect to your site's local server</h1>
47
+ <div id="info-text">Your local stackbit dev cannot connect to the dev server of your site, which should be running at __URL__.<br/>Please check that it is up and running. <a href="https://docs.stackbit.com/how-to-guides/local-dev/#troubleshooting" target="_blank">Learn more.</a></div>
42
48
  </div>
43
49
  <script type="application/javascript">
44
50
  function poll() {
package/src/command.ts CHANGED
@@ -1,5 +1,18 @@
1
+ import _ from 'lodash';
1
2
  import yargs from 'yargs';
2
3
 
4
+ function possibleArray(val: any) {
5
+ let result;
6
+ if (!_.isEmpty(val)) {
7
+ if (_.isArray(val)) {
8
+ result = val;
9
+ } else {
10
+ result = [val];
11
+ }
12
+ }
13
+ return result;
14
+ }
15
+
3
16
  export function builder(yargs: yargs.Argv) {
4
17
  yargs
5
18
  .option('port', {
@@ -17,6 +30,24 @@ export function builder(yargs: yargs.Argv) {
17
30
  description: 'root dir',
18
31
  default: process.cwd()
19
32
  })
33
+ .options('cms', {
34
+ alias: 'c',
35
+ description: 'CMS type',
36
+ default: '',
37
+ choices: ['', 'git', 'contentful']
38
+ })
39
+ .options('contentful-access-token', {
40
+ description: 'Contentful access token',
41
+ default: ''
42
+ })
43
+ .options('contentful-space-id', {
44
+ description: 'Contentful space ID',
45
+ default: ''
46
+ })
47
+ .options('contentful-preview-key', {
48
+ description: 'Contentful preview key',
49
+ default: ''
50
+ })
20
51
  .options('runnable-dir', {
21
52
  description: 'runnable dir',
22
53
  default: ''
@@ -25,17 +56,44 @@ export function builder(yargs: yargs.Argv) {
25
56
  description: 'log level',
26
57
  default: 'info'
27
58
  })
28
- .options('help', {});
59
+ .options('open', {
60
+ description: 'Auto open',
61
+ type: 'boolean'
62
+ })
63
+ .options('help', {})
64
+ .check(argv => {
65
+ if (argv.cms === 'contentful') {
66
+ if (!argv.contentfulAccessToken) {
67
+ throw new Error('Missing Contentful access token: --contentful-access-token <access-token>');
68
+ }
69
+ if (!argv.contentfulPreviewToken) {
70
+ throw new Error('Missing Contentful preview token: --contentful-preview-token <preview-token>');
71
+ }
72
+ if (!argv.contentfulSpaceId) {
73
+ throw new Error('Missing Contentful space ID: --contentful-space-id <space-id>');
74
+ }
75
+ if (possibleArray(argv.contentfulSpaceId)?.length !== possibleArray(argv.contentfulPreviewToken)?.length) {
76
+ throw new Error('Mismatch between number of space ID\'s and preview tokens provided.');
77
+ }
78
+ }
79
+ return true;
80
+ })
29
81
  }
30
82
 
31
83
  export async function handler(argv: any) {
32
84
  if (argv['log-level']) {
33
85
  process.env.LOG_LEVEL = argv['log-level'];
34
86
  }
87
+
35
88
  return require('./dev').start({
36
89
  ssgPort: argv.port,
37
90
  ssgHost: argv.host,
38
91
  rootDir: argv.dir,
39
- runnableDir: argv['runnable-dir']
92
+ autoOpen: argv.open,
93
+ cmsType: argv.cms,
94
+ runnableDir: argv['runnable-dir'],
95
+ contentfulAccessToken: argv.contentfulAccessToken,
96
+ contentfulSpaceIds: possibleArray(argv.contentfulSpaceId),
97
+ contentfulPreviewTokens: possibleArray(argv.contentfulPreviewToken)
40
98
  });
41
99
  }
package/src/dev.ts CHANGED
@@ -7,47 +7,81 @@ import logger from './services/logger';
7
7
  import apiService from './services/api';
8
8
  import config from './config';
9
9
  import chalk from 'chalk';
10
+ import open from 'open';
10
11
 
11
- export async function start({
12
- ssgPort = 3000,
13
- ssgHost = 'localhost',
14
- rootDir = process.cwd(),
15
- runnableDir
16
- }: {
12
+ interface DevOptions {
17
13
  ssgPort: number;
18
14
  ssgHost: string;
19
15
  rootDir: string;
20
16
  runnableDir?: string;
21
- }) {
22
- logger.info('Site directory: ' + rootDir);
17
+ autoOpen?: boolean;
18
+ cmsType?: string;
19
+ contentfulAccessToken?: string;
20
+ contentfulSpaceIds?: [string];
21
+ contentfulPreviewTokens?: [string];
22
+ }
23
+
24
+ export async function start(options: DevOptions) {
25
+ logger.info('Site directory: ' + options.rootDir);
23
26
 
24
27
  let serverPort = await detectPort(8090);
25
28
  const userId = getUserId();
26
29
  logger.debug('id: ' + userId);
27
30
 
28
- try {
29
- await startServer({ serverPort, ssgHost, ssgPort, rootDir, runnableDir, uuid: userId });
30
- } catch (err) {
31
- logger.error('Error starting Stackbit dev server');
32
- logger.debug('startServer failed', { err });
33
- return false;
34
- }
35
-
36
31
  const localDetails = {
37
32
  i: userId,
38
33
  p: serverPort,
39
- v: require('../package.json').version
34
+ v: require('../package.json').version,
35
+ cms: options.cmsType || 'git'
40
36
  };
41
37
 
42
38
  logger.debug('Local details', { localDetails });
43
39
  const studioUrl = `${config.appUrl}/local/${Buffer.from(JSON.stringify(localDetails)).toString('base64')}`;
44
40
 
41
+ let updateLocalDevDetails: (() => Promise<any>) | undefined = () => {
42
+ return apiService.updateLocalDev(userId, {
43
+ ...localDetails,
44
+ ...(options.cmsType === 'contentful'
45
+ ? {
46
+ contentfulAccessToken: options.contentfulAccessToken,
47
+ contentfulSpaces: options.contentfulSpaceIds?.map((spaceId, i) => ({
48
+ spaceId,
49
+ previewApiKey: options.contentfulPreviewTokens?.[i]
50
+ }))
51
+ }
52
+ : {})
53
+ });
54
+ };
55
+
45
56
  try {
46
- await apiService.updateLocalDev(userId, localDetails);
57
+ await updateLocalDevDetails();
58
+ updateLocalDevDetails = undefined;
59
+ } catch (err: any) {
60
+ // failure here is expected if user hasn't pressed the link yet.
61
+ // in that case we defer the update to when the server starts getting accessed.
62
+ logger.debug('updateLocalDev failed', { err: err.message || err });
63
+ }
64
+
65
+ try {
66
+ await startServer({
67
+ serverPort,
68
+ uuid: userId,
69
+ updateLocalDevDetails,
70
+ ...options
71
+ });
47
72
  } catch (err) {
48
- logger.debug('updateLocalDev failed', { err });
73
+ logger.error('Error starting Stackbit dev server');
74
+ logger.debug('startServer failed', { err });
75
+ return false;
49
76
  }
50
77
 
51
- logger.info(`Server started. Forwarding requests to: ${ssgHost}:${ssgPort}`);
52
- logger.info(`Open ${chalk.bold(studioUrl)} in your browser`);
78
+ logger.info(`Server started. Forwarding requests to: ${options.ssgHost}:${options.ssgPort}`);
79
+ logger.info(`⚡ Open${options.autoOpen ? 'ing' : ''} ${chalk.bold(studioUrl)} in your browser`);
80
+
81
+ if (options.autoOpen) {
82
+ open(studioUrl).catch(err => {
83
+ logger.debug('Auto open error', { err });
84
+ logger.error('Error auto opening');
85
+ })
86
+ }
53
87
  }
@@ -2,7 +2,8 @@ import _ from 'lodash';
2
2
  import path from 'path';
3
3
  import ssg from './ssg';
4
4
  import Editor from '@stackbit/dev-common/dist/runner/editor';
5
- import GitCMS from '@stackbit/dev-common/dist/cms/git';
5
+ import GitCMS from '@stackbit/dev-common/dist/cms/git/git';
6
+ import { Contentful as ContentfulCMS } from '@stackbit/dev-common/dist/cms/contentful/contentful';
6
7
  import Worker from '@stackbit/dev-common/dist/utils/worker';
7
8
  import { StackbitYaml } from '@stackbit/dev-common/dist/services/stackbit-yaml';
8
9
  import socketService from '@stackbit/dev-common/dist/services/socket-service';
@@ -11,19 +12,32 @@ import { watchDir } from '../services/file-watcher';
11
12
  import logger from '../services/logger';
12
13
  import consts from '../consts';
13
14
 
15
+ interface RunnerOptions {
16
+ rootDir: string;
17
+ runnableDir?: string;
18
+ cmsType?: string;
19
+ contentfulAccessToken?: string;
20
+ contentfulSpaceIds?: [string];
21
+ contentfulPreviewTokens?: [string];
22
+ }
14
23
  export default class Runner {
15
24
  private editor: any;
25
+ private cmsType?: string;
16
26
  private cms: any;
17
27
  private stackbitYaml: any;
18
28
  private workers: any;
19
29
  private watcher: any;
20
30
 
31
+ private readonly options: RunnerOptions;
21
32
  private rootDir: string;
22
33
  private appDir?: string;
23
34
 
24
- constructor({ rootDir, runnableDir }: { rootDir: string; runnableDir?: string }) {
25
- this.rootDir = rootDir;
26
- this.appDir = runnableDir ? path.join(this.rootDir, runnableDir) : this.rootDir;
35
+ constructor(options: RunnerOptions) {
36
+ this.options = options;
37
+ this.rootDir = options.rootDir;
38
+ this.appDir = options.runnableDir ? path.join(this.rootDir, options.runnableDir) : this.rootDir;
39
+ this.cmsType = options.cmsType;
40
+
27
41
  this.workers = {
28
42
  gitApp: new Worker()
29
43
  };
@@ -40,21 +54,7 @@ export default class Runner {
40
54
  envName: 'local' //TODO
41
55
  });
42
56
  await this.stackbitYaml.load();
43
- this.cms = new GitCMS({
44
- rootDir: this.rootDir,
45
- repoDir: this.rootDir,
46
- appDir: this.appDir,
47
- stackbitYaml: this.stackbitYaml,
48
- workers: this.workers,
49
- assetIdPrefix: consts.ASSET_ID_PREFIX,
50
- staticAssetsFilePath: consts.STATIC_ASSETS_FILE_PATH,
51
- staticAssetsPublicPath: consts.STATIC_ASSETS_PUBLIC_PATH,
52
- staticThemeAssetsFilePath: consts.STATIC_THEME_ASSETS_FILE_PATH,
53
- staticThemeAssetsPublicPath: consts.STATIC_THEME_ASSETS_PUBLIC_PATH,
54
- defaultContentTypeExtensions: consts.DEFAULT_CONTENT_TYPE_EXTENSIONS,
55
- logger,
56
- userLogger: logger
57
- });
57
+ this.cms = this.createCms();
58
58
  await this.cms.run();
59
59
  this.editor = new Editor(null, this.cms, this.stackbitYaml, {
60
60
  logger,
@@ -63,11 +63,53 @@ export default class Runner {
63
63
  this.watcher = watchDir(this.rootDir, (filePaths) => {
64
64
  logger.debug(`File change detected: ${filePaths}`);
65
65
  this.handleFileChanges(filePaths).catch((err) => {
66
+ logger.debug('Handle file change error', { err, filePaths })
66
67
  logger.error('Error handling file changes: ' + filePaths.join(', '));
67
68
  });
68
69
  });
69
70
  }
70
71
 
72
+ createCms() {
73
+ let result;
74
+ if (this.cmsType === 'contentful') {
75
+ result = new ContentfulCMS({
76
+ accessToken: this.options.contentfulAccessToken ?? null,
77
+ spaces: this.options.contentfulSpaceIds!.map((spaceId, i) => ({
78
+ spaceId,
79
+ previewToken: this.options.contentfulPreviewTokens![i]
80
+ })),
81
+ stackbitYaml: this.stackbitYaml,
82
+ encodeDelimiter: '',
83
+ rootDir: this.rootDir,
84
+ appDir: this.appDir!,
85
+ repoDir: this.rootDir,
86
+ staticThemeAssetsFilePath: consts.STATIC_THEME_ASSETS_FILE_PATH,
87
+ staticThemeAssetsPublicPath: consts.STATIC_THEME_ASSETS_PUBLIC_PATH,
88
+ watchForContentUpdates: true,
89
+ onContentUpdate: () => {},
90
+ logger: logger,
91
+ userLogger: logger
92
+ });
93
+ } else {
94
+ result = new GitCMS({
95
+ rootDir: this.rootDir,
96
+ repoDir: this.rootDir,
97
+ appDir: this.appDir,
98
+ stackbitYaml: this.stackbitYaml,
99
+ workers: this.workers,
100
+ assetIdPrefix: consts.ASSET_ID_PREFIX,
101
+ staticAssetsFilePath: consts.STATIC_ASSETS_FILE_PATH,
102
+ staticAssetsPublicPath: consts.STATIC_ASSETS_PUBLIC_PATH,
103
+ staticThemeAssetsFilePath: consts.STATIC_THEME_ASSETS_FILE_PATH,
104
+ staticThemeAssetsPublicPath: consts.STATIC_THEME_ASSETS_PUBLIC_PATH,
105
+ defaultContentTypeExtensions: consts.DEFAULT_CONTENT_TYPE_EXTENSIONS,
106
+ logger,
107
+ userLogger: logger
108
+ });
109
+ }
110
+ return result;
111
+ }
112
+
71
113
  async handleFileChanges(filePaths: string[]) {
72
114
  const pullResult = await this.cms.postPull(filePaths.map((filePath) => path.join(this.rootDir, filePath))).catch((err: any) => {
73
115
  logger.debug('Error in postPull', { err });
@@ -162,4 +204,8 @@ export default class Runner {
162
204
  throw new Error('Unsupported Operation');
163
205
  }
164
206
  }
207
+
208
+ keepAlive() {
209
+ _.invoke(this.cms, 'keepAlive');
210
+ }
165
211
  }
@@ -10,27 +10,30 @@ import proxy from './proxy';
10
10
  import Runner from '../runner';
11
11
  import consts from '../consts';
12
12
  import socketService from '@stackbit/dev-common/dist/services/socket-service';
13
+ import { options } from 'yargs';
13
14
 
14
- export async function start({
15
- serverPort,
16
- ssgPort,
17
- ssgHost,
18
- rootDir,
19
- runnableDir,
20
- uuid
21
- }: {
15
+ interface ServerOptions {
22
16
  serverPort: number;
23
17
  ssgPort: number;
24
18
  ssgHost: string;
25
19
  rootDir: string;
26
20
  runnableDir?: string;
27
21
  uuid: string;
28
- }) {
22
+ cmsType?: string;
23
+ contentfulAccessToken?: string;
24
+ contentfulSpaceIds?: [string];
25
+ contentfulPreviewTokens?: [string];
26
+ updateLocalDevDetails?: () => Promise<any>;
27
+ }
28
+
29
+ export async function start({ serverPort, ssgPort, ssgHost, rootDir, runnableDir, uuid, cmsType, ...options }: ServerOptions) {
29
30
  logger.debug('Runner init...');
30
31
 
31
32
  const runner = new Runner({
32
33
  rootDir,
33
- runnableDir
34
+ runnableDir,
35
+ cmsType,
36
+ ...options
34
37
  });
35
38
  await runner.install();
36
39
 
@@ -41,17 +44,22 @@ export async function start({
41
44
  socketService.use(httpServer, logger);
42
45
 
43
46
  server.use(require('cors')());
44
- // if (config.setContentSecurityPolicy) {
45
- // server.use((req, res, next) => {
46
- // const hosts = getClientAllowedHosts(req).join(' ');
47
- // res.set('Content-Security-Policy', `frame-ancestors 'self' ${hosts}`);
48
- // next();
49
- // });
50
- // }
51
47
 
52
- // log requests
48
+ let updateLocalDevDetails = options.updateLocalDevDetails;
53
49
  server.use((req, res, next) => {
50
+ // log requests
54
51
  logger.debug(`got request ${req.method} ${req.path}`, { method: req.method, originalUrl: req.originalUrl, url: req.url, path: req.path });
52
+
53
+ // handle details update if not handled yet
54
+ const runUpdateLocalDevDetails = updateLocalDevDetails;
55
+ updateLocalDevDetails = undefined;
56
+ runUpdateLocalDevDetails?.().then(() => {
57
+ logger.debug('Updated local dev details after startup')
58
+ }).catch(err => {
59
+ logger.debug('Error updating local details', { err });
60
+ logger.error('Error configuring Stackbit with local details');
61
+ });
62
+
55
63
  next();
56
64
  });
57
65
 
@@ -25,6 +25,10 @@ const authMiddleware = (uuid: string) => {
25
25
  };
26
26
 
27
27
  export default function routes(router: Router, runner: Runner, uuid: string) {
28
+ router.use((req, res, next) => {
29
+ runner.keepAlive();
30
+ next();
31
+ });
28
32
  router.post('/_objects', [bodyParser.json({ limit: '500kb' })], (req: Request, res: Response, next: NextFunction) => {
29
33
  const { objectIds } = req.body;
30
34
  return runner
@@ -1,10 +1,10 @@
1
1
  import Configstore from 'configstore';
2
- import uuid from 'uuid';
2
+ import { v4 as uuidv4 } from 'uuid';
3
3
 
4
4
  const config = new Configstore(
5
5
  'stackbit-dev',
6
6
  {
7
- userId: uuid.v4().toString().replace(/\-/g, '')
7
+ userId: uuidv4().toString().replace(/\-/g, '')
8
8
  },
9
9
  { globalConfigPath: true }
10
10
  );