@data-client/core 0.15.0-beta-20251006024044-92bd01c4976f2921993b8c9f1e4dbb87af87ba7b → 0.15.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 (53) hide show
  1. package/CHANGELOG.md +1191 -0
  2. package/dist/index.umd.min.js +1 -1
  3. package/legacy/manager/SubscriptionManager.js +1 -1
  4. package/legacy/middlewareTypes.js +1 -1
  5. package/legacy/mock/MockController.js +124 -0
  6. package/legacy/mock/collapseFixture.js +19 -0
  7. package/legacy/mock/createFixtureMap.js +23 -0
  8. package/legacy/mock/fixtureTypes.js +2 -0
  9. package/legacy/mock/index.js +5 -0
  10. package/legacy/mock/mockState.js +44 -0
  11. package/legacy/mock/mockTypes.js +2 -0
  12. package/lib/manager/SubscriptionManager.d.ts.map +1 -1
  13. package/lib/manager/SubscriptionManager.js +1 -1
  14. package/lib/middlewareTypes.d.ts.map +1 -1
  15. package/lib/middlewareTypes.js +1 -1
  16. package/lib/mock/MockController.d.ts +4 -0
  17. package/lib/mock/MockController.d.ts.map +1 -0
  18. package/lib/mock/MockController.js +125 -0
  19. package/lib/mock/collapseFixture.d.ts +6 -0
  20. package/lib/mock/collapseFixture.d.ts.map +1 -0
  21. package/lib/mock/collapseFixture.js +19 -0
  22. package/lib/mock/createFixtureMap.d.ts +3 -0
  23. package/lib/mock/createFixtureMap.d.ts.map +1 -0
  24. package/lib/mock/createFixtureMap.js +23 -0
  25. package/lib/mock/fixtureTypes.d.ts +99 -0
  26. package/lib/mock/fixtureTypes.d.ts.map +1 -0
  27. package/lib/mock/fixtureTypes.js +2 -0
  28. package/lib/mock/index.d.ts +7 -0
  29. package/lib/mock/index.d.ts.map +1 -0
  30. package/lib/mock/index.js +5 -0
  31. package/lib/mock/mockState.d.ts +4 -0
  32. package/lib/mock/mockState.d.ts.map +1 -0
  33. package/lib/mock/mockState.js +44 -0
  34. package/lib/mock/mockTypes.d.ts +6 -0
  35. package/lib/mock/mockTypes.d.ts.map +1 -0
  36. package/lib/mock/mockTypes.js +2 -0
  37. package/package.json +16 -6
  38. package/src/manager/SubscriptionManager.ts +1 -2
  39. package/src/middlewareTypes.ts +3 -2
  40. package/src/mock/MockController.ts +146 -0
  41. package/src/mock/collapseFixture.ts +21 -0
  42. package/src/mock/createFixtureMap.ts +26 -0
  43. package/src/mock/fixtureTypes.ts +121 -0
  44. package/src/mock/index.ts +16 -0
  45. package/src/mock/mockState.ts +56 -0
  46. package/src/mock/mockTypes.ts +6 -0
  47. package/ts3.4/mock/MockController.d.ts +4 -0
  48. package/ts3.4/mock/collapseFixture.d.ts +6 -0
  49. package/ts3.4/mock/createFixtureMap.d.ts +6 -0
  50. package/ts3.4/mock/fixtureTypes.d.ts +99 -0
  51. package/ts3.4/mock/index.d.ts +7 -0
  52. package/ts3.4/mock/mockState.d.ts +4 -0
  53. package/ts3.4/mock/mockTypes.d.ts +6 -0
