@mocktomata/io-remote 8.0.5 → 9.0.1

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 (101) hide show
  1. package/cjs/errors.d.ts +1 -5
  2. package/cjs/errors.d.ts.map +1 -1
  3. package/cjs/errors.js +3 -11
  4. package/cjs/errors.js.map +1 -1
  5. package/cjs/index.d.ts +1 -2
  6. package/cjs/index.d.ts.map +1 -1
  7. package/cjs/index.js +1 -2
  8. package/cjs/index.js.map +1 -1
  9. package/cjs/io.d.ts +4 -0
  10. package/cjs/io.d.ts.map +1 -0
  11. package/cjs/io.internal.d.ts +8 -0
  12. package/cjs/io.internal.d.ts.map +1 -0
  13. package/cjs/{create_io.internal.js → io.internal.js} +5 -3
  14. package/cjs/io.internal.js.map +1 -0
  15. package/cjs/{create_io.js → io.js} +3 -3
  16. package/cjs/io.js.map +1 -0
  17. package/{esm/create_io.mock.d.ts → cjs/io.mock.d.ts} +5 -1
  18. package/cjs/io.mock.d.ts.map +1 -0
  19. package/cjs/{create_io.mock.js → io.mock.js} +37 -6
  20. package/cjs/io.mock.js.map +1 -0
  21. package/cjs/{types.d.ts → io.types.d.ts} +2 -2
  22. package/cjs/io.types.d.ts.map +1 -0
  23. package/cjs/{types.js → io.types.js} +1 -1
  24. package/cjs/io.types.js.map +1 -0
  25. package/cjs/server_info.d.ts +3 -9
  26. package/cjs/server_info.d.ts.map +1 -1
  27. package/cjs/server_info.js +4 -29
  28. package/cjs/server_info.js.map +1 -1
  29. package/cjs/url.js +1 -1
  30. package/cjs/url.js.map +1 -1
  31. package/esm/errors.d.ts +1 -5
  32. package/esm/errors.d.ts.map +1 -1
  33. package/esm/errors.js +1 -8
  34. package/esm/errors.js.map +1 -1
  35. package/esm/index.d.ts +1 -2
  36. package/esm/index.d.ts.map +1 -1
  37. package/esm/index.js +1 -2
  38. package/esm/index.js.map +1 -1
  39. package/esm/io.d.ts +4 -0
  40. package/esm/io.d.ts.map +1 -0
  41. package/esm/io.internal.d.ts +8 -0
  42. package/esm/io.internal.d.ts.map +1 -0
  43. package/esm/{create_io.internal.js → io.internal.js} +5 -3
  44. package/esm/io.internal.js.map +1 -0
  45. package/esm/io.js +8 -0
  46. package/esm/io.js.map +1 -0
  47. package/{cjs/create_io.mock.d.ts → esm/io.mock.d.ts} +5 -1
  48. package/esm/io.mock.d.ts.map +1 -0
  49. package/esm/{create_io.mock.js → io.mock.js} +35 -5
  50. package/esm/io.mock.js.map +1 -0
  51. package/esm/{types.d.ts → io.types.d.ts} +2 -2
  52. package/esm/io.types.d.ts.map +1 -0
  53. package/esm/io.types.js +2 -0
  54. package/esm/io.types.js.map +1 -0
  55. package/esm/server_info.d.ts +3 -9
  56. package/esm/server_info.d.ts.map +1 -1
  57. package/esm/server_info.js +3 -28
  58. package/esm/server_info.js.map +1 -1
  59. package/esm/url.js +1 -1
  60. package/esm/url.js.map +1 -1
  61. package/package.json +7 -3
  62. package/ts/errors.ts +1 -8
  63. package/ts/index.ts +1 -2
  64. package/ts/{create_io.internal.ts → io.internal.ts} +11 -5
  65. package/ts/{create_io.mock.ts → io.mock.ts} +38 -5
  66. package/ts/io.ts +10 -0
  67. package/ts/{types.ts → io.types.ts} +1 -1
  68. package/ts/server_info.ts +7 -45
  69. package/ts/url.ts +1 -1
  70. package/cjs/create_io.d.ts +0 -4
  71. package/cjs/create_io.d.ts.map +0 -1
  72. package/cjs/create_io.internal.d.ts +0 -5
  73. package/cjs/create_io.internal.d.ts.map +0 -1
  74. package/cjs/create_io.internal.js.map +0 -1
  75. package/cjs/create_io.js.map +0 -1
  76. package/cjs/create_io.mock.d.ts.map +0 -1
  77. package/cjs/create_io.mock.js.map +0 -1
  78. package/cjs/types.d.ts.map +0 -1
  79. package/cjs/types.internal.d.ts +0 -9
  80. package/cjs/types.internal.d.ts.map +0 -1
  81. package/cjs/types.internal.js +0 -3
  82. package/cjs/types.internal.js.map +0 -1
  83. package/cjs/types.js.map +0 -1
  84. package/esm/create_io.d.ts +0 -4
  85. package/esm/create_io.d.ts.map +0 -1
  86. package/esm/create_io.internal.d.ts +0 -5
  87. package/esm/create_io.internal.d.ts.map +0 -1
  88. package/esm/create_io.internal.js.map +0 -1
  89. package/esm/create_io.js +0 -8
  90. package/esm/create_io.js.map +0 -1
  91. package/esm/create_io.mock.d.ts.map +0 -1
  92. package/esm/create_io.mock.js.map +0 -1
  93. package/esm/types.d.ts.map +0 -1
  94. package/esm/types.internal.d.ts +0 -9
  95. package/esm/types.internal.d.ts.map +0 -1
  96. package/esm/types.internal.js +0 -2
  97. package/esm/types.internal.js.map +0 -1
  98. package/esm/types.js +0 -2
  99. package/esm/types.js.map +0 -1
  100. package/ts/create_io.ts +0 -10
  101. package/ts/types.internal.ts +0 -8
