@constantant/openapi-resource-mocks 0.4.0 → 0.5.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.
- package/CHANGELOG.md +11 -0
- package/package.json +1 -1
- package/src/index.d.ts +1 -1
- package/src/lib/mock-resource-bus.d.ts +3 -0
- package/src/lib/mock-resource-bus.js +30 -4
- package/src/lib/mock-resource-bus.js.map +1 -1
- package/src/lib/mock-resource-ref.d.ts +1 -0
- package/src/lib/mock-resource-ref.js +12 -1
- package/src/lib/mock-resource-ref.js.map +1 -1
- package/src/lib/provide-mock-resource.d.ts +5 -1
- package/src/lib/provide-mock-resource.js +6 -4
- package/src/lib/provide-mock-resource.js.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
## 0.5.0 (2026-06-14)
|
|
2
|
+
|
|
3
|
+
### 🚀 Features
|
|
4
|
+
|
|
5
|
+
- **openapi-resource-mocks:** reload status, event fixes, clearHistory, requestCount, keyDiscriminator ([6adfd13](https://github.com/constantant/angular-openapi-gen/commit/6adfd13))
|
|
6
|
+
|
|
7
|
+
### ❤️ Thank You
|
|
8
|
+
|
|
9
|
+
- Claude Sonnet 4.6
|
|
10
|
+
- kk
|
|
11
|
+
|
|
1
12
|
## 0.4.0 (2026-06-13)
|
|
2
13
|
|
|
3
14
|
### 🩹 Fixes
|
package/package.json
CHANGED
package/src/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export type { MockResourceRef, MockResourceRefInternal, MockResourceState } from
|
|
|
3
3
|
export { MockResourceBus, provideMockResourceBus } from './lib/mock-resource-bus';
|
|
4
4
|
export type { WindowMockEntry } from './lib/mock-resource-bus';
|
|
5
5
|
export { provideMockResource } from './lib/provide-mock-resource';
|
|
6
|
-
export type { ProviderInitialBehavior, DeepPartial } from './lib/provide-mock-resource';
|
|
6
|
+
export type { ProviderInitialBehavior, DeepPartial, MockProviderOptions } from './lib/provide-mock-resource';
|
|
7
7
|
export type { MockResourceMeta } from './lib/mock-resource-meta';
|
|
8
8
|
export { injectMockResource } from './lib/inject-mock-resource';
|
|
9
9
|
export type { MockEvent, MockProgress } from './lib/mock-events';
|
|
@@ -8,6 +8,7 @@ export interface WindowMockEntry {
|
|
|
8
8
|
setLoading(): void;
|
|
9
9
|
fail(error: unknown): void;
|
|
10
10
|
reset(): void;
|
|
11
|
+
reload(): boolean;
|
|
11
12
|
setProgress(type: 'upload' | 'download', loaded: number, total?: number): void;
|
|
12
13
|
simulateProgress(type: 'upload' | 'download', totalBytes: number, durationMs: number, finalValue: unknown, steps?: number): void;
|
|
13
14
|
setCatchMode(enabled: boolean): void;
|
|
@@ -16,9 +17,11 @@ export interface WindowMockEntry {
|
|
|
16
17
|
value: unknown;
|
|
17
18
|
error: unknown;
|
|
18
19
|
progress: unknown;
|
|
20
|
+
requestCount: number;
|
|
19
21
|
};
|
|
20
22
|
getMeta(): MockResourceMeta | undefined;
|
|
21
23
|
getHistory(): MockEvent[];
|
|
24
|
+
clearHistory(): void;
|
|
22
25
|
onEvent(cb: (event: MockEvent) => void): () => void;
|
|
23
26
|
}
|
|
24
27
|
declare global {
|
|
@@ -61,16 +61,34 @@ class MockResourceBus {
|
|
|
61
61
|
});
|
|
62
62
|
window.__openApiMocks__[key] = {
|
|
63
63
|
resolve: (v) => { ref.resolve(v); emit({ type: 'resolve', value: v, ts: Date.now() }); },
|
|
64
|
-
resolveAfter: (ms, v) => {
|
|
64
|
+
resolveAfter: (ms, v) => {
|
|
65
|
+
ref.setLoading();
|
|
66
|
+
emit({ type: 'loading', ts: Date.now() });
|
|
67
|
+
setTimeout(() => { ref.resolve(v); emit({ type: 'resolve', value: v, ts: Date.now() }); }, ms);
|
|
68
|
+
},
|
|
65
69
|
setLoading: () => { ref.setLoading(); emit({ type: 'loading', ts: Date.now() }); },
|
|
66
70
|
fail: (e) => { ref.fail(e); emit({ type: 'error', error: e, ts: Date.now() }); },
|
|
67
71
|
reset: () => { ref.reset(); emit({ type: 'reset', ts: Date.now() }); },
|
|
72
|
+
reload: () => ref.reload(),
|
|
68
73
|
setProgress: (pt, l, t) => {
|
|
69
74
|
ref.setProgress(pt, l, t);
|
|
70
75
|
emit({ type: 'progress', progressType: pt, loaded: l, total: t, ts: Date.now() });
|
|
71
76
|
},
|
|
72
|
-
simulateProgress: (pt, total, dur, v, steps) => {
|
|
73
|
-
ref.
|
|
77
|
+
simulateProgress: (pt, total, dur, v, steps = 10) => {
|
|
78
|
+
ref.setLoading();
|
|
79
|
+
emit({ type: 'loading', ts: Date.now() });
|
|
80
|
+
const stepDelay = dur / steps;
|
|
81
|
+
for (let i = 1; i <= steps; i++) {
|
|
82
|
+
setTimeout(() => {
|
|
83
|
+
const loaded = Math.round((total / steps) * i);
|
|
84
|
+
ref.setProgress(pt, loaded, total);
|
|
85
|
+
emit({ type: 'progress', progressType: pt, loaded, total, ts: Date.now() });
|
|
86
|
+
}, stepDelay * i);
|
|
87
|
+
}
|
|
88
|
+
setTimeout(() => {
|
|
89
|
+
ref.resolve(v);
|
|
90
|
+
emit({ type: 'resolve', value: v, ts: Date.now() });
|
|
91
|
+
}, dur + stepDelay);
|
|
74
92
|
},
|
|
75
93
|
setCatchMode: (enabled) => this.setCatchMode(key, enabled),
|
|
76
94
|
getMeta: () => this.getMeta(key),
|
|
@@ -79,8 +97,10 @@ class MockResourceBus {
|
|
|
79
97
|
value: ref.value(),
|
|
80
98
|
error: ref.error(),
|
|
81
99
|
progress: ref.progress(),
|
|
100
|
+
requestCount: ref.requestCount(),
|
|
82
101
|
}),
|
|
83
102
|
getHistory: () => [...history],
|
|
103
|
+
clearHistory: () => { history.length = 0; },
|
|
84
104
|
onEvent: (cb) => { listeners.add(cb); return () => listeners.delete(cb); },
|
|
85
105
|
};
|
|
86
106
|
}
|
|
@@ -119,6 +139,9 @@ class MockResourceBus {
|
|
|
119
139
|
case 'clearCatchMode':
|
|
120
140
|
this.setCatchMode(detail.key, false);
|
|
121
141
|
return;
|
|
142
|
+
case 'clearHistory':
|
|
143
|
+
window.__openApiMocks__?.[detail.key]?.clearHistory();
|
|
144
|
+
return;
|
|
122
145
|
}
|
|
123
146
|
if (!ref)
|
|
124
147
|
return;
|
|
@@ -135,6 +158,9 @@ class MockResourceBus {
|
|
|
135
158
|
case 'fail':
|
|
136
159
|
ref.fail(detail.value);
|
|
137
160
|
break;
|
|
161
|
+
case 'reload':
|
|
162
|
+
ref.reload();
|
|
163
|
+
break;
|
|
138
164
|
case 'reset': {
|
|
139
165
|
ref.reset();
|
|
140
166
|
// If catch mode is still on, immediately re-intercept the resource.
|
|
@@ -150,7 +176,7 @@ class MockResourceBus {
|
|
|
150
176
|
ref.setProgress(detail.progressType, detail.loaded, detail.total);
|
|
151
177
|
break;
|
|
152
178
|
case 'simulateProgress':
|
|
153
|
-
|
|
179
|
+
window.__openApiMocks__?.[detail.key]?.simulateProgress(detail.progressType, detail.total, detail.delayMs ?? 1000, detail.value, detail.steps);
|
|
154
180
|
break;
|
|
155
181
|
}
|
|
156
182
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-resource-bus.js","sourceRoot":"","sources":["../../../../../tools/openapi-resource-mocks/src/lib/mock-resource-bus.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"mock-resource-bus.js","sourceRoot":"","sources":["../../../../../tools/openapi-resource-mocks/src/lib/mock-resource-bus.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,7 @@ export interface MockResourceRef<T> {
|
|
|
14
14
|
readonly error: Signal<unknown>;
|
|
15
15
|
readonly isLoading: Signal<boolean>;
|
|
16
16
|
readonly progress: Signal<MockProgress | undefined>;
|
|
17
|
+
readonly requestCount: Signal<number>;
|
|
17
18
|
hasValue(): boolean;
|
|
18
19
|
reload(): boolean;
|
|
19
20
|
destroy(): void;
|
|
@@ -7,6 +7,7 @@ function createMockResourceRef(initialState) {
|
|
|
7
7
|
const _value = (0, core_1.signal)(undefined);
|
|
8
8
|
const _error = (0, core_1.signal)(undefined);
|
|
9
9
|
const _progress = (0, core_1.signal)(undefined);
|
|
10
|
+
const _requestCount = (0, core_1.signal)(0);
|
|
10
11
|
const requestListeners = new Set();
|
|
11
12
|
if (initialState) {
|
|
12
13
|
if ('value' in initialState) {
|
|
@@ -26,6 +27,7 @@ function createMockResourceRef(initialState) {
|
|
|
26
27
|
status: _status.asReadonly(),
|
|
27
28
|
error: _error.asReadonly(),
|
|
28
29
|
progress: _progress.asReadonly(),
|
|
30
|
+
requestCount: _requestCount.asReadonly(),
|
|
29
31
|
isLoading: (0, core_1.computed)(() => _status() === 'loading' || _status() === 'reloading'),
|
|
30
32
|
hasValue: () => _value() !== undefined,
|
|
31
33
|
resolve(v) {
|
|
@@ -75,7 +77,15 @@ function createMockResourceRef(initialState) {
|
|
|
75
77
|
}
|
|
76
78
|
setTimeout(() => ref.resolve(finalValue), durationMs + stepDelay);
|
|
77
79
|
},
|
|
78
|
-
reload: () =>
|
|
80
|
+
reload: () => {
|
|
81
|
+
const cur = _status();
|
|
82
|
+
if (cur !== 'resolved' && cur !== 'local')
|
|
83
|
+
return false;
|
|
84
|
+
_error.set(undefined);
|
|
85
|
+
_status.set('reloading'); // value intentionally kept
|
|
86
|
+
ref._notifyRequest([]); // fires bus onRequest → 'request' event + catch mode
|
|
87
|
+
return true;
|
|
88
|
+
},
|
|
79
89
|
destroy: () => { },
|
|
80
90
|
asReadonly: () => ref,
|
|
81
91
|
onRequest: (cb) => {
|
|
@@ -83,6 +93,7 @@ function createMockResourceRef(initialState) {
|
|
|
83
93
|
return () => requestListeners.delete(cb);
|
|
84
94
|
},
|
|
85
95
|
_notifyRequest: (rawArgs) => {
|
|
96
|
+
_requestCount.update((n) => n + 1);
|
|
86
97
|
const args = rawArgs.map((arg) => typeof arg === 'function' ? arg() : arg);
|
|
87
98
|
requestListeners.forEach((cb) => cb(args));
|
|
88
99
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-resource-ref.js","sourceRoot":"","sources":["../../../../../tools/openapi-resource-mocks/src/lib/mock-resource-ref.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"mock-resource-ref.js","sourceRoot":"","sources":["../../../../../tools/openapi-resource-mocks/src/lib/mock-resource-ref.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,4 +13,8 @@ export type ProviderInitialBehavior<T> = {
|
|
|
13
13
|
error: unknown;
|
|
14
14
|
delay?: number;
|
|
15
15
|
};
|
|
16
|
-
export
|
|
16
|
+
export interface MockProviderOptions {
|
|
17
|
+
/** Called inside the injection context to produce a suffix appended to the bus key as `key:suffix`. */
|
|
18
|
+
keyDiscriminator?: () => string;
|
|
19
|
+
}
|
|
20
|
+
export declare function provideMockResource<T>(token: InjectionToken<(...args: unknown[]) => ReturnType<typeof httpResource<T>>>, key: string, initialBehavior?: ProviderInitialBehavior<T>, meta?: MockResourceMeta, options?: MockProviderOptions): FactoryProvider;
|
|
@@ -26,14 +26,16 @@ function applyBehavior(ref, behavior) {
|
|
|
26
26
|
ref.setLoading();
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
function provideMockResource(token, key, initialBehavior, meta) {
|
|
29
|
+
function provideMockResource(token, key, initialBehavior, meta, options) {
|
|
30
30
|
return {
|
|
31
31
|
provide: token,
|
|
32
32
|
useFactory: () => {
|
|
33
33
|
const bus = (0, core_1.inject)(mock_resource_bus_1.MockResourceBus);
|
|
34
|
+
const discriminator = options?.keyDiscriminator;
|
|
34
35
|
return (...args) => {
|
|
36
|
+
const effectiveKey = discriminator ? `${key}:${discriminator()}` : key;
|
|
35
37
|
const ref = (0, mock_resource_ref_1.createMockResourceRef)();
|
|
36
|
-
bus.register(
|
|
38
|
+
bus.register(effectiveKey, ref, meta);
|
|
37
39
|
const internal = ref;
|
|
38
40
|
// untracked() prevents thunk signal-reads from leaking into the outer reactive
|
|
39
41
|
// context — component field initializers run during Angular change detection.
|
|
@@ -41,7 +43,7 @@ function provideMockResource(token, key, initialBehavior, meta) {
|
|
|
41
43
|
internal._notifyRequest(args);
|
|
42
44
|
// Skip initialBehavior when the bus caught the request: catch mode takes
|
|
43
45
|
// precedence and the response must come from the DevTools panel.
|
|
44
|
-
if (initialBehavior && !bus.isCatchMode(
|
|
46
|
+
if (initialBehavior && !bus.isCatchMode(effectiveKey))
|
|
45
47
|
applyBehavior(ref, initialBehavior);
|
|
46
48
|
});
|
|
47
49
|
// When any arg is a reactive thunk, track signal changes so each new set of
|
|
@@ -59,7 +61,7 @@ function provideMockResource(token, key, initialBehavior, meta) {
|
|
|
59
61
|
return;
|
|
60
62
|
} // first run already handled above
|
|
61
63
|
internal._notifyRequest(resolved);
|
|
62
|
-
if (initialBehavior && !bus.isCatchMode(
|
|
64
|
+
if (initialBehavior && !bus.isCatchMode(effectiveKey))
|
|
63
65
|
applyBehavior(ref, initialBehavior);
|
|
64
66
|
});
|
|
65
67
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provide-mock-resource.js","sourceRoot":"","sources":["../../../../../tools/openapi-resource-mocks/src/lib/provide-mock-resource.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"provide-mock-resource.js","sourceRoot":"","sources":["../../../../../tools/openapi-resource-mocks/src/lib/provide-mock-resource.ts"],"names":[],"mappings":"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"}
|