@@ -0,0 +1,125 @@
1
+ import { actionTypes } from '../index.js';
2
+ import { collapseFixture } from './collapseFixture.js';
3
+ import { createFixtureMap } from './createFixtureMap.js';
4
+ export function MockController(Base, {
5
+ fixtures = [],
6
+ getInitialInterceptorData = () => ({})
7
+ }) {
8
+ const [fixtureMap, interceptors] = createFixtureMap(fixtures);
9
+
10
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
11
+ // @ts-ignore
12
+ return class MockedController extends Base {
13
+ constructor(...args) {
14
+ super(...args);
15
+
16
+ // legacy compatibility
17
+ // TODO: drop when drop support for destructuring (0.14 and below)
18
+ // legacy compatibility (re-declaration)
19
+ // TODO: drop when drop support for destructuring (0.14 and below)
20
+ this.fixtureMap = fixtureMap;
21
+ this.interceptors = interceptors;
22
+ this.interceptorData = getInitialInterceptorData();
23
+ if (!this._dispatch) {
24
+ this._dispatch = args[0].dispatch;
25
+ }
26
+ }
27
+
28
+ // legacy compatibility - we need this to work with 0.14 and below as they do not have this setter
29
+ // TODO: drop when drop support for destructuring (0.14 and below)
30
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
31
+ // @ts-ignore
32
+ set dispatch(dispatch) {
33
+ this._dispatch = dispatch;
34
+ }
35
+ get dispatch() {
36
+ return action => {
37
+ var _actionTypes$FETCH;
38
+ // support legacy that has _TYPE suffix
39
+ if (action.type === ((_actionTypes$FETCH = actionTypes.FETCH) != null ? _actionTypes$FETCH : actionTypes.FETCH_TYPE)) {
40
+ // eslint-disable-next-line prefer-const
41
+ let {
42
+ key,
43
+ args
44
+ } = action;
45
+ let fixture;
46
+ if (this.fixtureMap.has(key)) {
47
+ fixture = this.fixtureMap.get(key);
48
+ if (!args) args = fixture.args;
49
+ // exact matches take priority; now test ComputedFixture
50
+ } else {
51
+ for (const cfix of this.interceptors) {
52
+ if (cfix.endpoint.testKey(key)) {
53
+ fixture = cfix;
54
+ break;
55
+ }
56
+ }
57
+ }
58
+ // we have a match
59
+ if (fixture !== undefined) {
60
+ var _fixture$delay;
61
+ const replacedAction = {
62
+ ...action
63
+ };
64
+ const delayMs = typeof fixture.delay === 'function' ? fixture.delay(...args) : (_fixture$delay = fixture.delay) != null ? _fixture$delay : 0;
65
+ if ('fetchResponse' in fixture) {
66
+ const {
67
+ fetchResponse
68
+ } = fixture;
69
+ fixture = {
70
+ endpoint: fixture.endpoint,
71
+ response(...args) {
72
+ const endpoint = action.endpoint.extend({
73
+ fetchResponse: (input, init) => {
74
+ const ret = fetchResponse.call(this, input, init);
75
+ return Promise.resolve(new Response(JSON.stringify(ret), {
76
+ status: 200,
77
+ headers: new Headers({
78
+ 'Content-Type': 'application/json'
79
+ })
80
+ }));
81
+ }
82
+ });
83
+ return endpoint(...args);
84
+ }
85
+ };
86
+ }
87
+ const fetch = async () => {
88
+ if (!fixture) {
89
+ throw new Error('No fixture found');
90
+ }
91
+ // delayCollapse determines when the fixture function is 'collapsed' (aka 'run')
92
+ // collapsed: https://en.wikipedia.org/wiki/Copenhagen_interpretation
93
+ if (fixture.delayCollapse) {
94
+ await new Promise(resolve => setTimeout(resolve, delayMs));
95
+ }
96
+ const result = await collapseFixture(fixture, args, this.interceptorData);
97
+ if (!fixture.delayCollapse && delayMs) {
98
+ await new Promise(resolve => setTimeout(resolve, delayMs));
99
+ }
100
+ if (result.error) {
101
+ throw result.response;
102
+ }
103
+ return result.response;
104
+ };
105
+ if (typeof replacedAction.endpoint.extend === 'function') {
106
+ replacedAction.endpoint = replacedAction.endpoint.extend({
107
+ fetch
108
+ });
109
+ } else {
110
+ // TODO: full testing of this
111
+ replacedAction.endpoint = fetch;
112
+ replacedAction.endpoint.__proto__ = action.endpoint;
113
+ }
114
+
115
+ // TODO: make super.dispatch (once we drop support for destructuring)
116
+ return this._dispatch(replacedAction);
117
+ }
118
+ }
119
+ // TODO: make super.dispatch (once we drop support for destructuring)
120
+ return this._dispatch(action);
121
+ };
122
+ }
123
+ };
124
+ }
125
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhY3Rpb25UeXBlcyIsImNvbGxhcHNlRml4dHVyZSIsImNyZWF0ZUZpeHR1cmVNYXAiLCJNb2NrQ29udHJvbGxlciIsIkJhc2UiLCJmaXh0dXJlcyIsImdldEluaXRpYWxJbnRlcmNlcHRvckRhdGEiLCJmaXh0dXJlTWFwIiwiaW50ZXJjZXB0b3JzIiwiTW9ja2VkQ29udHJvbGxlciIsImNvbnN0cnVjdG9yIiwiYXJncyIsImludGVyY2VwdG9yRGF0YSIsIl9kaXNwYXRjaCIsImRpc3BhdGNoIiwiYWN0aW9uIiwiX2FjdGlvblR5cGVzJEZFVENIIiwidHlwZSIsIkZFVENIIiwiRkVUQ0hfVFlQRSIsImtleSIsImZpeHR1cmUiLCJoYXMiLCJnZXQiLCJjZml4IiwiZW5kcG9pbnQiLCJ0ZXN0S2V5IiwidW5kZWZpbmVkIiwiX2ZpeHR1cmUkZGVsYXkiLCJyZXBsYWNlZEFjdGlvbiIsImRlbGF5TXMiLCJkZWxheSIsImZldGNoUmVzcG9uc2UiLCJyZXNwb25zZSIsImV4dGVuZCIsImlucHV0IiwiaW5pdCIsInJldCIsImNhbGwiLCJQcm9taXNlIiwicmVzb2x2ZSIsIlJlc3BvbnNlIiwiSlNPTiIsInN0cmluZ2lmeSIsInN0YXR1cyIsImhlYWRlcnMiLCJIZWFkZXJzIiwiZmV0Y2giLCJFcnJvciIsImRlbGF5Q29sbGFwc2UiLCJzZXRUaW1lb3V0IiwicmVzdWx0IiwiZXJyb3IiLCJfX3Byb3RvX18iXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9jay9Nb2NrQ29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhY3Rpb25UeXBlcyxcbiAgQ29udHJvbGxlcixcbiAgRGF0YUNsaWVudERpc3BhdGNoLFxuICBHZW5lcmljRGlzcGF0Y2gsXG59IGZyb20gJy4uL2luZGV4LmpzJztcbmltcG9ydCB7IGNvbGxhcHNlRml4dHVyZSB9IGZyb20gJy4vY29sbGFwc2VGaXh0dXJlLmpzJztcbmltcG9ydCB7IGNyZWF0ZUZpeHR1cmVNYXAgfSBmcm9tICcuL2NyZWF0ZUZpeHR1cmVNYXAuanMnO1xuaW1wb3J0IHR5cGUgeyBGaXh0dXJlLCBJbnRlcmNlcHRvciB9IGZyb20gJy4vZml4dHVyZVR5cGVzLmpzJztcbmltcG9ydCB7IE1vY2tQcm9wcyB9IGZyb20gJy4vbW9ja1R5cGVzLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIE1vY2tDb250cm9sbGVyPFRCYXNlIGV4dGVuZHMgdHlwZW9mIENvbnRyb2xsZXIsIFQ+KFxuICBCYXNlOiBUQmFzZSxcbiAge1xuICAgIGZpeHR1cmVzID0gW10sXG4gICAgZ2V0SW5pdGlhbEludGVyY2VwdG9yRGF0YSA9ICgpID0+ICh7fSkgYXMgYW55LFxuICB9OiBNb2NrUHJvcHM8VD4sXG4pOiBUQmFzZSB7XG4gIGNvbnN0IFtmaXh0dXJlTWFwLCBpbnRlcmNlcHRvcnNdID0gY3JlYXRlRml4dHVyZU1hcChmaXh0dXJlcyk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAvLyBAdHMtaWdub3JlXG4gIHJldHVybiBjbGFzcyBNb2NrZWRDb250cm9sbGVyPFxuICAgIEQgZXh0ZW5kcyBHZW5lcmljRGlzcGF0Y2ggPSBEYXRhQ2xpZW50RGlzcGF0Y2gsXG4gID4gZXh0ZW5kcyBCYXNlPEQ+IHtcbiAgICAvLyBsZWdhY3kgY29tcGF0aWJpbGl0eSAocmUtZGVjbGFyYXRpb24pXG4gICAgLy8gVE9ETzogZHJvcCB3aGVuIGRyb3Agc3VwcG9ydCBmb3IgZGVzdHJ1Y3R1cmluZyAoMC4xNCBhbmQgYmVsb3cpXG4gICAgZGVjbGFyZSBwcm90ZWN0ZWQgX2Rpc3BhdGNoOiBEO1xuXG4gICAgZml4dHVyZU1hcDogTWFwPHN0cmluZywgRml4dHVyZT4gPSBmaXh0dXJlTWFwO1xuICAgIGludGVyY2VwdG9yczogSW50ZXJjZXB0b3I8YW55PltdID0gaW50ZXJjZXB0b3JzO1xuICAgIGludGVyY2VwdG9yRGF0YTogVCA9IGdldEluaXRpYWxJbnRlcmNlcHRvckRhdGEoKTtcblxuICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBzdXBlciguLi5hcmdzKTtcblxuICAgICAgLy8gbGVnYWN5IGNvbXBhdGliaWxpdHlcbiAgICAgIC8vIFRPRE86IGRyb3Agd2hlbiBkcm9wIHN1cHBvcnQgZm9yIGRlc3RydWN0dXJpbmcgKDAuMTQgYW5kIGJlbG93KVxuICAgICAgaWYgKCF0aGlzLl9kaXNwYXRjaCkge1xuICAgICAgICB0aGlzLl9kaXNwYXRjaCA9IChhcmdzWzBdIGFzIGFueSkuZGlzcGF0Y2g7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gbGVnYWN5IGNvbXBhdGliaWxpdHkgLSB3ZSBuZWVkIHRoaXMgdG8gd29yayB3aXRoIDAuMTQgYW5kIGJlbG93IGFzIHRoZXkgZG8gbm90IGhhdmUgdGhpcyBzZXR0ZXJcbiAgICAvLyBUT0RPOiBkcm9wIHdoZW4gZHJvcCBzdXBwb3J0IGZvciBkZXN0cnVjdHVyaW5nICgwLjE0IGFuZCBiZWxvdylcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHNldCBkaXNwYXRjaChkaXNwYXRjaDogRCkge1xuICAgICAgdGhpcy5fZGlzcGF0Y2ggPSBkaXNwYXRjaDtcbiAgICB9XG5cbiAgICBnZXQgZGlzcGF0Y2goKTogRCB7XG4gICAgICByZXR1cm4gKChhY3Rpb246IFBhcmFtZXRlcnM8RD5bMF0pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgLy8gc3VwcG9ydCBsZWdhY3kgdGhhdCBoYXMgX1RZUEUgc3VmZml4XG4gICAgICAgIGlmIChhY3Rpb24udHlwZSA9PT0gKGFjdGlvblR5cGVzLkZFVENIID8/IGFjdGlvblR5cGVzLkZFVENIX1RZUEUpKSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgICAgICAgIGxldCB7IGtleSwgYXJncyB9ID0gYWN0aW9uO1xuICAgICAgICAgIGxldCBmaXh0dXJlOiBGaXh0dXJlIHwgSW50ZXJjZXB0b3IgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKHRoaXMuZml4dHVyZU1hcC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgZml4dHVyZSA9IHRoaXMuZml4dHVyZU1hcC5nZXQoa2V5KSBhcyBGaXh0dXJlO1xuICAgICAgICAgICAgaWYgKCFhcmdzKSBhcmdzID0gZml4dHVyZS5hcmdzO1xuICAgICAgICAgICAgLy8gZXhhY3QgbWF0Y2hlcyB0YWtlIHByaW9yaXR5OyBub3cgdGVzdCBDb21wdXRlZEZpeHR1cmVcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9yIChjb25zdCBjZml4IG9mIHRoaXMuaW50ZXJjZXB0b3JzKSB7XG4gICAgICAgICAgICAgIGlmIChjZml4LmVuZHBvaW50LnRlc3RLZXkoa2V5KSkge1xuICAgICAgICAgICAgICAgIGZpeHR1cmUgPSBjZml4O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIHdlIGhhdmUgYSBtYXRjaFxuICAgICAgICAgIGlmIChmaXh0dXJlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlcGxhY2VkQWN0aW9uOiB0eXBlb2YgYWN0aW9uID0ge1xuICAgICAgICAgICAgICAuLi5hY3Rpb24sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgZGVsYXlNcyA9XG4gICAgICAgICAgICAgIHR5cGVvZiBmaXh0dXJlLmRlbGF5ID09PSAnZnVuY3Rpb24nID9cbiAgICAgICAgICAgICAgICBmaXh0dXJlLmRlbGF5KC4uLihhcmdzIGFzIGFueSkpXG4gICAgICAgICAgICAgIDogKGZpeHR1cmUuZGVsYXkgPz8gMCk7XG5cbiAgICAgICAgICAgIGlmICgnZmV0Y2hSZXNwb25zZScgaW4gZml4dHVyZSkge1xuICAgICAgICAgICAgICBjb25zdCB7IGZldGNoUmVzcG9uc2UgfSA9IGZpeHR1cmU7XG4gICAgICAgICAgICAgIGZpeHR1cmUgPSB7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnQ6IGZpeHR1cmUuZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgcmVzcG9uc2UoLi4uYXJncykge1xuICAgICAgICAgICAgICAgICAgY29uc3QgZW5kcG9pbnQgPSAoYWN0aW9uLmVuZHBvaW50IGFzIGFueSkuZXh0ZW5kKHtcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2hSZXNwb25zZTogKGlucHV0OiBSZXF1ZXN0SW5mbywgaW5pdDogUmVxdWVzdEluaXQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXQgPSBmZXRjaFJlc3BvbnNlLmNhbGwodGhpcywgaW5wdXQsIGluaXQpO1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgUmVzcG9uc2UoSlNPTi5zdHJpbmdpZnkocmV0KSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IDIwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogbmV3IEhlYWRlcnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIChlbmRwb2ludCBhcyBhbnkpKC4uLmFyZ3MpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBmZXRjaCA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFmaXh0dXJlKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBmaXh0dXJlIGZvdW5kJyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLy8gZGVsYXlDb2xsYXBzZSBkZXRlcm1pbmVzIHdoZW4gdGhlIGZpeHR1cmUgZnVuY3Rpb24gaXMgJ2NvbGxhcHNlZCcgKGFrYSAncnVuJylcbiAgICAgICAgICAgICAgLy8gY29sbGFwc2VkOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db3BlbmhhZ2VuX2ludGVycHJldGF0aW9uXG4gICAgICAgICAgICAgIGlmIChmaXh0dXJlLmRlbGF5Q29sbGFwc2UpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgZGVsYXlNcykpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNvbGxhcHNlRml4dHVyZShcbiAgICAgICAgICAgICAgICBmaXh0dXJlIGFzIGFueSxcbiAgICAgICAgICAgICAgICBhcmdzIGFzIGFueSxcbiAgICAgICAgICAgICAgICB0aGlzLmludGVyY2VwdG9yRGF0YSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgaWYgKCFmaXh0dXJlLmRlbGF5Q29sbGFwc2UgJiYgZGVsYXlNcykge1xuICAgICAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBkZWxheU1zKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHJlc3VsdC5lcnJvcikge1xuICAgICAgICAgICAgICAgIHRocm93IHJlc3VsdC5yZXNwb25zZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlc3BvbnNlO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgKHJlcGxhY2VkQWN0aW9uLmVuZHBvaW50IGFzIGFueSkuZXh0ZW5kID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgIHJlcGxhY2VkQWN0aW9uLmVuZHBvaW50ID0gKHJlcGxhY2VkQWN0aW9uLmVuZHBvaW50IGFzIGFueSkuZXh0ZW5kKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGZldGNoLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBUT0RPOiBmdWxsIHRlc3Rpbmcgb2YgdGhpc1xuICAgICAgICAgICAgICByZXBsYWNlZEFjdGlvbi5lbmRwb2ludCA9IGZldGNoIGFzIGFueTtcbiAgICAgICAgICAgICAgKHJlcGxhY2VkQWN0aW9uLmVuZHBvaW50IGFzIGFueSkuX19wcm90b19fID0gYWN0aW9uLmVuZHBvaW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBUT0RPOiBtYWtlIHN1cGVyLmRpc3BhdGNoIChvbmNlIHdlIGRyb3Agc3VwcG9ydCBmb3IgZGVzdHJ1Y3R1cmluZylcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaChyZXBsYWNlZEFjdGlvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIFRPRE86IG1ha2Ugc3VwZXIuZGlzcGF0Y2ggKG9uY2Ugd2UgZHJvcCBzdXBwb3J0IGZvciBkZXN0cnVjdHVyaW5nKVxuICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2goYWN0aW9uKTtcbiAgICAgIH0pIGFzIGFueTtcbiAgICB9XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQ0VBLFdBQVcsUUFJTixhQUFhO0FBQ3BCLFNBQVNDLGVBQWUsUUFBUSxzQkFBc0I7QUFDdEQsU0FBU0MsZ0JBQWdCLFFBQVEsdUJB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
@@ -0,0 +1,6 @@
1
+ import type { Fixture, ResponseInterceptor } from './fixtureTypes.js';
2
+ export declare function collapseFixture(fixture: Fixture | ResponseInterceptor, args: any[], interceptorData: any): Promise<{
3
+ response: any;
4
+ error: boolean | undefined;
5
+ }>;
6
+ //# sourceMappingURL=collapseFixture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collapseFixture.d.ts","sourceRoot":"","sources":["../../src/mock/collapseFixture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAEtE,wBAAsB,eAAe,CACnC,OAAO,EAAE,OAAO,GAAG,mBAAmB,EACtC,IAAI,EAAE,GAAG,EAAE,EACX,eAAe,EAAE,GAAG;;;GAerB"}
@@ -0,0 +1,19 @@
1
+ export async function collapseFixture(fixture, args, interceptorData) {
2
+ let error = 'error' in fixture ? fixture.error : false;
3
+ let response = fixture.response;
4
+ if (typeof fixture.response === 'function') {
5
+ try {
6
+ response = await fixture.response.apply(interceptorData, args);
7
+ // dispatch goes through user-code that can sometimes fail.
8
+ // let's ensure we always handle errors
9
+ } catch (e) {
10
+ response = e;
11
+ error = true;
12
+ }
13
+ }
14
+ return {
15
+ response,
16
+ error
17
+ };
18
+ }
19
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb2xsYXBzZUZpeHR1cmUiLCJmaXh0dXJlIiwiYXJncyIsImludGVyY2VwdG9yRGF0YSIsImVycm9yIiwicmVzcG9uc2UiLCJhcHBseSIsImUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9jay9jb2xsYXBzZUZpeHR1cmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBGaXh0dXJlLCBSZXNwb25zZUludGVyY2VwdG9yIH0gZnJvbSAnLi9maXh0dXJlVHlwZXMuanMnO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29sbGFwc2VGaXh0dXJlKFxuICBmaXh0dXJlOiBGaXh0dXJlIHwgUmVzcG9uc2VJbnRlcmNlcHRvcixcbiAgYXJnczogYW55W10sXG4gIGludGVyY2VwdG9yRGF0YTogYW55LFxuKSB7XG4gIGxldCBlcnJvciA9ICdlcnJvcicgaW4gZml4dHVyZSA/IGZpeHR1cmUuZXJyb3IgOiBmYWxzZTtcbiAgbGV0IHJlc3BvbnNlID0gZml4dHVyZS5yZXNwb25zZTtcbiAgaWYgKHR5cGVvZiBmaXh0dXJlLnJlc3BvbnNlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJlc3BvbnNlID0gYXdhaXQgZml4dHVyZS5yZXNwb25zZS5hcHBseShpbnRlcmNlcHRvckRhdGEsIGFyZ3MpO1xuICAgICAgLy8gZGlzcGF0Y2ggZ29lcyB0aHJvdWdoIHVzZXItY29kZSB0aGF0IGNhbiBzb21ldGltZXMgZmFpbC5cbiAgICAgIC8vIGxldCdzIGVuc3VyZSB3ZSBhbHdheXMgaGFuZGxlIGVycm9yc1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgcmVzcG9uc2UgPSBlO1xuICAgICAgZXJyb3IgPSB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4geyByZXNwb25zZSwgZXJyb3IgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxlQUFlQSxlQUFlQSxDQUNuQ0MsT0FBc0MsRUFDdENDLElBQVcsRUFDWEMsZUFBb0IsRUFDcEI7RUFDQSxJQUFJQyxLQUFLLEdBQUcsT0FBTyxJQUFJSCxPQUFPLEdBQUdBLE9BQU8sQ0FBQ0csS0FBSyxHQUFHLEtBQUs7RUFDdEQsSUFBSUMsUUFBUSxHQUFHSixPQUFPLENBQUNJLFFBQVE7RUFDL0IsSUFBSSxPQUFPSixPQUFPLENBQUNJLFFBQVEsS0FBSyxVQUFVLEVBQUU7SUFDMUMsSUFBSTtNQUNGQSxRQUFRLEdBQUcsTUFBTUosT0FBTyxDQUFDSSxRQUFRLENBQUNDLEtBQUssQ0FBQ0gsZUFBZSxFQUFFRCxJQUFJLENBQUM7TUFDOUQ7TUFDQTtJQUNGLENBQUMsQ0FBQyxPQUFPSyxDQUFNLEVBQUU7TUFDZkYsUUFBUSxHQUFHRSxDQUFDO01BQ1pILEtBQUssR0FBRyxJQUFJO0lBQ2Q7RUFDRjtFQUNBLE9BQU87SUFBRUMsUUFBUTtJQUFFRDtFQUFNLENBQUM7QUFDNUIiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -0,0 +1,3 @@
1
+ import type { Fixture, Interceptor } from './fixtureTypes.js';
2
+ export declare function createFixtureMap(fixtures?: (Fixture | Interceptor)[]): readonly [Map<string, Fixture>, Interceptor[]];
3
+ //# sourceMappingURL=createFixtureMap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createFixtureMap.d.ts","sourceRoot":"","sources":["../../src/mock/createFixtureMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE9D,wBAAgB,gBAAgB,CAAC,QAAQ,GAAE,CAAC,OAAO,GAAG,WAAW,CAAC,EAAO,kDAuBxE"}
@@ -0,0 +1,23 @@
1
+ export function createFixtureMap(fixtures = []) {
2
+ const map = new Map();
3
+ const computed = [];
4
+ for (const fixture of fixtures) {
5
+ if ('args' in fixture) {
6
+ if (typeof fixture.response !== 'function') {
7
+ const key = fixture.endpoint.key(...fixture.args);
8
+ map.set(key, fixture);
9
+ } else {
10
+ // this has to be a typo. probably needs to remove args
11
+ console.warn(`Fixture found with function response, and explicit args. Interceptors should not specify args.
12
+ ${fixture.endpoint.name}: ${JSON.stringify(fixture.args)}
13
+
14
+ Treating as Interceptor`);
15
+ computed.push(fixture);
16
+ }
17
+ } else {
18
+ computed.push(fixture);
19
+ }
20
+ }
21
+ return [map, computed];
22
+ }
23
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVGaXh0dXJlTWFwIiwiZml4dHVyZXMiLCJtYXAiLCJNYXAiLCJjb21wdXRlZCIsImZpeHR1cmUiLCJyZXNwb25zZSIsImtleSIsImVuZHBvaW50IiwiYXJncyIsInNldCIsImNvbnNvbGUiLCJ3YXJuIiwibmFtZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJwdXNoIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vY2svY3JlYXRlRml4dHVyZU1hcC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZpeHR1cmUsIEludGVyY2VwdG9yIH0gZnJvbSAnLi9maXh0dXJlVHlwZXMuanMnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRml4dHVyZU1hcChmaXh0dXJlczogKEZpeHR1cmUgfCBJbnRlcmNlcHRvcilbXSA9IFtdKSB7XG4gIGNvbnN0IG1hcDogTWFwPHN0cmluZywgRml4dHVyZT4gPSBuZXcgTWFwKCk7XG4gIGNvbnN0IGNvbXB1dGVkOiBJbnRlcmNlcHRvcltdID0gW107XG4gIGZvciAoY29uc3QgZml4dHVyZSBvZiBmaXh0dXJlcykge1xuICAgIGlmICgnYXJncycgaW4gZml4dHVyZSkge1xuICAgICAgaWYgKHR5cGVvZiBmaXh0dXJlLnJlc3BvbnNlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNvbnN0IGtleSA9IGZpeHR1cmUuZW5kcG9pbnQua2V5KC4uLmZpeHR1cmUuYXJncyk7XG4gICAgICAgIG1hcC5zZXQoa2V5LCBmaXh0dXJlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHRoaXMgaGFzIHRvIGJlIGEgdHlwby4gcHJvYmFibHkgbmVlZHMgdG8gcmVtb3ZlIGFyZ3NcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBGaXh0dXJlIGZvdW5kIHdpdGggZnVuY3Rpb24gcmVzcG9uc2UsIGFuZCBleHBsaWNpdCBhcmdzLiBJbnRlcmNlcHRvcnMgc2hvdWxkIG5vdCBzcGVjaWZ5IGFyZ3MuXG4ke2ZpeHR1cmUuZW5kcG9pbnQubmFtZX06ICR7SlNPTi5zdHJpbmdpZnkoZml4dHVyZS5hcmdzKX1cblxuVHJlYXRpbmcgYXMgSW50ZXJjZXB0b3JgLFxuICAgICAgICApO1xuICAgICAgICBjb21wdXRlZC5wdXNoKGZpeHR1cmUgYXMgYW55KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29tcHV0ZWQucHVzaChmaXh0dXJlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFttYXAsIGNvbXB1dGVkXSBhcyBjb25zdDtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxTQUFTQSxnQkFBZ0JBLENBQUNDLFFBQW1DLEdBQUcsRUFBRSxFQUFFO0VBQ3pFLE1BQU1DLEdBQXlCLEdBQUcsSUFBSUMsR0FBRyxDQUFDLENBQUM7RUFDM0MsTUFBTUMsUUFBdUIsR0FBRyxFQUFFO0VBQ2xDLEtBQUssTUFBTUMsT0FBTyxJQUFJSixRQUFRLEVBQUU7SUFDOUIsSUFBSSxNQUFNLElBQUlJLE9BQU8sRUFBRTtNQUNyQixJQUFJLE9BQU9BLE9BQU8sQ0FBQ0MsUUFBUSxLQUFLLFVBQVUsRUFBRTtRQUMxQyxNQUFNQyxHQUFHLEdBQUdGLE9BQU8sQ0FBQ0csUUFBUSxDQUFDRCxHQUFHLENBQUMsR0FBR0YsT0FBTyxDQUFDSSxJQUFJLENBQUM7UUFDakRQLEdBQUcsQ0FBQ1EsR0FBRyxDQUFDSCxHQUFHLEVBQUVGLE9BQU8sQ0FBQztNQUN2QixDQUFDLE1BQU07UUFDTDtRQUNBTSxPQUFPLENBQUNDLElBQUksQ0FDVjtBQUNWLEVBQUVQLE9BQU8sQ0FBQ0csUUFBUSxDQUFDSyxJQUFJLEtBQUtDLElBQUksQ0FBQ0MsU0FBUyxDQUFDVixPQUFPLENBQUNJLElBQUksQ0FBQztBQUN4RDtBQUNBLHdCQUNRLENBQUM7UUFDREwsUUFBUSxDQUFDWSxJQUFJLENBQUNYLE9BQWMsQ0FBQztNQUMvQjtJQUNGLENBQUMsTUFBTTtNQUNMRCxRQUFRLENBQUNZLElBQUksQ0FBQ1gsT0FBTyxDQUFDO0lBQ3hCO0VBQ0Y7RUFDQSxPQUFPLENBQUNILEdBQUcsRUFBRUUsUUFBUSxDQUFDO0FBQ3hCIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,99 @@
1
+ import type { EndpointInterface, ResolveType } from '@data-client/endpoint';
2
+ type Updater = (result: any, ...args: any) => Record<string, (...args: any) => any>;
3
+ export interface SuccessFixtureEndpoint<E extends EndpointInterface & {
4
+ update?: Updater;
5
+ } = EndpointInterface> {
6
+ readonly endpoint: E;
7
+ readonly args: Parameters<E>;
8
+ readonly response: ResolveType<E> | ((...args: Parameters<E>) => ResolveType<E>);
9
+ readonly error?: false;
10
+ /** Number of miliseconds to wait before resolving */
11
+ readonly delay?: number;
12
+ /** Waits to run `response()` after `delay` time */
13
+ readonly delayCollapse?: boolean;
14
+ }
15
+ export interface ResponseInterceptor<T = any, E extends EndpointInterface & {
16
+ update?: Updater;
17
+ testKey(key: string): boolean;
18
+ } = EndpointInterface & {
19
+ testKey(key: string): boolean;
20
+ }> {
21
+ readonly endpoint: E;
22
+ response(this: T, ...args: Parameters<E>): ResolveType<E>;
23
+ /** Number of miliseconds (or function that returns) to wait before resolving */
24
+ readonly delay?: number | ((...args: Parameters<E>) => number);
25
+ /** Waits to run `response()` after `delay` time */
26
+ readonly delayCollapse?: boolean;
27
+ }
28
+ export interface FetchInterceptor<T = any, E extends EndpointInterface & {
29
+ update?: Updater;
30
+ testKey(key: string): boolean;
31
+ fetchResponse(input: RequestInfo, init: RequestInit): Promise<Response>;
32
+ extend(options: any): any;
33
+ } = EndpointInterface & {
34
+ testKey(key: string): boolean;
35
+ fetchResponse(input: RequestInfo, init: RequestInit): Promise<Response>;
36
+ extend(options: any): any;
37
+ }> {
38
+ readonly endpoint: E;
39
+ fetchResponse(this: T, input: RequestInfo, init: RequestInit): ResolveType<E>;
40
+ /** Number of miliseconds (or function that returns) to wait before resolving */
41
+ readonly delay?: number | ((...args: Parameters<E>) => number);
42
+ /** Waits to run `response()` after `delay` time */
43
+ readonly delayCollapse?: boolean;
44
+ }
45
+ /** Interceptors match and compute dynamic responses based on args
46
+ *
47
+ * @see https://dataclient.io/docs/api/Fixtures#interceptor
48
+ */
49
+ export type Interceptor<T = any, E extends EndpointInterface & {
50
+ update?: Updater;
51
+ testKey(key: string): boolean;
52
+ fetchResponse?(input: RequestInfo, init: RequestInit): Promise<Response>;
53
+ extend?(options: any): any;
54
+ } = EndpointInterface & {
55
+ testKey(key: string): boolean;
56
+ fetchResponse(input: RequestInfo, init: RequestInit): Promise<Response>;
57
+ extend(options: any): any;
58
+ }> = ResponseInterceptor<T, E> | (E extends ({
59
+ fetchResponse(input: RequestInfo, init: RequestInit): Promise<Response>;
60
+ extend(options: any): any;
61
+ }) ? FetchInterceptor<T, E> : never);
62
+ export interface ErrorFixtureEndpoint<E extends EndpointInterface & {
63
+ update?: Updater;
64
+ } = EndpointInterface> {
65
+ readonly endpoint: E;
66
+ readonly args: Parameters<E>;
67
+ readonly response: any;
68
+ readonly error: true;
69
+ /** Number of miliseconds to wait before resolving */
70
+ readonly delay?: number;
71
+ /** Waits to run `response()` after `delay` time */
72
+ readonly delayCollapse?: boolean;
73
+ }
74
+ export type FixtureEndpoint<E extends EndpointInterface & {
75
+ update?: Updater;
76
+ } = EndpointInterface> = SuccessFixtureEndpoint<E> | ErrorFixtureEndpoint<E>;
77
+ /** Represents a successful response
78
+ *
79
+ * @see https://dataclient.io/docs/api/Fixtures#successfixture
80
+ */
81
+ export type SuccessFixture<E extends EndpointInterface & {
82
+ update?: Updater;
83
+ } = EndpointInterface> = SuccessFixtureEndpoint<E>;
84
+ /** Represents a failed/errored response
85
+ *
86
+ * @see https://dataclient.io/docs/api/Fixtures#errorfixtures
87
+ */
88
+ export type ErrorFixture<E extends EndpointInterface & {
89
+ update?: Updater;
90
+ } = EndpointInterface> = ErrorFixtureEndpoint<E>;
91
+ /** Represents a static response
92
+ *
93
+ * @see https://dataclient.io/docs/api/Fixtures
94
+ */
95
+ export type Fixture<E extends EndpointInterface & {
96
+ update?: Updater;
97
+ } = EndpointInterface> = FixtureEndpoint<E>;
98
+ export {};
99
+ //# sourceMappingURL=fixtureTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixtureTypes.d.ts","sourceRoot":"","sources":["../../src/mock/fixtureTypes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vY2svZml4dHVyZVR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW5kcG9pbnRJbnRlcmZhY2UsIFJlc29sdmVUeXBlIH0gZnJvbSAnQGRhdGEtY2xpZW50L2VuZHBvaW50JztcblxudHlwZSBVcGRhdGVyID0gKFxuICByZXN1bHQ6IGFueSxcbiAgLi4uYXJnczogYW55XG4pID0+IFJlY29yZDxzdHJpbmcsICguLi5hcmdzOiBhbnkpID0+IGFueT47XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3VjY2Vzc0ZpeHR1cmVFbmRwb2ludDxcbiAgRSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlICYgeyB1cGRhdGU/OiBVcGRhdGVyIH0gPSBFbmRwb2ludEludGVyZmFjZSxcbj4ge1xuICByZWFkb25seSBlbmRwb2ludDogRTtcbiAgcmVhZG9ubHkgYXJnczogUGFyYW1ldGVyczxFPjtcbiAgcmVhZG9ubHkgcmVzcG9uc2U6XG4gICAgfCBSZXNvbHZlVHlwZTxFPlxuICAgIHwgKCguLi5hcmdzOiBQYXJhbWV0ZXJzPEU+KSA9PiBSZXNvbHZlVHlwZTxFPik7XG4gIHJlYWRvbmx5IGVycm9yPzogZmFsc2U7XG4gIC8qKiBOdW1iZXIgb2YgbWlsaXNlY29uZHMgdG8gd2FpdCBiZWZvcmUgcmVzb2x2aW5nICovXG4gIHJlYWRvbmx5IGRlbGF5PzogbnVtYmVyO1xuICAvKiogV2FpdHMgdG8gcnVuIGByZXNwb25zZSgpYCBhZnRlciBgZGVsYXlgIHRpbWUgKi9cbiAgcmVhZG9ubHkgZGVsYXlDb2xsYXBzZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzcG9uc2VJbnRlcmNlcHRvcjxcbiAgVCA9IGFueSxcbiAgRSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlICYge1xuICAgIHVwZGF0ZT86IFVwZGF0ZXI7XG4gICAgdGVzdEtleShrZXk6IHN0cmluZyk6IGJvb2xlYW47XG4gIH0gPSBFbmRwb2ludEludGVyZmFjZSAmIHsgdGVzdEtleShrZXk6IHN0cmluZyk6IGJvb2xlYW4gfSxcbj4ge1xuICByZWFkb25seSBlbmRwb2ludDogRTtcbiAgcmVzcG9uc2UodGhpczogVCwgLi4uYXJnczogUGFyYW1ldGVyczxFPik6IFJlc29sdmVUeXBlPEU+O1xuICAvKiogTnVtYmVyIG9mIG1pbGlzZWNvbmRzIChvciBmdW5jdGlvbiB0aGF0IHJldHVybnMpIHRvIHdhaXQgYmVmb3JlIHJlc29sdmluZyAqL1xuICByZWFkb25seSBkZWxheT86IG51bWJlciB8ICgoLi4uYXJnczogUGFyYW1ldGVyczxFPikgPT4gbnVtYmVyKTtcbiAgLyoqIFdhaXRzIHRvIHJ1biBgcmVzcG9uc2UoKWAgYWZ0ZXIgYGRlbGF5YCB0aW1lICovXG4gIHJlYWRvbmx5IGRlbGF5Q29sbGFwc2U/OiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBGZXRjaEludGVyY2VwdG9yPFxuICBUID0gYW55LFxuICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2UgJiB7XG4gICAgdXBkYXRlPzogVXBkYXRlcjtcbiAgICB0ZXN0S2V5KGtleTogc3RyaW5nKTogYm9vbGVhbjtcbiAgICBmZXRjaFJlc3BvbnNlKGlucHV0OiBSZXF1ZXN0SW5mbywgaW5pdDogUmVxdWVzdEluaXQpOiBQcm9taXNlPFJlc3BvbnNlPjtcbiAgICBleHRlbmQob3B0aW9uczogYW55KTogYW55O1xuICB9ID0gRW5kcG9pbnRJbnRlcmZhY2UgJiB7XG4gICAgdGVzdEtleShrZXk6IHN0cmluZyk6IGJvb2xlYW47XG4gICAgZmV0Y2hSZXNwb25zZShpbnB1dDogUmVxdWVzdEluZm8sIGluaXQ6IFJlcXVlc3RJbml0KTogUHJvbWlzZTxSZXNwb25zZT47XG4gICAgZXh0ZW5kKG9wdGlvbnM6IGFueSk6IGFueTtcbiAgfSxcbj4ge1xuICByZWFkb25seSBlbmRwb2ludDogRTtcbiAgZmV0Y2hSZXNwb25zZSh0aGlzOiBULCBpbnB1dDogUmVxdWVzdEluZm8sIGluaXQ6IFJlcXVlc3RJbml0KTogUmVzb2x2ZVR5cGU8RT47XG4gIC8qKiBOdW1iZXIgb2YgbWlsaXNlY29uZHMgKG9yIGZ1bmN0aW9uIHRoYXQgcmV0dXJucykgdG8gd2FpdCBiZWZvcmUgcmVzb2x2aW5nICovXG4gIHJlYWRvbmx5IGRlbGF5PzogbnVtYmVyIHwgKCguLi5hcmdzOiBQYXJhbWV0ZXJzPEU+KSA9PiBudW1iZXIpO1xuICAvKiogV2FpdHMgdG8gcnVuIGByZXNwb25zZSgpYCBhZnRlciBgZGVsYXlgIHRpbWUgKi9cbiAgcmVhZG9ubHkgZGVsYXlDb2xsYXBzZT86IGJvb2xlYW47XG59XG4vKiogSW50ZXJjZXB0b3JzIG1hdGNoIGFuZCBjb21wdXRlIGR5bmFtaWMgcmVzcG9uc2VzIGJhc2VkIG9uIGFyZ3NcbiAqXG4gKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9GaXh0dXJlcyNpbnRlcmNlcHRvclxuICovXG5leHBvcnQgdHlwZSBJbnRlcmNlcHRvcjxcbiAgVCA9IGFueSxcbiAgRSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlICYge1xuICAgIHVwZGF0ZT86IFVwZGF0ZXI7XG4gICAgdGVzdEtleShrZXk6IHN0cmluZyk6IGJvb2xlYW47XG4gICAgZmV0Y2hSZXNwb25zZT8oaW5wdXQ6IFJlcXVlc3RJbmZvLCBpbml0OiBSZXF1ZXN0SW5pdCk6IFByb21pc2U8UmVzcG9uc2U+O1xuICAgIGV4dGVuZD8ob3B0aW9uczogYW55KTogYW55O1xuICB9ID0gRW5kcG9pbnRJbnRlcmZhY2UgJiB7XG4gICAgdGVzdEtleShrZXk6IHN0cmluZyk6IGJvb2xlYW47XG4gICAgZmV0Y2hSZXNwb25zZShpbnB1dDogUmVxdWVzdEluZm8sIGluaXQ6IFJlcXVlc3RJbml0KTogUHJvbWlzZTxSZXNwb25zZT47XG4gICAgZXh0ZW5kKG9wdGlvbnM6IGFueSk6IGFueTtcbiAgfSxcbj4gPVxuICB8IFJlc3BvbnNlSW50ZXJjZXB0b3I8VCwgRT5cbiAgfCAoRSBleHRlbmRzIChcbiAgICAgIHtcbiAgICAgICAgZmV0Y2hSZXNwb25zZShpbnB1dDogUmVxdWVzdEluZm8sIGluaXQ6IFJlcXVlc3RJbml0KTogUHJvbWlzZTxSZXNwb25zZT47XG4gICAgICAgIGV4dGVuZChvcHRpb25zOiBhbnkpOiBhbnk7XG4gICAgICB9XG4gICAgKSA/XG4gICAgICBGZXRjaEludGVyY2VwdG9yPFQsIEU+XG4gICAgOiBuZXZlcik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JGaXh0dXJlRW5kcG9pbnQ8XG4gIEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZSAmIHsgdXBkYXRlPzogVXBkYXRlciB9ID0gRW5kcG9pbnRJbnRlcmZhY2UsXG4+IHtcbiAgcmVhZG9ubHkgZW5kcG9pbnQ6IEU7XG4gIHJlYWRvbmx5IGFyZ3M6IFBhcmFtZXRlcnM8RT47XG4gIHJlYWRvbmx5IHJlc3BvbnNlOiBhbnk7XG4gIHJlYWRvbmx5IGVycm9yOiB0cnVlO1xuICAvKiogTnVtYmVyIG9mIG1pbGlzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIHJlc29sdmluZyAqL1xuICByZWFkb25seSBkZWxheT86IG51bWJlcjtcbiAgLyoqIFdhaXRzIHRvIHJ1biBgcmVzcG9uc2UoKWAgYWZ0ZXIgYGRlbGF5YCB0aW1lICovXG4gIHJlYWRvbmx5IGRlbGF5Q29sbGFwc2U/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBGaXh0dXJlRW5kcG9pbnQ8XG4gIEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZSAmIHsgdXBkYXRlPzogVXBkYXRlciB9ID0gRW5kcG9pbnRJbnRlcmZhY2UsXG4+ID0gU3VjY2Vzc0ZpeHR1cmVFbmRwb2ludDxFPiB8IEVycm9yRml4dHVyZUVuZHBvaW50PEU+O1xuXG4vKiogUmVwcmVzZW50cyBhIHN1Y2Nlc3NmdWwgcmVzcG9uc2VcbiAqXG4gKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9GaXh0dXJlcyNzdWNjZXNzZml4dHVyZVxuICovXG5leHBvcnQgdHlwZSBTdWNjZXNzRml4dHVyZTxcbiAgRSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlICYgeyB1cGRhdGU/OiBVcGRhdGVyIH0gPSBFbmRwb2ludEludGVyZmFjZSxcbj4gPSBTdWNjZXNzRml4dHVyZUVuZHBvaW50PEU+O1xuLyoqIFJlcHJlc2VudHMgYSBmYWlsZWQvZXJyb3JlZCByZXNwb25zZVxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0ZpeHR1cmVzI2Vycm9yZml4dHVyZXNcbiAqL1xuZXhwb3J0IHR5cGUgRXJyb3JGaXh0dXJlPFxuICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2UgJiB7IHVwZGF0ZT86IFVwZGF0ZXIgfSA9IEVuZHBvaW50SW50ZXJmYWNlLFxuPiA9IEVycm9yRml4dHVyZUVuZHBvaW50PEU+O1xuLyoqIFJlcHJlc2VudHMgYSBzdGF0aWMgcmVzcG9uc2VcbiAqXG4gKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9GaXh0dXJlc1xuICovXG5leHBvcnQgdHlwZSBGaXh0dXJlPFxuICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2UgJiB7IHVwZGF0ZT86IFVwZGF0ZXIgfSA9IEVuZHBvaW50SW50ZXJmYWNlLFxuPiA9IEZpeHR1cmVFbmRwb2ludDxFPjtcbiJdLCJtYXBwaW5ncyI6IiIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1,7 @@
1
+ export { MockController } from './MockController.js';
2
+ export type { MockProps } from './mockTypes.js';
3
+ export type { Fixture, SuccessFixture, ErrorFixture, Interceptor, ResponseInterceptor, FetchInterceptor, FixtureEndpoint, SuccessFixtureEndpoint, ErrorFixtureEndpoint, } from './fixtureTypes.js';
4
+ export { collapseFixture } from './collapseFixture.js';
5
+ export { createFixtureMap } from './createFixtureMap.js';
6
+ export { default as mockInitialState } from './mockState.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mock/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,YAAY,EACV,OAAO,EACP,cAAc,EACd,YAAY,EACZ,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { MockController } from './MockController.js';
2
+ export { collapseFixture } from './collapseFixture.js';
3
+ export { createFixtureMap } from './createFixtureMap.js';
4
+ export { default as mockInitialState } from './mockState.js';
5
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNb2NrQ29udHJvbGxlciIsImNvbGxhcHNlRml4dHVyZSIsImNyZWF0ZUZpeHR1cmVNYXAiLCJkZWZhdWx0IiwibW9ja0luaXRpYWxTdGF0ZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2NrL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IE1vY2tDb250cm9sbGVyIH0gZnJvbSAnLi9Nb2NrQ29udHJvbGxlci5qcyc7XG5leHBvcnQgdHlwZSB7IE1vY2tQcm9wcyB9IGZyb20gJy4vbW9ja1R5cGVzLmpzJztcbmV4cG9ydCB0eXBlIHtcbiAgRml4dHVyZSxcbiAgU3VjY2Vzc0ZpeHR1cmUsXG4gIEVycm9yRml4dHVyZSxcbiAgSW50ZXJjZXB0b3IsXG4gIFJlc3BvbnNlSW50ZXJjZXB0b3IsXG4gIEZldGNoSW50ZXJjZXB0b3IsXG4gIEZpeHR1cmVFbmRwb2ludCxcbiAgU3VjY2Vzc0ZpeHR1cmVFbmRwb2ludCxcbiAgRXJyb3JGaXh0dXJlRW5kcG9pbnQsXG59IGZyb20gJy4vZml4dHVyZVR5cGVzLmpzJztcbmV4cG9ydCB7IGNvbGxhcHNlRml4dHVyZSB9IGZyb20gJy4vY29sbGFwc2VGaXh0dXJlLmpzJztcbmV4cG9ydCB7IGNyZWF0ZUZpeHR1cmVNYXAgfSBmcm9tICcuL2NyZWF0ZUZpeHR1cmVNYXAuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtb2NrSW5pdGlhbFN0YXRlIH0gZnJvbSAnLi9tb2NrU3RhdGUuanMnO1xuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxjQUFjLFFBQVEscUJBQXFCO0FBYXBELFNBQVNDLGVBQWUsUUFBUSxzQkFBc0I7QUFDdEQsU0FBU0MsZ0JBQWdCLFFBQVEsdUJBQXVCO0FBQ3hELFNBQVNDLE9BQU8sSUFBSUMsZ0JBQWdCLFFBQVEsZ0JBQWdCIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,4 @@
1
+ import { State } from '../index.js';
2
+ import type { Fixture } from './fixtureTypes.js';
3
+ export default function mockInitialState(fixtures?: Fixture[]): State<unknown>;
4
+ //# sourceMappingURL=mockState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockState.d.ts","sourceRoot":"","sources":["../../src/mock/mockState.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,EAKN,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAIjD,MAAM,CAAC,OAAO,UAAU,gBAAgB,CACtC,QAAQ,GAAE,OAAO,EAAO,GACvB,KAAK,CAAC,OAAO,CAAC,CAgBhB"}
@@ -0,0 +1,44 @@
1
+ import { Controller, createReducer, __INTERNAL__ } from '../index.js';
2
+ const {
3
+ initialState
4
+ } = __INTERNAL__;
5
+ export default function mockInitialState(fixtures = []) {
6
+ const actions = [];
7
+ const dispatch = action => {
8
+ actions.push(action);
9
+ return Promise.resolve();
10
+ };
11
+ const controller = new Controller({
12
+ dispatch
13
+ });
14
+ const reducer = createReducer(controller);
15
+ fixtures.forEach(fixture => {
16
+ dispatchFixture(fixture, fixture.args, controller);
17
+ });
18
+ return actions.reduce(reducer, initialState);
19
+ }
20
+ function dispatchFixture(fixture, args, controller, fetchedAt) {
21
+ // eslint-disable-next-line prefer-const
22
+ let {
23
+ endpoint
24
+ } = fixture;
25
+ const {
26
+ response,
27
+ error
28
+ } = fixture;
29
+ if (controller.resolve) {
30
+ controller.resolve(endpoint, {
31
+ args,
32
+ response,
33
+ error,
34
+ fetchedAt: fetchedAt != null ? fetchedAt : Date.now()
35
+ });
36
+ } else {
37
+ if (error === true) {
38
+ controller.setError(endpoint, ...args, response);
39
+ } else {
40
+ controller.setResponse(endpoint, ...args, response);
41
+ }
42
+ }
43
+ }
44
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb250cm9sbGVyIiwiY3JlYXRlUmVkdWNlciIsIl9fSU5URVJOQUxfXyIsImluaXRpYWxTdGF0ZSIsIm1vY2tJbml0aWFsU3RhdGUiLCJmaXh0dXJlcyIsImFjdGlvbnMiLCJkaXNwYXRjaCIsImFjdGlvbiIsInB1c2giLCJQcm9taXNlIiwicmVzb2x2ZSIsImNvbnRyb2xsZXIiLCJyZWR1Y2VyIiwiZm9yRWFjaCIsImZpeHR1cmUiLCJkaXNwYXRjaEZpeHR1cmUiLCJhcmdzIiwicmVkdWNlIiwiZmV0Y2hlZEF0IiwiZW5kcG9pbnQiLCJyZXNwb25zZSIsImVycm9yIiwiRGF0ZSIsIm5vdyIsInNldEVycm9yIiwic2V0UmVzcG9uc2UiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9jay9tb2NrU3RhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgU2V0QWN0aW9uLFxuICBTdGF0ZSxcbiAgQWN0aW9uVHlwZXMsXG4gIENvbnRyb2xsZXIsXG4gIGNyZWF0ZVJlZHVjZXIsXG4gIF9fSU5URVJOQUxfXyxcbn0gZnJvbSAnLi4vaW5kZXguanMnO1xuaW1wb3J0IHR5cGUgeyBGaXh0dXJlIH0gZnJvbSAnLi9maXh0dXJlVHlwZXMuanMnO1xuXG5jb25zdCB7IGluaXRpYWxTdGF0ZSB9ID0gX19JTlRFUk5BTF9fO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtb2NrSW5pdGlhbFN0YXRlKFxuICBmaXh0dXJlczogRml4dHVyZVtdID0gW10sXG4pOiBTdGF0ZTx1bmtub3duPiB7XG4gIGNvbnN0IGFjdGlvbnM6IFNldEFjdGlvbltdID0gW107XG4gIGNvbnN0IGRpc3BhdGNoID0gKGFjdGlvbjogYW55KSA9PiB7XG4gICAgYWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9O1xuICBjb25zdCBjb250cm9sbGVyID0gbmV3IENvbnRyb2xsZXIoeyBkaXNwYXRjaCB9KTtcbiAgY29uc3QgcmVkdWNlcjogKFxuICAgIHN0YXRlOiBTdGF0ZTx1bmtub3duPiB8IHVuZGVmaW5lZCxcbiAgICBhY3Rpb246IEFjdGlvblR5cGVzLFxuICApID0+IFN0YXRlPHVua25vd24+ID0gY3JlYXRlUmVkdWNlcihjb250cm9sbGVyKTtcblxuICBmaXh0dXJlcy5mb3JFYWNoKGZpeHR1cmUgPT4ge1xuICAgIGRpc3BhdGNoRml4dHVyZShmaXh0dXJlLCBmaXh0dXJlLmFyZ3MsIGNvbnRyb2xsZXIpO1xuICB9KTtcbiAgcmV0dXJuIGFjdGlvbnMucmVkdWNlKHJlZHVjZXIsIGluaXRpYWxTdGF0ZSk7XG59XG5cbmZ1bmN0aW9uIGRpc3BhdGNoRml4dHVyZShcbiAgZml4dHVyZTogRml4dHVyZSxcbiAgYXJnczogYW55W10sXG4gIGNvbnRyb2xsZXI6IENvbnRyb2xsZXIsXG4gIGZldGNoZWRBdD86IG51bWJlcixcbikge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gIGxldCB7IGVuZHBvaW50IH0gPSBmaXh0dXJlO1xuICBjb25zdCB7IHJlc3BvbnNlLCBlcnJvciB9ID0gZml4dHVyZTtcbiAgaWYgKGNvbnRyb2xsZXIucmVzb2x2ZSkge1xuICAgIGNvbnRyb2xsZXIucmVzb2x2ZShlbmRwb2ludCwge1xuICAgICAgYXJncyxcbiAgICAgIHJlc3BvbnNlLFxuICAgICAgZXJyb3IsXG4gICAgICBmZXRjaGVkQXQ6IGZldGNoZWRBdCA/PyBEYXRlLm5vdygpLFxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGlmIChlcnJvciA9PT0gdHJ1ZSkge1xuICAgICAgY29udHJvbGxlci5zZXRFcnJvcihlbmRwb2ludCwgLi4uYXJncywgcmVzcG9uc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250cm9sbGVyLnNldFJlc3BvbnNlKGVuZHBvaW50LCAuLi5hcmdzLCByZXNwb25zZSk7XG4gICAgfVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBSUVBLFVBQVUsRUFDVkMsYUFBYSxFQUNiQyxZQUFZLFFBQ1AsYUFBYTtBQUdwQixNQUFNO0VBQUVDO0FBQWEsQ0FBQyxHQUFHRCxZQUFZO0FBRXJDLGVBQWUsU0FBU0UsZ0JBQWdCQSxDQUN0Q0MsUUFBbUIsR0FBRyxFQUFFLEVBQ1I7RUFDaEIsTUFBTUMsT0FBb0IsR0FBRyxFQUFFO0VBQy9CLE1BQU1DLFFBQVEsR0FBSUMsTUFBVyxJQUFLO0lBQ2hDRixPQUFPLENBQUNHLElBQUksQ0FBQ0QsTUFBTSxDQUFDO0lBQ3BCLE9BQU9FLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLENBQUM7RUFDMUIsQ0FBQztFQUNELE1BQU1DLFVBQVUsR0FBRyxJQUFJWixVQUFVLENBQUM7SUFBRU87RUFBUyxDQUFDLENBQUM7RUFDL0MsTUFBTU0sT0FHYSxHQUFHWixhQUFhLENBQUNXLFVBQVUsQ0FBQztFQUUvQ1AsUUFBUSxDQUFDUyxPQUFPLENBQUNDLE9BQU8sSUFBSTtJQUMxQkMsZUFBZSxDQUFDRCxPQUFPLEVBQUVBLE9BQU8sQ0FBQ0UsSUFBSSxFQUFFTCxVQUFVLENBQUM7RUFDcEQsQ0FBQyxDQUFDO0VBQ0YsT0FBT04sT0FBTyxDQUFDWSxNQUFNLENBQUNMLE9BQU8sRUFBRVYsWUFBWSxDQUFDO0FBQzlDO0FBRUEsU0FBU2EsZUFBZUEsQ0FDdEJELE9BQWdCLEVBQ2hCRSxJQUFXLEVBQ1hMLFVBQXNCLEVBQ3RCTyxTQUFrQixFQUNsQjtFQUNBO0VBQ0EsSUFBSTtJQUFFQztFQUFTLENBQUMsR0FBR0wsT0FBTztFQUMxQixNQUFNO0lBQUVNLFFBQVE7SUFBRUM7RUFBTSxDQUFDLEdBQUdQLE9BQU87RUFDbkMsSUFBSUgsVUFBVSxDQUFDRCxPQUFPLEVBQUU7SUFDdEJDLFVBQVUsQ0FBQ0QsT0FBTyxDQUFDUyxRQUFRLEVBQUU7TUFDM0JILElBQUk7TUFDSkksUUFBUTtNQUNSQyxLQUFLO01BQ0xILFNBQVMsRUFBRUEsU0FBUyxXQUFUQSxTQUFTLEdBQUlJLElBQUksQ0FBQ0MsR0FBRyxDQUFDO0lBQ25DLENBQUMsQ0FBQztFQUNKLENBQUMsTUFBTTtJQUNMLElBQUlGLEtBQUssS0FBSyxJQUFJLEVBQUU7TUFDbEJWLFVBQVUsQ0FBQ2EsUUFBUSxDQUFDTCxRQUFRLEVBQUUsR0FBR0gsSUFBSSxFQUFFSSxRQUFRLENBQUM7SUFDbEQsQ0FBQyxNQUFNO01BQ0xULFVBQVUsQ0FBQ2MsV0FBVyxDQUFDTixRQUFRLEVBQUUsR0FBR0gsSUFBSSxFQUFFSSxRQUFRLENBQUM7SUFDckQ7RUFDRjtBQUNGIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,6 @@
1
+ import type { Fixture, Interceptor } from './fixtureTypes.js';
2
+ export interface MockProps<T = any> {
3
+ readonly fixtures?: (Fixture | Interceptor<T>)[];
4
+ getInitialInterceptorData?: () => T;
5
+ }
6
+ //# sourceMappingURL=mockTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockTypes.d.ts","sourceRoot":"","sources":["../../src/mock/mockTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE9D,MAAM,WAAW,SAAS,CAAC,CAAC,GAAG,GAAG;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,yBAAyB,CAAC,EAAE,MAAM,CAAC,CAAC;CACrC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vY2svbW9ja1R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRml4dHVyZSwgSW50ZXJjZXB0b3IgfSBmcm9tICcuL2ZpeHR1cmVUeXBlcy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9ja1Byb3BzPFQgPSBhbnk+IHtcbiAgcmVhZG9ubHkgZml4dHVyZXM/OiAoRml4dHVyZSB8IEludGVyY2VwdG9yPFQ+KVtdO1xuICBnZXRJbml0aWFsSW50ZXJjZXB0b3JEYXRhPzogKCkgPT4gVDtcbn1cbiJdLCJtYXBwaW5ncyI6IiIsImlnbm9yZUxpc3QiOltdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@data-client/core",
3
- "version": "0.15.0-beta-20251006024044-92bd01c4976f2921993b8c9f1e4dbb87af87ba7b",
3
+ "version": "0.15.0",
4
4
  "description": "Async State Management without the Management. REST, GraphQL, SSE, Websockets, Fetch",