package/cjs/errors.d.ts CHANGED
@@ -1,11 +1,7 @@
1
1
  import { MocktomataError } from '@mocktomata/framework';
2
2
  import { ModuleError } from 'iso-error';
3
- export declare class ServerNotAvailable extends MocktomataError {
3
+ export declare class ServiceNotAvailable extends MocktomataError {
4
4
  url: string;
5
5
  constructor(url: string, options?: ModuleError.Options);
6
6
  }
7
- export declare class ServerNotAvailableAtPortRange extends MocktomataError {
8
- url: string;
9
- constructor(url: string, start: number, end: number, options?: ModuleError.Options);
10
- }
11
7
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../ts/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,qBAAa,kBAAmB,SAAQ,eAAe;IACnC,GAAG,EAAE,MAAM;gBAAX,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,OAAO;CAG7D;AAGD,qBAAa,6BAA8B,SAAQ,eAAe;IAC9C,GAAG,EAAE,MAAM;gBAAX,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,OAAO;CAGzF"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../ts/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,qBAAa,mBAAoB,SAAQ,eAAe;IACpC,GAAG,EAAE,MAAM;gBAAX,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,OAAO;CAG7D"}
package/cjs/errors.js CHANGED
@@ -1,20 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ServerNotAvailableAtPortRange = exports.ServerNotAvailable = void 0;
3
+ exports.ServiceNotAvailable = void 0;
4
4
  const framework_1 = require("@mocktomata/framework");
