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

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 (52) hide show
  1. package/index.d.ts +3 -0
  2. package/index.d.ts.map +1 -0
  3. package/index.js +37 -0
  4. package/{dist/src → lib}/marbles-glossary.d.ts +1 -0
  5. package/lib/marbles-glossary.d.ts.map +1 -0
  6. package/{dist/index.d.ts → lib/marbles.d.ts} +4 -3
  7. package/lib/marbles.d.ts.map +1 -0
  8. package/{dist/src → lib}/marblizer.d.ts +1 -0
  9. package/lib/marblizer.d.ts.map +1 -0
  10. package/{dist/src → lib}/notification-event.d.ts +1 -0
  11. package/lib/notification-event.d.ts.map +1 -0
  12. package/{dist/src → lib}/notification-kind.d.ts +1 -0
  13. package/lib/notification-kind.d.ts.map +1 -0
  14. package/{dist/src → lib}/rxjs/assert-deep-equal.d.ts +1 -0
  15. package/lib/rxjs/assert-deep-equal.d.ts.map +1 -0
  16. package/{dist/src → lib}/rxjs/cold-observable.d.ts +1 -0
  17. package/lib/rxjs/cold-observable.d.ts.map +1 -0
  18. package/{dist/src → lib}/rxjs/hot-observable.d.ts +1 -0
  19. package/lib/rxjs/hot-observable.d.ts.map +1 -0
  20. package/{dist/src → lib}/rxjs/scheduler.d.ts +1 -0
  21. package/lib/rxjs/scheduler.d.ts.map +1 -0
  22. package/{dist/src → lib}/rxjs/strip-alignment-chars.d.ts +1 -0
  23. package/lib/rxjs/strip-alignment-chars.d.ts.map +1 -0
  24. package/{dist/src → lib}/rxjs/types.d.ts +1 -0
  25. package/lib/rxjs/types.d.ts.map +1 -0
  26. package/{dist/src → lib}/vitest/custom-matchers.d.ts +1 -0
  27. package/lib/vitest/custom-matchers.d.ts.map +1 -0
  28. package/package.json +48 -21
  29. package/dist/index.js +0 -60
  30. package/dist/index.js.map +0 -1
  31. package/dist/src/marbles-glossary.js +0 -11
  32. package/dist/src/marbles-glossary.js.map +0 -1
  33. package/dist/src/marblizer.js +0 -47
  34. package/dist/src/marblizer.js.map +0 -1
  35. package/dist/src/notification-event.js +0 -11
  36. package/dist/src/notification-event.js.map +0 -1
  37. package/dist/src/notification-kind.js +0 -8
  38. package/dist/src/notification-kind.js.map +0 -1
  39. package/dist/src/rxjs/assert-deep-equal.js +0 -19
  40. package/dist/src/rxjs/assert-deep-equal.js.map +0 -1
  41. package/dist/src/rxjs/cold-observable.js +0 -19
  42. package/dist/src/rxjs/cold-observable.js.map +0 -1
  43. package/dist/src/rxjs/hot-observable.js +0 -19
  44. package/dist/src/rxjs/hot-observable.js.map +0 -1
  45. package/dist/src/rxjs/scheduler.js +0 -22
  46. package/dist/src/rxjs/scheduler.js.map +0 -1
  47. package/dist/src/rxjs/strip-alignment-chars.js +0 -4
  48. package/dist/src/rxjs/strip-alignment-chars.js.map +0 -1
  49. package/dist/src/rxjs/types.js +0 -2
  50. package/dist/src/rxjs/types.js.map +0 -1
  51. package/dist/src/vitest/custom-matchers.js +0 -103
  52. package/dist/src/vitest/custom-matchers.js.map +0 -1