5
5
  "sideEffects": false,
6
6
  "main": "dist/index.js",
@@ -16,6 +16,9 @@
16
16
  "next": [
17
17
  "lib/next/index.d.ts"
18
18
  ],
19
+ "mock": [
20
+ "lib/mock/index.d.ts"
21
+ ],
19
22
  "*": [
20
23
  "lib/index.d.ts"
21
24
  ]
@@ -27,6 +30,9 @@
27
30
  "next": [
28
31
  "ts3.4/next/index.d.ts"
29
32
  ],
33
+ "mock": [
34
+ "ts3.4/mock/index.d.ts"
35
+ ],
30
36
  "*": [
31
37
  "ts3.4/index.d.ts"
32
38
  ]
@@ -48,6 +54,10 @@
48
54
  "react-native": "./lib/next/index.js",
49
55
  "default": "./lib/next/index.js"
50
56
  },
57
+ "./mock": {
58
+ "types": "./lib/mock/index.d.ts",
59
+ "default": "./lib/mock/index.js"
60
+ },
51
61
  "./package.json": "./package.json"
52
62
  },
53
63
  "type": "module",
@@ -125,14 +135,14 @@
125
135
  },
126
136
  "dependencies": {
127
137
  "@babel/runtime": "^7.20.0",
128
- "@data-client/normalizr": "0.15.0-beta-20251006024044-92bd01c4976f2921993b8c9f1e4dbb87af87ba7b",
138
+ "@data-client/normalizr": "^0.15.0",
129
139
  "flux-standard-action": "^2.1.1"
130
140
  },