5
- class ServerNotAvailable extends framework_1.MocktomataError {
5
+ class ServiceNotAvailable extends framework_1.MocktomataError {
6
6
  constructor(url, options) {
7
7
  super(`Unable to connect to server at ${url}`, options);
8
8
  this.url = url;
9
9
  }
10
10
  }
11
- exports.ServerNotAvailable = ServerNotAvailable;
12
- // istanbul ignore next
13
- class ServerNotAvailableAtPortRange extends framework_1.MocktomataError {
14
- constructor(url, start, end, options) {
15
- super(`Unable to find mocktomata server at ${url} between port ${start} and ${end}`, options);
16
- this.url = url;
17
- }
18
- }
19
- exports.ServerNotAvailableAtPortRange = ServerNotAvailableAtPortRange;
11
+ exports.ServiceNotAvailable = ServiceNotAvailable;
20
12
  //# sourceMappingURL=errors.js.map
package/cjs/errors.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../ts/errors.ts"],"names":[],"mappings":";;;AAAA,qDAAuD;AAEvD,MAAa,kBAAmB,SAAQ,2BAAe;IACtD,YAAmB,GAAW,EAAE,OAA6B;QAC5D,KAAK,CAAC,kCAAkC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAA;QADrC,QAAG,GAAH,GAAG,CAAQ;IAE9B,CAAC;CACD;AAJD,gDAIC;AAED,uBAAuB;AACvB,MAAa,6BAA8B,SAAQ,2BAAe;IACjE,YAAmB,GAAW,EAAE,KAAa,EAAE,GAAW,EAAE,OAA6B;QACxF,KAAK,CAAC,uCAAuC,GAAG,iBAAiB,KAAK,QAAQ,GAAG,EAAE,EAAE,OAAO,CAAC,CAAA;QAD3E,QAAG,GAAH,GAAG,CAAQ;IAE9B,CAAC;CACD;AAJD,sEAIC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../ts/errors.ts"],"names":[],"mappings":";;;AAAA,qDAAuD;AAEvD,MAAa,mBAAoB,SAAQ,2BAAe;IACvD,YAAmB,GAAW,EAAE,OAA6B;QAC5D,KAAK,CAAC,kCAAkC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAA;QADrC,QAAG,GAAH,GAAG,CAAQ;IAE9B,CAAC;CACD;AAJD,kDAIC"}
package/cjs/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- export * from './create_io.js';
1
+ export * from './io.js';
2
2
  export * from './errors.js';
3
- export * from './types.js';
4
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA"}
package/cjs/index.js CHANGED
@@ -14,7 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./create_io.js"), exports);
17
+ __exportStar(require("./io.js"), exports);
18
18
  __exportStar(require("./errors.js"), exports);
19
- __exportStar(require("./types.js"), exports);
20
19
  //# sourceMappingURL=index.js.map
package/cjs/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA8B;AAC9B,8CAA2B;AAC3B,6CAA0B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAuB;AACvB,8CAA2B"}
package/cjs/io.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ import type { Mocktomata } from '@mocktomata/framework';
2
+ import type { IOOptions } from './io.types.js';
3
+ export declare function createIO(options: IOOptions): Promise<Mocktomata.IO>;
4
+ //# sourceMappingURL=io.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io.d.ts","sourceRoot":"","sources":["../ts/io.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAGvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAG9C,wBAAsB,QAAQ,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAGzE"}
@@ -0,0 +1,8 @@
1
+ import { type Mocktomata, type SpecPlugin } from '@mocktomata/framework';
2
+ import { IOOptions } from './io.types.js';
3
+ export type Context = {
4
+ fetch: (url: RequestInfo, init?: RequestInit) => Promise<Response>;
5
+ importModule(moduleSpecifier: string): Promise<SpecPlugin.Module>;
6
+ };
7
+ export declare function createIOInternal(ctx: Context, options: IOOptions): Promise<Mocktomata.IO>;
8
+ //# sourceMappingURL=io.internal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io.internal.d.ts","sourceRoot":"","sources":["../ts/io.internal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,UAAU,EAAE,KAAK,UAAU,EAAmB,MAAM,uBAAuB,CAAA;AAC7G,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAIzC,MAAM,MAAM,OAAO,GAAG;IACrB,KAAK,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;IAClE,YAAY,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;CACjE,CAAA;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAkC/F"}
@@ -2,12 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createIOInternal = void 0;
4
4
  const framework_1 = require("@mocktomata/framework");
5
- const url_js_1 = require("./url.js");
6
5
  const server_info_js_1 = require("./server_info.js");
6
+ const url_js_1 = require("./url.js");
7
7
  async function createIOInternal(ctx, options) {
8
- const info = await (0, server_info_js_1.getServerInfo)(ctx, options);
9
8
  return {
10
9
  async loadConfig() {
10
+ const info = await (0, server_info_js_1.getServerInfo)(ctx, options);
11
11
  // @TODO add browser config?
12
12
  const url = (0, url_js_1.buildUrl)(info.url, `config`);
13
13
  const response = await ctx.fetch(url);
@@ -17,6 +17,7 @@ async function createIOInternal(ctx, options) {
17
17
  return ctx.importModule(name);
18
18
  },
19
19
  async readSpec(specName, specRelativePath) {
20
+ const info = await (0, server_info_js_1.getServerInfo)(ctx, options);
20
21
  const id = btoa(framework_1.json.stringify({ specName, specRelativePath }));
21
22
  const response = await ctx.fetch((0, url_js_1.buildUrl)(info.url, `specs/${id}`));
22
23
  if (response.status === 404) {
@@ -25,6 +26,7 @@ async function createIOInternal(ctx, options) {
25
26
  return response.json();
26
27
  },
27
28
  async writeSpec(specName, specRelativePath, record) {
29
+ const info = await (0, server_info_js_1.getServerInfo)(ctx, options);
28
30
  const id = btoa(framework_1.json.stringify({ specName, specRelativePath }));
29
31
  const response = await ctx.fetch((0, url_js_1.buildUrl)(info.url, `specs/${id}`), {
30
32
  method: 'POST',
@@ -38,4 +40,4 @@ async function createIOInternal(ctx, options) {
38
40
  };
39
41
  }
40
42
  exports.createIOInternal = createIOInternal;
41
- //# sourceMappingURL=create_io.internal.js.map
43
+ //# sourceMappingURL=io.internal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io.internal.js","sourceRoot":"","sources":["../ts/io.internal.ts"],"names":[],"mappings":";;;AAAA,qDAA6G;AAE7G,qDAAgD;AAChD,qCAAmC;AAO5B,KAAK,UAAU,gBAAgB,CAAC,GAAY,EAAE,OAAkB;IACtE,OAAO;QACN,KAAK,CAAC,UAAU;YACf,MAAM,IAAI,GAAG,MAAM,IAAA,8BAAa,EAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAC9C,4BAA4B;YAC5B,MAAM,GAAG,GAAG,IAAA,iBAAQ,EAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;YACxC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACrC,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAA;QACvB,CAAC;QACD,KAAK,CAAC,UAAU,CAAC,IAAY;YAC5B,OAAO,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QAC9B,CAAC;QACD,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,gBAAwB;YACxD,MAAM,IAAI,GAAG,MAAM,IAAA,8BAAa,EAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAC9C,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAA;YAC/D,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,IAAA,iBAAQ,EAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,CAAA;YACnE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;gBAC5B,MAAM,IAAI,wBAAY,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAA;aAC5C;YACD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAA;QACvB,CAAC;QACD,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM;YACjD,MAAM,IAAI,GAAG,MAAM,IAAA,8BAAa,EAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAC9C,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAA;YAC/D,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,IAAA,iBAAQ,EAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE;gBACnE,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,gBAAI,CAAC,SAAS,CAAC,MAAM,CAAC;aAC5B,CAAC,CAAA;YACF,uBAAuB;YACvB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;gBACjB,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;aAC/D;QACF,CAAC;KACD,CAAA;AACF,CAAC;AAlCD,4CAkCC"}
@@ -5,11 +5,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.createIO = void 0;
7
7
  const cross_fetch_1 = __importDefault(require("cross-fetch"));
8
- const create_io_internal_js_1 = require("./create_io.internal.js");
8
+ const io_internal_js_1 = require("./io.internal.js");
9
9
  const platform_js_1 = require("./platform.js");
10
10
  async function createIO(options) {
11
11
  // istanbul ignore next
12
- return (0, create_io_internal_js_1.createIOInternal)({ fetch: cross_fetch_1.default, location, importModule: platform_js_1.importModule }, options);
12
+ return (0, io_internal_js_1.createIOInternal)({ fetch: cross_fetch_1.default, importModule: platform_js_1.importModule }, options);
13
13
  }
14
14
  exports.createIO = createIO;
15
- //# sourceMappingURL=create_io.js.map
15
+ //# sourceMappingURL=io.js.map
package/cjs/io.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io.js","sourceRoot":"","sources":["../ts/io.ts"],"names":[],"mappings":";;;;;;AACA,8DAA+B;AAC/B,qDAAmD;AAEnD,+CAA4C;AAErC,KAAK,UAAU,QAAQ,CAAC,OAAkB;IAChD,uBAAuB;IACvB,OAAO,IAAA,iCAAgB,EAAC,EAAE,KAAK,EAAL,qBAAK,EAAE,YAAY,EAAZ,0BAAY,EAAE,EAAE,OAAO,CAAC,CAAA;AAC1D,CAAC;AAHD,4BAGC"}
@@ -1,5 +1,9 @@
1
+ import type { Context } from './io.internal.js';
2
+ export declare function newMemoryContext({ url }?: {
3
+ url: string;
4
+ }): Context;
1
5
  export declare function createFakeServerFetch(): ((url: RequestInfo, init?: RequestInit) => Promise<Response>) & {
2
6
  specs: Record<string, any>;
3
7
  scenarios: Record<string, any>;
4
8
  };
5
- //# sourceMappingURL=create_io.mock.d.ts.map
9
+ //# sourceMappingURL=io.mock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io.mock.d.ts","sourceRoot":"","sources":["../ts/io.mock.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAG/C,wBAAgB,gBAAgB,CAAC,EAAE,GAAG,EAAE;;CAAmC,GAAG,OAAO,CA6BpF;AAED,wBAAgB,qBAAqB,WAUvB,WAAW,SAAS,WAAW;;;EAqC5C"}
@@ -23,9 +23,40 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.createFakeServerFetch = void 0;
26
+ exports.createFakeServerFetch = exports.newMemoryContext = void 0;
27
27
  const framework_1 = require("@mocktomata/framework");
28
28
  const f = __importStar(require("cross-fetch"));
29
+ function newMemoryContext({ url } = { url: 'http://localhost:3789' }) {
30
+ const store = {
31
+ info: {
32
+ name: 'mocktomata',
33
+ version: '8.0.4',
34
+ url
35
+ },
36
+ config: {
37
+ ecmaVersion: 'es2015',
38
+ plugins: []
39
+ },
40
+ modules: {}
41
+ };
42
+ const urlBase = store.info.url;
43
+ return {
44
+ async fetch(url) {
45
+ switch (true) {
46
+ case url === `${urlBase}/api/info`:
47
+ return new Response(JSON.stringify(store.info));
48
+ case url === `${urlBase}/api/config`:
49
+ return new Response(JSON.stringify(store.config));
50
+ default:
51
+ throw new Error(`not supported: ${url}`);
52
+ }
53
+ },
54
+ async importModule(moduleSpecifier) {
55
+ return store.modules[moduleSpecifier];
56
+ }
57
+ };
58
+ }
59
+ exports.newMemoryContext = newMemoryContext;
29
60
  function createFakeServerFetch() {
30
61
  const specs = {
31
62
  exist: { actions: [] }
@@ -35,20 +66,20 @@ function createFakeServerFetch() {
35
66
  };
36
67
  return Object.assign(async (url, init) => {
37
68
  const uri = extractUri(url);
38
- if (uri === 'mocktomata/info') {
69
+ if (uri === 'api/info') {
39
70
  return new f.Response(framework_1.json.stringify({
40
71
  url: 'http://localhost:3999',
41
72
  version: '1.0'
42
73
  }));
43
74
  }
44
- else if (uri === 'mocktomata/config') {
75
+ else if (uri === 'api/config') {
45
76
  return new f.Response(framework_1.json.stringify({
46
77
  plugins: ['@mocktomata/plugin-fixture-dummy']
47
78
  }));
48
79
  // istanbul ignore next
49
80
  }
50
- else if (uri.startsWith('mocktomata/specs/')) {
51
- const id = /mocktomata\/specs\/(.*)/.exec(uri)[1];
81
+ else if (uri.startsWith('api/specs/')) {
82
+ const id = /api\/specs\/(.*)/.exec(uri)[1];
52
83
  const { specName } = framework_1.json.parse(atob(id));
53
84
  if (init && init.method === 'POST') {
54
85
  specs[specName] = framework_1.json.parse(init.body);
@@ -78,4 +109,4 @@ function extractUri(url) {
78
109
  throw match;
79
110
  return match[1];
80
111
  }
81
- //# sourceMappingURL=create_io.mock.js.map
112
+ //# sourceMappingURL=io.mock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io.mock.js","sourceRoot":"","sources":["../ts/io.mock.ts"],"names":[],"mappings":"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"}
@@ -5,5 +5,5 @@ export type ServiceOptions = {
5
5
  */
6
6
  url: string;
7
7
  };
8
- export type CreateIOOptions = ServiceOptions & Log.Context;
9
- //# sourceMappingURL=types.d.ts.map
8
+ export type IOOptions = ServiceOptions & Log.Context;
9
+ //# sourceMappingURL=io.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io.types.d.ts","sourceRoot":"","sources":["../ts/io.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAA;AAEhD,MAAM,MAAM,cAAc,GAAG;IAC5B;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;CACX,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,GAAG,CAAC,OAAO,CAAA"}
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
3
+ //# sourceMappingURL=io.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io.types.js","sourceRoot":"","sources":["../ts/io.types.ts"],"names":[],"mappings":""}
@@ -1,16 +1,10 @@
1
- import type { ServiceOptions } from './types.js';
1
+ import { Context } from './io.internal.js';
2
+ import type { ServiceOptions } from './io.types.js';
2
3
  export type ServerInfo = {
3
4
  name: string;
4
5
  version: string;
5
6
  url: string;
6
7
  plugins?: string[];
7
8
  };
8
- export type Context = {
9
- fetch: (url: RequestInfo, init?: RequestInit) => Promise<Response>;
10
- location: {
11
- protocol: string;
12
- hostname: string;
13
- };
14
- };
15
- export declare function getServerInfo(context: Context, options?: ServiceOptions): Promise<ServerInfo>;
9
+ export declare function getServerInfo({ fetch }: Pick<Context, 'fetch'>, { url }: ServiceOptions): Promise<ServerInfo>;
16
10
  //# sourceMappingURL=server_info.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server_info.d.ts","sourceRoot":"","sources":["../ts/server_info.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhD,MAAM,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IAEX,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,OAAO,GAAG;IACrB,KAAK,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;IAClE,QAAQ,EAAE;QACT,QAAQ,EAAE,MAAM,CAAA;QAChB,QAAQ,EAAE,MAAM,CAAA;KAChB,CAAA;CACD,CAAA;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,CAEnG"}
1
+ {"version":3,"file":"server_info.d.ts","sourceRoot":"","sources":["../ts/server_info.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAGnD,MAAM,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IAEX,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CAClB,CAAA;AAED,wBAAsB,aAAa,CAClC,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EACjC,EAAE,GAAG,EAAE,EAAE,cAAc,GACrB,OAAO,CAAC,UAAU,CAAC,CAOrB"}
@@ -1,41 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getServerInfo = void 0;
4
- const url_js_1 = require("./url.js");
5
4
  const errors_js_1 = require("./errors.js");
6
- async function getServerInfo(context, options) {
7
- return options ? tryGetServerInfo(context, options.url) : lookupServerInfo(context);
8
- }
9
- exports.getServerInfo = getServerInfo;
10
- async function lookupServerInfo(context) {
11
- const { location } = context;
12
- const url = `${location.protocol}//${location.hostname}`;
13
- if (location.hostname === 'localhost') {
14
- return tryGetServerInfoAtPort(context, url, 3698, 3698, 3708);
15
- }
16
- else {
17
- return tryGetServerInfo(context, url);
18
- }
19
- }
20
- async function tryGetServerInfoAtPort(context, urlBase, port, start, end) {
21
- if (port >= end) {
22
- throw new errors_js_1.ServerNotAvailableAtPortRange(urlBase, start, end);
23
- }
24
- const url = `${urlBase}:${port}`;
25
- try {
26
- return await tryGetServerInfo(context, url);
27
- }
28
- catch (e) {
29
- return tryGetServerInfoAtPort(context, urlBase, port + 1, start, end);
30
- }
31
- }
32
- async function tryGetServerInfo({ fetch }, url) {
5
+ const url_js_1 = require("./url.js");
6
+ async function getServerInfo({ fetch }, { url }) {
33
7
  try {
34
8
  const response = await fetch((0, url_js_1.buildUrl)(url, 'info'));
35
9
  return response.json();
36
10
  }
37
11
  catch (e) {
38
- throw e.code === 'ECONNREFUSED' ? new errors_js_1.ServerNotAvailable(url) : e;
12
+ throw e.code === 'ECONNREFUSED' ? new errors_js_1.ServiceNotAvailable(url) : e;
39
13
  }
40
14
  }
15
+ exports.getServerInfo = getServerInfo;
41
16
  //# sourceMappingURL=server_info.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server_info.js","sourceRoot":"","sources":["../ts/server_info.ts"],"names":[],"mappings":";;;AAAA,qCAAmC;AACnC,2CAA+E;AAmBxE,KAAK,UAAU,aAAa,CAAC,OAAgB,EAAE,OAAwB;IAC7E,OAAO,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;AACpF,CAAC;AAFD,sCAEC;AAED,KAAK,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;IAC5B,MAAM,GAAG,GAAG,GAAG,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ,EAAE,CAAA;IACxD,IAAI,QAAQ,CAAC,QAAQ,KAAK,WAAW,EAAE;QACtC,OAAO,sBAAsB,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;KAC7D;SAAM;QACN,OAAO,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;KACrC;AACF,CAAC;AAED,KAAK,UAAU,sBAAsB,CACpC,OAAgB,EAChB,OAAe,EACf,IAAY,EACZ,KAAa,EACb,GAAW;IAEX,IAAI,IAAI,IAAI,GAAG,EAAE;QAChB,MAAM,IAAI,yCAA6B,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;KAC5D;IAED,MAAM,GAAG,GAAG,GAAG,OAAO,IAAI,IAAI,EAAE,CAAA;IAEhC,IAAI;QACH,OAAO,MAAM,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;KAC3C;IAAC,OAAO,CAAM,EAAE;QAChB,OAAO,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;KACrE;AACF,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,EAAE,KAAK,EAAW,EAAE,GAAW;IAC9D,IAAI;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAA,iBAAQ,EAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAA;QACnD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAA;KACtB;IAAC,OAAO,CAAM,EAAE;QAChB,MAAM,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,IAAI,8BAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KACjE;AACF,CAAC"}
1
+ {"version":3,"file":"server_info.js","sourceRoot":"","sources":["../ts/server_info.ts"],"names":[],"mappings":";;;AAAA,2CAAiD;AAGjD,qCAAmC;AAU5B,KAAK,UAAU,aAAa,CAClC,EAAE,KAAK,EAA0B,EACjC,EAAE,GAAG,EAAkB;IAEvB,IAAI;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAA,iBAAQ,EAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAA;QACnD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAA;KACtB;IAAC,OAAO,CAAM,EAAE;QAChB,MAAM,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,IAAI,+BAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAClE;AACF,CAAC;AAVD,sCAUC"}
package/cjs/url.js CHANGED
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.buildUrl = void 0;
4
4
  function buildUrl(urlBase, path) {
5
- return `${urlBase}/mocktomata/${path}`;
5
+ return `${urlBase}/api/${path}`;
6
6
  }
7
7
  exports.buildUrl = buildUrl;
8
8
  //# sourceMappingURL=url.js.map
package/cjs/url.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"url.js","sourceRoot":"","sources":["../ts/url.ts"],"names":[],"mappings":";;;AAAA,SAAgB,QAAQ,CAAC,OAAe,EAAE,IAAY;IACrD,OAAO,GAAG,OAAO,eAAe,IAAI,EAAE,CAAA;AACvC,CAAC;AAFD,4BAEC"}
1
+ {"version":3,"file":"url.js","sourceRoot":"","sources":["../ts/url.ts"],"names":[],"mappings":";;;AAAA,SAAgB,QAAQ,CAAC,OAAe,EAAE,IAAY;IACrD,OAAO,GAAG,OAAO,QAAQ,IAAI,EAAE,CAAA;AAChC,CAAC;AAFD,4BAEC"}
package/esm/errors.d.ts CHANGED
@@ -1,11 +1,7 @@
1
1
  import { MocktomataError } from '@mocktomata/framework';
2
2
  import { ModuleError } from 'iso-error';
3
- export declare class ServerNotAvailable extends MocktomataError {
3
+ export declare class ServiceNotAvailable extends MocktomataError {
4
4
  url: string;
5
5
  constructor(url: string, options?: ModuleError.Options);
6
6
  }
7
- export declare class ServerNotAvailableAtPortRange extends MocktomataError {
8
- url: string;
9
- constructor(url: string, start: number, end: number, options?: ModuleError.Options);
10
- }
11
7
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../ts/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,qBAAa,kBAAmB,SAAQ,eAAe;IACnC,GAAG,EAAE,MAAM;gBAAX,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,OAAO;CAG7D;AAGD,qBAAa,6BAA8B,SAAQ,eAAe;IAC9C,GAAG,EAAE,MAAM;gBAAX,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,OAAO;CAGzF"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../ts/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,qBAAa,mBAAoB,SAAQ,eAAe;IACpC,GAAG,EAAE,MAAM;gBAAX,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,OAAO;CAG7D"}
package/esm/errors.js CHANGED
@@ -1,15 +1,8 @@
1
1
  import { MocktomataError } from '@mocktomata/framework';
2
- export class ServerNotAvailable extends MocktomataError {
2
+ export class ServiceNotAvailable extends MocktomataError {
3
3
  constructor(url, options) {
4
4
  super(`Unable to connect to server at ${url}`, options);
5
5
  this.url = url;
6
6
  }
7
7
  }
8
- // istanbul ignore next
9
- export class ServerNotAvailableAtPortRange extends MocktomataError {
10
- constructor(url, start, end, options) {
11
- super(`Unable to find mocktomata server at ${url} between port ${start} and ${end}`, options);
12
- this.url = url;
13
- }
14
- }
15
8
  //# sourceMappingURL=errors.js.map
package/esm/errors.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../ts/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,MAAM,OAAO,kBAAmB,SAAQ,eAAe;IACtD,YAAmB,GAAW,EAAE,OAA6B;QAC5D,KAAK,CAAC,kCAAkC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAA;QADrC,QAAG,GAAH,GAAG,CAAQ;IAE9B,CAAC;CACD;AAED,uBAAuB;AACvB,MAAM,OAAO,6BAA8B,SAAQ,eAAe;IACjE,YAAmB,GAAW,EAAE,KAAa,EAAE,GAAW,EAAE,OAA6B;QACxF,KAAK,CAAC,uCAAuC,GAAG,iBAAiB,KAAK,QAAQ,GAAG,EAAE,EAAE,OAAO,CAAC,CAAA;QAD3E,QAAG,GAAH,GAAG,CAAQ;IAE9B,CAAC;CACD"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../ts/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,MAAM,OAAO,mBAAoB,SAAQ,eAAe;IACvD,YAAmB,GAAW,EAAE,OAA6B;QAC5D,KAAK,CAAC,kCAAkC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAA;QADrC,QAAG,GAAH,GAAG,CAAQ;IAE9B,CAAC;CACD"}
package/esm/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- export * from './create_io.js';
1
+ export * from './io.js';
2
2
  export * from './errors.js';
3
- export * from './types.js';
4
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA"}
package/esm/index.js CHANGED
@@ -1,4 +1,3 @@
1
- export * from './create_io.js';
1
+ export * from './io.js';
2
2
  export * from './errors.js';
3
- export * from './types.js';
4
3
  //# sourceMappingURL=index.js.map
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA"}
package/esm/io.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ import type { Mocktomata } from '@mocktomata/framework';
2
+ import type { IOOptions } from './io.types.js';
3
+ export declare function createIO(options: IOOptions): Promise<Mocktomata.IO>;
4
+ //# sourceMappingURL=io.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io.d.ts","sourceRoot":"","sources":["../ts/io.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAGvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAG9C,wBAAsB,QAAQ,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAGzE"}
@@ -0,0 +1,8 @@
1
+ import { type Mocktomata, type SpecPlugin } from '@mocktomata/framework';
2
+ import { IOOptions } from './io.types.js';
3
+ export type Context = {
4
+ fetch: (url: RequestInfo, init?: RequestInit) => Promise<Response>;
5
+ importModule(moduleSpecifier: string): Promise<SpecPlugin.Module>;
6
+ };
7
+ export declare function createIOInternal(ctx: Context, options: IOOptions): Promise<Mocktomata.IO>;
8
+ //# sourceMappingURL=io.internal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io.internal.d.ts","sourceRoot":"","sources":["../ts/io.internal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,UAAU,EAAE,KAAK,UAAU,EAAmB,MAAM,uBAAuB,CAAA;AAC7G,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAIzC,MAAM,MAAM,OAAO,GAAG;IACrB,KAAK,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;IAClE,YAAY,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;CACjE,CAAA;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAkC/F"}
@@ -1,10 +1,10 @@
1
1
  import { json, SpecNotFound } from '@mocktomata/framework';
2
- import { buildUrl } from './url.js';
3
2
  import { getServerInfo } from './server_info.js';
3
+ import { buildUrl } from './url.js';
4
4
  export async function createIOInternal(ctx, options) {
5
- const info = await getServerInfo(ctx, options);
6
5
  return {
7
6
  async loadConfig() {
7
+ const info = await getServerInfo(ctx, options);
8
8
  // @TODO add browser config?
9
9
  const url = buildUrl(info.url, `config`);
10
10
  const response = await ctx.fetch(url);
@@ -14,6 +14,7 @@ export async function createIOInternal(ctx, options) {
14
14
  return ctx.importModule(name);
15
15
  },
16
16
  async readSpec(specName, specRelativePath) {
17
+ const info = await getServerInfo(ctx, options);
17
18
  const id = btoa(json.stringify({ specName, specRelativePath }));
18
19
  const response = await ctx.fetch(buildUrl(info.url, `specs/${id}`));
19
20
  if (response.status === 404) {
@@ -22,6 +23,7 @@ export async function createIOInternal(ctx, options) {
22
23
  return response.json();
23
24
  },
24
25
  async writeSpec(specName, specRelativePath, record) {
26
+ const info = await getServerInfo(ctx, options);
25
27
  const id = btoa(json.stringify({ specName, specRelativePath }));
26
28
  const response = await ctx.fetch(buildUrl(info.url, `specs/${id}`), {
27
29
  method: 'POST',
@@ -34,4 +36,4 @@ export async function createIOInternal(ctx, options) {
34
36
  }
35
37
  };
36
38
  }
37
- //# sourceMappingURL=create_io.internal.js.map
39
+ //# sourceMappingURL=io.internal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io.internal.js","sourceRoot":"","sources":["../ts/io.internal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,YAAY,EAAqD,MAAM,uBAAuB,CAAA;AAE7G,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAOnC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAY,EAAE,OAAkB;IACtE,OAAO;QACN,KAAK,CAAC,UAAU;YACf,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAC9C,4BAA4B;YAC5B,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;YACxC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACrC,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAA;QACvB,CAAC;QACD,KAAK,CAAC,UAAU,CAAC,IAAY;YAC5B,OAAO,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QAC9B,CAAC;QACD,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,gBAAwB;YACxD,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAC9C,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAA;YAC/D,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,CAAA;YACnE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;gBAC5B,MAAM,IAAI,YAAY,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAA;aAC5C;YACD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAA;QACvB,CAAC;QACD,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM;YACjD,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAC9C,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAA;YAC/D,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE;gBACnE,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;aAC5B,CAAC,CAAA;YACF,uBAAuB;YACvB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;gBACjB,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;aAC/D;QACF,CAAC;KACD,CAAA;AACF,CAAC"}
package/esm/io.js ADDED
@@ -0,0 +1,8 @@
1
+ import fetch from 'cross-fetch';
2
+ import { createIOInternal } from './io.internal.js';
3
+ import { importModule } from './platform.js';
4
+ export async function createIO(options) {
5
+ // istanbul ignore next
6
+ return createIOInternal({ fetch, importModule }, options);
7
+ }
8
+ //# sourceMappingURL=io.js.map
package/esm/io.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io.js","sourceRoot":"","sources":["../ts/io.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,aAAa,CAAA;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAkB;IAChD,uBAAuB;IACvB,OAAO,gBAAgB,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,OAAO,CAAC,CAAA;AAC1D,CAAC"}
@@ -1,5 +1,9 @@
1
+ import type { Context } from './io.internal.js';
2
+ export declare function newMemoryContext({ url }?: {
3
+ url: string;
4
+ }): Context;
1
5
  export declare function createFakeServerFetch(): ((url: RequestInfo, init?: RequestInit) => Promise<Response>) & {
2
6
  specs: Record<string, any>;
3
7
  scenarios: Record<string, any>;
4
8
  };
5
- //# sourceMappingURL=create_io.mock.d.ts.map
9
+ //# sourceMappingURL=io.mock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io.mock.d.ts","sourceRoot":"","sources":["../ts/io.mock.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAG/C,wBAAgB,gBAAgB,CAAC,EAAE,GAAG,EAAE;;CAAmC,GAAG,OAAO,CA6BpF;AAED,wBAAgB,qBAAqB,WAUvB,WAAW,SAAS,WAAW;;;EAqC5C"}
@@ -1,5 +1,35 @@
1
1
  import { json } from '@mocktomata/framework';
2
2
  import * as f from 'cross-fetch';
3
+ export function newMemoryContext({ url } = { url: 'http://localhost:3789' }) {
4
+ const store = {
5
+ info: {
6
+ name: 'mocktomata',
7
+ version: '8.0.4',
8
+ url
9
+ },
10
+ config: {
11
+ ecmaVersion: 'es2015',
12
+ plugins: []
13
+ },
14
+ modules: {}
15
+ };
16
+ const urlBase = store.info.url;
17
+ return {
18
+ async fetch(url) {
19
+ switch (true) {
20
+ case url === `${urlBase}/api/info`:
21
+ return new Response(JSON.stringify(store.info));
22
+ case url === `${urlBase}/api/config`:
23
+ return new Response(JSON.stringify(store.config));
24
+ default:
25
+ throw new Error(`not supported: ${url}`);
26
+ }
27
+ },
28
+ async importModule(moduleSpecifier) {
29
+ return store.modules[moduleSpecifier];
30
+ }
31
+ };
32
+ }
3
33
  export function createFakeServerFetch() {
4
34
  const specs = {
5
35
  exist: { actions: [] }
@@ -9,20 +39,20 @@ export function createFakeServerFetch() {
9
39
  };
10
40
  return Object.assign(async (url, init) => {
11
41
  const uri = extractUri(url);
12
- if (uri === 'mocktomata/info') {
42
+ if (uri === 'api/info') {
13
43
  return new f.Response(json.stringify({
14
44
  url: 'http://localhost:3999',
15
45
  version: '1.0'
16
46
  }));
17
47
  }
18
- else if (uri === 'mocktomata/config') {
48
+ else if (uri === 'api/config') {
19
49
  return new f.Response(json.stringify({
20
50
  plugins: ['@mocktomata/plugin-fixture-dummy']
21
51
  }));
22
52
  // istanbul ignore next
23
53
  }
24
- else if (uri.startsWith('mocktomata/specs/')) {
25
- const id = /mocktomata\/specs\/(.*)/.exec(uri)[1];
54
+ else if (uri.startsWith('api/specs/')) {
55
+ const id = /api\/specs\/(.*)/.exec(uri)[1];
26
56
  const { specName } = json.parse(atob(id));
27
57
  if (init && init.method === 'POST') {
28
58
  specs[specName] = json.parse(init.body);
@@ -51,4 +81,4 @@ function extractUri(url) {
51
81
  throw match;
52
82
  return match[1];
53
83
  }
54
- //# sourceMappingURL=create_io.mock.js.map
84
+ //# sourceMappingURL=io.mock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io.mock.js","sourceRoot":"","sources":["../ts/io.mock.ts"],"names":[],"mappings":"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"}