@stuntman/server 0.2.4 → 0.3.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.
Files changed (48) hide show
  1. package/README.md +1 -1
  2. package/dist/api/api.d.ts +1 -1
  3. package/dist/api/api.d.ts.map +1 -1
  4. package/dist/api/api.js +53 -54
  5. package/dist/api/api.js.map +1 -1
  6. package/dist/api/utils.js +9 -18
  7. package/dist/api/utils.js.map +1 -1
  8. package/dist/api/validators.js +38 -43
  9. package/dist/api/validators.js.map +1 -1
  10. package/dist/bin/stuntman.js +3 -5
  11. package/dist/bin/stuntman.js.map +1 -1
  12. package/dist/index.js +1 -5
  13. package/dist/index.js.map +1 -1
  14. package/dist/ipUtils.d.ts +1 -1
  15. package/dist/ipUtils.d.ts.map +1 -1
  16. package/dist/ipUtils.js +18 -44
  17. package/dist/ipUtils.js.map +1 -1
  18. package/dist/mock.d.ts +1 -1
  19. package/dist/mock.d.ts.map +1 -1
  20. package/dist/mock.js +66 -69
  21. package/dist/mock.js.map +1 -1
  22. package/dist/requestContext.js +6 -8
  23. package/dist/requestContext.js.map +1 -1
  24. package/dist/ruleExecutor.d.ts.map +1 -1
  25. package/dist/ruleExecutor.js +28 -34
  26. package/dist/ruleExecutor.js.map +1 -1
  27. package/dist/rules/catchAll.js +4 -7
  28. package/dist/rules/catchAll.js.map +1 -1
  29. package/dist/rules/echo.js +3 -6
  30. package/dist/rules/echo.js.map +1 -1
  31. package/dist/rules/index.d.ts.map +1 -1
  32. package/dist/rules/index.js +3 -7
  33. package/dist/rules/index.js.map +1 -1
  34. package/dist/rules/loadRules.d.ts +1 -1
  35. package/dist/rules/loadRules.d.ts.map +1 -1
  36. package/dist/rules/loadRules.js +18 -48
  37. package/dist/rules/loadRules.js.map +1 -1
  38. package/dist/storage.d.ts +3 -3
  39. package/dist/storage.d.ts.map +1 -1
  40. package/dist/storage.js +7 -15
  41. package/dist/storage.js.map +1 -1
  42. package/package.json +26 -20
  43. package/src/api/api.ts +5 -1
  44. package/src/mock.ts +1 -1
  45. package/src/ruleExecutor.ts +5 -5
  46. package/src/rules/index.ts +1 -1
  47. package/src/rules/loadRules.ts +2 -2
  48. package/src/storage.ts +2 -2
@@ -1,23 +1,19 @@
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.getRuleExecutor = void 0;
7
- const await_lock_1 = __importDefault(require("await-lock"));
8
- const shared_1 = require("@stuntman/shared");
9
- const rules_1 = require("./rules");
1
+ import { Lock } from 'async-await-mutex-lock';
2
+ import { AppError, DEFAULT_RULE_PRIORITY, HttpCode, errorToLog, logger } from '@stuntman/shared';
3
+ import { CUSTOM_RULES, DEFAULT_RULES } from './rules';
10
4
  const ruleExecutors = {};
11
5
  const transformMockRuleToLive = (rule) => {
12
- var _a;
13
6
  return {
14
7
  ...rule,
15
8
  counter: 0,
16
- isEnabled: (_a = rule.isEnabled) !== null && _a !== void 0 ? _a : true,
9
+ isEnabled: rule.isEnabled ?? true,
17
10
  createdTimestamp: Date.now(),
18
11
  };
19
12
  };