131
141
  "devDependencies": {
132
142
  "@anansi/browserslist-config": "^1.4.2",
133
- "@data-client/endpoint": "workspace:*",
143
+ "@data-client/endpoint": "0.15.0",
134
144
  "@types/jest": "30.0.0",
135
- "@types/node": "^22.0.0",
136
- "rollup-plugins": "workspace:*"
145
+ "@types/node": "^24.0.0",
146
+ "rollup-plugins": "1.0.0"
137
147
  }
138
- }
148
+ }
@@ -33,8 +33,7 @@ export interface SubscriptionConstructable {
33
33
  */
34
34
  export default class SubscriptionManager<
35
35
  S extends SubscriptionConstructable = SubscriptionConstructable,
36
- > implements Manager<Actions>
37
- {
36
+ > implements Manager<Actions> {
38
37
  protected subscriptions: {
39
38
  [key: string]: InstanceType<S>;
40
39
  } = {};
@@ -5,8 +5,9 @@ export type Dispatch<Actions = ActionTypes> = (value: Actions) => Promise<void>;
5
5
 
6
6
  export interface MiddlewareAPI extends Controller<Dispatch<ActionTypes>> {}
7
7
 
8
- export interface MiddlewareController<Actions = ActionTypes>
9
- extends Controller<Dispatch<Actions>> {}
8
+ export interface MiddlewareController<Actions = ActionTypes> extends Controller<
9
+ Dispatch<Actions>
10
+ > {}
10
11
 
11
12
  /** @see https://dataclient.io/docs/api/Manager#middleware */
12
13
  export type Middleware<Actions = ActionTypes> = <