piral-cli 0.15.0-beta.4472 → 0.15.0-beta.4549

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.
@@ -16,8 +16,7 @@ const log_1 = require("../common/log");
16
16
  const spec_1 = require("../common/spec");
17
17
  const config_1 = require("../common/config");
18
18
  const external_1 = require("../external");
19
- const { host } = config_1.config;
20
- function fillPiletMeta(pilet, basePath, metaFile) {
19
+ function fillPiletMeta(pilet, metaFile, subPath) {
21
20
  const { root, bundler } = pilet;
22
21
  const metaPath = (0, path_1.join)(root, metaFile);
23
22
  const packagePath = (0, path_1.join)(root, 'package.json');
@@ -25,10 +24,11 @@ function fillPiletMeta(pilet, basePath, metaFile) {
25
24
  const metaOverride = (0, fs_1.existsSync)(metaPath) ? external_1.jju.parse((0, fs_1.readFileSync)(metaPath, 'utf8')) : undefined;
26
25
  const file = bundler.bundle.name.replace(/^[\/\\]/, '');
27
26
  const target = (0, path_1.join)(bundler.bundle.dir, file);
28
- const url = new url_1.URL(file, basePath);
29
- const meta = Object.assign(Object.assign(Object.assign({ custom: def.custom, config: def.piletConfig }, metaOverride), { name: def.name, version: def.version, link: `${url.href}?updated=${Date.now()}` }), (0, spec_1.getPiletSpecMeta)(target, basePath));
30
- pilet.meta = meta;
31
- return JSON.stringify(meta);
27
+ pilet.getMeta = (parentPath) => {
28
+ const basePath = `${parentPath}${subPath}`;
29
+ const url = new url_1.URL(file, basePath);
30
+ return Object.assign(Object.assign(Object.assign({ custom: def.custom, config: def.piletConfig }, metaOverride), { name: def.name, version: def.version, link: `${url.href}?updated=${Date.now()}` }), (0, spec_1.getPiletSpecMeta)(target, basePath));
31
+ };
32
32
  }
33
33
  function loadFeed(feed) {
34
34
  var _a;
@@ -51,29 +51,30 @@ function loadFeed(feed) {
51
51
  });
52
52
  }
53
53
  class PiletInjector {
54
- constructor(options, config, core) {
55
- this.config = options;
54
+ constructor(config, serverConfig, core) {
55
+ this.config = config;
56
+ this.serverConfig = serverConfig;
56
57
  if (this.config.active) {
57
- // either take a full URI or make it an absolute path relative to the current origin
58
- this.piletApi = /^https?:/.test(options.api)
59
- ? options.api
60
- : `${config.ssl ? 'https' : 'http'}://${host}:${config.port}${options.api}`;
61
- const { pilets, api, publicUrl } = options;
58
+ const { pilets, api, publicUrl } = config;
62
59
  this.indexPath = `${publicUrl}index.html`;
63
60
  const cbs = {};
64
61
  core.on('user-connected', (e) => {
65
62
  if (e.target === '*' && e.url === api.substring(1)) {
66
- cbs[e.id] = (msg) => e.ws.send(msg);
63
+ cbs[e.id] = {
64
+ baseUrl: e.req.headers.origin,
65
+ notify: (msg) => e.ws.send(msg),
66
+ };
67
67
  }
68
68
  });
69
69
  core.on('user-disconnected', (e) => {
70
70
  delete cbs[e.id];
71
71
  });
72
72
  pilets.forEach((p, i) => p.bundler.on(() => {
73
- const basePath = `${this.piletApi}/${i}/`;
74
- const meta = fillPiletMeta(p, basePath, options.meta);
73
+ fillPiletMeta(p, config.meta, `/${i}/`);
75
74
  for (const id of Object.keys(cbs)) {
76
- cbs[id](meta);
75
+ const { baseUrl, notify } = cbs[id];
76
+ const meta = this.getPiletMeta(baseUrl, p);
77
+ notify(meta);
77
78
  }
78
79
  }));
79
80
  }
@@ -91,10 +92,29 @@ class PiletInjector {
91
92
  return {};
92
93
  }
93
94
  setOptions() { }
94
- getMeta() {
95
+ getPiletApi(baseUrl) {
96
+ const { api } = this.config;
97
+ if (/^https?:/.test(api)) {
98
+ return api;
99
+ }
100
+ else if (baseUrl) {
101
+ return `${baseUrl}${api}`;
102
+ }
103
+ else {
104
+ const { ssl, port } = this.serverConfig;
105
+ const { host } = config_1.config;
106
+ return `${ssl ? 'https' : 'http'}://${host}:${port}${api}`;
107
+ }
108
+ }
109
+ getPiletMeta(baseUrl, pilet) {
110
+ const basePath = this.getPiletApi(baseUrl);
111
+ return JSON.stringify(pilet.getMeta(basePath));
112
+ }
113
+ getIndexMeta(baseUrl) {
95
114
  return __awaiter(this, void 0, void 0, function* () {
96
115
  const { pilets, feed } = this.config;
97
- const localPilets = pilets.map((pilet) => pilet.meta).filter(Boolean);
116
+ const basePath = this.getPiletApi(baseUrl);
117
+ const localPilets = pilets.map((pilet) => { var _a; return (_a = pilet.getMeta) === null || _a === void 0 ? void 0 : _a.call(pilet, basePath); }).filter(Boolean);
98
118
  const mergedPilets = this.mergePilets(localPilets, yield this.loadRemoteFeed(feed));
99
119
  return JSON.stringify(mergedPilets);
100
120
  });
@@ -136,7 +156,7 @@ class PiletInjector {
136
156
  const type = (_a = external_1.mime.getType(target)) !== null && _a !== void 0 ? _a : 'application/octet-stream';
137
157
  return this.sendContent(content, type, url);
138
158
  }
139
- sendResponse(path, url) {
159
+ sendResponse(path, url, baseUrl) {
140
160
  return __awaiter(this, void 0, void 0, function* () {
141
161
  const { pilets } = this.config;
142
162
  const [index, ...rest] = path.split('/');
@@ -144,7 +164,7 @@ class PiletInjector {
144
164
  const bundler = pilet === null || pilet === void 0 ? void 0 : pilet.bundler;
145
165
  if (!path) {
146
166
  yield (bundler === null || bundler === void 0 ? void 0 : bundler.ready());
147
- const content = yield this.getMeta();
167
+ const content = yield this.getIndexMeta(baseUrl);
148
168
  return this.sendContent(content, 'application/json', url);
149
169
  }
150
170
  else {
@@ -157,10 +177,10 @@ class PiletInjector {
157
177
  }
158
178
  });
159
179
  }
160
- sendIndexFile(target, url) {
180
+ sendIndexFile(target, url, baseUrl) {
161
181
  const indexHtml = (0, fs_1.readFileSync)(target, 'utf8');
162
182
  // mechanism to inject server side debug piletApi config into piral emulator
163
- const windowInjectionScript = `window['dbg:pilet-api'] = '${this.piletApi}';`;
183
+ const windowInjectionScript = `window['dbg:pilet-api'] = '${this.getPiletApi(baseUrl)}';`;
164
184
  const findStr = `<script`;
165
185
  const replaceStr = `<script>/* Pilet Debugging Emulator Config Injection */${windowInjectionScript}</script><script`;
166
186
  const content = indexHtml.replace(`${findStr}`, `${replaceStr}`);
@@ -168,13 +188,14 @@ class PiletInjector {
168
188
  }
169
189
  handle(req) {
170
190
  const { app, api, publicUrl } = this.config;
191
+ const baseUrl = req.headers.host ? `${req.encrypted ? 'https' : 'http'}://${req.headers.host}` : undefined;
171
192
  if (!req.target) {
172
193
  if (req.url.startsWith(publicUrl)) {
173
194
  const path = req.url.substring(publicUrl.length).split('?')[0];
174
195
  const target = (0, path_1.join)(app, path);
175
196
  if ((0, fs_1.existsSync)(target) && (0, fs_1.statSync)(target).isFile()) {
176
197
  if (req.url === this.indexPath) {
177
- return this.sendIndexFile(target, req.url);
198
+ return this.sendIndexFile(target, req.url, baseUrl);
178
199
  }
179
200
  else {
180
201
  return this.sendFile(target, req.url);
@@ -188,7 +209,7 @@ class PiletInjector {
188
209
  }
189
210
  else if (req.target === api) {
190
211
  const path = req.url.substring(1).split('?')[0];
191
- return this.sendResponse(path, req.url);
212
+ return this.sendResponse(path, req.url, baseUrl);
192
213
  }
193
214
  }
194
215
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pilet-injector.js","sourceRoot":"","sources":["../../src/injectors/pilet-injector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pilet-injector.js","sourceRoot":"","sources":["../../src/injectors/pilet-injector.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "piral-cli",
3
- "version": "0.15.0-beta.4472",
3
+ "version": "0.15.0-beta.4549",
4
4
  "description": "The standard CLI for creating and building a Piral instance or a Pilet.",
5
5
  "keywords": [
6
6
  "portal",
@@ -78,5 +78,5 @@
78
78
  "typescript": "^4.7.3",
79
79
  "yargs": "^15.4.1"
80
80
  },
81
- "gitHead": "327a25c420b779caf6d2ea2edfc7ee59acd94a5b"
81
+ "gitHead": "ca7224ab671fd632fe9e5cfe9b7f573d9a105ce8"
82
82
  }
@@ -4,8 +4,7 @@ import { SourceLanguage, LogLevels, Framework, NpmClientType } from '../types';
4
4
  import {
5
5
  ForceOverwrite,
6
6
  installNpmPackage,
7
- updateExistingJson,
8
- getPiralPackage,
7
+ patchPiralPackage,
9
8
  scaffoldPiralSourceFiles,
10
9
  createDirectory,
11
10
  createFileIfNotExists,
@@ -20,8 +19,6 @@ import {
20
19
  getPiralScaffoldData,
21
20
  config,
22
21
  initNpmProject,
23
- logInfo,
24
- getPiletsInfo,
25
22
  } from '../common';
26
23
 
27
24
  export interface NewPiralOptions {
@@ -173,11 +170,7 @@ always-auth=true`,
173
170
  );
174
171
  }
175
172
 
176
- await createFileIfNotExists(
177
- root,
178
- 'piral.json',
179
- JSON.stringify({}),
180
- );
173
+ await createFileIfNotExists(root, 'piral.json', JSON.stringify({}));
181
174
 
182
175
  progress(`Installing npm package ${packageRef} ...`);
183
176
 
@@ -187,8 +180,7 @@ always-auth=true`,
187
180
 
188
181
  const data = getPiralScaffoldData(language, root, app, framework, variables);
189
182
 
190
- await updateExistingJson(root, 'package.json', getPiralPackage(app, data, version, bundlerName));
191
- await updateExistingJson(root, 'piral.json', { pilets: getPiletsInfo({}) });
183
+ await patchPiralPackage(root, app, data, version, bundlerName);
192
184
 
193
185
  await scaffoldPiralSourceFiles(template, registry, data, forceOverwrite);
194
186
 
@@ -44,6 +44,11 @@ export async function createEmulatorSources(
44
44
  return deps;
45
45
  }, {} as Record<string, string>);
46
46
 
47
+ const importmapEntries = externalPackages.reduce((deps, dep) => {
48
+ deps[dep.name] = dep.name;
49
+ return deps;
50
+ }, {} as Record<string, string>);
51
+
47
52
  const rootDir = resolve(targetDir, '..');
48
53
  const appDir = relative(rootDir, targetDir);
49
54
  const filesDir = resolve(rootDir, filesTar);
@@ -70,6 +75,9 @@ export async function createEmulatorSources(
70
75
  license: piralPkg.license,
71
76
  homepage: piralPkg.homepage,
72
77
  keywords: piralPkg.keywords,
78
+ importmap: {
79
+ imports: importmapEntries,
80
+ },
73
81
  pilets: {
74
82
  ...piralPkg.pilets,
75
83
  files: filesMap,
@@ -152,7 +152,7 @@ async function resolveImportmap(dir: string, importmap: Importmap) {
152
152
  if (packageJson) {
153
153
  const packageDir = dirname(packageJson);
154
154
  const packageDetails = require(packageJson);
155
- const otherDependencies = await readImportmap(packageDir, packageDetails);
155
+ const otherDependencies = await readImportmap(packageDir, packageDetails, true);
156
156
 
157
157
  for (const dependency of otherDependencies) {
158
158
  const entry = dependencies.find((dep) => dep.name === dependency.name);
@@ -173,7 +173,11 @@ async function resolveImportmap(dir: string, importmap: Importmap) {
173
173
  return dependencies;
174
174
  }
175
175
 
176
- export async function readImportmap(dir: string, packageDetails: any) {
176
+ export async function readImportmap(
177
+ dir: string,
178
+ packageDetails: any,
179
+ inherited = false,
180
+ ): Promise<Array<SharedDependency>> {
177
181
  const importmap = packageDetails.importmap;
178
182
 
179
183
  if (typeof importmap === 'string') {
@@ -186,6 +190,20 @@ export async function readImportmap(dir: string, packageDetails: any) {
186
190
 
187
191
  const baseDir = dirname(resolve(dir, importmap));
188
192
  return resolveImportmap(baseDir, content);
193
+ } else if (typeof importmap === 'undefined' && inherited) {
194
+ // Fall back to sharedDependencies or pilets.external if available
195
+ const shared: Array<string> = packageDetails.sharedDependencies ?? packageDetails.pilets?.externals;
196
+
197
+ if (Array.isArray(shared)) {
198
+ return shared.map((dep) => ({
199
+ id: dep,
200
+ name: dep,
201
+ entry: dep,
202
+ type: 'local',
203
+ ref: undefined,
204
+ requireId: dep,
205
+ }));
206
+ }
189
207
  }
190
208
 
191
209
  return resolveImportmap(dir, importmap);
@@ -46,15 +46,48 @@ describe('CLI package module', () => {
46
46
  expect(result).toStrictEqual(piralInfo.pilets);
47
47
  });
48
48
 
49
- it('getPiralPackage returns piral package', () => {
50
- let result = getPiralPackage(
49
+ it('getPiralPackage returns piral package with webpack in latest version',async () => {
50
+ const result = await getPiralPackage(
51
51
  'app',
52
52
  { language: 'ts', packageName: 'piral-base', reactRouterVersion: 5, reactVersion: 17 },
53
- '1.0.0',
53
+ '10.0.0',
54
54
  'webpack',
55
55
  );
56
- expect(result.devDependencies['piral-cli-webpack']).toEqual('1.0.0');
57
- result = getPiralPackage(
56
+ expect(result.devDependencies['piral-cli-webpack']).toEqual('latest');
57
+ });
58
+
59
+ it('getPiralPackage returns piral package with webpack in beta version',async () => {
60
+ const result = await getPiralPackage(
61
+ 'app',
62
+ { language: 'ts', packageName: 'piral-base', reactRouterVersion: 5, reactVersion: 17 },
63
+ '0.15.0-beta.1',
64
+ 'webpack',
65
+ );
66
+ expect(result.devDependencies['piral-cli-webpack']).toEqual('next');
67
+ });
68
+
69
+ it('getPiralPackage returns piral package with webpack in alpha version',async () => {
70
+ const result = await getPiralPackage(
71
+ 'app',
72
+ { language: 'ts', packageName: 'piral-base', reactRouterVersion: 5, reactVersion: 17 },
73
+ '0.15.0-alpha.1',
74
+ 'webpack',
75
+ );
76
+ expect(result.devDependencies['piral-cli-webpack']).toEqual('canary');
77
+ });
78
+
79
+ it('getPiralPackage returns piral package with webpack in existing version',async () => {
80
+ const result = await getPiralPackage(
81
+ 'app',
82
+ { language: 'ts', packageName: 'piral-base', reactRouterVersion: 5, reactVersion: 17 },
83
+ '0.14.0',
84
+ 'webpack',
85
+ );
86
+ expect(result.devDependencies['piral-cli-webpack']).toEqual('0.14.0');
87
+ });
88
+
89
+ it('getPiralPackage returns piral package without bundler',async () => {
90
+ const result = await getPiralPackage(
58
91
  'app',
59
92
  { language: 'ts', packageName: 'piral-base', reactRouterVersion: 5, reactVersion: 17 },
60
93
  '1.0.0',
@@ -11,7 +11,7 @@ import { filesTar, filesOnceTar, declarationEntryExtensions, bundlerNames } from
11
11
  import { getHash, checkIsDirectory, matchFiles } from './io';
12
12
  import { readJson, copy, updateExistingJson, findFile, checkExists } from './io';
13
13
  import { isGitPackage, isLocalPackage, makeGitUrl, makeFilePath } from './npm';
14
- import { makePiletExternals, makeExternals, findPackageRoot } from './npm';
14
+ import { makePiletExternals, makeExternals, findPackageRoot, findSpecificVersion } from './npm';
15
15
  import {
16
16
  SourceLanguage,
17
17
  Framework,
@@ -22,18 +22,37 @@ import {
22
22
  SharedDependency,
23
23
  } from '../types';
24
24
 
25
- function appendBundler(devDependencies: Record<string, string>, bundler: string, version: string) {
25
+ async function appendBundler(devDependencies: Record<string, string>, bundler: string, proposedVersion: string) {
26
26
  if (bundler && bundler !== 'none') {
27
- if (bundlerNames.includes(bundler as any)) {
28
- devDependencies[`piral-cli-${bundler}`] = version;
29
- } else if (!isValidDependency(bundler)) {
27
+ if (isValidDependency(bundler)) {
28
+ const sep = bundler.indexOf('@', 1);
29
+ const hasVersion = sep !== -1;
30
+ const proposedName = bundler.substring(0, hasVersion ? sep : bundler.length);
31
+ const givenVersion = hasVersion ? bundler.substring(sep + 1) : proposedVersion;
32
+ const name = bundlerNames.includes(proposedName as any) ? `piral-cli-${bundler}` : proposedName;
33
+ const versions = new Set([
34
+ givenVersion,
35
+ givenVersion.includes('-beta.') && 'next',
36
+ givenVersion.includes('-alpha.') && 'canary',
37
+ 'latest',
38
+ ]);
39
+
40
+ for (const version of versions) {
41
+ if (version) {
42
+ const isAvailable = await findSpecificVersion(name, version);
43
+
44
+ // only if something was returned we know that the version exists; so we can take it.
45
+ if (isAvailable) {
46
+ devDependencies[name] = version;
47
+ return;
48
+ }
49
+ }
50
+ }
51
+
52
+ log('generalWarning_0001', `Could not find a valid version for the provided bundler "${bundler}".'`);
53
+ } else {
30
54
  //Error case - print warning and ignore
31
55
  log('generalWarning_0001', `The provided bundler name "${bundler}" does not refer to a valid package name.'`);
32
- } else {
33
- const sep = bundler.indexOf('@', 1);
34
- const name = bundler.substring(0, sep !== -1 ? sep : bundler.length);
35
- const version = sep !== -1 ? bundler.substring(sep + 1) : 'latest';
36
- devDependencies[name] = version;
37
56
  }
38
57
  }
39
58
  }
@@ -160,7 +179,24 @@ export interface PiralPackageData {
160
179
  reactRouterVersion: number;
161
180
  }
162
181
 
163
- export function getPiralPackage(app: string, data: PiralPackageData, version: string, bundler?: string) {
182
+ export async function patchPiralPackage(
183
+ root: string,
184
+ app: string,
185
+ data: PiralPackageData,
186
+ version: string,
187
+ bundler?: string,
188
+ ) {
189
+ log('generalDebug_0003', `Patching the package.json in "${root}" ...`);
190
+ const pkg = await getPiralPackage(app, data, version, bundler);
191
+
192
+ await updateExistingJson(root, 'package.json', pkg);
193
+ log('generalDebug_0003', `Succesfully patched the package.json.`);
194
+
195
+ await updateExistingJson(root, 'piral.json', { pilets: getPiletsInfo({}) });
196
+ log('generalDebug_0003', `Succesfully patched the pilet.json.`);
197
+ }
198
+
199
+ export async function getPiralPackage(app: string, data: PiralPackageData, version: string, bundler?: string) {
164
200
  const framework = data.packageName;
165
201
  const devDependencies = {
166
202
  ...getDevDependencies(
@@ -173,7 +209,7 @@ export function getPiralPackage(app: string, data: PiralPackageData, version: st
173
209
  ...getDependencies(data.language, getDependencyPackages(framework, data.reactVersion, data.reactRouterVersion)),
174
210
  };
175
211
 
176
- appendBundler(devDependencies, bundler, version);
212
+ await appendBundler(devDependencies, bundler, version);
177
213
 
178
214
  return {
179
215
  app,
@@ -507,6 +543,27 @@ export async function patchPiletPackage(
507
543
  newInfo?: { language: SourceLanguage; bundler: string },
508
544
  ) {
509
545
  log('generalDebug_0003', `Patching the package.json in "${root}" ...`);
546
+ const pkg = await getPiletPackage(root, name, version, piralInfo, fromEmulator, newInfo);
547
+
548
+ await updateExistingJson(root, 'package.json', pkg);
549
+ log('generalDebug_0003', `Succesfully patched the package.json.`);
550
+
551
+ await updateExistingJson(root, 'pilet.json', {
552
+ piralInstances: {
553
+ [name]: {},
554
+ },
555
+ });
556
+ log('generalDebug_0003', `Succesfully patched the pilet.json.`);
557
+ }
558
+
559
+ export async function getPiletPackage(
560
+ root: string,
561
+ name: string,
562
+ version: string,
563
+ piralInfo: PackageData,
564
+ fromEmulator: boolean,
565
+ newInfo?: { language: SourceLanguage; bundler: string },
566
+ ) {
510
567
  const { externals, packageOverrides, ...info } = getPiletsInfo(piralInfo);
511
568
  const piralDependencies = {
512
569
  ...piralInfo.devDependencies,
@@ -548,10 +605,10 @@ export async function patchPiletPackage(
548
605
  const bundler = newInfo.bundler;
549
606
  const version = `^${cliVersion}`;
550
607
  devDependencies['piral-cli'] = version;
551
- appendBundler(devDependencies, bundler, version);
608
+ await appendBundler(devDependencies, bundler, version);
552
609
  }
553
610
 
554
- await updateExistingJson(root, 'package.json', deepMerge(packageOverrides, {
611
+ return deepMerge(packageOverrides, {
555
612
  importmap: {
556
613
  imports: {},
557
614
  inherit: [name],
@@ -561,16 +618,7 @@ export async function patchPiletPackage(
561
618
  [name]: undefined,
562
619
  },
563
620
  scripts,
564
- }));
565
-
566
- log('generalDebug_0003', `Succesfully patched the package.json.`);
567
-
568
- await updateExistingJson(root, 'pilet.json', {
569
- piralInstances: {
570
- [name]: {},
571
- },
572
621
  });
573
- log('generalDebug_0003', `Succesfully patched the pilet.json.`);
574
622
  }
575
623
 
576
624
  /**
@@ -5,11 +5,9 @@ import PiletInjector from './pilet-injector';
5
5
  const optionsMock = {
6
6
  pilets: [],
7
7
  publicUrl: '/',
8
- meta: 'debug-meta.json',
9
8
  api: '',
10
9
  app: '',
11
10
  active: true,
12
- publicUrl: '/',
13
11
  meta: '',
14
12
  headers: {},
15
13
  };
@@ -18,7 +16,7 @@ const configMock: any = {
18
16
  port: 1234,
19
17
  };
20
18
 
21
- describe('Piral-CLI piral injector', () => {
19
+ describe('Piral-CLI pilet injector', () => {
22
20
  it('PiletInjector is active when configured', () => {
23
21
  const core = new EventEmitter();
24
22
  const injector = new PiletInjector(optionsMock, configMock, core);
@@ -35,7 +33,7 @@ describe('Piral-CLI piral injector', () => {
35
33
  injector.name;
36
34
  injector.getOptions();
37
35
  //injector.getMetaOf(0);
38
- injector.getMeta();
36
+ injector.getIndexMeta('http://localhost:9000');
39
37
 
40
38
  // Assert
41
39
  expect(injector.active).toBeFalsy();
@@ -78,7 +76,7 @@ describe('Piral-CLI piral injector', () => {
78
76
  const injector = new PiletInjector(optionsMock, configMock, core);
79
77
 
80
78
  // Act
81
- const res = await injector.sendResponse('some/nice/invalid/path', 'localhost:1234');
79
+ const res = await injector.sendResponse('some/nice/invalid/path', 'localhost:1234', 'http://localhost:9000');
82
80
 
83
81
  // Assert
84
82
  expect(res).toBeUndefined();
@@ -88,8 +86,6 @@ describe('Piral-CLI piral injector', () => {
88
86
  // Arrange
89
87
  const optionsMock = {
90
88
  pilets: [],
91
- meta: 'debug-meta.json',
92
- publicUrl: '/',
93
89
  api: 'http://someFakeApi:1234',
94
90
  app: '',
95
91
  publicUrl: '/',
@@ -120,8 +116,6 @@ describe('Piral-CLI piral injector', () => {
120
116
  // Arrange
121
117
  const optionsMock = {
122
118
  pilets: [],
123
- meta: 'debug-meta.json',
124
- publicUrl: '/',
125
119
  api: 'http://someFakeApi:1234',
126
120
  app: '',
127
121
  publicUrl: '/',