20
13
  class RuleExecutor {
14
+ // TODO persistent rule storage maybe
15
+ _rules;
16
+ rulesLock = new Lock();
21
17
  get enabledRules() {
22
18
  if (!this._rules) {
23
19
  this._rules = new Array();
@@ -25,10 +21,9 @@ class RuleExecutor {
25
21
  const now = Date.now();
26
22
  return this._rules
27
23
  .filter((r) => r.isEnabled && (!Number.isFinite(r.ttlSeconds) || r.createdTimestamp + r.ttlSeconds * 1000 > now))
28
- .sort((a, b) => { var _a, _b; return ((_a = a.priority) !== null && _a !== void 0 ? _a : shared_1.DEFAULT_RULE_PRIORITY) - ((_b = b.priority) !== null && _b !== void 0 ? _b : shared_1.DEFAULT_RULE_PRIORITY); });
24
+ .sort((a, b) => (a.priority ?? DEFAULT_RULE_PRIORITY) - (b.priority ?? DEFAULT_RULE_PRIORITY));
29
25
  }
30
26
  constructor(rules) {
31
- this.rulesLock = new await_lock_1.default();
32
27
  this._rules = (rules || []).map(transformMockRuleToLive);
33
28
  }
34
29
  hasExpired() {
@@ -39,13 +34,13 @@ class RuleExecutor {
39
34
  if (!this.hasExpired()) {
40
35
  return;
41
36
  }
42
- await this.rulesLock.acquireAsync();
37
+ await this.rulesLock.acquire();
43
38
  const now = Date.now();
44
39
  try {
45
40
  this._rules = this._rules.filter((r) => {
46
41
  const shouldKeep = !Number.isFinite(r.ttlSeconds) || r.createdTimestamp + r.ttlSeconds * 1000 > now;
47
42
  if (!shouldKeep) {
48
- shared_1.logger.debug({ ruleId: r.id }, 'removing expired rule');
43
+ logger.debug({ ruleId: r.id }, 'removing expired rule');
49
44
  }
50
45
  return shouldKeep;
51
46
  });
@@ -56,17 +51,17 @@ class RuleExecutor {
56
51
  }
57
52
  async addRule(rule, overwrite) {
58
53
  await this.cleanUpExpired();
59
- await this.rulesLock.acquireAsync();
54
+ await this.rulesLock.acquire();
60
55
  try {
61
56
  if (this._rules.some((r) => r.id === rule.id)) {
62
57
  if (!overwrite) {
63
- throw new shared_1.AppError({ httpCode: shared_1.HttpCode.CONFLICT, message: 'rule with given ID already exists' });
58
+ throw new AppError({ httpCode: HttpCode.CONFLICT, message: 'rule with given ID already exists' });
64
59
  }
65
60
  this._removeRule(rule.id);
66
61
  }
67
62
  const liveRule = transformMockRuleToLive(rule);
68
63
  this._rules.push(liveRule);
69
- shared_1.logger.debug(liveRule, 'rule added');
64
+ logger.debug(liveRule, 'rule added');
70
65
  return liveRule;
71
66
  }
72
67
  finally {
@@ -77,14 +72,14 @@ class RuleExecutor {
77
72
  this._rules = this._rules.filter((r) => {
78
73
  const notFound = r.id !== (typeof ruleOrId === 'string' ? ruleOrId : ruleOrId.id);
79
74
  if (!notFound) {
80
- shared_1.logger.debug({ ruleId: r.id }, 'rule removed');
75
+ logger.debug({ ruleId: r.id }, 'rule removed');
81
76
  }
82
77
  return notFound;
83
78
  });
84
79
  }
85
80
  async removeRule(ruleOrId) {
86
81
  await this.cleanUpExpired();
87
- await this.rulesLock.acquireAsync();
82
+ await this.rulesLock.acquire();
88
83
  try {
89
84
  this._removeRule(ruleOrId);
90
85
  }
@@ -98,7 +93,7 @@ class RuleExecutor {
98
93
  if (r.id === ruleId) {
99
94
  r.counter = 0;
100
95
  r.isEnabled = true;
101
- shared_1.logger.debug({ ruleId: r.id }, 'rule enabled');
96
+ logger.debug({ ruleId: r.id }, 'rule enabled');
102
97
  }
103
98
  });
104
99
  }
@@ -107,7 +102,7 @@ class RuleExecutor {
107
102
  this._rules.forEach((r) => {
108
103
  if (r.id === ruleId) {
109
104
  r.isEnabled = false;
110
- shared_1.logger.debug({ ruleId: r.id }, 'rule disabled');
105
+ logger.debug({ ruleId: r.id }, 'rule disabled');
111
106
  }
112
107
  });
113
108
  }
@@ -119,7 +114,7 @@ class RuleExecutor {
119
114
  const matchingRule = this.enabledRules.find((rule) => {
120
115
  try {
121
116
  const matchResult = rule.matches(request);
122
- shared_1.logger.trace({ ...logContext, matchResult }, `rule match attempt for ${rule.id}`);
117
+ logger.trace({ ...logContext, matchResult }, `rule match attempt for ${rule.id}`);
123
118
  if (typeof matchResult === 'boolean') {
124
119
  return matchResult;
125
120
  }
@@ -129,17 +124,17 @@ class RuleExecutor {
129
124
  return matchResult.result;
130
125
  }
131
126
  catch (error) {
132
- shared_1.logger.error({ ...logContext, ruleId: rule.id, error: (0, shared_1.errorToLog)(error) }, 'error in rule match function');
127
+ logger.error({ ...logContext, ruleId: rule.id, error: errorToLog(error) }, 'error in rule match function');
133
128
  }
134
129
  return undefined;
135
130
  });
136
131
  if (!matchingRule) {
137
- shared_1.logger.debug(logContext, 'no matching rule found');
132
+ logger.debug(logContext, 'no matching rule found');
138
133
  return null;
139
134
  }
140
135
  const matchResult = matchingRule.matches(request);
141
136
  logContext.ruleId = matchingRule.id;
142
- shared_1.logger.debug({ ...logContext, matchResultMessage: typeof matchResult !== 'boolean' ? matchResult.description : null }, 'found matching rule');
137
+ logger.debug({ ...logContext, matchResultMessage: typeof matchResult !== 'boolean' ? matchResult.description : null }, 'found matching rule');
143
138
  const matchingRuleClone = Object.freeze(Object.assign({}, matchingRule, {
144
139
  labels: matchingRule.labels ? [...(matchingRule.labels || []), ...dynamicLabels] : dynamicLabels,
145
140
  }));
@@ -147,29 +142,29 @@ class RuleExecutor {
147
142
  logContext.ruleCounter = matchingRule.counter;
148
143
  if (Number.isNaN(matchingRule.counter) || !Number.isFinite(matchingRule.counter)) {
149
144
  matchingRule.counter = 0;
150
- shared_1.logger.warn(logContext, "it's over 9000!!!");
145
+ logger.warn(logContext, "it's over 9000!!!");
151
146
  }
152
147
  if (matchingRule.disableAfterUse) {
153
148
  if (matchingRule.disableAfterUse === true || matchingRule.disableAfterUse <= matchingRule.counter) {
154
- shared_1.logger.debug(logContext, 'disabling rule for future requests');
149
+ logger.debug(logContext, 'disabling rule for future requests');
155
150
  matchingRule.isEnabled = false;
156
151
  }
157
152
  }
158
153
  if (matchingRule.removeAfterUse) {
159
154
  if (matchingRule.removeAfterUse === true || matchingRule.removeAfterUse <= matchingRule.counter) {
160
- shared_1.logger.debug(logContext, 'removing rule for future requests');
155
+ logger.debug(logContext, 'removing rule for future requests');
161
156
  await this.removeRule(matchingRule);
162
157
  }
163
158
  }
164
159
  if (typeof matchResult !== 'boolean') {
165
160
  if (matchResult.disableRuleIds && matchResult.disableRuleIds.length > 0) {
166
- shared_1.logger.debug({ ...logContext, disableRuleIds: matchResult.disableRuleIds }, 'disabling rules based on matchResult');
161
+ logger.debug({ ...logContext, disableRuleIds: matchResult.disableRuleIds }, 'disabling rules based on matchResult');
167
162
  for (const ruleId of matchResult.disableRuleIds) {
168
163
  this.disableRule(ruleId);
169
164
  }
170
165
  }
171
166
  if (matchResult.enableRuleIds && matchResult.enableRuleIds.length > 0) {
172
- shared_1.logger.debug({ ...logContext, disableRuleIds: matchResult.enableRuleIds }, 'enabling rules based on matchResult');
167
+ logger.debug({ ...logContext, disableRuleIds: matchResult.enableRuleIds }, 'enabling rules based on matchResult');
173
168
  for (const ruleId of matchResult.enableRuleIds) {
174
169
  this.enableRule(ruleId);
175
170
  }
@@ -186,16 +181,15 @@ class RuleExecutor {
186
181
  return this._rules.find((r) => r.id === id);
187
182
  }
188
183
  }
189
- const getRuleExecutor = (mockUuid, overrideRules) => {
184
+ export const getRuleExecutor = (mockUuid, overrideRules) => {
190
185
  if (!ruleExecutors[mockUuid]) {
191
186
  if (overrideRules === null) {
192
187
  ruleExecutors[mockUuid] = new RuleExecutor();
193
188
  }
194
189
  else {
195
- ruleExecutors[mockUuid] = new RuleExecutor((overrideRules !== null && overrideRules !== void 0 ? overrideRules : [...rules_1.DEFAULT_RULES, ...rules_1.CUSTOM_RULES]).map((r) => ({ ...r, ttlSeconds: Infinity })));
190
+ ruleExecutors[mockUuid] = new RuleExecutor((overrideRules ?? [...DEFAULT_RULES, ...CUSTOM_RULES]).map((r) => ({ ...r, ttlSeconds: Infinity })));
196
191
  }
197
192
  }
198
193
  return ruleExecutors[mockUuid];
199
194
  };
200
- exports.getRuleExecutor = getRuleExecutor;
201
195
  //# sourceMappingURL=ruleExecutor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ruleExecutor.js","sourceRoot":"","sources":["../src/ruleExecutor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ruleExecutor.js","sourceRoot":"","sources":["../src/ruleExecutor.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,8 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.catchAllRule = void 0;
4
- const shared_1 = require("@stuntman/shared");
5
- exports.catchAllRule = {
6
- id: shared_1.CATCH_RULE_NAME,
1
+ import { CATCH_ALL_RULE_PRIORITY, CATCH_RULE_NAME } from '@stuntman/shared';
2
+ export const catchAllRule = {
3
+ id: CATCH_RULE_NAME,
7
4
  matches: () => true,
8
- priority: shared_1.CATCH_ALL_RULE_PRIORITY,
5
+ priority: CATCH_ALL_RULE_PRIORITY,
9
6
  actions: {
10
7
  mockResponse: (req) => ({
11
8
  body: `Request received by Stuntman mock <pre>${JSON.stringify(req, null, 4)}</pre>`,
@@ -1 +1 @@
1
- {"version":3,"file":"catchAll.js","sourceRoot":"","sources":["../../src/rules/catchAll.ts"],"names":[],"mappings":";;;AAAA,6CAA4E;AAG/D,QAAA,YAAY,GAA0B;IAC/C,EAAE,EAAE,wBAAe;IACnB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;IACnB,QAAQ,EAAE,gCAAuB;IACjC,OAAO,EAAE;QACL,YAAY,EAAE,CAAC,GAAqB,EAAE,EAAE,CAAC,CAAC;YACtC,IAAI,EAAE,0CAA0C,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ;YACpF,MAAM,EAAE,GAAG;SACd,CAAC;KACL;CACJ,CAAC"}
1
+ {"version":3,"file":"catchAll.js","sourceRoot":"","sources":["../../src/rules/catchAll.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAG5E,MAAM,CAAC,MAAM,YAAY,GAA0B;IAC/C,EAAE,EAAE,eAAe;IACnB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;IACnB,QAAQ,EAAE,uBAAuB;IACjC,OAAO,EAAE;QACL,YAAY,EAAE,CAAC,GAAqB,EAAE,EAAE,CAAC,CAAC;YACtC,IAAI,EAAE,0CAA0C,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ;YACpF,MAAM,EAAE,GAAG;SACd,CAAC;KACL;CACJ,CAAC"}
@@ -1,10 +1,7 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.echoRule = void 0;
4
- const shared_1 = require("@stuntman/shared");
5
- exports.echoRule = {
1
+ import { DEFAULT_RULE_PRIORITY } from '@stuntman/shared';
2
+ export const echoRule = {
6
3
  id: 'internal/echo',
7
- priority: shared_1.DEFAULT_RULE_PRIORITY + 1,
4
+ priority: DEFAULT_RULE_PRIORITY + 1,
8
5
  matches: (req) => /https?:\/\/echo\/.*/.test(req.url),
9
6
  actions: {
10
7
  mockResponse: (req) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"echo.js","sourceRoot":"","sources":["../../src/rules/echo.ts"],"names":[],"mappings":";;;AAAA,6CAAyD;AAG5C,QAAA,QAAQ,GAA0B;IAC3C,EAAE,EAAE,eAAe;IACnB,QAAQ,EAAE,8BAAqB,GAAG,CAAC;IACnC,OAAO,EAAE,CAAC,GAAqB,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACvE,OAAO,EAAE;QACL,YAAY,EAAE,CAAC,GAAqB,EAAE,EAAE,CAAC,CAAC;YACtC,IAAI,EAAE,GAAG;YACT,MAAM,EAAE,GAAG;SACd,CAAC;KACL;CACJ,CAAC"}
1
+ {"version":3,"file":"echo.js","sourceRoot":"","sources":["../../src/rules/echo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAGzD,MAAM,CAAC,MAAM,QAAQ,GAA0B;IAC3C,EAAE,EAAE,eAAe;IACnB,QAAQ,EAAE,qBAAqB,GAAG,CAAC;IACnC,OAAO,EAAE,CAAC,GAAqB,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACvE,OAAO,EAAE;QACL,YAAY,EAAE,CAAC,GAAqB,EAAE,EAAE,CAAC,CAAC;YACtC,IAAI,EAAE,GAAG;YACT,MAAM,EAAE,GAAG;SACd,CAAC;KACL;CACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAsB,CAAC"}
@@ -1,8 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CUSTOM_RULES = exports.DEFAULT_RULES = void 0;
4
- const loadRules_1 = require("./loadRules");
5
- var loadRules_2 = require("./loadRules");
6
- Object.defineProperty(exports, "DEFAULT_RULES", { enumerable: true, get: function () { return loadRules_2.DEFAULT_RULES; } });
7
- exports.CUSTOM_RULES = (0, loadRules_1.loadRules)();
1
+ import { loadRules } from './loadRules';
2
+ export { DEFAULT_RULES } from './loadRules';
3
+ export const CUSTOM_RULES = await loadRules();
8
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":";;;AACA,2CAAwC;AACxC,yCAA4C;AAAnC,0GAAA,aAAa,OAAA;AAET,QAAA,YAAY,GAA4B,IAAA,qBAAS,GAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,CAAC,MAAM,YAAY,GAA4B,MAAM,SAAS,EAAE,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import type * as Stuntman from '@stuntman/shared';
2
2
  export declare const DEFAULT_RULES: Stuntman.DeployedRule[];
3
- export declare const loadRules: () => Stuntman.DeployedRule[];
3
+ export declare const loadRules: () => Promise<Stuntman.DeployedRule[]>;
4
4
  //# sourceMappingURL=loadRules.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loadRules.d.ts","sourceRoot":"","sources":["../../src/rules/loadRules.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAElD,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,YAAY,EAA6B,CAAC;AAE/E,eAAO,MAAM,SAAS,QAAO,SAAS,YAAY,EA2CjD,CAAC"}
1
+ {"version":3,"file":"loadRules.d.ts","sourceRoot":"","sources":["../../src/rules/loadRules.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAElD,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,YAAY,EAA6B,CAAC;AAE/E,eAAO,MAAM,SAAS,QAAa,QAAQ,SAAS,YAAY,EAAE,CA2CjE,CAAC"}
@@ -1,61 +1,32 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.loadRules = exports.DEFAULT_RULES = void 0;
30
- const fs_1 = __importDefault(require("fs"));
31
- const glob_1 = require("glob");
32
- const tsImport = __importStar(require("ts-import"));
33
- const catchAll_1 = require("./catchAll");
34
- const echo_1 = require("./echo");
35
- const shared_1 = require("@stuntman/shared");
36
- exports.DEFAULT_RULES = [catchAll_1.catchAllRule, echo_1.echoRule];
37
- const loadRules = () => {
1
+ import fs from 'fs';
2
+ import { globSync } from 'glob';
3
+ import * as tsImport from 'ts-import';
4
+ import { catchAllRule } from './catchAll';
5
+ import { echoRule } from './echo';
6
+ import { stuntmanConfig, logger, errorToLog } from '@stuntman/shared';
7
+ export const DEFAULT_RULES = [catchAllRule, echoRule];
8
+ export const loadRules = async () => {
38
9
  const customRules = [];
39
- if (!shared_1.stuntmanConfig.mock.rulesPath || !fs_1.default.existsSync(shared_1.stuntmanConfig.mock.rulesPath)) {
40
- shared_1.logger.debug({ rulesPath: shared_1.stuntmanConfig.mock.rulesPath }, `additional rules directory not found`);
10
+ if (!stuntmanConfig.mock.rulesPath || !fs.existsSync(stuntmanConfig.mock.rulesPath)) {
11
+ logger.debug({ rulesPath: stuntmanConfig.mock.rulesPath }, `additional rules directory not found`);
41
12
  return [];
42
13
  }
43
- shared_1.logger.debug({ rulesPath: shared_1.stuntmanConfig.mock.rulesPath }, `loading additional rules`);
44
- const filePaths = (0, glob_1.globSync)('*.[tj]s', { absolute: true, cwd: shared_1.stuntmanConfig.mock.rulesPath });
14
+ logger.debug({ rulesPath: stuntmanConfig.mock.rulesPath }, `loading additional rules`);
15
+ const filePaths = globSync('*.[tj]s', { absolute: true, cwd: stuntmanConfig.mock.rulesPath });
45
16
  const tsImportCompiledFileNames = filePaths.map((p) => p.replace(/\.[^/.]+$/u, '.js'));
46
17
  const tsImportDuplicatedCompiledFileNames = tsImportCompiledFileNames.filter((currentValue, currentIndex) => tsImportCompiledFileNames.indexOf(currentValue) !== currentIndex);
47
18
  if (tsImportDuplicatedCompiledFileNames.length > 0) {
48
- shared_1.logger.error({ tsImportDuplicatedCompiledFileNames }, 'duplicated compiled file names https://github.com/radarsu/ts-import/issues/32');
19
+ logger.error({ tsImportDuplicatedCompiledFileNames }, 'duplicated compiled file names https://github.com/radarsu/ts-import/issues/32');
49
20
  throw new Error('duplicated compiled file names https://github.com/radarsu/ts-import/issues/32');
50
21
  }
51
22
  for (const filePath of filePaths) {
52
23
  // TODO add .ts rule support
53
24
  try {
54
- const loadedFile = tsImport.loadSync(filePath, { useCache: false });
25
+ const loadedFile = await tsImport.load(filePath, { useCache: false });
55
26
  // eslint-disable-next-line @typescript-eslint/no-var-requires
56
27
  const exportedRules = Object.values(loadedFile).filter((rule) => {
57
28
  if (!rule || !rule.id || typeof rule.matches !== 'function') {
58
- shared_1.logger.error({ filePath, rule }, 'invalid exported rule');
29
+ logger.error({ filePath, rule }, 'invalid exported rule');
59
30
  return false;
60
31
  }
61
32
  return true;
@@ -63,16 +34,15 @@ const loadRules = () => {
63
34
  customRules.push(...exportedRules);
64
35
  }
65
36
  catch (error) {
66
- shared_1.logger.error({ filePath, error: (0, shared_1.errorToLog)(error) }, 'error importing rule');
37
+ logger.error({ filePath, error: errorToLog(error) }, 'error importing rule');
67
38
  }
68
39
  }
69
- const ruleIds = [...exports.DEFAULT_RULES, ...customRules].map((rule) => rule.id);
40
+ const ruleIds = [...DEFAULT_RULES, ...customRules].map((rule) => rule.id);
70
41
  const duplicatedRuleIds = ruleIds.filter((currentValue, currentIndex) => ruleIds.indexOf(currentValue) !== currentIndex);
71
42
  if (duplicatedRuleIds.length > 0) {
72
- shared_1.logger.error({ duplicatedRuleIds }, 'duplicated rule ids');
43
+ logger.error({ duplicatedRuleIds }, 'duplicated rule ids');
73
44
  throw new Error('duplicated rule ids');
74
45
  }
75
46
  return customRules;
76
47
  };
77
- exports.loadRules = loadRules;
78
48
  //# sourceMappingURL=loadRules.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loadRules.js","sourceRoot":"","sources":["../../src/rules/loadRules.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAAoB;AACpB,+BAAgC;AAChC,oDAAsC;AACtC,yCAA0C;AAC1C,iCAAkC;AAClC,6CAAsE;AAGzD,QAAA,aAAa,GAA4B,CAAC,uBAAY,EAAE,eAAQ,CAAC,CAAC;AAExE,MAAM,SAAS,GAAG,GAA4B,EAAE;IACnD,MAAM,WAAW,GAA4B,EAAE,CAAC;IAChD,IAAI,CAAC,uBAAc,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,uBAAc,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAClF,eAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,uBAAc,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,sCAAsC,CAAC,CAAC;QACnG,OAAO,EAAE,CAAC;IACd,CAAC;IACD,eAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,uBAAc,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,0BAA0B,CAAC,CAAC;IACvF,MAAM,SAAS,GAAG,IAAA,eAAQ,EAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,uBAAc,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9F,MAAM,yBAAyB,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;IACvF,MAAM,mCAAmC,GAAG,yBAAyB,CAAC,MAAM,CACxE,CAAC,YAAY,EAAE,YAAY,EAAE,EAAE,CAAC,yBAAyB,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,YAAY,CACnG,CAAC;IACF,IAAI,mCAAmC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjD,eAAM,CAAC,KAAK,CACR,EAAE,mCAAmC,EAAE,EACvC,+EAA+E,CAClF,CAAC;QACF,MAAM,IAAI,KAAK,CAAC,+EAA+E,CAAC,CAAC;IACrG,CAAC;IACD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC/B,4BAA4B;QAC5B,IAAI,CAAC;YACD,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACpE,8DAA8D;YAC9D,MAAM,aAAa,GAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAA6B,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;gBACzF,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;oBAC1D,eAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,uBAAuB,CAAC,CAAC;oBAC1D,OAAO,KAAK,CAAC;gBACjB,CAAC;gBACD,OAAO,IAAI,CAAC;YAChB,CAAC,CAAC,CAAC;YACH,WAAW,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,eAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAA,mBAAU,EAAC,KAAc,CAAC,EAAE,EAAE,sBAAsB,CAAC,CAAC;QAC1F,CAAC;IACL,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,GAAG,qBAAa,EAAE,GAAG,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1E,MAAM,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,YAAY,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,YAAY,CAAC,CAAC;IACzH,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,eAAM,CAAC,KAAK,CAAC,EAAE,iBAAiB,EAAE,EAAE,qBAAqB,CAAC,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,WAAW,CAAC;AACvB,CAAC,CAAC;AA3CW,QAAA,SAAS,aA2CpB"}
1
+ {"version":3,"file":"loadRules.js","sourceRoot":"","sources":["../../src/rules/loadRules.ts"],"names":[],"mappings":"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"}
package/dist/storage.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import LRUCache from 'lru-cache';
1
+ import { LRUCache } from 'lru-cache';
2
2
  import type * as Stuntman from '@stuntman/shared';
3
- export declare const getTrafficStore: (key: string, options?: Stuntman.StorageConfig) => LRUCache<string, Stuntman.LogEntry>;
4
- export declare const getDnsResolutionCache: (key: string) => LRUCache<string, string>;
3
+ export declare const getTrafficStore: (key: string, options?: Stuntman.StorageConfig) => LRUCache<string, Stuntman.LogEntry, unknown>;
4
+ export declare const getDnsResolutionCache: (key: string) => LRUCache<string, string, unknown>;
5
5
  //# sourceMappingURL=storage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,KAAK,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAclD,eAAO,MAAM,eAAe,QAAS,MAAM,YAAY,SAAS,aAAa,wCAgB5E,CAAC;AAEF,eAAO,MAAM,qBAAqB,QAAS,MAAM,6BAKhD,CAAC"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAclD,eAAO,MAAM,eAAe,QAAS,MAAM,YAAY,SAAS,aAAa,iDAgB5E,CAAC;AAEF,eAAO,MAAM,qBAAqB,QAAS,MAAM,sCAKhD,CAAC"}
package/dist/storage.js CHANGED
@@ -1,11 +1,5 @@
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.getDnsResolutionCache = exports.getTrafficStore = void 0;
7
- const lru_cache_1 = __importDefault(require("lru-cache"));
8
- const object_sizeof_1 = __importDefault(require("object-sizeof"));
1
+ import { LRUCache } from 'lru-cache';
2
+ import sizeof from 'object-sizeof';
9
3
  const DNS_CACHE_OPTIONS = {
10
4
  max: 1000,
11
5
  ttl: 1000 * 60 * 15,
@@ -15,29 +9,27 @@ const DNS_CACHE_OPTIONS = {
15
9
  };
16
10
  const trafficStoreInstances = {};
17
11
  const dnsResolutionCacheInstances = {};
18
- const getTrafficStore = (key, options) => {
12
+ export const getTrafficStore = (key, options) => {
19
13
  if (!(key in trafficStoreInstances)) {
20
14
  if (!options) {
21
15
  throw new Error('initialize with options first');
22
16
  }
23
- trafficStoreInstances[key] = new lru_cache_1.default({
17
+ trafficStoreInstances[key] = new LRUCache({
24
18
  max: options.limitCount,
25
19
  maxSize: options.limitSize,
26
20
  ttl: options.ttl,
27
21
  allowStale: false,
28
22
  updateAgeOnGet: false,
29
23
  updateAgeOnHas: false,
30
- sizeCalculation: (value) => (0, object_sizeof_1.default)(value),
24
+ sizeCalculation: (value) => sizeof(value),
31
25
  });
32
26
  }
33
27
  return trafficStoreInstances[key];
34
28
  };
35
- exports.getTrafficStore = getTrafficStore;
36
- const getDnsResolutionCache = (key) => {
29
+ export const getDnsResolutionCache = (key) => {
37
30
  if (!(key in dnsResolutionCacheInstances)) {
38
- dnsResolutionCacheInstances[key] = new lru_cache_1.default(DNS_CACHE_OPTIONS);
31
+ dnsResolutionCacheInstances[key] = new LRUCache(DNS_CACHE_OPTIONS);
39
32
  }
40
33
  return dnsResolutionCacheInstances[key];
41
34
  };
42
- exports.getDnsResolutionCache = getDnsResolutionCache;
43
35
  //# sourceMappingURL=storage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":";;;;;;AAAA,0DAAiC;AAEjC,kEAAmC;AAEnC,MAAM,iBAAiB,GAAqC;IACxD,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE;IACnB,UAAU,EAAE,KAAK;IACjB,cAAc,EAAE,KAAK;IACrB,cAAc,EAAE,KAAK;CACxB,CAAC;AAEF,MAAM,qBAAqB,GAAwD,EAAE,CAAC;AACtF,MAAM,2BAA2B,GAA6C,EAAE,CAAC;AAE1E,MAAM,eAAe,GAAG,CAAC,GAAW,EAAE,OAAgC,EAAE,EAAE;IAC7E,IAAI,CAAC,CAAC,GAAG,IAAI,qBAAqB,CAAC,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACrD,CAAC;QACD,qBAAqB,CAAC,GAAG,CAAC,GAAG,IAAI,mBAAQ,CAA4B;YACjE,GAAG,EAAE,OAAO,CAAC,UAAU;YACvB,OAAO,EAAE,OAAO,CAAC,SAAS;YAC1B,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,UAAU,EAAE,KAAK;YACjB,cAAc,EAAE,KAAK;YACrB,cAAc,EAAE,KAAK;YACrB,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,uBAAM,EAAC,KAAK,CAAC;SAC5C,CAAC,CAAC;IACP,CAAC;IACD,OAAO,qBAAqB,CAAC,GAAG,CAAE,CAAC;AACvC,CAAC,CAAC;AAhBW,QAAA,eAAe,mBAgB1B;AAEK,MAAM,qBAAqB,GAAG,CAAC,GAAW,EAAE,EAAE;IACjD,IAAI,CAAC,CAAC,GAAG,IAAI,2BAA2B,CAAC,EAAE,CAAC;QACxC,2BAA2B,CAAC,GAAG,CAAC,GAAG,IAAI,mBAAQ,CAAiB,iBAAiB,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,2BAA2B,CAAC,GAAG,CAAE,CAAC;AAC7C,CAAC,CAAC;AALW,QAAA,qBAAqB,yBAKhC"}
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,MAAM,MAAM,eAAe,CAAC;AAEnC,MAAM,iBAAiB,GAAQ;IAC3B,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE;IACnB,UAAU,EAAE,KAAK;IACjB,cAAc,EAAE,KAAK;IACrB,cAAc,EAAE,KAAK;CACxB,CAAC;AAEF,MAAM,qBAAqB,GAAwD,EAAE,CAAC;AACtF,MAAM,2BAA2B,GAA6C,EAAE,CAAC;AAEjF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAW,EAAE,OAAgC,EAAE,EAAE;IAC7E,IAAI,CAAC,CAAC,GAAG,IAAI,qBAAqB,CAAC,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACrD,CAAC;QACD,qBAAqB,CAAC,GAAG,CAAC,GAAG,IAAI,QAAQ,CAA4B;YACjE,GAAG,EAAE,OAAO,CAAC,UAAU;YACvB,OAAO,EAAE,OAAO,CAAC,SAAS;YAC1B,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,UAAU,EAAE,KAAK;YACjB,cAAc,EAAE,KAAK;YACrB,cAAc,EAAE,KAAK;YACrB,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;SAC5C,CAAC,CAAC;IACP,CAAC;IACD,OAAO,qBAAqB,CAAC,GAAG,CAAE,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAAW,EAAE,EAAE;IACjD,IAAI,CAAC,CAAC,GAAG,IAAI,2BAA2B,CAAC,EAAE,CAAC;QACxC,2BAA2B,CAAC,GAAG,CAAC,GAAG,IAAI,QAAQ,CAAiB,iBAAiB,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,2BAA2B,CAAC,GAAG,CAAE,CAAC;AAC7C,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "@stuntman/server",
3
- "version": "0.2.4",
3
+ "version": "0.3.0",
4
4
  "description": "Stuntman - HTTP proxy / mock server with API",
5
5
  "main": "dist/index.js",
6
+ "type": "module",
6
7
  "repository": {
7
8
  "type": "git",
8
9
  "url": "https://github.com/andrzej-woof/stuntman.git"
@@ -32,31 +33,31 @@
32
33
  "author": "Andrzej Pasterczyk",
33
34
  "license": "MIT",
34
35
  "dependencies": {
35
- "@stuntman/shared": "^0.2.4",
36
- "await-lock": "2.2.2",
37
- "express": "5.0.0-beta.1",
38
- "glob": "9.2.1",
39
- "lru-cache": "7.18.3",
40
- "object-sizeof": "2.6.1",
36
+ "@stuntman/shared": "^0.3.0",
37
+ "express": "5.0.0-beta.3",
38
+ "glob": "10.3.12",
39
+ "lru-cache": "10.2.0",
40
+ "object-sizeof": "2.6.4",
41
41
  "pug": "3.0.2",
42
- "serialize-javascript": "6.0.1",
43
- "ts-import": "4.0.0-beta.10",
42
+ "serialize-javascript": "6.0.2",
43
+ "ts-import": "5.0.0-beta.0",
44
44
  "ts-jest": "^29.1.2",
45
- "undici": "5.20.0",
46
- "uuid": "9.0.0"
45
+ "undici": "6.11.1",
46
+ "uuid": "9.0.1"
47
47
  },
48
48
  "devDependencies": {
49
- "@jest-mock/express": "^2.0.1",
50
- "@jest/globals": "29.5.0",
51
- "@prettier/plugin-pug": "2.4.1",
52
- "@types/express": "4.17.17",
49
+ "@jest-mock/express": "^2.0.2",
50
+ "@jest/globals": "29.7.0",
51
+ "@prettier/plugin-pug": "3.0.0",
52
+ "@types/express": "4.17.21",
53
53
  "@types/glob": "8.1.0",
54
54
  "@types/jest": "^29.5.12",
55
- "@types/serialize-javascript": "5.0.2",
56
- "@types/uuid": "9.0.1",
55
+ "@types/serialize-javascript": "5.0.4",
56
+ "@types/uuid": "9.0.8",
57
+ "async-await-mutex-lock": "^1.0.11",
57
58
  "jest": "29.7.0",
58
- "prettier": "2.8.4",
59
- "typescript": "5.4.2"
59
+ "prettier": "3.2.5",
60
+ "typescript": "5.4.3"
60
61
  },
61
62
  "bin": {
62
63
  "stuntman": "./dist/bin/stuntman.js"
@@ -68,8 +69,13 @@
68
69
  "LICENSE",
69
70
  "CHANGELOG.md"
70
71
  ],
72
+ "overrides": {
73
+ "ts-import": {
74
+ "typescript": "5.4.3"
75
+ }
76
+ },
71
77
  "scripts": {
72
- "test": "NODE_ENV=test LOG_LEVEL=silent SUPPRESS_NO_CONFIG_WARNING=1 jest --coverage",
78
+ "test": "NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test LOG_LEVEL=silent NODE_CONFIG_STRICT_MODE= SUPPRESS_NO_CONFIG_WARNING=1 jest --coverage",
73
79
  "clean": "rm -fr dist",
74
80
  "build": "tsc && cp -rv src/api/webgui dist/api",
75
81
  "lint": "prettier --check \"./{src,test}/**/*\" && eslint \"./{src,test}/**/*\"",
package/src/api/api.ts CHANGED
@@ -7,14 +7,18 @@ import { logger, AppError, HttpCode, MAX_RULE_TTL_SECONDS, stringify, INDEX_DTS,
7
7
  import type * as Stuntman from '@stuntman/shared';
8
8
  import { RequestContext } from '../requestContext';
9
9
  import serializeJavascript from 'serialize-javascript';
10
- import LRUCache from 'lru-cache';
10
+ import { LRUCache } from 'lru-cache';
11
11
  import { validateDeserializedRule } from './validators';
12
12
  import { deserializeRule, escapedSerialize, liveRuleToRule } from './utils';
13
+ import { dirname } from 'path';
14
+ import { fileURLToPath } from 'url';
13
15
 
14
16
  type ApiOptions = Stuntman.ApiConfig & {
15
17
  mockUuid: string;
16
18
  };
17
19
 
20
+ const __dirname = dirname(fileURLToPath(import.meta.url)).replace(/\/src$/, '/dist');
21
+
18
22
  const API_KEY_HEADER = 'x-api-key';
19
23
 
20
24
  export class API {
package/src/mock.ts CHANGED
@@ -10,7 +10,7 @@ import { RawHeaders, logger, HttpCode, naiveGQLParser, escapeStringRegexp, error
10
10
  import { RequestContext } from './requestContext';
11
11
  import type * as Stuntman from '@stuntman/shared';
12
12
  import { IPUtils } from './ipUtils';
13
- import LRUCache from 'lru-cache';
13
+ import { LRUCache } from 'lru-cache';
14
14
  import { API } from './api/api';
15
15
 
16
16
  // TODO add proper web proxy mode