@granito/vitest-marbles 1.0.0-dev.3 → 1.0.0-dev.5

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/README.md CHANGED
@@ -12,7 +12,7 @@ clean way.
12
12
  # Features
13
13
 
14
14
  * Typescript;
15
- * marblized error messages.
15
+ * easy to read error messages for subscriptions.
16
16
 
17
17
  # Prerequisites
18
18
 
@@ -23,7 +23,8 @@ clean way.
23
23
 
24
24
  # Not supported
25
25
 
26
- * time progression syntax.
26
+ * time progression syntax;
27
+ * `.not` syntax.
27
28
 
28
29
  # Usage
29
30
 
package/index.d.ts CHANGED
@@ -1,3 +1,2 @@
1
1
  export * from './lib/marbles';
2
- export * from './lib/rxjs/scheduler';
3
- //# sourceMappingURL=index.d.ts.map
2
+ export * from './lib/matchers';
package/index.js CHANGED
@@ -1,37 +1,187 @@
1
- import{Observable as H}from"rxjs";import{TestScheduler as B}from"rxjs/testing";var p=class{constructor(t){this.start=t}marbles="";get end(){return this.start+this.marbles.length}};var f={},d={N:f,C:"|",E:"#"};var h=10,c=class e{static marblize(t){let s=e.getNotificationEvents(t),r="";for(let i=0,o=0;i<s.length;o=s[i].end,i++)r=`${r}${"-".repeat(s[i].start-o)+s[i].marbles}`;return r}static marblizeSubscriptions(t){return t.map(s=>this.marblizeLogEntry(s.subscribedFrame/h,"^")+this.marblizeLogEntry((s.unsubscribedFrame-s.subscribedFrame)/h-1,"!"))}static marblizeLogEntry(t,s){return t!==1/0?"-".repeat(t)+s:""}static getNotificationEvents(t){let s=t.reduce((i,o)=>{i[o.frame]||(i[o.frame]=new p(o.frame/h));let a=i[o.frame];return a.marbles+=e.extractMarble(o),i},{}),r=Object.keys(s).map(i=>s[Number(i)]);return e.encloseGroupEvents(r),r}static extractMarble(t){let s=d[t.notification.kind];return s===f&&(s=t.notification.value),s}static encloseGroupEvents(t){t.forEach(s=>{s.marbles.length>1&&(s.marbles=`(${s.marbles})`)})}};var x={toBeNotifications(e,t){let s=e,r=t;E(e,t)&&(s=c.marblize(e),r=c.marblize(t));let i=this.equals(s,r);return{pass:i,message:i?()=>this.utils.matcherHint(".not.toBeNotifications")+`
1
+ // src/lib/scheduler.ts
2
+ import { TestScheduler } from "rxjs/testing";
2
3
 
3
- Expected notifications to not be:
4
- ${this.utils.printExpected(r)}
5
- But got:
6
- ${this.utils.printReceived(s)}`:()=>{let a=this.utils.diff(r,s,{expand:!0});return this.utils.matcherHint(".toBeNotifications")+`
4
+ // src/lib/marblizer.ts
5
+ var frameStep = 10;
6
+ function marblize(logs) {
7
+ return logs.map(
8
+ (log) => marblizeLogEntry(log.subscribedFrame / frameStep, "^" /* Subscription */) + marblizeLogEntry(
9
+ (log.unsubscribedFrame - log.subscribedFrame) / frameStep - 1,
10
+ "!" /* Unsubscription */
11
+ )
12
+ );
13
+ }
14
+ function marblizeLogEntry(logPoint, symbol) {
15
+ return logPoint !== Infinity ? "-" /* TimeFrame */.repeat(logPoint) + symbol : "";
16
+ }
17
+
18
+ // src/lib/internal-matchers.ts
19
+ var internalMatchers = {
20
+ toBeNotifications(actual, expected) {
21
+ let message = "";
22
+ const pass = this.equals(actual, expected);
23
+ if (!pass) {
24
+ const diff = this.utils.diff(expected, actual, { expand: true });
25
+ message = this.utils.matcherHint(".toBeNotifications") + `
7
26
 
8
27
  Expected notifications to be:
9
- ${this.utils.printExpected(r)}
28
+ ${this.utils.printExpected(expected)}
10
29
  But got:
11
- ${this.utils.printReceived(s)}`+(a?`
30
+ ${this.utils.printReceived(actual)}
12
31
 
13
32
  Difference:
14
33
 
15
- ${a}`:"")}}},toBeSubscriptions(e,t){let s=c.marblizeSubscriptions(e),r=c.marblizeSubscriptions(t),i=M(s,r);return{pass:i,message:i?()=>this.utils.matcherHint(".not.toHaveSubscriptions")+`
16
-
17
- Expected observable to not have the following subscription points:
18
- ${this.utils.printExpected(r)}
19
- But got:
20
- ${this.utils.printReceived(s)}`:()=>{let a=this.utils.diff(r,s,{expand:!0});return this.utils.matcherHint(".toHaveSubscriptions")+`
34
+ ${diff}`;
35
+ }
36
+ return {
37
+ pass,
38
+ message: () => message
39
+ };
40
+ },
41
+ toBeSubscriptions(actualSubs, expectedSubs) {
42
+ const actual = marblize(actualSubs);
43
+ const expected = marblize(expectedSubs);
44
+ const pass = subscriptionsPass(actual, expected);
45
+ let message = "";
46
+ if (!pass) {
47
+ const diff = this.utils.diff(expected, actual, { expand: true });
48
+ message = this.utils.matcherHint(".toHaveSubscriptions") + `
21
49
 
22
50
  Expected observable to have the following subscription points:
23
- ${this.utils.printExpected(r)}
51
+ ${this.utils.printExpected(expected)}
24
52
  But got:
25
- ${this.utils.printReceived(s)}`+(a?`
53
+ ${this.utils.printReceived(actual)}
26
54
 
27
55
  Difference:
28
56
 
29
- ${a}`:"")}}},toHaveEmptySubscriptions(e){let t=!(e&&e.length>0),s;return e&&e.length>0&&(s=c.marblizeSubscriptions(e)),{pass:t,message:t?()=>this.utils.matcherHint(".not.toHaveNoSubscriptions")+`
30
-
31
- Expected observable to have at least one subscription point, but got nothing`+this.utils.printReceived(""):()=>this.utils.matcherHint(".toHaveNoSubscriptions")+`
57
+ ${diff}`;
58
+ }
59
+ return {
60
+ pass,
61
+ message: () => message
62
+ };
63
+ },
64
+ toHaveEmptySubscriptions(actual) {
65
+ const pass = !(actual && actual.length > 0);
66
+ let message = "";
67
+ if (!pass)
68
+ message = this.utils.matcherHint(".toHaveNoSubscriptions") + `
32
69
 
33
70
  Expected observable to have no subscription points
34
71
  But got:
35
- ${this.utils.printReceived(s)}
72
+ ${this.utils.printReceived(marblize(actual))}
73
+
74
+ `;
75
+ return {
76
+ pass,
77
+ message: () => message
78
+ };
79
+ }
80
+ };
81
+ expect.extend(internalMatchers);
82
+ function subscriptionsPass(actualMarbleArray, expectedMarbleArray) {
83
+ if (actualMarbleArray.length !== expectedMarbleArray.length)
84
+ return false;
85
+ for (const actualMarble of actualMarbleArray)
86
+ if (!expectedMarbleArray.includes(actualMarble))
87
+ return false;
88
+ return true;
89
+ }
90
+
91
+ // src/lib/assert-deep-equal.ts
92
+ function assertDeepEqual(actual, expected) {
93
+ if (!expected)
94
+ return;
95
+ if (actualIsSubscriptionsAndExpectedIsEmpty(actual, expected))
96
+ expect(actual).toHaveEmptySubscriptions();
97
+ else if (expectedIsSubscriptionLogArray(actual, expected))
98
+ expect(actual).toBeSubscriptions(expected);
99
+ else
100
+ expect(actual).toBeNotifications(expected);
101
+ }
102
+ function actualIsSubscriptionsAndExpectedIsEmpty(actual, expected) {
103
+ return expected.length === 0 && actual.length !== 0 && actual[0].subscribedFrame !== void 0;
104
+ }
105
+ function expectedIsSubscriptionLogArray(actual, expected) {
106
+ return actual.length === 0 && expected.length === 0 || expected.length !== 0 && expected[0].subscribedFrame !== void 0;
107
+ }
108
+
109
+ // src/lib/scheduler.ts
110
+ var Scheduler = class _Scheduler {
111
+ static instance;
112
+ static init() {
113
+ _Scheduler.instance = new TestScheduler(assertDeepEqual);
114
+ }
115
+ static get() {
116
+ if (!_Scheduler.instance)
117
+ throw new Error("Scheduler is not initialized");
118
+ return _Scheduler.instance;
119
+ }
120
+ static reset() {
121
+ _Scheduler.instance = null;
122
+ }
123
+ };
124
+
125
+ // src/lib/marbles.ts
126
+ function cold(marbles, values, error) {
127
+ return Scheduler.get().createColdObservable(marbles.trim(), values, error);
128
+ }
129
+ function hot(marbles, values, error) {
130
+ return Scheduler.get().createHotObservable(marbles.trim(), values, error);
131
+ }
132
+ function time(marbles) {
133
+ return Scheduler.get().createTime(marbles.trim());
134
+ }
135
+ function schedule(work, delay) {
136
+ return Scheduler.get().schedule(work, delay);
137
+ }
36
138
 
37
- `}}};expect.extend(x);function E(...e){return e.every(O)}function O(e){return e.every(({notification:t})=>t.kind==="C"||t.kind==="E"&&t.error==="error"||t.kind==="N"&&T(t.value))}function T(e){return typeof e=="string"&&e.length===1||e!==void 0&&JSON.stringify(e).length===1}function M(e,t){if(e.length!==t.length)return!1;let s=!0;for(let r of e)if(!t.includes(r)){s=!1;break}return s}function y(e,t){return e.length===0&&t.length===0||t.length!==0&&t[0].subscribedFrame!==void 0}function R(e,t){return t.length===0&&e.length!==0&&e[0].subscribedFrame!==void 0}function S(e,t){t&&(R(e,t)?expect(e).toHaveEmptySubscriptions():y(e,t)?expect(e).toBeSubscriptions(t):expect(e).toBeNotifications(t))}var n=class e{static instance;static init(){e.instance=new B(S)}static get(){if(e.instance)return e.instance;throw new Error("Scheduler is not initialized")}static reset(){e.instance=null}static materializeInnerObservable(t,s){return e.get().materializeInnerObservable(t,s)}};var l=class extends H{constructor(s,r,i){super();this.marbles=s;this.values=r;this.error=i;this.source=n.get().createColdObservable(s,r,i)}source;getSubscriptions(){return this.source.subscriptions}};import{Observable as L}from"rxjs";var m=class extends L{constructor(s,r,i){super();this.marbles=s;this.values=r;this.error=i;this.source=n.get().createHotObservable(s,r,i)}source;getSubscriptions(){return this.source.subscriptions}};function u(e){return e.replace(/^ +/,"")}import{TestScheduler as N}from"rxjs/testing";function ie(e,t,s){return new m(u(e),t,s)}function ne(e,t,s){return new l(u(e),t,s)}function oe(e){return n.get().createTime(u(e))}function ce(e,t){return n.get().schedule(e,t)}var b={message:()=>"",pass:!0};expect.extend({toHaveSubscriptions(e,t){let s=Array.isArray(t)?t.map(u):u(t);return n.get().expectSubscriptions(e.getSubscriptions()).toBe(s),b},toHaveNoSubscriptions(e){return n.get().expectSubscriptions(e.getSubscriptions()).toBe([]),b},toBeObservable(e,t){return n.get().expectObservable(e).toBe(t.marbles,t.values,t.error),b},toBeMarble(e,t){return n.get().expectObservable(e).toBe(u(t)),b},toSatisfyOnFlush(e,t){n.get().expectObservable(e);let s=n.get().flushTests;return s[s.length-1].ready=!0,g.push(t),b}});var g=[];beforeEach(()=>{n.init(),g=[]});afterEach(()=>{for(n.get().run(()=>N.frameTimeFactor=10);g.length>0;)g.shift()?.();n.reset()});export{n as Scheduler,ne as cold,ie as hot,ce as schedule,oe as time};
139
+ // src/lib/matchers.ts
140
+ import { TestScheduler as TestScheduler2 } from "rxjs/testing";
141
+ var success = {
142
+ pass: true,
143
+ message: () => ""
144
+ };
145
+ expect.extend({
146
+ toHaveSubscriptions(actual, marbles) {
147
+ const sanitizedMarbles = Array.isArray(marbles) ? marbles.map((m) => m.trim()) : marbles.trim();
148
+ Scheduler.get().expectSubscriptions(actual.subscriptions).toBe(sanitizedMarbles);
149
+ return success;
150
+ },
151
+ toHaveNoSubscriptions(actual) {
152
+ Scheduler.get().expectSubscriptions(actual.subscriptions).toBe([]);
153
+ return success;
154
+ },
155
+ toBeObservable(actual, expected, subscription) {
156
+ Scheduler.get().expectObservable(actual, subscription).toEqual(expected);
157
+ return success;
158
+ },
159
+ toBeMarble(actual, marbles, values, error) {
160
+ Scheduler.get().expectObservable(actual).toBe(marbles.trim(), values, error);
161
+ return success;
162
+ },
163
+ toSatisfyOnFlush(actual, func) {
164
+ Scheduler.get().expectObservable(actual);
165
+ const flushTests = Scheduler.get()["flushTests"];
166
+ flushTests[flushTests.length - 1].ready = true;
167
+ onFlush.push(func);
168
+ return success;
169
+ }
170
+ });
171
+ var onFlush = [];
172
+ beforeEach(() => {
173
+ Scheduler.init();
174
+ onFlush = [];
175
+ });
176
+ afterEach(() => {
177
+ Scheduler.get().run(() => TestScheduler2.frameTimeFactor = 10);
178
+ while (onFlush.length > 0)
179
+ onFlush.shift()?.();
180
+ Scheduler.reset();
181
+ });
182
+ export {
183
+ cold,
184
+ hot,
185
+ schedule,
186
+ time
187
+ };
@@ -0,0 +1,4 @@
1
+ import { SubscriptionLog, TestMessages } from './types';
2
+ import './internal-matchers';
3
+ export type MessagesOrSubscriptions = TestMessages | SubscriptionLog[];
4
+ export declare function assertDeepEqual(actual: MessagesOrSubscriptions, expected?: MessagesOrSubscriptions): void;
@@ -0,0 +1,13 @@
1
+ import { SubscriptionLog, TestMessages } from './types';
2
+ import { MatchersObject } from '@vitest/expect';
3
+ interface InternalMatchers<R = unknown> {
4
+ toBeNotifications: (messages: TestMessages) => R;
5
+ toBeSubscriptions: (subscriptions: SubscriptionLog[]) => R;
6
+ toHaveEmptySubscriptions: () => R;
7
+ }
8
+ export declare const internalMatchers: MatchersObject;
9
+ declare module 'vitest' {
10
+ interface Matchers<T = any> extends InternalMatchers<T> {
11
+ }
12
+ }
13
+ export {};
package/lib/marbles.d.ts CHANGED
@@ -1,21 +1,6 @@
1
- import { ColdObservable } from './rxjs/cold-observable';
2
- import { HotObservable } from './rxjs/hot-observable';
3
1
  import { Subscription } from 'rxjs';
4
- export type ObservableWithSubscriptions = ColdObservable | HotObservable;
5
- interface CustomMatchers<R = unknown> {
6
- toBeObservable(observable: ObservableWithSubscriptions): R;
7
- toHaveSubscriptions(marbles: string | string[]): R;
8
- toHaveNoSubscriptions(): R;
9
- toBeMarble(marble: string): R;
10
- toSatisfyOnFlush(func: () => void): R;
11
- }
12
- declare module 'vitest' {
13
- interface Matchers<T = any> extends CustomMatchers<T> {
14
- }
15
- }
16
- export declare function hot(marbles: string, values?: object, error?: object): HotObservable;
17
- export declare function cold(marbles: string, values?: object, error?: object): ColdObservable;
2
+ import { ColdObservable, HotObservable } from './types';
3
+ export declare function cold<T = string>(marbles: string, values?: Record<string, T>, error?: any): ColdObservable<T>;
4
+ export declare function hot<T = string>(marbles: string, values?: Record<string, T>, error?: any): HotObservable<T>;
18
5
  export declare function time(marbles: string): number;
19
6
  export declare function schedule(work: () => void, delay: number): Subscription;
20
- export {};
21
- //# sourceMappingURL=marbles.d.ts.map
@@ -1,10 +1,2 @@
1
- import { SubscriptionLog, TestMessages } from './rxjs/types';
2
- export declare class Marblizer {
3
- static marblize(messages: TestMessages): string;
4
- static marblizeSubscriptions(logs: SubscriptionLog[]): string[];
5
- private static marblizeLogEntry;
6
- private static getNotificationEvents;
7
- private static extractMarble;
8
- private static encloseGroupEvents;
9
- }
10
- //# sourceMappingURL=marblizer.d.ts.map
1
+ import { SubscriptionLog } from './types';
2
+ export declare function marblize(logs: SubscriptionLog[]): string[];
@@ -0,0 +1,13 @@
1
+ import { Observable } from 'rxjs';
2
+ interface CustomMatchers<R = unknown> {
3
+ toBeObservable<T>(observable: Observable<T>, subscription?: string): R;
4
+ toHaveSubscriptions(marbles: string | string[]): R;
5
+ toHaveNoSubscriptions(): R;
6
+ toBeMarble<T = string>(marbles: string, values?: Record<string, T>, error?: any): R;
7
+ toSatisfyOnFlush(func: () => void): R;
8
+ }
9
+ declare module 'vitest' {
10
+ interface Matchers<T = any> extends CustomMatchers<T> {
11
+ }
12
+ }
13
+ export {};
@@ -0,0 +1,7 @@
1
+ import { TestScheduler } from 'rxjs/testing';
2
+ export declare class Scheduler {
3
+ static instance: TestScheduler | null;
4
+ static init(): void;
5
+ static get(): TestScheduler;
6
+ static reset(): void;
7
+ }
@@ -1,4 +1,7 @@
1
1
  import { TestScheduler } from 'rxjs/testing';
2
+ export type ColdObservable<T> = ReturnType<typeof TestScheduler.prototype.createColdObservable<T>>;
3
+ export type HotObservable<T> = ReturnType<typeof TestScheduler.prototype.createHotObservable<T>>;
4
+ export type TestObservable<T> = ColdObservable<T> | HotObservable<T>;
2
5
  /**
3
6
  * Exported return type of TestMessage[] to avoid importing internal APIs.
4
7
  */
@@ -7,4 +10,3 @@ export type TestMessages = ReturnType<typeof TestScheduler.parseMarbles>;
7
10
  * Exported return type of SubscriptionLog to avoid importing internal APIs.
8
11
  */
9
12
  export type SubscriptionLog = ReturnType<typeof TestScheduler.parseMarblesAsSubscriptions>;
10
- //# sourceMappingURL=types.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@granito/vitest-marbles",
3
- "version": "1.0.0-dev.3",
3
+ "version": "1.0.0-dev.5",
4
4
  "description": "Marble testing helpers library for RxJs and Vitest",
5
5
  "repository": {
6
6
  "type": "git",
@@ -41,16 +41,15 @@
41
41
  },
42
42
  "devDependencies": {
43
43
  "@nx/esbuild": "22.1.2",
44
- "@nx/js": "22.1.2",
45
44
  "@nx/vitest": "22.1.2",
46
- "@types/node": "20.19.9",
45
+ "@vitest/coverage-v8": "^4.0.14",
47
46
  "esbuild": "^0.27.0",
48
47
  "jsdom": "~22.1.0",
49
48
  "nx": "22.1.2",
50
49
  "rxjs": "^7.8.2",
51
50
  "tslib": "^2.3.0",
52
51
  "typescript": "~5.9.2",
53
- "vite": "^7.2.4",
52
+ "vite": "^7.2.6",
54
53
  "vitest": "^4.0.0"
55
54
  },
56
55
  "peerDependencies": {
@@ -65,14 +64,13 @@
65
64
  "{options.outputPath}"
66
65
  ],
67
66
  "options": {
68
- "outputPath": "dist",
67
+ "outputPath": "dist/vitest-marbles",
69
68
  "main": "src/index.ts",
70
69
  "tsConfig": "tsconfig.lib.json",
71
70
  "format": [
72
71
  "esm"
73
72
  ],
74
73
  "declarationRootDir": "src",
75
- "minify": true,
76
74
  "assets": [
77
75
  "LICENSE",
78
76
  "README.md"
package/index.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAA"}
@@ -1,10 +0,0 @@
1
- export declare enum MarblesGlossary {
2
- Completion = "|",
3
- Error = "#",
4
- TimeFrame = "-",
5
- Subscription = "^",
6
- Unsubscription = "!",
7
- GroupStart = "(",
8
- GroupEnd = ")"
9
- }
10
- //# sourceMappingURL=marbles-glossary.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"marbles-glossary.d.ts","sourceRoot":"","sources":["../../src/lib/marbles-glossary.ts"],"names":[],"mappings":"AAAA,oBAAY,eAAe;IACzB,UAAU,MAAM;IAChB,KAAK,MAAM;IACX,SAAS,MAAM;IACf,YAAY,MAAM;IAClB,cAAc,MAAM;IACpB,UAAU,MAAM;IAChB,QAAQ,MAAM;CACf"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"marbles.d.ts","sourceRoot":"","sources":["../../src/lib/marbles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGtD,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAGpC,MAAM,MAAM,2BAA2B,GAAG,cAAc,GAAG,aAAa,CAAC;AAEzE,UAAU,cAAc,CAAC,CAAC,GAAG,OAAO;IAClC,cAAc,CAAC,UAAU,EAAE,2BAA2B,GAAG,CAAC,CAAC;IAE3D,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC;IAEnD,qBAAqB,IAAI,CAAC,CAAC;IAE3B,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC;IAE9B,gBAAgB,CAAC,IAAI,EAAE,MAAM,IAAI,GAAG,CAAC,CAAC;CACvC;AAED,OAAO,QAAQ,QAAQ,CAAC;IACtB,UAAU,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;KACpD;CACF;AAED,wBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,CAEnF;AAED,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,cAAc,CAErF;AAED,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,CAEtE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"marblizer.d.ts","sourceRoot":"","sources":["../../src/lib/marblizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAO7D,qBAAa,SAAS;WACN,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM;WAYxC,qBAAqB,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,MAAM,EAAE;IAQtE,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAI/B,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAqBpC,OAAO,CAAC,MAAM,CAAC,aAAa;IAS5B,OAAO,CAAC,MAAM,CAAC,kBAAkB;CAMlC"}
@@ -1,7 +0,0 @@
1
- export declare class NotificationEvent {
2
- start: number;
3
- marbles: string;
4
- constructor(start: number);
5
- get end(): number;
6
- }
7
- //# sourceMappingURL=notification-event.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notification-event.d.ts","sourceRoot":"","sources":["../../src/lib/notification-event.ts"],"names":[],"mappings":"AAAA,qBAAa,iBAAiB;IAGT,KAAK,EAAE,MAAM;IAFhC,OAAO,SAAM;gBAEM,KAAK,EAAE,MAAM;IAGhC,IAAI,GAAG,IAAI,MAAM,CAEhB;CACF"}
@@ -1,8 +0,0 @@
1
- import { MarblesGlossary } from './marbles-glossary';
2
- export declare const ValueLiteral: {};
3
- export declare const NotificationKindChars: {
4
- N: {};
5
- C: MarblesGlossary;
6
- E: MarblesGlossary;
7
- };
8
- //# sourceMappingURL=notification-kind.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notification-kind.d.ts","sourceRoot":"","sources":["../../src/lib/notification-kind.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,eAAO,MAAM,YAAY,IAAK,CAAC;AAE/B,eAAO,MAAM,qBAAqB;;;;CAIjC,CAAC"}
@@ -1,5 +0,0 @@
1
- import { SubscriptionLog, TestMessages } from './types';
2
- import '../vitest/custom-matchers';
3
- export type MessageOrSubscription = TestMessages | SubscriptionLog[];
4
- export declare function assertDeepEqual(actual: MessageOrSubscription, expected: MessageOrSubscription): void;
5
- //# sourceMappingURL=assert-deep-equal.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"assert-deep-equal.d.ts","sourceRoot":"","sources":["../../../src/lib/rxjs/assert-deep-equal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,2BAA2B,CAAC;AAEnC,MAAM,MAAM,qBAAqB,GAAG,YAAY,GAAG,eAAe,EAAE,CAAC;AAarE,wBAAgB,eAAe,CAAC,MAAM,EAAE,qBAAqB,EAAE,QAAQ,EAAE,qBAAqB,QAU7F"}
@@ -1,12 +0,0 @@
1
- import { Observable } from 'rxjs';
2
- import { TestScheduler } from 'rxjs/testing';
3
- import { SubscriptionLog } from './types';
4
- export declare class ColdObservable extends Observable<any> {
5
- marbles: string;
6
- values?: Record<string, any> | undefined;
7
- error?: any | undefined;
8
- source: ReturnType<TestScheduler['createColdObservable']>;
9
- constructor(marbles: string, values?: Record<string, any> | undefined, error?: any | undefined);
10
- getSubscriptions(): SubscriptionLog[];
11
- }
12
- //# sourceMappingURL=cold-observable.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cold-observable.d.ts","sourceRoot":"","sources":["../../../src/lib/rxjs/cold-observable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG1C,qBAAa,cAAe,SAAQ,UAAU,CAAC,GAAG,CAAC;IAG9B,OAAO,EAAE,MAAM;IAAS,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAAS,KAAK,CAAC,EAAE,GAAG;IAFlF,MAAM,EAAE,UAAU,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC,CAAC;gBAEhD,OAAO,EAAE,MAAM,EAAS,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,YAAA,EAAS,KAAK,CAAC,EAAE,GAAG,YAAA;IAM3F,gBAAgB,IAAI,eAAe,EAAE;CAGtC"}
@@ -1,12 +0,0 @@
1
- import { Observable } from 'rxjs';
2
- import { TestScheduler } from 'rxjs/testing';
3
- import { SubscriptionLog } from './types';
4
- export declare class HotObservable extends Observable<any> {
5
- marbles: string;
6
- values?: Record<string, any> | undefined;
7
- error?: any | undefined;
8
- source: ReturnType<TestScheduler['createHotObservable']>;
9
- constructor(marbles: string, values?: Record<string, any> | undefined, error?: any | undefined);
10
- getSubscriptions(): SubscriptionLog[];
11
- }
12
- //# sourceMappingURL=hot-observable.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hot-observable.d.ts","sourceRoot":"","sources":["../../../src/lib/rxjs/hot-observable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG1C,qBAAa,aAAc,SAAQ,UAAU,CAAC,GAAG,CAAC;IAG7B,OAAO,EAAE,MAAM;IAAS,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAAS,KAAK,CAAC,EAAE,GAAG;IAFlF,MAAM,EAAE,UAAU,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,CAAC;gBAE/C,OAAO,EAAE,MAAM,EAAS,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,YAAA,EAAS,KAAK,CAAC,EAAE,GAAG,YAAA;IAM3F,gBAAgB,IAAI,eAAe,EAAE;CAGtC"}
@@ -1,11 +0,0 @@
1
- import { Observable } from 'rxjs';
2
- import { TestMessages } from './types';
3
- import { TestScheduler } from 'rxjs/testing';
4
- export declare class Scheduler {
5
- static instance: TestScheduler | null;
6
- static init(): void;
7
- static get(): TestScheduler;
8
- static reset(): void;
9
- static materializeInnerObservable(observable: Observable<any>, outerFrame: number): TestMessages;
10
- }
11
- //# sourceMappingURL=scheduler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../../src/lib/rxjs/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7C,qBAAa,SAAS;IACpB,OAAc,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;WAE/B,IAAI,IAAI,IAAI;WAIZ,GAAG,IAAI,aAAa;WAOpB,KAAK,IAAI,IAAI;WAIb,0BAA0B,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY;CAMxG"}
@@ -1,2 +0,0 @@
1
- export declare function stripAlignmentChars(marbles: string): string;
2
- //# sourceMappingURL=strip-alignment-chars.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"strip-alignment-chars.d.ts","sourceRoot":"","sources":["../../../src/lib/rxjs/strip-alignment-chars.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,UAElD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/rxjs/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,YAAY,CAAC,CAAC;AAEzE;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,2BAA2B,CAAC,CAAC"}
@@ -1,14 +0,0 @@
1
- import { SubscriptionLog, TestMessages } from '../rxjs/types';
2
- import { MatchersObject } from '@vitest/expect';
3
- interface CustomMatchers<R = unknown> {
4
- toBeNotifications: (messages: TestMessages) => R;
5
- toBeSubscriptions: (subscriptions: SubscriptionLog[]) => R;
6
- toHaveEmptySubscriptions: () => R;
7
- }
8
- export declare const customTestMatchers: MatchersObject;
9
- declare module 'vitest' {
10
- interface Matchers<T = any> extends CustomMatchers<T> {
11
- }
12
- }
13
- export {};
14
- //# sourceMappingURL=custom-matchers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"custom-matchers.d.ts","sourceRoot":"","sources":["../../../src/lib/vitest/custom-matchers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE9D,OAAO,EAAqB,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEnE,UAAU,cAAc,CAAC,CAAC,GAAG,OAAO;IAClC,iBAAiB,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,CAAC,CAAC;IAEjD,iBAAiB,EAAE,CAAC,aAAa,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;IAE3D,wBAAwB,EAAE,MAAM,CAAC,CAAC;CACnC;AAED,eAAO,MAAM,kBAAkB,EAAE,cA4FhC,CAAA;AAKD,OAAO,QAAQ,QAAQ,CAAC;IACtB,UAAU,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;KACpD;CACF"}