piral-cli 0.11.8-pre.1620 → 0.11.8
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/lib/common/log.js +1 -1
- package/lib/common/log.js.map +1 -1
- package/lib/injectors/pilet.d.ts +4 -2
- package/lib/injectors/pilet.js +8 -3
- package/lib/injectors/pilet.js.map +1 -1
- package/lib/injectors/piral.d.ts +1 -1
- package/lib/injectors/piral.js +9 -2
- package/lib/injectors/piral.js.map +1 -1
- package/package.json +2 -2
- package/src/common/log.ts +1 -1
- package/src/injectors/pilet.test.ts +123 -6
- package/src/injectors/pilet.ts +12 -4
- package/src/injectors/piral.test.ts +73 -1
- package/src/injectors/piral.ts +11 -2
package/lib/common/log.js
CHANGED
|
@@ -53,7 +53,7 @@ function logDebug(message, ...args) {
|
|
|
53
53
|
exports.logDebug = logDebug;
|
|
54
54
|
function logVerbose(message, ...args) {
|
|
55
55
|
const msg = util_1.format(message, ...args);
|
|
56
|
-
logger.log(msg);
|
|
56
|
+
logger.logLevel > 3 && logger.log(msg);
|
|
57
57
|
return msg;
|
|
58
58
|
}
|
|
59
59
|
exports.logVerbose = logVerbose;
|
package/lib/common/log.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/common/log.ts"],"names":[],"mappings":";;AAAA,wCAAwC;AACxC,+BAA4B;AAC5B,+BAA8B;AAC9B,2BAAuC;AACvC,iCAAmC;AACnC,0CAAwC;AACxC,oCAAmD;AAKnD,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE;IACnB,IAAI;QACF,OAAO,OAAO,CAAC,gBAAgB,CAAC,CAAC;KAClC;IAAC,WAAM;QACN,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC;KACtC;AACH,CAAC,CAAC,EAAE,CAAC;AAEL,2EAA2E;AAC3E,IAAI,gBAAS,EAAE;IACb,MAAM,CAAC,OAAO,GAAG,UAAS,OAAe;QACvC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE;YACrB,OAAO;SACR;QAED,IAAI,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;QAC1B,OAAO,GAAG,IAAI,QAAQ,CAAC,kBAAkB,EAAE,MAAM,OAAO,EAAE,CAAC;QAC3D,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE;YACrB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACjB,iEAAiE;gBACjE,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC3D,MAAM,QAAQ,GAAG,gBAAgB,SAAS,MAAM,CAAC;gBACjD,IAAI,CAAC,OAAO,GAAG,sBAAiB,CAAC,WAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;aACjE;YAED,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,oBAAS,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;SACvD;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC,CAAC;CACH;AAED,SAAgB,WAAW,CAAC,QAAmB;IAC7C,MAAM,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;AAClC,CAAC;AAFD,kCAEC;AAED,SAAgB,OAAO,CAAC,OAAe,EAAE,GAAG,IAAsC;IAChF,MAAM,GAAG,GAAG,aAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IACrC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChB,OAAO,GAAG,CAAC;AACb,CAAC;AAJD,0BAIC;AAED,SAAgB,QAAQ,CAAC,OAAe,EAAE,GAAG,IAAsC;IACjF,MAAM,GAAG,GAAG,aAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IACrC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpB,OAAO,GAAG,CAAC;AACb,CAAC;AAJD,4BAIC;AAED,SAAgB,UAAU,CAAC,OAAe,EAAE,GAAG,IAAsC;IACnF,MAAM,GAAG,GAAG,aAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IACrC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/common/log.ts"],"names":[],"mappings":"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"}
|
package/lib/injectors/pilet.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { EventEmitter } from 'events';
|
|
3
|
-
import { KrasInjector, KrasResponse, KrasRequest, KrasInjectorConfig } from 'kras';
|
|
3
|
+
import { KrasInjector, KrasResponse, KrasRequest, KrasInjectorConfig, KrasConfiguration } from 'kras';
|
|
4
4
|
import { Bundler } from '../types';
|
|
5
5
|
interface Pilet {
|
|
6
6
|
bundler: Bundler;
|
|
@@ -14,7 +14,9 @@ export interface PiletInjectorConfig extends KrasInjectorConfig {
|
|
|
14
14
|
}
|
|
15
15
|
export default class PiletInjector implements KrasInjector {
|
|
16
16
|
config: PiletInjectorConfig;
|
|
17
|
-
|
|
17
|
+
private port;
|
|
18
|
+
private protocol;
|
|
19
|
+
constructor(options: PiletInjectorConfig, config: KrasConfiguration, core: EventEmitter);
|
|
18
20
|
get active(): boolean;
|
|
19
21
|
set active(value: boolean);
|
|
20
22
|
get name(): string;
|
package/lib/injectors/pilet.js
CHANGED
|
@@ -4,8 +4,10 @@ const path_1 = require("path");
|
|
|
4
4
|
const fs_1 = require("fs");
|
|
5
5
|
const external_1 = require("../external");
|
|
6
6
|
class PiletInjector {
|
|
7
|
-
constructor(options,
|
|
7
|
+
constructor(options, config, core) {
|
|
8
8
|
this.config = options;
|
|
9
|
+
this.port = config.port;
|
|
10
|
+
this.protocol = config.ssl ? 'https' : 'http';
|
|
9
11
|
const { pilets, api } = options;
|
|
10
12
|
const cbs = {};
|
|
11
13
|
core.on('user-connected', e => {
|
|
@@ -45,7 +47,7 @@ class PiletInjector {
|
|
|
45
47
|
return {
|
|
46
48
|
name: def.name,
|
|
47
49
|
version: def.version,
|
|
48
|
-
link: `${api}/${index}/${file}`,
|
|
50
|
+
link: `${this.protocol}://localhost:${this.port}${api}/${index}/${file}`,
|
|
49
51
|
hash: bundler.bundle.hash,
|
|
50
52
|
requireRef,
|
|
51
53
|
noCache: true,
|
|
@@ -103,9 +105,12 @@ class PiletInjector {
|
|
|
103
105
|
if (fs_1.existsSync(target) && fs_1.statSync(target).isFile()) {
|
|
104
106
|
return this.sendFile(target, req.url);
|
|
105
107
|
}
|
|
106
|
-
else {
|
|
108
|
+
else if (req.url !== '/index.html') {
|
|
107
109
|
return this.handle(Object.assign(Object.assign({}, req), { url: '/index.html' }));
|
|
108
110
|
}
|
|
111
|
+
else {
|
|
112
|
+
return undefined;
|
|
113
|
+
}
|
|
109
114
|
}
|
|
110
115
|
else if (req.target === api) {
|
|
111
116
|
return this.sendResponse(path, req.url);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pilet.js","sourceRoot":"","sources":["../../src/injectors/pilet.ts"],"names":[],"mappings":";;AAAA,+BAA4B;AAE5B,2BAAwD;AAExD,0CAAmC;
|
|
1
|
+
{"version":3,"file":"pilet.js","sourceRoot":"","sources":["../../src/injectors/pilet.ts"],"names":[],"mappings":"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"}
|
package/lib/injectors/piral.d.ts
CHANGED
|
@@ -11,6 +11,6 @@ export default class PiralInjector implements KrasInjector {
|
|
|
11
11
|
get name(): string;
|
|
12
12
|
getOptions(): {};
|
|
13
13
|
setOptions(): void;
|
|
14
|
-
sendResponse(path: string, target: string, dir: string, url: string): KrasResponse;
|
|
14
|
+
sendResponse(path: string, target: string, dir: string, url: string, recursionDepth?: number): KrasResponse;
|
|
15
15
|
handle(req: KrasRequest): KrasResponse;
|
|
16
16
|
}
|
package/lib/injectors/piral.js
CHANGED
|
@@ -3,6 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const path_1 = require("path");
|
|
4
4
|
const fs_1 = require("fs");
|
|
5
5
|
const external_1 = require("../external");
|
|
6
|
+
/**
|
|
7
|
+
* The maximum amount of retries when sending a response
|
|
8
|
+
*/
|
|
9
|
+
const maxRetrySendResponse = 4;
|
|
6
10
|
class PiralInjector {
|
|
7
11
|
constructor(options) {
|
|
8
12
|
this.config = options;
|
|
@@ -20,11 +24,14 @@ class PiralInjector {
|
|
|
20
24
|
return {};
|
|
21
25
|
}
|
|
22
26
|
setOptions() { }
|
|
23
|
-
sendResponse(path, target, dir, url) {
|
|
27
|
+
sendResponse(path, target, dir, url, recursionDepth = 0) {
|
|
28
|
+
if (recursionDepth > maxRetrySendResponse) {
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
24
31
|
if (!path || !fs_1.existsSync(target) || !fs_1.statSync(target).isFile()) {
|
|
25
32
|
const { bundler } = this.config;
|
|
26
33
|
const newTarget = path_1.join(bundler.bundle.dir, bundler.bundle.name);
|
|
27
|
-
return this.sendResponse(bundler.bundle.name, newTarget, dir, url);
|
|
34
|
+
return this.sendResponse(bundler.bundle.name, newTarget, dir, url, recursionDepth + 1);
|
|
28
35
|
}
|
|
29
36
|
return {
|
|
30
37
|
injector: { name: this.name },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"piral.js","sourceRoot":"","sources":["../../src/injectors/piral.ts"],"names":[],"mappings":";;AAAA,+BAA4B;AAC5B,2BAAwD;AAExD,0CAAmC;
|
|
1
|
+
{"version":3,"file":"piral.js","sourceRoot":"","sources":["../../src/injectors/piral.ts"],"names":[],"mappings":";;AAAA,+BAA4B;AAC5B,2BAAwD;AAExD,0CAAmC;AAGnC;;GAEG;AACH,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAM/B,MAAqB,aAAa;IAGhC,YAAY,OAA4B;QACtC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;IACxB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;IACD,IAAI,MAAM,CAAC,KAAK;QACd,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;IAC7B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,UAAU;QACR,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,UAAU,KAAI,CAAC;IAEf,YAAY,CAAC,IAAY,EAAE,MAAc,EAAE,GAAW,EAAE,GAAW,EAAE,cAAc,GAAG,CAAC;QACrF,IAAI,cAAc,GAAG,oBAAoB,EAAE;YACzC,OAAO,SAAS,CAAC;SAClB;QAED,IAAI,CAAC,IAAI,IAAI,CAAC,eAAU,CAAC,MAAM,CAAC,IAAI,CAAC,aAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;YAC9D,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;YAChC,MAAM,SAAS,GAAG,WAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAChE,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC;SACxF;QAED,OAAO;YACL,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;YAC7B,OAAO,EAAE;gBACP,cAAc,EAAE,eAAI,CAAC,OAAO,CAAC,MAAM,CAAC;gBACpC,eAAe,EAAE,qCAAqC;gBACtD,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,GAAG;aACb;YACD,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE;YACrB,GAAG;YACH,OAAO,EAAE,iBAAY,CAAC,MAAM,CAAC;SAC9B,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,GAAgB;QACrB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;YACf,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;YAChC,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;YAC/B,MAAM,MAAM,GAAG,WAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7C,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;SAClF;IACH,CAAC;CACF;AA1DD,gCA0DC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "piral-cli",
|
|
3
|
-
"version": "0.11.8
|
|
3
|
+
"version": "0.11.8",
|
|
4
4
|
"description": "The standard CLI for creating and building a Piral instance or a Pilet.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"portal",
|
|
@@ -72,5 +72,5 @@
|
|
|
72
72
|
"typescript": "^3.8.3",
|
|
73
73
|
"yargs": "^15.3.1"
|
|
74
74
|
},
|
|
75
|
-
"gitHead": "
|
|
75
|
+
"gitHead": "617df77a2d553e455ec66b04936967ff3ce21a47"
|
|
76
76
|
}
|
package/src/common/log.ts
CHANGED
|
@@ -59,7 +59,7 @@ export function logDebug(message: string, ...args: Array<string | number | boole
|
|
|
59
59
|
|
|
60
60
|
export function logVerbose(message: string, ...args: Array<string | number | boolean>) {
|
|
61
61
|
const msg = format(message, ...args);
|
|
62
|
-
logger.log(msg);
|
|
62
|
+
logger.logLevel > 3 && logger.log(msg);
|
|
63
63
|
return msg;
|
|
64
64
|
}
|
|
65
65
|
|
|
@@ -1,17 +1,134 @@
|
|
|
1
|
-
import PiletInjector from './pilet';
|
|
2
1
|
import { EventEmitter } from 'events';
|
|
2
|
+
import { KrasRequest } from 'kras';
|
|
3
|
+
import PiletInjector from './pilet';
|
|
4
|
+
|
|
5
|
+
const optionsMock = {
|
|
6
|
+
pilets: [],
|
|
7
|
+
api: '',
|
|
8
|
+
app: '',
|
|
9
|
+
active: true,
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const configMock: any = {
|
|
13
|
+
port: 1234,
|
|
14
|
+
};
|
|
3
15
|
|
|
4
16
|
describe('Piral-CLI piral injector', () => {
|
|
5
17
|
it('PiletInjector is active when configured', () => {
|
|
6
|
-
const
|
|
18
|
+
const core = new EventEmitter();
|
|
19
|
+
const injector = new PiletInjector(optionsMock, configMock, core);
|
|
20
|
+
expect(injector.active).toBeTruthy();
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
it('PiletInjector properties can be accessed', () => {
|
|
24
|
+
// Arrange
|
|
25
|
+
const core = new EventEmitter();
|
|
26
|
+
const injector = new PiletInjector(optionsMock, configMock, core);
|
|
27
|
+
|
|
28
|
+
// Act
|
|
29
|
+
injector.active = false;
|
|
30
|
+
injector.name;
|
|
31
|
+
injector.getOptions();
|
|
32
|
+
//injector.getMetaOf(0);
|
|
33
|
+
injector.getMeta();
|
|
34
|
+
|
|
35
|
+
// Assert
|
|
36
|
+
expect(injector.active).toBeFalsy();
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
it('PiletInjector does not send empty content', () => {
|
|
40
|
+
// Arrange
|
|
41
|
+
const core = new EventEmitter();
|
|
42
|
+
const injector = new PiletInjector(optionsMock, configMock, core);
|
|
43
|
+
const target = '';
|
|
44
|
+
const url = '';
|
|
45
|
+
|
|
46
|
+
let hasFailed = false;
|
|
47
|
+
|
|
48
|
+
// Act
|
|
49
|
+
try {
|
|
50
|
+
injector.sendFile(target, url); // this file does not exist
|
|
51
|
+
} catch {
|
|
52
|
+
hasFailed = true;
|
|
53
|
+
}
|
|
54
|
+
// Assert
|
|
55
|
+
expect(hasFailed).toBeTruthy();
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
it('PiletInjector does not crash when sending invalid content', () => {
|
|
59
|
+
// Arrange
|
|
60
|
+
const core = new EventEmitter();
|
|
61
|
+
const injector = new PiletInjector(optionsMock, configMock, core);
|
|
62
|
+
|
|
63
|
+
// Act
|
|
64
|
+
const res = injector.sendContent('someContent', 'application/json', 'invalidUrl');
|
|
65
|
+
|
|
66
|
+
// Assert
|
|
67
|
+
expect(res).not.toBeUndefined();
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
it('PiletInjector can send reponse and fails with invalid path', () => {
|
|
71
|
+
// Arrange
|
|
72
|
+
const core = new EventEmitter();
|
|
73
|
+
const injector = new PiletInjector(optionsMock, configMock, core);
|
|
74
|
+
|
|
75
|
+
// Act
|
|
76
|
+
const res = injector.sendResponse('some/nice/invalid/path', 'localhost:1234');
|
|
77
|
+
|
|
78
|
+
// Assert
|
|
79
|
+
expect(res).toBeUndefined();
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
it('PiletInjector wont crash on mocked request', () => {
|
|
83
|
+
// Arrange
|
|
84
|
+
const optionsMock = {
|
|
7
85
|
pilets: [],
|
|
8
|
-
|
|
9
|
-
api: '',
|
|
86
|
+
api: 'http://someFakeApi:1234',
|
|
10
87
|
app: '',
|
|
11
88
|
active: true,
|
|
12
89
|
};
|
|
90
|
+
|
|
13
91
|
const core = new EventEmitter();
|
|
14
|
-
const injector = new PiletInjector(
|
|
15
|
-
|
|
92
|
+
const injector = new PiletInjector(optionsMock, configMock, core);
|
|
93
|
+
const request: KrasRequest = {
|
|
94
|
+
content: 'someFakeContent',
|
|
95
|
+
headers: {},
|
|
96
|
+
method: 'PUT',
|
|
97
|
+
query: {},
|
|
98
|
+
target: optionsMock.api,
|
|
99
|
+
url: 'localhost:1234',
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
// Act
|
|
103
|
+
const res = injector.handle(request);
|
|
104
|
+
|
|
105
|
+
// Assert
|
|
106
|
+
expect(res).toBeUndefined();
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
it('PiletInjector wont crash on request with no target', () => {
|
|
110
|
+
// Arrange
|
|
111
|
+
const optionsMock = {
|
|
112
|
+
pilets: [],
|
|
113
|
+
api: 'http://someFakeApi:1234',
|
|
114
|
+
app: '',
|
|
115
|
+
active: true,
|
|
116
|
+
};
|
|
117
|
+
const core = new EventEmitter();
|
|
118
|
+
const injector = new PiletInjector(optionsMock, configMock, core);
|
|
119
|
+
const request: KrasRequest = {
|
|
120
|
+
content: 'someFakeContent',
|
|
121
|
+
headers: {},
|
|
122
|
+
method: 'PUT',
|
|
123
|
+
query: {},
|
|
124
|
+
target: '',
|
|
125
|
+
url: 'localhost:1234',
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
// Act
|
|
129
|
+
const res = injector.handle(request);
|
|
130
|
+
|
|
131
|
+
// Assert
|
|
132
|
+
expect(res).toBeUndefined();
|
|
16
133
|
});
|
|
17
134
|
});
|
package/src/injectors/pilet.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { join } from 'path';
|
|
2
2
|
import { EventEmitter } from 'events';
|
|
3
3
|
import { readFileSync, existsSync, statSync } from 'fs';
|
|
4
|
-
import { KrasInjector, KrasResponse, KrasRequest, KrasInjectorConfig } from 'kras';
|
|
4
|
+
import { KrasInjector, KrasResponse, KrasRequest, KrasInjectorConfig, KrasConfiguration } from 'kras';
|
|
5
5
|
import { mime } from '../external';
|
|
6
6
|
import { Bundler } from '../types';
|
|
7
7
|
|
|
@@ -11,6 +11,8 @@ interface Pilet {
|
|
|
11
11
|
requireRef?: string;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
+
type Protocol = 'https' | 'http';
|
|
15
|
+
|
|
14
16
|
export interface PiletInjectorConfig extends KrasInjectorConfig {
|
|
15
17
|
pilets: Array<Pilet>;
|
|
16
18
|
api: string;
|
|
@@ -19,9 +21,13 @@ export interface PiletInjectorConfig extends KrasInjectorConfig {
|
|
|
19
21
|
|
|
20
22
|
export default class PiletInjector implements KrasInjector {
|
|
21
23
|
public config: PiletInjectorConfig;
|
|
24
|
+
private port: number;
|
|
25
|
+
private protocol: Protocol;
|
|
22
26
|
|
|
23
|
-
constructor(options: PiletInjectorConfig,
|
|
27
|
+
constructor(options: PiletInjectorConfig, config: KrasConfiguration, core: EventEmitter) {
|
|
24
28
|
this.config = options;
|
|
29
|
+
this.port = config.port;
|
|
30
|
+
this.protocol = config.ssl ? 'https' : 'http';
|
|
25
31
|
const { pilets, api } = options;
|
|
26
32
|
const cbs = {};
|
|
27
33
|
|
|
@@ -72,7 +78,7 @@ export default class PiletInjector implements KrasInjector {
|
|
|
72
78
|
return {
|
|
73
79
|
name: def.name,
|
|
74
80
|
version: def.version,
|
|
75
|
-
link: `${api}/${index}/${file}`,
|
|
81
|
+
link: `${this.protocol}://localhost:${this.port}${api}/${index}/${file}`,
|
|
76
82
|
hash: bundler.bundle.hash,
|
|
77
83
|
requireRef,
|
|
78
84
|
noCache: true,
|
|
@@ -139,11 +145,13 @@ export default class PiletInjector implements KrasInjector {
|
|
|
139
145
|
|
|
140
146
|
if (existsSync(target) && statSync(target).isFile()) {
|
|
141
147
|
return this.sendFile(target, req.url);
|
|
142
|
-
} else {
|
|
148
|
+
} else if (req.url !== '/index.html') {
|
|
143
149
|
return this.handle({
|
|
144
150
|
...req,
|
|
145
151
|
url: '/index.html',
|
|
146
152
|
});
|
|
153
|
+
} else {
|
|
154
|
+
return undefined;
|
|
147
155
|
}
|
|
148
156
|
} else if (req.target === api) {
|
|
149
157
|
return this.sendResponse(path, req.url);
|
|
@@ -1,4 +1,20 @@
|
|
|
1
|
-
import PiralInjector from './piral';
|
|
1
|
+
import PiralInjector, { PiralInjectorConfig } from './piral';
|
|
2
|
+
import { KrasRequest, KrasResult } from 'kras';
|
|
3
|
+
|
|
4
|
+
const bundlerMock = {
|
|
5
|
+
pending: true,
|
|
6
|
+
bundle: {
|
|
7
|
+
dir: '',
|
|
8
|
+
hash: '',
|
|
9
|
+
name: 'someName',
|
|
10
|
+
},
|
|
11
|
+
on() {},
|
|
12
|
+
off() {},
|
|
13
|
+
start() {},
|
|
14
|
+
ready() {
|
|
15
|
+
return Promise.resolve();
|
|
16
|
+
},
|
|
17
|
+
};
|
|
2
18
|
|
|
3
19
|
describe('Piral-CLI piral injector', () => {
|
|
4
20
|
it('PiralInjector is active when configured', () => {
|
|
@@ -23,4 +39,60 @@ describe('Piral-CLI piral injector', () => {
|
|
|
23
39
|
const injector = new PiralInjector(config);
|
|
24
40
|
expect(injector.active).toBeTruthy();
|
|
25
41
|
});
|
|
42
|
+
|
|
43
|
+
it('PiralInjector properties can be accessed', () => {
|
|
44
|
+
// Arrange
|
|
45
|
+
const config = {
|
|
46
|
+
bundler: bundlerMock,
|
|
47
|
+
active: true,
|
|
48
|
+
};
|
|
49
|
+
const injector = new PiralInjector(config);
|
|
50
|
+
|
|
51
|
+
// Act
|
|
52
|
+
injector.active = false;
|
|
53
|
+
injector.name;
|
|
54
|
+
injector.getOptions();
|
|
55
|
+
injector.config;
|
|
56
|
+
|
|
57
|
+
// Assert
|
|
58
|
+
expect(injector.active).toBeFalsy();
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
it('PiralInjector can send reponse and fails with invalid path', () => {
|
|
62
|
+
// Arrange
|
|
63
|
+
const config = {
|
|
64
|
+
bundler: bundlerMock,
|
|
65
|
+
active: true,
|
|
66
|
+
};
|
|
67
|
+
const injector = new PiralInjector(config);
|
|
68
|
+
|
|
69
|
+
// Act
|
|
70
|
+
const res = injector.sendResponse('some/nice/invalid/path', 'sometarget.file', 'someDir', 'localhost:1234');
|
|
71
|
+
|
|
72
|
+
// Assert
|
|
73
|
+
expect(res).toBeUndefined();
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
it('PiralInjector wont crash when handling an invalid request', async () => {
|
|
77
|
+
// Arrange
|
|
78
|
+
const config = {
|
|
79
|
+
bundler: bundlerMock,
|
|
80
|
+
active: true,
|
|
81
|
+
};
|
|
82
|
+
const injector = new PiralInjector(config);
|
|
83
|
+
const request: KrasRequest = {
|
|
84
|
+
content: 'someFakeContent',
|
|
85
|
+
headers: {},
|
|
86
|
+
method: 'PUT',
|
|
87
|
+
query: {},
|
|
88
|
+
target: '',
|
|
89
|
+
url: 'localhost:1234',
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
// Act
|
|
93
|
+
const res = await (injector.handle(request) as Promise<KrasResult>);
|
|
94
|
+
|
|
95
|
+
// Assert
|
|
96
|
+
expect(res).toBeUndefined();
|
|
97
|
+
});
|
|
26
98
|
});
|
package/src/injectors/piral.ts
CHANGED
|
@@ -4,6 +4,11 @@ import { KrasInjector, KrasResponse, KrasRequest, KrasInjectorConfig } from 'kra
|
|
|
4
4
|
import { mime } from '../external';
|
|
5
5
|
import { Bundler } from '../types';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* The maximum amount of retries when sending a response
|
|
9
|
+
*/
|
|
10
|
+
const maxRetrySendResponse = 4;
|
|
11
|
+
|
|
7
12
|
export interface PiralInjectorConfig extends KrasInjectorConfig {
|
|
8
13
|
bundler: Bundler;
|
|
9
14
|
}
|
|
@@ -32,11 +37,15 @@ export default class PiralInjector implements KrasInjector {
|
|
|
32
37
|
|
|
33
38
|
setOptions() {}
|
|
34
39
|
|
|
35
|
-
sendResponse(path: string, target: string, dir: string, url: string): KrasResponse {
|
|
40
|
+
sendResponse(path: string, target: string, dir: string, url: string, recursionDepth = 0): KrasResponse {
|
|
41
|
+
if (recursionDepth > maxRetrySendResponse) {
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
|
|
36
45
|
if (!path || !existsSync(target) || !statSync(target).isFile()) {
|
|
37
46
|
const { bundler } = this.config;
|
|
38
47
|
const newTarget = join(bundler.bundle.dir, bundler.bundle.name);
|
|
39
|
-
return this.sendResponse(bundler.bundle.name, newTarget, dir, url);
|
|
48
|
+
return this.sendResponse(bundler.bundle.name, newTarget, dir, url, recursionDepth + 1);
|
|
40
49
|
}
|
|
41
50
|
|
|
42
51
|
return {
|