@stackbit/dev 0.0.6 → 0.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/loading-page.html +5 -1
- package/dist/dev.js +2 -15
- package/dist/dev.js.map +1 -1
- package/dist/runner/index.d.ts +2 -4
- package/dist/runner/index.js +29 -24
- package/dist/runner/index.js.map +1 -1
- package/dist/server/index.d.ts +2 -1
- package/dist/server/index.js +8 -6
- package/dist/server/index.js.map +1 -1
- package/dist/server/proxy.d.ts +2 -1
- package/dist/server/proxy.js +1 -3
- package/dist/server/proxy.js.map +1 -1
- package/dist/server/routes.d.ts +1 -1
- package/dist/server/routes.js +35 -53
- package/dist/server/routes.js.map +1 -1
- package/package.json +4 -5
- package/src/assets/loading-page.html +5 -1
- package/src/dev.ts +2 -14
- package/src/runner/index.ts +31 -28
- package/src/server/index.ts +13 -7
- package/src/server/proxy.ts +2 -4
- package/src/server/routes.ts +34 -53
- package/dist/services/ngrok.d.ts +0 -1
- package/dist/services/ngrok.js +0 -18
- package/dist/services/ngrok.js.map +0 -1
- package/src/services/ngrok.ts +0 -11
|
@@ -43,7 +43,11 @@
|
|
|
43
43
|
<script type="application/javascript">
|
|
44
44
|
function poll() {
|
|
45
45
|
fetch('/', { method: 'HEAD' }).then((response) => {
|
|
46
|
-
|
|
46
|
+
if (response.status === 504) {
|
|
47
|
+
window.setTimeout(poll, 1000);
|
|
48
|
+
} else {
|
|
49
|
+
window.location = "__PATH__";
|
|
50
|
+
}
|
|
47
51
|
}).catch(err => {
|
|
48
52
|
window.setTimeout(poll, 1000);
|
|
49
53
|
})
|
package/dist/dev.js
CHANGED
|
@@ -4,33 +4,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.start = void 0;
|
|
7
|
-
const url_1 = require("url");
|
|
8
7
|
const detect_port_1 = __importDefault(require("detect-port"));
|
|
9
8
|
const server_1 = require("./server");
|
|
10
|
-
const ngrok_1 = require("./services/ngrok");
|
|
11
9
|
const user_config_1 = require("./services/user-config");
|
|
12
10
|
const logger_1 = __importDefault(require("./services/logger"));
|
|
13
11
|
const api_1 = __importDefault(require("./services/api"));
|
|
14
12
|
const config_1 = __importDefault(require("./config"));
|
|
15
13
|
const chalk_1 = __importDefault(require("chalk"));
|
|
16
14
|
async function start({ ssgPort = 3000, ssgHost = 'localhost', rootDir = process.cwd(), runnableDir }) {
|
|
17
|
-
var _a;
|
|
18
15
|
logger_1.default.info('Site directory: ' + rootDir);
|
|
19
16
|
let serverPort = await (0, detect_port_1.default)(8090);
|
|
20
17
|
const userId = (0, user_config_1.getUserId)();
|
|
21
18
|
logger_1.default.debug('id: ' + userId);
|
|
22
|
-
let url;
|
|
23
19
|
try {
|
|
24
|
-
|
|
25
|
-
logger_1.default.debug('Server created', { url });
|
|
26
|
-
}
|
|
27
|
-
catch (err) {
|
|
28
|
-
logger_1.default.error('Error starting ngrok');
|
|
29
|
-
logger_1.default.debug('createTunnel failed', { err });
|
|
30
|
-
return false;
|
|
31
|
-
}
|
|
32
|
-
try {
|
|
33
|
-
await (0, server_1.start)({ serverPort, ssgHost, ssgPort, rootDir, runnableDir });
|
|
20
|
+
await (0, server_1.start)({ serverPort, ssgHost, ssgPort, rootDir, runnableDir, uuid: userId });
|
|
34
21
|
}
|
|
35
22
|
catch (err) {
|
|
36
23
|
logger_1.default.error('Error starting Stackbit dev server');
|
|
@@ -39,7 +26,7 @@ async function start({ ssgPort = 3000, ssgHost = 'localhost', rootDir = process.
|
|
|
39
26
|
}
|
|
40
27
|
const localDetails = {
|
|
41
28
|
i: userId,
|
|
42
|
-
|
|
29
|
+
p: serverPort,
|
|
43
30
|
v: require('../package.json').version
|
|
44
31
|
};
|
|
45
32
|
logger_1.default.debug('Local details', { localDetails });
|
package/dist/dev.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../src/dev.ts"],"names":[],"mappings":";;;;;;AACA,
|
|
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"}
|
package/dist/runner/index.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export default class Runner {
|
|
|
11
11
|
runnableDir?: string;
|
|
12
12
|
});
|
|
13
13
|
install(): Promise<void>;
|
|
14
|
-
handleFileChanges(filePaths: string[]): void
|
|
14
|
+
handleFileChanges(filePaths: string[]): Promise<void>;
|
|
15
15
|
getDirectPaths(): string[];
|
|
16
16
|
/**
|
|
17
17
|
* Function retuning a map or a function that rewrites direct proxy requests.
|
|
@@ -30,9 +30,7 @@ export default class Runner {
|
|
|
30
30
|
getSchema(): Promise<any>;
|
|
31
31
|
getUrl(objectId: string, projectId: string, locale: string): Promise<any>;
|
|
32
32
|
getObject(objectId: string, projectId: string): Promise<any>;
|
|
33
|
-
createObject(modelName: string, filePath: any, object: string, user: any): Promise<any>;
|
|
34
|
-
deleteObject(objectId: string, user: any): Promise<any>;
|
|
35
|
-
updateObject(objectId: string, projectId: string, object: any, user: any): Promise<any>;
|
|
36
33
|
listAssets(filterParams: any): Promise<any>;
|
|
37
34
|
uploadAsset(url: string, filename: string, user: any): Promise<any>;
|
|
35
|
+
makeAction(action: string, data: any): Promise<any>;
|
|
38
36
|
}
|
package/dist/runner/index.js
CHANGED
|
@@ -10,6 +10,7 @@ const editor_1 = __importDefault(require("@stackbit/dev-common/dist/runner/edito
|
|
|
10
10
|
const git_1 = __importDefault(require("@stackbit/dev-common/dist/cms/git"));
|
|
11
11
|
const worker_1 = __importDefault(require("@stackbit/dev-common/dist/utils/worker"));
|
|
12
12
|
const stackbit_yaml_1 = require("@stackbit/dev-common/dist/services/stackbit-yaml");
|
|
13
|
+
const socket_service_1 = __importDefault(require("@stackbit/dev-common/dist/services/socket-service"));
|
|
13
14
|
const file_watcher_1 = require("../services/file-watcher");
|
|
14
15
|
const logger_1 = __importDefault(require("../services/logger"));
|
|
15
16
|
const consts_1 = __importDefault(require("../consts"));
|
|
@@ -54,22 +55,22 @@ class Runner {
|
|
|
54
55
|
});
|
|
55
56
|
this.watcher = (0, file_watcher_1.watchDir)(this.rootDir, (filePaths) => {
|
|
56
57
|
logger_1.default.debug(`File change detected: ${filePaths}`);
|
|
57
|
-
this.handleFileChanges(filePaths)
|
|
58
|
+
this.handleFileChanges(filePaths).catch((err) => {
|
|
59
|
+
logger_1.default.error('Error handling file changes: ' + filePaths.join(', '));
|
|
60
|
+
});
|
|
58
61
|
});
|
|
59
62
|
}
|
|
60
|
-
handleFileChanges(filePaths) {
|
|
61
|
-
this.cms.postPull(filePaths.map((filePath) => path_1.default.join(this.rootDir, filePath))).catch((err) => {
|
|
63
|
+
async handleFileChanges(filePaths) {
|
|
64
|
+
const pullResult = await this.cms.postPull(filePaths.map((filePath) => path_1.default.join(this.rootDir, filePath))).catch((err) => {
|
|
62
65
|
logger_1.default.debug('Error in postPull', { err });
|
|
66
|
+
throw err;
|
|
63
67
|
});
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
continue;
|
|
67
|
-
}
|
|
68
|
-
this.stackbitYaml.load().catch((err) => {
|
|
68
|
+
if (pullResult === null || pullResult === void 0 ? void 0 : pullResult.schemaChanged) {
|
|
69
|
+
await this.stackbitYaml.load().catch((err) => {
|
|
69
70
|
logger_1.default.debug('Error handling stackbit.yaml change', { err });
|
|
70
71
|
logger_1.default.error('Error reloading stackbit.yaml');
|
|
71
72
|
});
|
|
72
|
-
|
|
73
|
+
socket_service_1.default.notifySchemaChange();
|
|
73
74
|
}
|
|
74
75
|
}
|
|
75
76
|
getDirectPaths() {
|
|
@@ -94,7 +95,7 @@ class Runner {
|
|
|
94
95
|
}
|
|
95
96
|
async getObjectsWithAnnotations(annotationTree = null, clientAnnotationErrors = []) {
|
|
96
97
|
var _a;
|
|
97
|
-
const result = this.editor.getObjectsWithAnnotations(annotationTree);
|
|
98
|
+
const result = await this.editor.getObjectsWithAnnotations(annotationTree);
|
|
98
99
|
lodash_1.default.forEach([...((_a = result.errors) !== null && _a !== void 0 ? _a : []), ...clientAnnotationErrors], (error) => {
|
|
99
100
|
const errorProps = lodash_1.default.omit(error, ['type', 'message']);
|
|
100
101
|
logger_1.default.error(`${error.message} ${lodash_1.default.map(errorProps, (val, key) => `${key}:'${val && val.toString ? val.toString() : val}'`).join(', ')}`);
|
|
@@ -116,26 +117,30 @@ class Runner {
|
|
|
116
117
|
async getObject(objectId, projectId) {
|
|
117
118
|
return this.cms.getObject(objectId, projectId);
|
|
118
119
|
}
|
|
119
|
-
createObject(modelName, filePath, object, user) {
|
|
120
|
-
return this.cms.createObject(modelName, filePath, object, user);
|
|
121
|
-
}
|
|
122
|
-
deleteObject(objectId, user) {
|
|
123
|
-
return this.cms.deleteObject(objectId, user);
|
|
124
|
-
}
|
|
125
|
-
updateObject(objectId, projectId, object, user) {
|
|
126
|
-
return this.getObject(objectId, projectId).then((existingObject) => {
|
|
127
|
-
if (!existingObject) {
|
|
128
|
-
throw new Error('Object not found');
|
|
129
|
-
}
|
|
130
|
-
return this.cms.updateObject(existingObject, object, user);
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
120
|
async listAssets(filterParams) {
|
|
134
121
|
return this.cms.listAssets(filterParams);
|
|
135
122
|
}
|
|
136
123
|
async uploadAsset(url, filename, user) {
|
|
137
124
|
return this.cms.uploadAsset(url, filename, user);
|
|
138
125
|
}
|
|
126
|
+
async makeAction(action, data) {
|
|
127
|
+
switch (action) {
|
|
128
|
+
case 'createPage':
|
|
129
|
+
return this.cms.createObject(data);
|
|
130
|
+
case 'duplicatePage':
|
|
131
|
+
return this.cms.duplicateObject(data);
|
|
132
|
+
case 'updatePage':
|
|
133
|
+
return this.cms.updateObject(data.changedFields);
|
|
134
|
+
case 'deleteObject':
|
|
135
|
+
return this.cms.deleteObject(data.srcObjectId, data.srcProjectId);
|
|
136
|
+
case 'getAssets':
|
|
137
|
+
return this.cms.listAssets(data);
|
|
138
|
+
case 'uploadAssets':
|
|
139
|
+
return this.cms.uploadAssets(data.assets);
|
|
140
|
+
default:
|
|
141
|
+
throw new Error('Unsupported Operation');
|
|
142
|
+
}
|
|
143
|
+
}
|
|
139
144
|
}
|
|
140
145
|
exports.default = Runner;
|
|
141
146
|
//# sourceMappingURL=index.js.map
|
package/dist/runner/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runner/index.ts"],"names":[],"mappings":";;;;;AAAA,oDAAuB;AACvB,gDAAwB;AACxB,gDAAwB;AACxB,qFAA6D;AAC7D,4EAAuD;AACvD,oFAA4D;AAC5D,oFAAgF;AAChF,2DAAoD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runner/index.ts"],"names":[],"mappings":"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"}
|
package/dist/server/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
export declare function start({ serverPort, ssgPort, ssgHost, rootDir, runnableDir }: {
|
|
1
|
+
export declare function start({ serverPort, ssgPort, ssgHost, rootDir, runnableDir, uuid }: {
|
|
2
2
|
serverPort: number;
|
|
3
3
|
ssgPort: number;
|
|
4
4
|
ssgHost: string;
|
|
5
5
|
rootDir: string;
|
|
6
6
|
runnableDir?: string;
|
|
7
|
+
uuid: string;
|
|
7
8
|
}): Promise<void>;
|
package/dist/server/index.js
CHANGED
|
@@ -13,15 +13,17 @@ 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 }) {
|
|
17
|
-
|
|
18
|
-
const httpServer = http_1.default.createServer(server);
|
|
19
|
-
socket_service_1.default.use(httpServer, logger_1.default);
|
|
16
|
+
async function start({ serverPort, ssgPort, ssgHost, rootDir, runnableDir, uuid }) {
|
|
17
|
+
logger_1.default.debug('Runner init...');
|
|
20
18
|
const runner = new runner_1.default({
|
|
21
19
|
rootDir,
|
|
22
20
|
runnableDir
|
|
23
21
|
});
|
|
24
22
|
await runner.install();
|
|
23
|
+
logger_1.default.debug('Done runner init');
|
|
24
|
+
const server = (0, express_1.default)();
|
|
25
|
+
const httpServer = http_1.default.createServer(server);
|
|
26
|
+
socket_service_1.default.use(httpServer, logger_1.default);
|
|
25
27
|
server.use(require('cors')());
|
|
26
28
|
// if (config.setContentSecurityPolicy) {
|
|
27
29
|
// server.use((req, res, next) => {
|
|
@@ -38,8 +40,8 @@ async function start({ serverPort, ssgPort, ssgHost, rootDir, runnableDir }) {
|
|
|
38
40
|
server.use('/_static', express_1.default.static('static'));
|
|
39
41
|
server.use(consts_1.default.STATIC_ASSETS_PUBLIC_PATH, express_1.default.static(path_1.default.join(rootDir, consts_1.default.STATIC_ASSETS_FILE_PATH)));
|
|
40
42
|
server.use(consts_1.default.STATIC_THEME_ASSETS_PUBLIC_PATH, express_1.default.static(path_1.default.join(rootDir, consts_1.default.STATIC_THEME_ASSETS_FILE_PATH)));
|
|
41
|
-
(0, routes_1.default)(server, runner);
|
|
42
|
-
|
|
43
|
+
(0, routes_1.default)(server, runner, uuid);
|
|
44
|
+
(0, proxy_1.default)(server, ssgHost, ssgPort, runner);
|
|
43
45
|
return new Promise((resolve, reject) => {
|
|
44
46
|
httpServer.listen(serverPort, () => {
|
|
45
47
|
logger_1.default.debug('Server running on port ' + serverPort);
|
package/dist/server/index.js.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/server/proxy.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
import express, { Router } from 'express';
|
|
1
2
|
import Runner from '../runner';
|
|
2
|
-
export default function proxyMiddleware(ssgHost: string, ssgPort: number, runner: Runner):
|
|
3
|
+
export default function proxyMiddleware(router: Router, ssgHost: string, ssgPort: number, runner: Runner): express.Router;
|
package/dist/server/proxy.js
CHANGED
|
@@ -5,16 +5,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const lodash_1 = __importDefault(require("lodash"));
|
|
7
7
|
const path_1 = __importDefault(require("path"));
|
|
8
|
-
const express_1 = __importDefault(require("express"));
|
|
9
8
|
const http_proxy_middleware_1 = __importDefault(require("http-proxy-middleware"));
|
|
10
9
|
const logger_1 = __importDefault(require("../services/logger"));
|
|
11
10
|
const consts_1 = __importDefault(require("../consts"));
|
|
12
11
|
const proxy_utils_1 = require("@stackbit/dev-common/dist/utils/proxy-utils");
|
|
13
12
|
const pages_1 = require("@stackbit/dev-common/dist/utils/pages");
|
|
14
13
|
const config_1 = __importDefault(require("../config"));
|
|
15
|
-
function proxyMiddleware(ssgHost, ssgPort, runner) {
|
|
14
|
+
function proxyMiddleware(router, ssgHost, ssgPort, runner) {
|
|
16
15
|
var _a;
|
|
17
|
-
const router = express_1.default.Router();
|
|
18
16
|
router.use((req, res, next) => {
|
|
19
17
|
lodash_1.default.unset(req, 'headers.x-forwarded-proto');
|
|
20
18
|
const rawHeaders = lodash_1.default.get(req, 'rawHeaders');
|
package/dist/server/proxy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/server/proxy.ts"],"names":[],"mappings":";;;;;AAAA,oDAAuB;AACvB,gDAAwB;
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/server/proxy.ts"],"names":[],"mappings":"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"}
|
package/dist/server/routes.d.ts
CHANGED
package/dist/server/routes.js
CHANGED
|
@@ -7,10 +7,27 @@ const lodash_1 = __importDefault(require("lodash"));
|
|
|
7
7
|
const body_parser_1 = __importDefault(require("body-parser"));
|
|
8
8
|
const logger_1 = __importDefault(require("../services/logger"));
|
|
9
9
|
const response_errors_1 = require("@stackbit/dev-common/dist/services/response-errors");
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
const authMiddleware = (uuid) => {
|
|
11
|
+
return (req, res, next) => {
|
|
12
|
+
try {
|
|
13
|
+
if (!req.headers.authorization) {
|
|
14
|
+
throw 'No token provided';
|
|
15
|
+
}
|
|
16
|
+
const token = req.headers.authorization.split(' ')[1];
|
|
17
|
+
if (token === uuid) {
|
|
18
|
+
next();
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
throw 'Bad token provided';
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
logger_1.default.error('not authenticated', { error: err });
|
|
26
|
+
res.status(400).send('Not authenticated');
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
function routes(router, runner, uuid) {
|
|
14
31
|
router.post('/_objects', [body_parser_1.default.json({ limit: '500kb' })], (req, res, next) => {
|
|
15
32
|
const { objectIds } = req.body;
|
|
16
33
|
return runner
|
|
@@ -116,47 +133,6 @@ function routes(router, runner) {
|
|
|
116
133
|
next(err);
|
|
117
134
|
});
|
|
118
135
|
});
|
|
119
|
-
router.post('/_object', [body_parser_1.default.json({ limit: '500kb' })], (req, res, next) => {
|
|
120
|
-
const { modelName, filePath, object, user } = req.body;
|
|
121
|
-
return runner
|
|
122
|
-
.createObject(modelName, filePath, object, user)
|
|
123
|
-
.then((response) => {
|
|
124
|
-
res.json(response);
|
|
125
|
-
})
|
|
126
|
-
.catch((err) => {
|
|
127
|
-
logger_1.default.error('Error creating object');
|
|
128
|
-
logger_1.default.debug('error creating object', { error: err });
|
|
129
|
-
next(err);
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
|
-
router.put('/_object', [body_parser_1.default.json({ limit: '500kb' })], (req, res, next) => {
|
|
133
|
-
const { objectId, projectId } = req.query;
|
|
134
|
-
const { object, user } = req.body;
|
|
135
|
-
return runner
|
|
136
|
-
.updateObject(objectId, projectId, object, user)
|
|
137
|
-
.then((response) => {
|
|
138
|
-
res.json(response);
|
|
139
|
-
})
|
|
140
|
-
.catch((err) => {
|
|
141
|
-
logger_1.default.error('Error updating object');
|
|
142
|
-
logger_1.default.debug('error updating object', { error: err });
|
|
143
|
-
next(err);
|
|
144
|
-
});
|
|
145
|
-
});
|
|
146
|
-
router.delete('/_object', [body_parser_1.default.json({ limit: '500kb' })], (req, res, next) => {
|
|
147
|
-
const { objectId } = req.query;
|
|
148
|
-
const { user } = req.body;
|
|
149
|
-
return runner
|
|
150
|
-
.deleteObject(objectId, user)
|
|
151
|
-
.then((response) => {
|
|
152
|
-
res.json(response);
|
|
153
|
-
})
|
|
154
|
-
.catch((err) => {
|
|
155
|
-
logger_1.default.error('Error deleting collections');
|
|
156
|
-
logger_1.default.debug('error deleting object', { error: err });
|
|
157
|
-
next(err);
|
|
158
|
-
});
|
|
159
|
-
});
|
|
160
136
|
router.get('/_assets', [body_parser_1.default.json({ limit: '500kb' })], (req, res, next) => {
|
|
161
137
|
const filterParams = lodash_1.default.pick(req.body, ['searchQuery', 'pageId', 'pageSize']);
|
|
162
138
|
return runner
|
|
@@ -171,17 +147,23 @@ function routes(router, runner) {
|
|
|
171
147
|
next(err);
|
|
172
148
|
});
|
|
173
149
|
});
|
|
174
|
-
router.
|
|
175
|
-
|
|
150
|
+
router.get('/_health', (req, res) => {
|
|
151
|
+
return res.status(200).json({ status: 'ok' });
|
|
152
|
+
});
|
|
153
|
+
router.post('/_action', [authMiddleware(uuid), body_parser_1.default.json({ limit: '50mb' })], (req, res, next) => {
|
|
154
|
+
const { action, data } = req.body;
|
|
176
155
|
return runner
|
|
177
|
-
.
|
|
178
|
-
.then((
|
|
179
|
-
res.json(
|
|
156
|
+
.makeAction(action, data)
|
|
157
|
+
.then((result) => {
|
|
158
|
+
res.json(result);
|
|
180
159
|
})
|
|
181
160
|
.catch((err) => {
|
|
182
|
-
logger_1.default.error('Error
|
|
183
|
-
logger_1.default.debug('error
|
|
184
|
-
|
|
161
|
+
logger_1.default.error('Error performing action: ' + action);
|
|
162
|
+
logger_1.default.debug('error performing action', { action, error: err.message || err });
|
|
163
|
+
if (lodash_1.default.has(err, 'stack')) {
|
|
164
|
+
logger_1.default.debug('error.stack: ' + err.stack);
|
|
165
|
+
}
|
|
166
|
+
res.status(500).send('Error');
|
|
185
167
|
next(err);
|
|
186
168
|
});
|
|
187
169
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/server/routes.ts"],"names":[],"mappings":";;;;;AAAA,oDAAuB;AAEvB,8DAAqC;AAErC,gEAAwC;AACxC,wFAAuF;AAEvF,
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/server/routes.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stackbit/dev",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.10",
|
|
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.
|
|
26
|
-
"@stackbit/dev-common": "^0.0.
|
|
25
|
+
"@stackbit/cms-core": "^0.0.7",
|
|
26
|
+
"@stackbit/dev-common": "^0.0.10",
|
|
27
27
|
"@stackbit/sdk": "^0.2.22",
|
|
28
28
|
"axios": "^0.25.0",
|
|
29
29
|
"chalk": "^4.1.0",
|
|
@@ -35,7 +35,6 @@
|
|
|
35
35
|
"fs-extra": "^10.0.0",
|
|
36
36
|
"http-proxy-middleware": "^0.20.0",
|
|
37
37
|
"lodash": "^4.17.21",
|
|
38
|
-
"ngrok": "^4.3.0",
|
|
39
38
|
"rimraf": "^3.0.2",
|
|
40
39
|
"uuid": "^3.4.0",
|
|
41
40
|
"winston": "^3.4.0",
|
|
@@ -55,5 +54,5 @@
|
|
|
55
54
|
"ts-jest": "^27.1.3",
|
|
56
55
|
"typescript": "^4.5.4"
|
|
57
56
|
},
|
|
58
|
-
"gitHead": "
|
|
57
|
+
"gitHead": "ab8de1cf2842940c683edc717ec4192fa031de9a"
|
|
59
58
|
}
|
|
@@ -43,7 +43,11 @@
|
|
|
43
43
|
<script type="application/javascript">
|
|
44
44
|
function poll() {
|
|
45
45
|
fetch('/', { method: 'HEAD' }).then((response) => {
|
|
46
|
-
|
|
46
|
+
if (response.status === 504) {
|
|
47
|
+
window.setTimeout(poll, 1000);
|
|
48
|
+
} else {
|
|
49
|
+
window.location = "__PATH__";
|
|
50
|
+
}
|
|
47
51
|
}).catch(err => {
|
|
48
52
|
window.setTimeout(poll, 1000);
|
|
49
53
|
})
|
package/src/dev.ts
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import _ from 'lodash';
|
|
2
|
-
import { parse as parseUrl } from 'url';
|
|
3
2
|
import detectPort from 'detect-port';
|
|
4
3
|
|
|
5
4
|
import { start as startServer } from './server';
|
|
6
|
-
import { createTunnel } from './services/ngrok';
|
|
7
5
|
import { getUserId } from './services/user-config';
|
|
8
6
|
import logger from './services/logger';
|
|
9
7
|
import apiService from './services/api';
|
|
@@ -27,18 +25,8 @@ export async function start({
|
|
|
27
25
|
const userId = getUserId();
|
|
28
26
|
logger.debug('id: ' + userId);
|
|
29
27
|
|
|
30
|
-
let url;
|
|
31
28
|
try {
|
|
32
|
-
|
|
33
|
-
logger.debug('Server created', { url });
|
|
34
|
-
} catch (err) {
|
|
35
|
-
logger.error('Error starting ngrok');
|
|
36
|
-
logger.debug('createTunnel failed', { err });
|
|
37
|
-
return false;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
try {
|
|
41
|
-
await startServer({ serverPort, ssgHost, ssgPort, rootDir, runnableDir });
|
|
29
|
+
await startServer({ serverPort, ssgHost, ssgPort, rootDir, runnableDir, uuid: userId });
|
|
42
30
|
} catch (err) {
|
|
43
31
|
logger.error('Error starting Stackbit dev server');
|
|
44
32
|
logger.debug('startServer failed', { err });
|
|
@@ -47,7 +35,7 @@ export async function start({
|
|
|
47
35
|
|
|
48
36
|
const localDetails = {
|
|
49
37
|
i: userId,
|
|
50
|
-
|
|
38
|
+
p: serverPort,
|
|
51
39
|
v: require('../package.json').version
|
|
52
40
|
};
|
|
53
41
|
|
package/src/runner/index.ts
CHANGED
|
@@ -5,8 +5,9 @@ import Editor from '@stackbit/dev-common/dist/runner/editor';
|
|
|
5
5
|
import GitCMS from '@stackbit/dev-common/dist/cms/git';
|
|
6
6
|
import Worker from '@stackbit/dev-common/dist/utils/worker';
|
|
7
7
|
import { StackbitYaml } from '@stackbit/dev-common/dist/services/stackbit-yaml';
|
|
8
|
-
import
|
|
8
|
+
import socketService from '@stackbit/dev-common/dist/services/socket-service';
|
|
9
9
|
|
|
10
|
+
import { watchDir } from '../services/file-watcher';
|
|
10
11
|
import logger from '../services/logger';
|
|
11
12
|
import consts from '../consts';
|
|
12
13
|
|
|
@@ -61,23 +62,23 @@ export default class Runner {
|
|
|
61
62
|
});
|
|
62
63
|
this.watcher = watchDir(this.rootDir, (filePaths) => {
|
|
63
64
|
logger.debug(`File change detected: ${filePaths}`);
|
|
64
|
-
this.handleFileChanges(filePaths)
|
|
65
|
+
this.handleFileChanges(filePaths).catch((err) => {
|
|
66
|
+
logger.error('Error handling file changes: ' + filePaths.join(', '));
|
|
67
|
+
});
|
|
65
68
|
});
|
|
66
69
|
}
|
|
67
70
|
|
|
68
|
-
handleFileChanges(filePaths: string[]) {
|
|
69
|
-
this.cms.postPull(filePaths.map((filePath) => path.join(this.rootDir, filePath))).catch((err: any) => {
|
|
71
|
+
async handleFileChanges(filePaths: string[]) {
|
|
72
|
+
const pullResult = await this.cms.postPull(filePaths.map((filePath) => path.join(this.rootDir, filePath))).catch((err: any) => {
|
|
70
73
|
logger.debug('Error in postPull', { err });
|
|
74
|
+
throw err;
|
|
71
75
|
});
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
continue;
|
|
75
|
-
}
|
|
76
|
-
this.stackbitYaml.load().catch((err: any) => {
|
|
76
|
+
if (pullResult?.schemaChanged) {
|
|
77
|
+
await this.stackbitYaml.load().catch((err: any) => {
|
|
77
78
|
logger.debug('Error handling stackbit.yaml change', { err });
|
|
78
79
|
logger.error('Error reloading stackbit.yaml');
|
|
79
80
|
});
|
|
80
|
-
|
|
81
|
+
socketService.notifySchemaChange();
|
|
81
82
|
}
|
|
82
83
|
}
|
|
83
84
|
|
|
@@ -107,7 +108,7 @@ export default class Runner {
|
|
|
107
108
|
}
|
|
108
109
|
|
|
109
110
|
async getObjectsWithAnnotations(annotationTree = null, clientAnnotationErrors = []) {
|
|
110
|
-
const result = this.editor.getObjectsWithAnnotations(annotationTree);
|
|
111
|
+
const result = await this.editor.getObjectsWithAnnotations(annotationTree);
|
|
111
112
|
_.forEach([...(result.errors ?? []), ...clientAnnotationErrors], (error) => {
|
|
112
113
|
const errorProps = _.omit(error, ['type', 'message']);
|
|
113
114
|
logger.error(`${error.message} ${_.map(errorProps, (val, key) => `${key}:'${val && val.toString ? val.toString() : val}'`).join(', ')}`);
|
|
@@ -135,23 +136,6 @@ export default class Runner {
|
|
|
135
136
|
return this.cms.getObject(objectId, projectId);
|
|
136
137
|
}
|
|
137
138
|
|
|
138
|
-
createObject(modelName: string, filePath: any, object: string, user: any): Promise<any> {
|
|
139
|
-
return this.cms.createObject(modelName, filePath, object, user);
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
deleteObject(objectId: string, user: any): Promise<any> {
|
|
143
|
-
return this.cms.deleteObject(objectId, user);
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
updateObject(objectId: string, projectId: string, object: any, user: any): Promise<any> {
|
|
147
|
-
return this.getObject(objectId, projectId).then((existingObject) => {
|
|
148
|
-
if (!existingObject) {
|
|
149
|
-
throw new Error('Object not found');
|
|
150
|
-
}
|
|
151
|
-
return this.cms.updateObject(existingObject, object, user);
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
|
|
155
139
|
async listAssets(filterParams: any): Promise<any> {
|
|
156
140
|
return this.cms.listAssets(filterParams);
|
|
157
141
|
}
|
|
@@ -159,4 +143,23 @@ export default class Runner {
|
|
|
159
143
|
async uploadAsset(url: string, filename: string, user: any): Promise<any> {
|
|
160
144
|
return this.cms.uploadAsset(url, filename, user);
|
|
161
145
|
}
|
|
146
|
+
|
|
147
|
+
async makeAction(action: string, data: any): Promise<any> {
|
|
148
|
+
switch (action) {
|
|
149
|
+
case 'createPage':
|
|
150
|
+
return this.cms.createObject(data);
|
|
151
|
+
case 'duplicatePage':
|
|
152
|
+
return this.cms.duplicateObject(data);
|
|
153
|
+
case 'updatePage':
|
|
154
|
+
return this.cms.updateObject(data.changedFields);
|
|
155
|
+
case 'deleteObject':
|
|
156
|
+
return this.cms.deleteObject(data.srcObjectId, data.srcProjectId);
|
|
157
|
+
case 'getAssets':
|
|
158
|
+
return this.cms.listAssets(data);
|
|
159
|
+
case 'uploadAssets':
|
|
160
|
+
return this.cms.uploadAssets(data.assets);
|
|
161
|
+
default:
|
|
162
|
+
throw new Error('Unsupported Operation');
|
|
163
|
+
}
|
|
164
|
+
}
|
|
162
165
|
}
|
package/src/server/index.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import _
|
|
1
|
+
import _ from 'lodash';
|
|
2
2
|
import http from 'http';
|
|
3
3
|
import express from 'express';
|
|
4
4
|
import path from 'path';
|
|
@@ -16,17 +16,17 @@ export async function start({
|
|
|
16
16
|
ssgPort,
|
|
17
17
|
ssgHost,
|
|
18
18
|
rootDir,
|
|
19
|
-
runnableDir
|
|
19
|
+
runnableDir,
|
|
20
|
+
uuid
|
|
20
21
|
}: {
|
|
21
22
|
serverPort: number;
|
|
22
23
|
ssgPort: number;
|
|
23
24
|
ssgHost: string;
|
|
24
25
|
rootDir: string;
|
|
25
26
|
runnableDir?: string;
|
|
27
|
+
uuid: string;
|
|
26
28
|
}) {
|
|
27
|
-
|
|
28
|
-
const httpServer = http.createServer(server);
|
|
29
|
-
socketService.use(httpServer, logger);
|
|
29
|
+
logger.debug('Runner init...');
|
|
30
30
|
|
|
31
31
|
const runner = new Runner({
|
|
32
32
|
rootDir,
|
|
@@ -34,6 +34,12 @@ export async function start({
|
|
|
34
34
|
});
|
|
35
35
|
await runner.install();
|
|
36
36
|
|
|
37
|
+
logger.debug('Done runner init');
|
|
38
|
+
|
|
39
|
+
const server = express();
|
|
40
|
+
const httpServer = http.createServer(server);
|
|
41
|
+
socketService.use(httpServer, logger);
|
|
42
|
+
|
|
37
43
|
server.use(require('cors')());
|
|
38
44
|
// if (config.setContentSecurityPolicy) {
|
|
39
45
|
// server.use((req, res, next) => {
|
|
@@ -53,8 +59,8 @@ export async function start({
|
|
|
53
59
|
server.use(consts.STATIC_ASSETS_PUBLIC_PATH, express.static(path.join(rootDir, consts.STATIC_ASSETS_FILE_PATH)));
|
|
54
60
|
server.use(consts.STATIC_THEME_ASSETS_PUBLIC_PATH, express.static(path.join(rootDir, consts.STATIC_THEME_ASSETS_FILE_PATH)));
|
|
55
61
|
|
|
56
|
-
routes(server, runner);
|
|
57
|
-
|
|
62
|
+
routes(server, runner, uuid);
|
|
63
|
+
proxy(server, ssgHost, ssgPort, runner);
|
|
58
64
|
|
|
59
65
|
return new Promise<void>((resolve, reject) => {
|
|
60
66
|
httpServer.listen(serverPort, () => {
|
package/src/server/proxy.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _ from 'lodash';
|
|
2
2
|
import path from 'path';
|
|
3
|
-
import express, { Request } from 'express';
|
|
3
|
+
import express, { Request, Router } from 'express';
|
|
4
4
|
import proxy from 'http-proxy-middleware';
|
|
5
5
|
import logger from '../services/logger';
|
|
6
6
|
import consts from '../consts';
|
|
@@ -9,9 +9,7 @@ import { renderLoadingPage } from '@stackbit/dev-common/dist/utils/pages';
|
|
|
9
9
|
import config from '../config';
|
|
10
10
|
import Runner from '../runner';
|
|
11
11
|
|
|
12
|
-
export default function proxyMiddleware(ssgHost: string, ssgPort: number, runner: Runner) {
|
|
13
|
-
const router = express.Router();
|
|
14
|
-
|
|
12
|
+
export default function proxyMiddleware(router: Router, ssgHost: string, ssgPort: number, runner: Runner) {
|
|
15
13
|
router.use((req, res, next) => {
|
|
16
14
|
_.unset(req, 'headers.x-forwarded-proto');
|
|
17
15
|
const rawHeaders = _.get(req, 'rawHeaders');
|
package/src/server/routes.ts
CHANGED
|
@@ -5,10 +5,26 @@ import Runner from '../runner';
|
|
|
5
5
|
import logger from '../services/logger';
|
|
6
6
|
import { PageNotFoundError } from '@stackbit/dev-common/dist/services/response-errors';
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
const authMiddleware = (uuid: string) => {
|
|
9
|
+
return (req: Request, res: Response, next: NextFunction) => {
|
|
10
|
+
try {
|
|
11
|
+
if (!req.headers.authorization) {
|
|
12
|
+
throw 'No token provided';
|
|
13
|
+
}
|
|
14
|
+
const token = req.headers.authorization.split(' ')[1];
|
|
15
|
+
if (token === uuid) {
|
|
16
|
+
next();
|
|
17
|
+
} else {
|
|
18
|
+
throw 'Bad token provided';
|
|
19
|
+
}
|
|
20
|
+
} catch (err) {
|
|
21
|
+
logger.error('not authenticated', { error: err });
|
|
22
|
+
res.status(400).send('Not authenticated');
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export default function routes(router: Router, runner: Runner, uuid: string) {
|
|
12
28
|
router.post('/_objects', [bodyParser.json({ limit: '500kb' })], (req: Request, res: Response, next: NextFunction) => {
|
|
13
29
|
const { objectIds } = req.body;
|
|
14
30
|
return runner
|
|
@@ -114,47 +130,6 @@ export default function routes(router: Router, runner: Runner) {
|
|
|
114
130
|
next(err);
|
|
115
131
|
});
|
|
116
132
|
});
|
|
117
|
-
router.post('/_object', [bodyParser.json({ limit: '500kb' })], (req: Request, res: Response, next: NextFunction) => {
|
|
118
|
-
const { modelName, filePath, object, user } = req.body;
|
|
119
|
-
return runner
|
|
120
|
-
.createObject(modelName, filePath, object, user)
|
|
121
|
-
.then((response) => {
|
|
122
|
-
res.json(response);
|
|
123
|
-
})
|
|
124
|
-
.catch((err) => {
|
|
125
|
-
logger.error('Error creating object');
|
|
126
|
-
logger.debug('error creating object', { error: err });
|
|
127
|
-
next(err);
|
|
128
|
-
});
|
|
129
|
-
});
|
|
130
|
-
router.put('/_object', [bodyParser.json({ limit: '500kb' })], (req: Request, res: Response, next: NextFunction) => {
|
|
131
|
-
const { objectId, projectId } = req.query;
|
|
132
|
-
const { object, user } = req.body;
|
|
133
|
-
return runner
|
|
134
|
-
.updateObject(objectId as string, projectId as string, object, user)
|
|
135
|
-
.then((response) => {
|
|
136
|
-
res.json(response);
|
|
137
|
-
})
|
|
138
|
-
.catch((err) => {
|
|
139
|
-
logger.error('Error updating object');
|
|
140
|
-
logger.debug('error updating object', { error: err });
|
|
141
|
-
next(err);
|
|
142
|
-
});
|
|
143
|
-
});
|
|
144
|
-
router.delete('/_object', [bodyParser.json({ limit: '500kb' })], (req: Request, res: Response, next: NextFunction) => {
|
|
145
|
-
const { objectId } = req.query;
|
|
146
|
-
const { user } = req.body;
|
|
147
|
-
return runner
|
|
148
|
-
.deleteObject(objectId as string, user)
|
|
149
|
-
.then((response) => {
|
|
150
|
-
res.json(response);
|
|
151
|
-
})
|
|
152
|
-
.catch((err) => {
|
|
153
|
-
logger.error('Error deleting collections');
|
|
154
|
-
logger.debug('error deleting object', { error: err });
|
|
155
|
-
next(err);
|
|
156
|
-
});
|
|
157
|
-
});
|
|
158
133
|
router.get('/_assets', [bodyParser.json({ limit: '500kb' })], (req: Request, res: Response, next: NextFunction) => {
|
|
159
134
|
const filterParams = _.pick(req.body, ['searchQuery', 'pageId', 'pageSize']);
|
|
160
135
|
return runner
|
|
@@ -169,17 +144,23 @@ export default function routes(router: Router, runner: Runner) {
|
|
|
169
144
|
next(err);
|
|
170
145
|
});
|
|
171
146
|
});
|
|
172
|
-
router.
|
|
173
|
-
|
|
147
|
+
router.get('/_health', (req: Request, res: Response) => {
|
|
148
|
+
return res.status(200).json({ status: 'ok' });
|
|
149
|
+
});
|
|
150
|
+
router.post('/_action', [authMiddleware(uuid), bodyParser.json({ limit: '50mb' })], (req: Request, res: Response, next: NextFunction) => {
|
|
151
|
+
const { action, data } = req.body;
|
|
174
152
|
return runner
|
|
175
|
-
.
|
|
176
|
-
.then((
|
|
177
|
-
res.json(
|
|
153
|
+
.makeAction(action, data)
|
|
154
|
+
.then((result) => {
|
|
155
|
+
res.json(result);
|
|
178
156
|
})
|
|
179
157
|
.catch((err) => {
|
|
180
|
-
logger.error('Error
|
|
181
|
-
logger.debug('error
|
|
182
|
-
|
|
158
|
+
logger.error('Error performing action: ' + action);
|
|
159
|
+
logger.debug('error performing action', { action, error: err.message || err });
|
|
160
|
+
if (_.has(err, 'stack')) {
|
|
161
|
+
logger.debug('error.stack: ' + err.stack);
|
|
162
|
+
}
|
|
163
|
+
res.status(500).send('Error');
|
|
183
164
|
next(err);
|
|
184
165
|
});
|
|
185
166
|
});
|
package/dist/services/ngrok.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function createTunnel(port: number, logger: any): Promise<string>;
|
package/dist/services/ngrok.js
DELETED
|
@@ -1,18 +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.createTunnel = void 0;
|
|
7
|
-
const ngrok_1 = __importDefault(require("ngrok"));
|
|
8
|
-
async function createTunnel(port, logger) {
|
|
9
|
-
return ngrok_1.default.connect({
|
|
10
|
-
addr: port,
|
|
11
|
-
onStatusChange: (status) => {
|
|
12
|
-
logger === null || logger === void 0 ? void 0 : logger.debug('Tunnel status: ' + status);
|
|
13
|
-
},
|
|
14
|
-
onLogEvent: (data) => { }
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
exports.createTunnel = createTunnel;
|
|
18
|
-
//# sourceMappingURL=ngrok.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ngrok.js","sourceRoot":"","sources":["../../src/services/ngrok.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAEnB,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,MAAW;IACxD,OAAO,eAAK,CAAC,OAAO,CAAC;QACjB,IAAI,EAAE,IAAI;QACV,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE;YACvB,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,iBAAiB,GAAG,MAAM,CAAC,CAAC;QAC9C,CAAC;QACD,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,GAAE,CAAC;KAC3B,CAAC,CAAC;AACP,CAAC;AARD,oCAQC"}
|
package/src/services/ngrok.ts
DELETED