package/index.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export * from './lib/marbles';
2
+ export * from './lib/rxjs/scheduler';
3
+ //# sourceMappingURL=index.d.ts.map
package/index.d.ts.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAA"}
package/index.js ADDED
@@ -0,0 +1,37 @@
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")+`
2
+
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")+`
7
+
8
+ Expected notifications to be:
9
+ ${this.utils.printExpected(r)}
10
+ But got:
11
+ ${this.utils.printReceived(s)}`+(a?`
12
+
13
+ Difference:
14
+
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")+`
21
+
22
+ Expected observable to have the following subscription points:
23
+ ${this.utils.printExpected(r)}
24
+ But got:
25
+ ${this.utils.printReceived(s)}`+(a?`
26
+
27
+ Difference:
28
+
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")+`
32
+
33
+ Expected observable to have no subscription points
34
+ But got:
35
+ ${this.utils.printReceived(s)}
36
+
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};
@@ -7,3 +7,4 @@ export declare enum MarblesGlossary {
7
7
  GroupStart = "(",
8
8
  GroupEnd = ")"
9
9
  }
10
+ //# sourceMappingURL=marbles-glossary.d.ts.map
@@ -0,0 +1 @@
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,8 +1,7 @@
1
- import { ColdObservable } from './src/rxjs/cold-observable';
2
- import { HotObservable } from './src/rxjs/hot-observable';
1
+ import { ColdObservable } from './rxjs/cold-observable';
2
+ import { HotObservable } from './rxjs/hot-observable';
3
3
  import { Subscription } from 'rxjs';
4
4
  export type ObservableWithSubscriptions = ColdObservable | HotObservable;
5
- export { Scheduler } from './src/rxjs/scheduler';
6
5
  interface CustomMatchers<R = unknown> {
7
6
  toBeObservable(observable: ObservableWithSubscriptions): R;
8
7
  toHaveSubscriptions(marbles: string | string[]): R;
@@ -18,3 +17,5 @@ export declare function hot(marbles: string, values?: object, error?: object): H
18
17
  export declare function cold(marbles: string, values?: object, error?: object): ColdObservable;
19
18
  export declare function time(marbles: string): number;
20
19
  export declare function schedule(work: () => void, delay: number): Subscription;
20
+ export {};
21
+ //# sourceMappingURL=marbles.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -7,3 +7,4 @@ export declare class Marblizer {
7
7
  private static extractMarble;
8
8
  private static encloseGroupEvents;
9
9
  }
10
+ //# sourceMappingURL=marblizer.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -4,3 +4,4 @@ export declare class NotificationEvent {
4
4
  constructor(start: number);
5
5
  get end(): number;
6
6
  }
7
+ //# sourceMappingURL=notification-event.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -5,3 +5,4 @@ export declare const NotificationKindChars: {
5
5
  C: MarblesGlossary;
6
6
  E: MarblesGlossary;
7
7
  };
8
+ //# sourceMappingURL=notification-kind.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -2,3 +2,4 @@ import { SubscriptionLog, TestMessages } from './types';
2
2
  import '../vitest/custom-matchers';
3
3
  export type MessageOrSubscription = TestMessages | SubscriptionLog[];
4
4
  export declare function assertDeepEqual(actual: MessageOrSubscription, expected: MessageOrSubscription): void;
5
+ //# sourceMappingURL=assert-deep-equal.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -9,3 +9,4 @@ export declare class ColdObservable extends Observable<any> {
9
9
  constructor(marbles: string, values?: Record<string, any> | undefined, error?: any | undefined);
10
10
  getSubscriptions(): SubscriptionLog[];
11
11
  }
12
+ //# sourceMappingURL=cold-observable.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -9,3 +9,4 @@ export declare class HotObservable extends Observable<any> {
9
9
  constructor(marbles: string, values?: Record<string, any> | undefined, error?: any | undefined);
10
10
  getSubscriptions(): SubscriptionLog[];
11
11
  }
12
+ //# sourceMappingURL=hot-observable.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -8,3 +8,4 @@ export declare class Scheduler {
8
8
  static reset(): void;
9
9
  static materializeInnerObservable(observable: Observable<any>, outerFrame: number): TestMessages;
10
10
  }
11
+ //# sourceMappingURL=scheduler.d.ts.map
@@ -0,0 +1 @@
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 +1,2 @@
1
1
  export declare function stripAlignmentChars(marbles: string): string;
2
+ //# sourceMappingURL=strip-alignment-chars.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -7,3 +7,4 @@ export type TestMessages = ReturnType<typeof TestScheduler.parseMarbles>;
7
7
  * Exported return type of SubscriptionLog to avoid importing internal APIs.
8
8
  */
9
9
  export type SubscriptionLog = ReturnType<typeof TestScheduler.parseMarblesAsSubscriptions>;
10
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -11,3 +11,4 @@ declare module 'vitest' {
11
11
  }
12
12
  }
13
13
  export {};
14
+ //# sourceMappingURL=custom-matchers.d.ts.map
@@ -0,0 +1 @@
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@granito/vitest-marbles",
3
- "version": "1.0.0-dev.2",
3
+ "version": "1.0.0-dev.3",
4
4
  "description": "Marble testing helpers library for RxJs and Vitest",
5
5
  "repository": {
6
6
  "type": "git",
@@ -20,38 +20,65 @@
20
20
  "node": ">=22",
21
21
  "npm": ">=10"
22
22
  },
23
- "scripts": {
24
- "build": "tsc",
25
- "test": "vitest --no-watch"
26
- },
27
- "publishConfig": {
28
- "access": "public",
29
- "tag": "latest"
30
- },
31
23
  "files": [
32
- "dist"
24
+ "./"
33
25
  ],
34
26
  "type": "module",
27
+ "main": "./index.js",
28
+ "module": "./index.js",
29
+ "types": "./index.d.ts",
35
30
  "exports": {
36
- "./package.json": {
37
- "default": "./package.json"
38
- },
31
+ "./package.json": "./package.json",
39
32
  ".": {
40
- "types": "./dist/index.d.ts",
41
- "default": "./dist/index.js"
33
+ "types": "./index.d.ts",
34
+ "import": "./index.js",
35
+ "default": "./index.js"
42
36
  }
43
37
  },
44
- "module": "./dist/index.js",
45
- "typings": "./dist/index.d.ts",
46
- "sideEffects": false,
38
+ "publishConfig": {
39
+ "access": "public",
40
+ "tag": "latest"
41
+ },
47
42
  "devDependencies": {
48
- "jsdom": "^27.2.0",
43
+ "@nx/esbuild": "22.1.2",
44
+ "@nx/js": "22.1.2",
45
+ "@nx/vitest": "22.1.2",
46
+ "@types/node": "20.19.9",
47
+ "esbuild": "^0.27.0",
48
+ "jsdom": "~22.1.0",
49
+ "nx": "22.1.2",
49
50
  "rxjs": "^7.8.2",
50
- "typescript": "^5.9.3",
51
- "vitest": "^4.0.13"
51
+ "tslib": "^2.3.0",
52
+ "typescript": "~5.9.2",
53
+ "vite": "^7.2.4",
54
+ "vitest": "^4.0.0"
52
55
  },
53
56
  "peerDependencies": {
54
57
  "rxjs": "^7.0.0",
55
58
  "vitest": "^4.0.0"
59
+ },
60
+ "nx": {
61
+ "targets": {
62
+ "build": {
63
+ "executor": "@nx/esbuild:esbuild",
64
+ "outputs": [
65
+ "{options.outputPath}"
66
+ ],
67
+ "options": {
68
+ "outputPath": "dist",
69
+ "main": "src/index.ts",
70
+ "tsConfig": "tsconfig.lib.json",
71
+ "format": [
72
+ "esm"
73
+ ],
74
+ "declarationRootDir": "src",
75
+ "minify": true,
76
+ "assets": [
77
+ "LICENSE",
78
+ "README.md"
79
+ ]
80
+ }
81
+ }
82
+ }
56
83
  }
57
84
  }
package/dist/index.js DELETED
@@ -1,60 +0,0 @@
1
- import { ColdObservable } from './src/rxjs/cold-observable';
2
- import { HotObservable } from './src/rxjs/hot-observable';
3
- import { Scheduler } from './src/rxjs/scheduler';
4
- import { stripAlignmentChars } from './src/rxjs/strip-alignment-chars';
5
- import { TestScheduler } from 'rxjs/testing';
6
- export { Scheduler } from './src/rxjs/scheduler';
7
- export function hot(marbles, values, error) {
8
- return new HotObservable(stripAlignmentChars(marbles), values, error);
9
- }
10
- export function cold(marbles, values, error) {
11
- return new ColdObservable(stripAlignmentChars(marbles), values, error);
12
- }
13
- export function time(marbles) {
14
- return Scheduler.get().createTime(stripAlignmentChars(marbles));
15
- }
16
- export function schedule(work, delay) {
17
- return Scheduler.get().schedule(work, delay);
18
- }
19
- const dummyResult = {
20
- message: () => '',
21
- pass: true,
22
- };
23
- expect.extend({
24
- toHaveSubscriptions(actual, marbles) {
25
- const sanitizedMarbles = Array.isArray(marbles) ? marbles.map(stripAlignmentChars) : stripAlignmentChars(marbles);
26
- Scheduler.get().expectSubscriptions(actual.getSubscriptions()).toBe(sanitizedMarbles);
27
- return dummyResult;
28
- },
29
- toHaveNoSubscriptions(actual) {
30
- Scheduler.get().expectSubscriptions(actual.getSubscriptions()).toBe([]);
31
- return dummyResult;
32
- },
33
- toBeObservable(actual, expected) {
34
- Scheduler.get().expectObservable(actual).toBe(expected.marbles, expected.values, expected.error);
35
- return dummyResult;
36
- },
37
- toBeMarble(actual, marbles) {
38
- Scheduler.get().expectObservable(actual).toBe(stripAlignmentChars(marbles));
39
- return dummyResult;
40
- },
41
- toSatisfyOnFlush(actual, func) {
42
- Scheduler.get().expectObservable(actual);
43
- const flushTests = Scheduler.get()['flushTests'];
44
- flushTests[flushTests.length - 1].ready = true;
45
- onFlush.push(func);
46
- return dummyResult;
47
- }
48
- });
49
- let onFlush = [];
50
- beforeEach(() => {
51
- Scheduler.init();
52
- onFlush = [];
53
- });
54
- afterEach(() => {
55
- Scheduler.get().run(() => TestScheduler.frameTimeFactor = 10);
56
- while (onFlush.length > 0)
57
- onFlush.shift()?.();
58
- Scheduler.reset();
59
- });
60
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAEvE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAI7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAmBjD,MAAM,UAAU,GAAG,CAAC,OAAe,EAAE,MAAe,EAAE,KAAc;IAClE,OAAO,IAAI,aAAa,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAAe,EAAE,MAAe,EAAE,KAAc;IACnE,OAAO,IAAI,cAAc,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAAe;IAClC,OAAO,SAAS,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAgB,EAAE,KAAa;IACtD,OAAO,SAAS,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;IACjB,IAAI,EAAE,IAAI;CACX,CAAC;AAEF,MAAM,CAAC,MAAM,CAAC;IACZ,mBAAmB,CAAC,MAAmC,EAAE,OAA0B;QACjF,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAClH,SAAS,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAEtF,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,qBAAqB,CAAC,MAAmC;QACvD,SAAS,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAExE,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,cAAc,CAAC,MAAM,EAAE,QAAqC;QAC1D,SAAS,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QAEjG,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,UAAU,CAAC,MAAmC,EAAE,OAAe;QAC7D,SAAS,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;QAE5E,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,gBAAgB,CAAC,MAAmC,EAAE,IAAgB;QACpE,SAAS,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAEzC,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC;QAEjD,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEnB,OAAO,WAAW,CAAC;IACrB,CAAC;CACF,CAAC,CAAC;AAEH,IAAI,OAAO,GAAmB,EAAE,CAAC;AAEjC,UAAU,CAAC,GAAG,EAAE;IACd,SAAS,CAAC,IAAI,EAAE,CAAC;IACjB,OAAO,GAAG,EAAE,CAAC;AACf,CAAC,CAAC,CAAC;AAEH,SAAS,CAAC,GAAG,EAAE;IACb,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC;IAE9D,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC;QACvB,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC;IAEtB,SAAS,CAAC,KAAK,EAAE,CAAC;AACpB,CAAC,CAAC,CAAC"}
@@ -1,11 +0,0 @@
1
- export var MarblesGlossary;
2
- (function (MarblesGlossary) {
3
- MarblesGlossary["Completion"] = "|";
4
- MarblesGlossary["Error"] = "#";
5
- MarblesGlossary["TimeFrame"] = "-";
6
- MarblesGlossary["Subscription"] = "^";
7
- MarblesGlossary["Unsubscription"] = "!";
8
- MarblesGlossary["GroupStart"] = "(";
9
- MarblesGlossary["GroupEnd"] = ")";
10
- })(MarblesGlossary || (MarblesGlossary = {}));
11
- //# sourceMappingURL=marbles-glossary.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"marbles-glossary.js","sourceRoot":"","sources":["../../src/marbles-glossary.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,eAQX;AARD,WAAY,eAAe;IACzB,mCAAgB,CAAA;IAChB,8BAAW,CAAA;IACX,kCAAe,CAAA;IACf,qCAAkB,CAAA;IAClB,uCAAoB,CAAA;IACpB,mCAAgB,CAAA;IAChB,iCAAc,CAAA;AAChB,CAAC,EARW,eAAe,KAAf,eAAe,QAQ1B"}
@@ -1,47 +0,0 @@
1
- import { MarblesGlossary } from './marbles-glossary';
2
- import { NotificationEvent } from './notification-event';
3
- import { NotificationKindChars, ValueLiteral } from './notification-kind';
4
- const frameStep = 10;
5
- export class Marblizer {
6
- static marblize(messages) {
7
- const emissions = Marblizer.getNotificationEvents(messages);
8
- let marbles = '';
9
- for (let i = 0, prevEndFrame = 0; i < emissions.length; prevEndFrame = emissions[i].end, i++)
10
- marbles = `${marbles}${MarblesGlossary.TimeFrame.repeat(emissions[i].start - prevEndFrame) + emissions[i].marbles}`;
11
- return marbles;
12
- }
13
- static marblizeSubscriptions(logs) {
14
- return logs.map(log => this.marblizeLogEntry(log.subscribedFrame / frameStep, MarblesGlossary.Subscription) +
15
- this.marblizeLogEntry((log.unsubscribedFrame - log.subscribedFrame) / frameStep - 1, MarblesGlossary.Unsubscription));
16
- }
17
- static marblizeLogEntry(logPoint, symbol) {
18
- return logPoint !== Infinity ? MarblesGlossary.TimeFrame.repeat(logPoint) + symbol : '';
19
- }
20
- static getNotificationEvents(messages) {
21
- const framesToEmissions = messages.reduce((result, message) => {
22
- if (!result[message.frame])
23
- result[message.frame] = new NotificationEvent(message.frame / frameStep);
24
- const event = result[message.frame];
25
- event.marbles += Marblizer.extractMarble(message);
26
- return result;
27
- }, {});
28
- const events = Object
29
- .keys(framesToEmissions)
30
- .map(frame => framesToEmissions[Number(frame)]);
31
- Marblizer.encloseGroupEvents(events);
32
- return events;
33
- }
34
- static extractMarble(message) {
35
- let marble = NotificationKindChars[message.notification.kind];
36
- if (marble === ValueLiteral)
37
- marble = message.notification.value;
38
- return marble;
39
- }
40
- static encloseGroupEvents(events) {
41
- events.forEach(event => {
42
- if (event.marbles.length > 1)
43
- event.marbles = `${MarblesGlossary.GroupStart}${event.marbles}${MarblesGlossary.GroupEnd}`;
44
- });
45
- }
46
- }
47
- //# sourceMappingURL=marblizer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"marblizer.js","sourceRoot":"","sources":["../../src/marblizer.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- export class NotificationEvent {
2
- start;
3
- marbles = '';
4
- constructor(start) {
5
- this.start = start;
6
- }
7
- get end() {
8
- return this.start + this.marbles.length;
9
- }
10
- }
11
- //# sourceMappingURL=notification-event.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notification-event.js","sourceRoot":"","sources":["../../src/notification-event.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,iBAAiB;IAGT;IAFnB,OAAO,GAAG,EAAE,CAAC;IAEb,YAAmB,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IAChC,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC1C,CAAC;CACF"}
@@ -1,8 +0,0 @@
1
- import { MarblesGlossary } from './marbles-glossary';
2
- export const ValueLiteral = {};
3
- export const NotificationKindChars = {
4
- N: ValueLiteral,
5
- C: MarblesGlossary.Completion,
6
- E: MarblesGlossary.Error,
7
- };
8
- //# sourceMappingURL=notification-kind.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notification-kind.js","sourceRoot":"","sources":["../../src/notification-kind.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC;AAE/B,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,CAAC,EAAE,YAAY;IACf,CAAC,EAAE,eAAe,CAAC,UAAU;IAC7B,CAAC,EAAE,eAAe,CAAC,KAAK;CACzB,CAAC"}
@@ -1,19 +0,0 @@
1
- import '../vitest/custom-matchers';
2
- function expectedIsSubscriptionLogArray(actual, expected) {
3
- return actual.length === 0 && expected.length === 0 ||
4
- expected.length !== 0 && expected[0].subscribedFrame !== undefined;
5
- }
6
- function actualIsSubscriptionsAndExpectedIsEmpty(actual, expected) {
7
- return expected.length === 0 && actual.length !== 0 && actual[0].subscribedFrame !== undefined;
8
- }
9
- export function assertDeepEqual(actual, expected) {
10
- if (!expected)
11
- return;
12
- if (actualIsSubscriptionsAndExpectedIsEmpty(actual, expected))
13
- expect(actual).toHaveEmptySubscriptions();
14
- else if (expectedIsSubscriptionLogArray(actual, expected))
15
- expect(actual).toBeSubscriptions(expected);
16
- else
17
- expect(actual).toBeNotifications(expected);
18
- }
19
- //# sourceMappingURL=assert-deep-equal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"assert-deep-equal.js","sourceRoot":"","sources":["../../../src/rxjs/assert-deep-equal.ts"],"names":[],"mappings":"AACA,OAAO,2BAA2B,CAAC;AAInC,SAAS,8BAA8B,CAAC,MAA6B,EACnE,QAA+B;IAC/B,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QACjD,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAK,QAAQ,CAAC,CAAC,CAAS,CAAC,eAAe,KAAK,SAAS,CAAC;AAChF,CAAC;AAED,SAAS,uCAAuC,CAAC,MAA6B,EAC5E,QAA+B;IAC/B,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAK,MAAM,CAAC,CAAC,CAAS,CAAC,eAAe,KAAK,SAAS,CAAC;AAC1G,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAA6B,EAAE,QAA+B;IAC5F,IAAI,CAAC,QAAQ;QACX,OAAO;IAET,IAAI,uCAAuC,CAAC,MAAM,EAAE,QAAQ,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,CAAC,wBAAwB,EAAE,CAAC;SACvC,IAAI,8BAA8B,CAAC,MAAM,EAAE,QAAQ,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;;QAE3C,MAAM,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AAC/C,CAAC"}
@@ -1,19 +0,0 @@
1
- import { Observable } from 'rxjs';
2
- import { Scheduler } from './scheduler';
3
- export class ColdObservable extends Observable {
4
- marbles;
5
- values;
6
- error;
7
- source;
8
- constructor(marbles, values, error) {
9
- super();
10
- this.marbles = marbles;
11
- this.values = values;
12
- this.error = error;
13
- this.source = Scheduler.get().createColdObservable(marbles, values, error);
14
- }
15
- getSubscriptions() {
16
- return this.source.subscriptions;
17
- }
18
- }
19
- //# sourceMappingURL=cold-observable.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cold-observable.js","sourceRoot":"","sources":["../../../src/rxjs/cold-observable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAGlC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,OAAO,cAAe,SAAQ,UAAe;IAG9B;IAAwB;IAAqC;IAFvE,MAAM,CAAoD;IAEnE,YAAmB,OAAe,EAAS,MAA4B,EAAS,KAAW;QACzF,KAAK,EAAE,CAAC;QADS,YAAO,GAAP,OAAO,CAAQ;QAAS,WAAM,GAAN,MAAM,CAAsB;QAAS,UAAK,GAAL,KAAK,CAAM;QAGzF,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC7E,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;IACnC,CAAC;CACF"}
@@ -1,19 +0,0 @@
1
- import { Observable } from 'rxjs';
2
- import { Scheduler } from './scheduler';
3
- export class HotObservable extends Observable {
4
- marbles;
5
- values;
6
- error;
7
- source;
8
- constructor(marbles, values, error) {
9
- super();
10
- this.marbles = marbles;
11
- this.values = values;
12
- this.error = error;
13
- this.source = Scheduler.get().createHotObservable(marbles, values, error);
14
- }
15
- getSubscriptions() {
16
- return this.source.subscriptions;
17
- }
18
- }
19
- //# sourceMappingURL=hot-observable.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hot-observable.js","sourceRoot":"","sources":["../../../src/rxjs/hot-observable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAGlC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,OAAO,aAAc,SAAQ,UAAe;IAG7B;IAAwB;IAAqC;IAFvE,MAAM,CAAmD;IAElE,YAAmB,OAAe,EAAS,MAA4B,EAAS,KAAW;QACzF,KAAK,EAAE,CAAC;QADS,YAAO,GAAP,OAAO,CAAQ;QAAS,WAAM,GAAN,MAAM,CAAsB;QAAS,UAAK,GAAL,KAAK,CAAM;QAGzF,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC5E,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;IACnC,CAAC;CACF"}
@@ -1,22 +0,0 @@
1
- import { TestScheduler } from 'rxjs/testing';
2
- import { assertDeepEqual } from './assert-deep-equal';
3
- export class Scheduler {
4
- static instance;
5
- static init() {
6
- Scheduler.instance = new TestScheduler(assertDeepEqual);
7
- }
8
- static get() {
9
- if (Scheduler.instance)
10
- return Scheduler.instance;
11
- throw new Error('Scheduler is not initialized');
12
- }
13
- static reset() {
14
- Scheduler.instance = null;
15
- }
16
- static materializeInnerObservable(observable, outerFrame) {
17
- const scheduler = Scheduler.get();
18
- // @ts-expect-error to avoid code duplication
19
- return scheduler.materializeInnerObservable(observable, outerFrame);
20
- }
21
- }
22
- //# sourceMappingURL=scheduler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../../src/rxjs/scheduler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,OAAO,SAAS;IACb,MAAM,CAAC,QAAQ,CAAuB;IAEtC,MAAM,CAAC,IAAI;QAChB,SAAS,CAAC,QAAQ,GAAG,IAAI,aAAa,CAAC,eAAe,CAAC,CAAC;IAC1D,CAAC;IAEM,MAAM,CAAC,GAAG;QACf,IAAI,SAAS,CAAC,QAAQ;YACpB,OAAO,SAAS,CAAC,QAAQ,CAAC;QAE5B,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IAEM,MAAM,CAAC,KAAK;QACjB,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC5B,CAAC;IAEM,MAAM,CAAC,0BAA0B,CAAC,UAA2B,EAAE,UAAkB;QACtF,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC;QAElC,6CAA6C;QAC7C,OAAO,SAAS,CAAC,0BAA0B,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACtE,CAAC;CACF"}
@@ -1,4 +0,0 @@
1
- export function stripAlignmentChars(marbles) {
2
- return marbles.replace(/^ +/, '');
3
- }
4
- //# sourceMappingURL=strip-alignment-chars.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"strip-alignment-chars.js","sourceRoot":"","sources":["../../../src/rxjs/strip-alignment-chars.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACpC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/rxjs/types.ts"],"names":[],"mappings":""}
@@ -1,103 +0,0 @@
1
- import { Marblizer } from '../marblizer';
2
- export const customTestMatchers = {
3
- toBeNotifications(actual, expected) {
4
- let actualMarble = actual;
5
- let expectedMarble = expected;
6
- if (canMarblize(actual, expected)) {
7
- actualMarble = Marblizer.marblize(actual);
8
- expectedMarble = Marblizer.marblize(expected);
9
- }
10
- const pass = this.equals(actualMarble, expectedMarble);
11
- const message = pass ? () => this.utils.matcherHint('.not.toBeNotifications') +
12
- '\n\n' +
13
- `Expected notifications to not be:\n` +
14
- ` ${this.utils.printExpected(expectedMarble)}\n` +
15
- `But got:\n` +
16
- ` ${this.utils.printReceived(actualMarble)}` : () => {
17
- const diffString = this.utils.diff(expectedMarble, actualMarble, {
18
- expand: true,
19
- });
20
- return (this.utils.matcherHint('.toBeNotifications') +
21
- '\n\n' +
22
- `Expected notifications to be:\n` +
23
- ` ${this.utils.printExpected(expectedMarble)}\n` +
24
- `But got:\n` +
25
- ` ${this.utils.printReceived(actualMarble)}` +
26
- (diffString ? `\n\nDifference:\n\n${diffString}` : ''));
27
- };
28
- return {
29
- pass,
30
- message
31
- };
32
- },
33
- toBeSubscriptions(actual, expected) {
34
- const actualMarbleArray = Marblizer.marblizeSubscriptions(actual);
35
- const expectedMarbleArray = Marblizer.marblizeSubscriptions(expected);
36
- const pass = subscriptionsPass(actualMarbleArray, expectedMarbleArray);
37
- const message = pass ? () => this.utils.matcherHint('.not.toHaveSubscriptions') +
38
- '\n\n' +
39
- `Expected observable to not have the following subscription points:\n` +
40
- ` ${this.utils.printExpected(expectedMarbleArray)}\n` +
41
- `But got:\n` +
42
- ` ${this.utils.printReceived(actualMarbleArray)}` : () => {
43
- const diffString = this.utils.diff(expectedMarbleArray, actualMarbleArray, {
44
- expand: true,
45
- });
46
- return (this.utils.matcherHint('.toHaveSubscriptions') +
47
- '\n\n' +
48
- `Expected observable to have the following subscription points:\n` +
49
- ` ${this.utils.printExpected(expectedMarbleArray)}\n` +
50
- `But got:\n` +
51
- ` ${this.utils.printReceived(actualMarbleArray)}` +
52
- (diffString ? `\n\nDifference:\n\n${diffString}` : ''));
53
- };
54
- return {
55
- pass,
56
- message
57
- };
58
- },
59
- toHaveEmptySubscriptions(actual) {
60
- const pass = !(actual && actual.length > 0);
61
- let marbles;
62
- if (actual && actual.length > 0)
63
- marbles = Marblizer.marblizeSubscriptions(actual);
64
- const message = pass ? () => this.utils.matcherHint('.not.toHaveNoSubscriptions') +
65
- '\n\n' +
66
- `Expected observable to have at least one subscription point, but got nothing` +
67
- this.utils.printReceived('') : () => this.utils.matcherHint('.toHaveNoSubscriptions') +
68
- '\n\n' +
69
- `Expected observable to have no subscription points\n` +
70
- `But got:\n` +
71
- ` ${this.utils.printReceived(marbles)}\n\n`;
72
- return {
73
- pass,
74
- message
75
- };
76
- }
77
- };
78
- expect.extend(customTestMatchers);
79
- function canMarblize(...messages) {
80
- return messages.every(isMessagesMarblizable);
81
- }
82
- function isMessagesMarblizable(messages) {
83
- return messages.every(({ notification }) => notification.kind === 'C' ||
84
- (notification.kind === 'E' && notification.error === 'error') ||
85
- (notification.kind === 'N' && isCharacter(notification.value)));
86
- }
87
- function isCharacter(value) {
88
- return typeof value === 'string' && value.length === 1 || value !== undefined && JSON.stringify(value).length === 1;
89
- }
90
- function subscriptionsPass(actualMarbleArray, expectedMarbleArray) {
91
- if (actualMarbleArray.length !== expectedMarbleArray.length) {
92
- return false;
93
- }
94
- let pass = true;
95
- for (const actualMarble of actualMarbleArray) {
96
- if (!expectedMarbleArray.includes(actualMarble)) {
97
- pass = false;
98
- break;
99
- }
100
- }
101
- return pass;
102
- }
103
- //# sourceMappingURL=custom-matchers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"custom-matchers.js","sourceRoot":"","sources":["../../../src/vitest/custom-matchers.ts"],"names":[],"mappings":"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"}