@vestcards/shared 1.3.0 → 1.4.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.
@@ -0,0 +1 @@
1
+ const e=require(`./chunk-BK-Lzi7j.cjs`);let t=require(`date-fns/locale`),n=require(`date-fns`),r=require(`date-fns-tz`);var i=t.ptBR,a=`America/Sao_Paulo`;function o(e){return e instanceof Date?e:typeof e==`number`?new Date(e):typeof e==`string`?(0,n.parseISO)(e):e}var s=e.t({format:()=>u,formatDistance:()=>c,formatDistanceToNow:()=>l,formatRelative:()=>d});e.n(s,require(`date-fns`));function c(e,t=new Date,r){return(0,n.formatDistance)(o(e),o(t),{locale:i,...r})}function l(e,t){return(0,n.formatDistanceToNow)(o(e),{locale:i,...t})}function u(e,t,r){return(0,n.format)(o(e),t,{locale:i,...r})}function d(e,t=new Date,r){return(0,n.formatRelative)(o(e),o(t),{locale:i,...r})}function f(e,t,n=a){return u((0,r.toZonedTime)(o(e),n),t,{locale:i})}var p=e=>{let t=new Date,n=(0,s.differenceInMinutes)(e,t);if(n<1)return`<1m`;if(n<10)return`<${Math.ceil(n/10)*10}m`;if((0,s.differenceInHours)(e,t)<1)return`<1h`;let r=(0,s.differenceInDays)(e,t);if(r<1)return`<1d`;if(r<7)return`${r}d`;let i=(0,s.differenceInMonths)(e,t);return i<1?`${Math.ceil(r/30)}M`:i<12?`${i}M`:`${(0,s.differenceInYears)(e,t)}y`};function m(e,t=new Date,s=`às`,c=a){let l=(0,n.formatRelative)((0,r.toZonedTime)(o(e),c),(0,r.toZonedTime)(o(t),c),{locale:i}).replace(/às/g,s);return`${l.charAt(0).toUpperCase()}${l.slice(1)}`}function h(e,i){return(0,n.formatDistanceToNow)((0,r.toZonedTime)(o(e),a),{locale:t.ptBR,...i})}function g(e){try{return Intl.DateTimeFormat(void 0,{timeZone:e}),!0}catch{return!1}}function _(e){return e&&g(e)?e:a}function v(e,t){let i=(0,n.getDay)((0,r.toZonedTime)(e,t));return i===0?6:i-1}function y(e,t){return(0,r.fromZonedTime)((0,n.startOfDay)((0,r.toZonedTime)(e,t)),t)}function b(e,t){return(0,r.fromZonedTime)((0,n.endOfDay)((0,r.toZonedTime)(e,t)),t)}function x(e,t){return(0,r.fromZonedTime)((0,n.startOfWeek)((0,r.toZonedTime)(e,t),{weekStartsOn:1}),t)}var S=e.t({DEFAULT_LOCALE:()=>i,DEFAULT_TZ:()=>a,endOfDayInTz:()=>b,format:()=>u,formatDateTZ:()=>f,formatDistance:()=>c,formatDistanceToNow:()=>l,formatRelative:()=>d,formatRelativeDate:()=>m,formatRelativeDateToNow:()=>h,formatRelativeReviewDate:()=>p,getWeekStartUTC:()=>x,getWeekdayIndex:()=>v,isValidIANATimezone:()=>g,safeTimezone:()=>_,startOfDayInTz:()=>y,toDate:()=>o});e.n(S,s),Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return a}});
@@ -0,0 +1,134 @@
1
+ import { ptBR as e } from "date-fns/locale";
2
+ import { endOfDay as t, format as n, formatDistance as r, formatDistanceToNow as i, formatRelative as a, getDay as o, parseISO as s, startOfDay as c, startOfWeek as l } from "date-fns";
3
+ import { fromZonedTime as u, toZonedTime as d } from "date-fns-tz";
4
+ //#region \0rolldown/runtime.js
5
+ var f = Object.defineProperty, p = Object.getOwnPropertyDescriptor, m = Object.getOwnPropertyNames, h = Object.prototype.hasOwnProperty, g = (e, t) => {
6
+ let n = {};
7
+ for (var r in e) f(n, r, {
8
+ get: e[r],
9
+ enumerable: !0
10
+ });
11
+ return t || f(n, Symbol.toStringTag, { value: "Module" }), n;
12
+ }, _ = (e, t, n, r) => {
13
+ if (t && typeof t == "object" || typeof t == "function") for (var i = m(t), a = 0, o = i.length, s; a < o; a++) s = i[a], !h.call(e, s) && s !== n && f(e, s, {
14
+ get: ((e) => t[e]).bind(null, s),
15
+ enumerable: !(r = p(t, s)) || r.enumerable
16
+ });
17
+ return e;
18
+ }, v = (e, t, n) => (_(e, t, "default"), n && _(n, t, "default")), y = e, b = "America/Sao_Paulo";
19
+ //#endregion
20
+ //#region src/date/helpers.ts
21
+ function x(e) {
22
+ return e instanceof Date ? e : typeof e == "number" ? new Date(e) : typeof e == "string" ? s(e) : e;
23
+ }
24
+ //#endregion
25
+ //#region src/date/fns.ts
26
+ var S = /* @__PURE__ */ g({
27
+ format: () => E,
28
+ formatDistance: () => w,
29
+ formatDistanceToNow: () => T,
30
+ formatRelative: () => D
31
+ });
32
+ import * as C from "date-fns";
33
+ v(S, C);
34
+ function w(e, t = /* @__PURE__ */ new Date(), n) {
35
+ return r(x(e), x(t), {
36
+ locale: y,
37
+ ...n
38
+ });
39
+ }
40
+ function T(e, t) {
41
+ return i(x(e), {
42
+ locale: y,
43
+ ...t
44
+ });
45
+ }
46
+ function E(e, t, r) {
47
+ return n(x(e), t, {
48
+ locale: y,
49
+ ...r
50
+ });
51
+ }
52
+ function D(e, t = /* @__PURE__ */ new Date(), n) {
53
+ return a(x(e), x(t), {
54
+ locale: y,
55
+ ...n
56
+ });
57
+ }
58
+ //#endregion
59
+ //#region src/date/format.ts
60
+ function O(e, t, n = b) {
61
+ return E(d(x(e), n), t, { locale: y });
62
+ }
63
+ var k = (e) => {
64
+ let t = /* @__PURE__ */ new Date(), n = (0, S.differenceInMinutes)(e, t);
65
+ if (n < 1) return "<1m";
66
+ if (n < 10) return `<${Math.ceil(n / 10) * 10}m`;
67
+ if ((0, S.differenceInHours)(e, t) < 1) return "<1h";
68
+ let r = (0, S.differenceInDays)(e, t);
69
+ if (r < 1) return "<1d";
70
+ if (r < 7) return `${r}d`;
71
+ let i = (0, S.differenceInMonths)(e, t);
72
+ return i < 1 ? `${Math.ceil(r / 30)}M` : i < 12 ? `${i}M` : `${(0, S.differenceInYears)(e, t)}y`;
73
+ };
74
+ //#endregion
75
+ //#region src/date/relative.ts
76
+ function A(e, t = /* @__PURE__ */ new Date(), n = "às", r = b) {
77
+ let i = a(d(x(e), r), d(x(t), r), { locale: y }).replace(/às/g, n);
78
+ return `${i.charAt(0).toUpperCase()}${i.slice(1)}`;
79
+ }
80
+ function j(t, n) {
81
+ return i(d(x(t), b), {
82
+ locale: e,
83
+ ...n
84
+ });
85
+ }
86
+ //#endregion
87
+ //#region src/date/timezone.ts
88
+ function M(e) {
89
+ try {
90
+ return Intl.DateTimeFormat(void 0, { timeZone: e }), !0;
91
+ } catch {
92
+ return !1;
93
+ }
94
+ }
95
+ function N(e) {
96
+ return e && M(e) ? e : b;
97
+ }
98
+ function P(e, t) {
99
+ let n = o(d(e, t));
100
+ return n === 0 ? 6 : n - 1;
101
+ }
102
+ function F(e, t) {
103
+ return u(c(d(e, t)), t);
104
+ }
105
+ function I(e, n) {
106
+ return u(t(d(e, n)), n);
107
+ }
108
+ function L(e, t) {
109
+ return u(l(d(e, t), { weekStartsOn: 1 }), t);
110
+ }
111
+ //#endregion
112
+ //#region src/date/index.ts
113
+ var R = /* @__PURE__ */ g({
114
+ DEFAULT_LOCALE: () => y,
115
+ DEFAULT_TZ: () => b,
116
+ endOfDayInTz: () => I,
117
+ format: () => E,
118
+ formatDateTZ: () => O,
119
+ formatDistance: () => w,
120
+ formatDistanceToNow: () => T,
121
+ formatRelative: () => D,
122
+ formatRelativeDate: () => A,
123
+ formatRelativeDateToNow: () => j,
124
+ formatRelativeReviewDate: () => k,
125
+ getWeekStartUTC: () => L,
126
+ getWeekdayIndex: () => P,
127
+ isValidIANATimezone: () => M,
128
+ safeTimezone: () => N,
129
+ startOfDayInTz: () => F,
130
+ toDate: () => x
131
+ });
132
+ v(R, S);
133
+ //#endregion
134
+ export { y as _, M as a, A as c, k as d, E as f, x as g, D as h, P as i, j as l, T as m, I as n, N as o, w as p, L as r, F as s, R as t, O as u, b as v };
package/dist/date.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./date-DoLsSDIb.cjs`);exports.DEFAULT_LOCALE=e.d,exports.DEFAULT_TZ=e.f,exports.format=e.o,exports.formatDateTZ=e.i,exports.formatDistance=e.s,exports.formatDistanceToNow=e.c,exports.formatRelative=e.l,exports.formatRelativeDate=e.n,exports.formatRelativeDateToNow=e.r,exports.formatRelativeReviewDate=e.a,exports.toDate=e.u;var t=require(`date-fns`);Object.keys(t).forEach(function(e){e!==`default`&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:function(){return t[e]}})});
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./date-Bn1ahM0R.cjs`);exports.DEFAULT_LOCALE=e._,exports.DEFAULT_TZ=e.v,exports.endOfDayInTz=e.n,exports.format=e.f,exports.formatDateTZ=e.u,exports.formatDistance=e.p,exports.formatDistanceToNow=e.m,exports.formatRelative=e.h,exports.formatRelativeDate=e.c,exports.formatRelativeDateToNow=e.l,exports.formatRelativeReviewDate=e.d,exports.getWeekStartUTC=e.r,exports.getWeekdayIndex=e.i,exports.isValidIANATimezone=e.a,exports.safeTimezone=e.o,exports.startOfDayInTz=e.s,exports.toDate=e.g;var t=require(`date-fns`);Object.keys(t).forEach(function(e){e!==`default`&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:function(){return t[e]}})});
package/dist/date.d.ts CHANGED
@@ -10,6 +10,11 @@ export declare const DEFAULT_LOCALE: Locale;
10
10
 
11
11
  export declare const DEFAULT_TZ: "America/Sao_Paulo";
12
12
 
13
+ /**
14
+ * Returns the UTC `Date` for the end of `date`'s day in `timezone` (23:59:59.999 local → UTC).
15
+ */
16
+ export declare function endOfDayInTz(date: Date, timezone: string): Date;
17
+
13
18
  export declare function format(date: DateValue, pattern: string, options?: Parameters<typeof format_2>[2]): string;
14
19
 
15
20
  /**
@@ -47,6 +52,36 @@ export declare function formatRelativeDateToNow(date: DateValue, options?: Param
47
52
 
48
53
  export declare const formatRelativeReviewDate: (date: Date) => string;
49
54
 
55
+ /**
56
+ * Returns the ISO weekday index (Mon = 0 … Sun = 6) for `date` evaluated in
57
+ * `timezone`. Uses `toZonedTime` so the result is always consistent with the
58
+ * given timezone regardless of the server's local clock.
59
+ */
60
+ export declare function getWeekdayIndex(date: Date, timezone: string): number;
61
+
62
+ /**
63
+ * Returns the UTC `Date` that corresponds to Monday midnight (00:00:00) in `timezone`.
64
+ */
65
+ export declare function getWeekStartUTC(now: Date, timezone: string): Date;
66
+
67
+ /**
68
+ * Returns true if `tz` is a valid IANA timezone identifier recognised by the
69
+ * runtime's Intl API (e.g. "America/Sao_Paulo", "America/Manaus", "UTC").
70
+ */
71
+ export declare function isValidIANATimezone(tz: string): boolean;
72
+
73
+ /**
74
+ * Returns `tz` if it is a valid IANA timezone, otherwise falls back to
75
+ * `DEFAULT_TZ` ("America/Sao_Paulo"). Use this as a safety net when reading
76
+ * timezone values from the database to avoid crashing on corrupted data.
77
+ */
78
+ export declare function safeTimezone(tz: string | null | undefined): string;
79
+
80
+ /**
81
+ * Returns the UTC `Date` for the start of `date`'s day in `timezone` (00:00:00.000 local → UTC).
82
+ */
83
+ export declare function startOfDayInTz(date: Date, timezone: string): Date;
84
+
50
85
  export declare function toDate(value: DateValue): Date;
51
86
 
52
87
 
package/dist/date.js CHANGED
@@ -1,3 +1,3 @@
1
- import { a as e, c as t, d as n, f as r, i, l as a, n as o, o as s, r as c, s as l, u } from "./date-DS8JYZte.js";
1
+ import { _ as e, a as t, c as n, d as r, f as i, g as a, h as o, i as s, l as c, m as l, n as u, o as d, p as f, r as p, s as m, u as h, v as g } from "./date-D5P-dKAx.js";
2
2
  export * from "date-fns";
3
- export { n as DEFAULT_LOCALE, r as DEFAULT_TZ, s as format, i as formatDateTZ, l as formatDistance, t as formatDistanceToNow, a as formatRelative, o as formatRelativeDate, c as formatRelativeDateToNow, e as formatRelativeReviewDate, u as toDate };
3
+ export { e as DEFAULT_LOCALE, g as DEFAULT_TZ, u as endOfDayInTz, i as format, h as formatDateTZ, f as formatDistance, l as formatDistanceToNow, o as formatRelative, n as formatRelativeDate, c as formatRelativeDateToNow, r as formatRelativeReviewDate, p as getWeekStartUTC, s as getWeekdayIndex, t as isValidIANATimezone, d as safeTimezone, m as startOfDayInTz, a as toDate };
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./fsrs-DO2rNRTM.cjs`),t=require(`./theme-Bt1AkSvq.cjs`);var n=9999;function r({data:e,error:t},n){if(t){let e=t.value,r=e&&typeof e==`object`&&e&&`message`in e?String(e.message):n;throw Error(r||n)}if(!e||typeof e==`object`&&`error`in e)throw Error(n);return e}var i=function(e){return e.Draft=`draft`,e.Published=`published`,e}({}),a=[`not-reviewed`,`card-updated`,`demand-rejected`,`card-removed`],o=function(e){return e.Draft=`draft`,e.Review=`to_review`,e.Published=`published`,e.Archived=`archived`,e}({}),s=[`matemática`,`geografia`,`física`,`biologia`,`história`,`literatura`,`gramática`,`sociologia`,`química`,`filosofia`,`redação`,`artes`,`inglês`],c=function(e){return e.Admin=`admin`,e.Moderator=`moderator`,e.User=`user`,e}({}),l=function(e){return e.Owner=`owner`,e.Admin=`admin`,e.Member=`member`,e}({}),u=function(e){return e.Premium=`premium`,e}({}),d=function(e){return e.Active=`active`,e.Canceled=`canceled`,e.Pending=`pending`,e.Expired=`expired`,e}({}),f={APP:{ACCESS:`app:access`},DECK:{CREATE_OWN:`deck:create:own`,CREATE_PUBLIC:`deck:create:public`,READ_OWN:`deck:read:own`,READ_OTHERS:`deck:read:others`,READ_UNPUBLISHED:`deck:read:unpublished`,READ_FREE:`deck:read:free`,READ_PREMIUM:`deck:read:premium`,READ_PRIVATE:`deck:read:private`,UPDATE_OWN:`deck:update:own`,UPDATE_PUBLIC:`deck:update:public`,DELETE_OWN:`deck:delete:own`,DELETE_PUBLIC:`deck:delete:public`},CARD_DEMAND:{READ_ALL:`card-demand:read:*`,CREATE:`card-demand:create`,ACTION:`card-demand:action`},USER:{UPDATE_OWN:`user:update:own`,UPDATE_ALL:`user:update:*`,DELETE_OWN:`user:delete:own`,DELETE_ALL:`user:delete:*`,READ_OWN:`user:read:own`,READ_ALL:`user:read:*`},STATS:{VIEW:`stats:view`},MEMBERSHIP:{MANAGE:`membership:manage`},PLAN:{CREATE:`plan:create`,UPDATE:`plan:update`,DELETE:`plan:delete`},BLOGPOST:{CREATE:`blogpost:create`,UPDATE:`blogpost:update`,DELETE:`blogpost:delete`},VESTY:{CHAT:`vesty:chat`},STUDY:{READ:`study:read`,WRITE:`study:write`},LIBRARY:{READ:`library:read`,WRITE:`library:write`,WRITE_PREMIUM:`library:write:premium`},ADMIN_PANEL:{VIEW:`admin-panel:view`}},p={APP_ACCESS:f.APP.ACCESS,DECK_CREATE_OWN:f.DECK.CREATE_OWN,DECK_CREATE_PUBLIC:f.DECK.CREATE_PUBLIC,DECK_READ_OWN:f.DECK.READ_OWN,DECK_READ_OTHERS:f.DECK.READ_OTHERS,DECK_READ_UNPUBLISHED:f.DECK.READ_UNPUBLISHED,DECK_READ_FREE:f.DECK.READ_FREE,DECK_READ_PREMIUM:f.DECK.READ_PREMIUM,DECK_READ_PRIVATE:f.DECK.READ_PRIVATE,DECK_UPDATE_OWN:f.DECK.UPDATE_OWN,DECK_UPDATE_PUBLIC:f.DECK.UPDATE_PUBLIC,DECK_DELETE_OWN:f.DECK.DELETE_OWN,DECK_DELETE_PUBLIC:f.DECK.DELETE_PUBLIC,CARD_DEMAND_READ_ALL:f.CARD_DEMAND.READ_ALL,CARD_DEMAND_CREATE:f.CARD_DEMAND.CREATE,CARD_DEMAND_ACTION:f.CARD_DEMAND.ACTION,USER_UPDATE_OWN:f.USER.UPDATE_OWN,USER_UPDATE_ALL:f.USER.UPDATE_ALL,USER_DELETE_OWN:f.USER.DELETE_OWN,USER_DELETE_ALL:f.USER.DELETE_ALL,USER_READ_OWN:f.USER.READ_OWN,USER_READ_ALL:f.USER.READ_ALL,STATS_VIEW:f.STATS.VIEW,MEMBERSHIP_MANAGE:f.MEMBERSHIP.MANAGE,PLAN_CREATE:f.PLAN.CREATE,PLAN_UPDATE:f.PLAN.UPDATE,PLAN_DELETE:f.PLAN.DELETE,BLOGPOST_CREATE:f.BLOGPOST.CREATE,BLOGPOST_UPDATE:f.BLOGPOST.UPDATE,BLOGPOST_DELETE:f.BLOGPOST.DELETE,VESTY_CHAT:f.VESTY.CHAT,STUDY_READ:f.STUDY.READ,STUDY_WRITE:f.STUDY.WRITE,LIBRARY_READ:f.LIBRARY.READ,LIBRARY_WRITE:f.LIBRARY.WRITE,LIBRARY_WRITE_PREMIUM:f.LIBRARY.WRITE_PREMIUM,ADMIN_PANEL_VIEW:f.ADMIN_PANEL.VIEW},m=Object.values(f).flatMap(e=>Object.values(e)),h={[c.User]:[`deck:read:free`,`deck:read:own`,`deck:delete:own`,`study:read`,`study:write`,`library:read`,`library:write`,`card-demand:create`,`user:update:own`,`user:delete:own`,`user:read:own`],[c.Moderator]:[`app:access`,`deck:read:free`,`deck:read:own`,`deck:read:premium`,`deck:read:private`,`deck:read:unpublished`,`deck:delete:own`,`card-demand:read:*`,`card-demand:create`,`card-demand:action`,`study:read`,`study:write`,`library:read`,`library:write`,`library:write:premium`,`user:update:own`,`user:delete:own`,`user:read:own`,`admin-panel:view`],[c.Admin]:m},g={[u.Premium]:[`app:access`,`deck:create:own`,`deck:update:own`,`deck:read:premium`,`stats:view`,`vesty:chat`,`library:write:premium`]},_=(e,t,n)=>{if(!t)return!1;if(h[t].includes(e))return!0;for(let t of n??[])if((g[t]??[]).includes(e))return!0;return!1},v=function(e){return e.Published=`published`,e.Draft=`draft`,e.Archived=`archived`,e}({}),y={história:`quaternary`,geografia:`tertiary`,matemática:`secondary`,biologia:`primary`,física:`quinary`,gramática:`tertiary`,literatura:`secondary`,química:`primary`,filosofia:`quaternary`,sociologia:`quinary`,redação:`secondary`,artes:`tertiary`,inglês:`quinary`,default:`default`},b={matemática:`radical`,gramática:`spell-check`,literatura:`book-open`,biologia:`dna`,química:`test-tube-diagonal`,física:`atom`,história:`scroll`,geografia:`earth`,filosofia:`brain`,sociologia:`users-round`,redação:`notebook-pen`,artes:`palette`,inglês:`languages`,default:`graduation-cap`},x=e=>b[e]||b.default,S=e=>y[e]||y.default,C=e=>{let n=S(e);return t.i[n===`default`?`gray`:n].DEFAULT};exports.ALL_PERMISSIONS=m,exports.BlogPostStatus=i,exports.DeckStatus=o,exports.ENTITLEMENT_PERMISSIONS=g,exports.Entitlement=u,exports.EntranceExamProgramStatus=v,exports.MembershipStatus=d,exports.OrganizationRole=l,exports.PERMISSIONS=f,exports.Permission=p,exports.ROLE_PERMISSIONS=h,exports.ReviewRating=e.t,exports.ReviewState=e.n,exports.SUBJECTS=s,exports.SUBJECT_COLORS=y,exports.SUBJECT_ICONS=b,exports.UNPAGINATED_SIZE=n,exports.UserRole=c,exports.cardDemandStatus=a,exports.getSubjectCSSColor=C,exports.getSubjectColor=S,exports.getSubjectIcon=x,exports.hasPermission=_,exports.reviewRatings=e.r,exports.reviewStates=e.i,exports.unwrapApiResponse=r;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./fsrs-DO2rNRTM.cjs`),t=require(`./theme-Bt1AkSvq.cjs`);var n=9999;function r({data:e,error:t},n){if(t){let e=t.value,r=e&&typeof e==`object`&&e&&`message`in e?String(e.message):n;throw Error(r||n)}if(!e||typeof e==`object`&&`error`in e)throw Error(n);return e}var i=function(e){return e.Draft=`draft`,e.Published=`published`,e}({}),a=[`not-reviewed`,`card-updated`,`demand-rejected`,`card-removed`],o=function(e){return e.Draft=`draft`,e.Review=`to_review`,e.Published=`published`,e.Archived=`archived`,e}({}),s=[`matemática`,`geografia`,`física`,`biologia`,`história`,`literatura`,`gramática`,`sociologia`,`química`,`filosofia`,`redação`,`artes`,`inglês`],c=function(e){return e.Admin=`admin`,e.Moderator=`moderator`,e.User=`user`,e}({}),l=function(e){return e.Owner=`owner`,e.Admin=`admin`,e.Member=`member`,e}({}),u=function(e){return e.Premium=`premium`,e}({}),d=function(e){return e.Active=`active`,e.Canceled=`canceled`,e.Pending=`pending`,e.Expired=`expired`,e}({}),f=function(e){return e.Fixed=`FIXED`,e.Seasonal=`SEASONAL`,e}({}),p={APP:{ACCESS:`app:access`},DECK:{CREATE_OWN:`deck:create:own`,CREATE_PUBLIC:`deck:create:public`,READ_OWN:`deck:read:own`,READ_OTHERS:`deck:read:others`,READ_UNPUBLISHED:`deck:read:unpublished`,READ_FREE:`deck:read:free`,READ_PREMIUM:`deck:read:premium`,READ_PRIVATE:`deck:read:private`,UPDATE_OWN:`deck:update:own`,UPDATE_PUBLIC:`deck:update:public`,DELETE_OWN:`deck:delete:own`,DELETE_PUBLIC:`deck:delete:public`},CARD_DEMAND:{READ_ALL:`card-demand:read:*`,CREATE:`card-demand:create`,ACTION:`card-demand:action`},USER:{UPDATE_OWN:`user:update:own`,UPDATE_ALL:`user:update:*`,DELETE_OWN:`user:delete:own`,DELETE_ALL:`user:delete:*`,READ_OWN:`user:read:own`,READ_ALL:`user:read:*`},STATS:{VIEW:`stats:view`},MEMBERSHIP:{MANAGE:`membership:manage`},PLAN:{CREATE:`plan:create`,UPDATE:`plan:update`,DELETE:`plan:delete`},BLOGPOST:{CREATE:`blogpost:create`,UPDATE:`blogpost:update`,DELETE:`blogpost:delete`},VESTY:{CHAT:`vesty:chat`,INSIGHTS:`vesty:insights`},STUDY:{READ:`study:read`,WRITE:`study:write`},LIBRARY:{READ:`library:read`,WRITE:`library:write`,WRITE_PREMIUM:`library:write:premium`},ADMIN_PANEL:{VIEW:`admin-panel:view`}},m={APP_ACCESS:p.APP.ACCESS,DECK_CREATE_OWN:p.DECK.CREATE_OWN,DECK_CREATE_PUBLIC:p.DECK.CREATE_PUBLIC,DECK_READ_OWN:p.DECK.READ_OWN,DECK_READ_OTHERS:p.DECK.READ_OTHERS,DECK_READ_UNPUBLISHED:p.DECK.READ_UNPUBLISHED,DECK_READ_FREE:p.DECK.READ_FREE,DECK_READ_PREMIUM:p.DECK.READ_PREMIUM,DECK_READ_PRIVATE:p.DECK.READ_PRIVATE,DECK_UPDATE_OWN:p.DECK.UPDATE_OWN,DECK_UPDATE_PUBLIC:p.DECK.UPDATE_PUBLIC,DECK_DELETE_OWN:p.DECK.DELETE_OWN,DECK_DELETE_PUBLIC:p.DECK.DELETE_PUBLIC,CARD_DEMAND_READ_ALL:p.CARD_DEMAND.READ_ALL,CARD_DEMAND_CREATE:p.CARD_DEMAND.CREATE,CARD_DEMAND_ACTION:p.CARD_DEMAND.ACTION,USER_UPDATE_OWN:p.USER.UPDATE_OWN,USER_UPDATE_ALL:p.USER.UPDATE_ALL,USER_DELETE_OWN:p.USER.DELETE_OWN,USER_DELETE_ALL:p.USER.DELETE_ALL,USER_READ_OWN:p.USER.READ_OWN,USER_READ_ALL:p.USER.READ_ALL,STATS_VIEW:p.STATS.VIEW,MEMBERSHIP_MANAGE:p.MEMBERSHIP.MANAGE,PLAN_CREATE:p.PLAN.CREATE,PLAN_UPDATE:p.PLAN.UPDATE,PLAN_DELETE:p.PLAN.DELETE,BLOGPOST_CREATE:p.BLOGPOST.CREATE,BLOGPOST_UPDATE:p.BLOGPOST.UPDATE,BLOGPOST_DELETE:p.BLOGPOST.DELETE,VESTY_CHAT:p.VESTY.CHAT,VESTY_INSIGHTS:p.VESTY.INSIGHTS,STUDY_READ:p.STUDY.READ,STUDY_WRITE:p.STUDY.WRITE,LIBRARY_READ:p.LIBRARY.READ,LIBRARY_WRITE:p.LIBRARY.WRITE,LIBRARY_WRITE_PREMIUM:p.LIBRARY.WRITE_PREMIUM,ADMIN_PANEL_VIEW:p.ADMIN_PANEL.VIEW},h=Object.values(p).flatMap(e=>Object.values(e)),g={[c.User]:[`deck:read:free`,`deck:read:own`,`deck:delete:own`,`study:read`,`study:write`,`library:read`,`library:write`,`card-demand:create`,`user:update:own`,`user:delete:own`,`user:read:own`],[c.Moderator]:[`app:access`,`deck:read:free`,`deck:read:own`,`deck:read:premium`,`deck:read:private`,`deck:read:unpublished`,`deck:delete:own`,`card-demand:read:*`,`card-demand:create`,`card-demand:action`,`study:read`,`study:write`,`library:read`,`library:write`,`library:write:premium`,`user:update:own`,`user:delete:own`,`user:read:own`,`admin-panel:view`],[c.Admin]:h},_={[u.Premium]:[`app:access`,`deck:create:own`,`deck:update:own`,`deck:read:premium`,`stats:view`,`vesty:chat`,`vesty:insights`,`library:write:premium`]},v=(e,t,n)=>{if(!t)return!1;if(g[t].includes(e))return!0;for(let t of n??[])if((_[t]??[]).includes(e))return!0;return!1},y=function(e){return e.Published=`published`,e.Draft=`draft`,e.Archived=`archived`,e}({}),b={história:`quaternary`,geografia:`tertiary`,matemática:`secondary`,biologia:`primary`,física:`quinary`,gramática:`tertiary`,literatura:`secondary`,química:`primary`,filosofia:`quaternary`,sociologia:`quinary`,redação:`secondary`,artes:`tertiary`,inglês:`quinary`,default:`default`},x={matemática:`radical`,gramática:`spell-check`,literatura:`book-open`,biologia:`dna`,química:`test-tube-diagonal`,física:`atom`,história:`scroll`,geografia:`earth`,filosofia:`brain`,sociologia:`users-round`,redação:`notebook-pen`,artes:`palette`,inglês:`languages`,default:`graduation-cap`},S=e=>x[e]||x.default,C=e=>b[e]||b.default,w=e=>{let n=C(e);return t.i[n===`default`?`gray`:n].DEFAULT};exports.ALL_PERMISSIONS=h,exports.BlogPostStatus=i,exports.DeckStatus=o,exports.ENTITLEMENT_PERMISSIONS=_,exports.Entitlement=u,exports.EntranceExamProgramStatus=y,exports.MembershipStatus=d,exports.OrganizationRole=l,exports.PERMISSIONS=p,exports.Permission=m,exports.PlanType=f,exports.ROLE_PERMISSIONS=g,exports.ReviewRating=e.t,exports.ReviewState=e.n,exports.SUBJECTS=s,exports.SUBJECT_COLORS=b,exports.SUBJECT_ICONS=x,exports.UNPAGINATED_SIZE=n,exports.UserRole=c,exports.cardDemandStatus=a,exports.getSubjectCSSColor=w,exports.getSubjectColor=C,exports.getSubjectIcon=S,exports.hasPermission=v,exports.reviewRatings=e.r,exports.reviewStates=e.i,exports.unwrapApiResponse=r;
package/dist/index.d.ts CHANGED
@@ -204,6 +204,30 @@ export declare interface IStudyStats {
204
204
  total: number;
205
205
  }
206
206
 
207
+ export declare interface IUserProfile {
208
+ id: string;
209
+ name: string;
210
+ surname: string;
211
+ email: string;
212
+ image: string | null;
213
+ role: UserScopeRole;
214
+ goal: string | null;
215
+ learnDailyLimit: number | null;
216
+ newCardsPerDeckDailyLimit: number | null;
217
+ universityId: number | null;
218
+ universityName: string | null;
219
+ courseId: number | null;
220
+ courseName: string | null;
221
+ authProviders: string[];
222
+ }
223
+
224
+ export declare interface IVestyChatRelatedDeck {
225
+ id: string;
226
+ title: string;
227
+ subject: Subject;
228
+ topicName: string;
229
+ }
230
+
207
231
  export declare enum MembershipStatus {
208
232
  Active = "active",
209
233
  Canceled = "canceled",
@@ -255,6 +279,7 @@ export declare const Permission: {
255
279
  readonly BLOGPOST_UPDATE: "blogpost:update";
256
280
  readonly BLOGPOST_DELETE: "blogpost:delete";
257
281
  readonly VESTY_CHAT: "vesty:chat";
282
+ readonly VESTY_INSIGHTS: "vesty:insights";
258
283
  readonly STUDY_READ: "study:read";
259
284
  readonly STUDY_WRITE: "study:write";
260
285
  readonly LIBRARY_READ: "library:read";
@@ -312,6 +337,7 @@ export declare const PERMISSIONS: {
312
337
  };
313
338
  readonly VESTY: {
314
339
  readonly CHAT: "vesty:chat";
340
+ readonly INSIGHTS: "vesty:insights";
315
341
  };
316
342
  readonly STUDY: {
317
343
  readonly READ: "study:read";
@@ -327,6 +353,11 @@ export declare const PERMISSIONS: {
327
353
  };
328
354
  };
329
355
 
356
+ export declare enum PlanType {
357
+ Fixed = "FIXED",
358
+ Seasonal = "SEASONAL"
359
+ }
360
+
330
361
  export declare const ReviewRating: {
331
362
  readonly Manual: "Manual";
332
363
  readonly Again: "Again";
package/dist/index.js CHANGED
@@ -43,7 +43,9 @@ var s = /* @__PURE__ */ function(e) {
43
43
  return e.Premium = "premium", e;
44
44
  }({}), m = /* @__PURE__ */ function(e) {
45
45
  return e.Active = "active", e.Canceled = "canceled", e.Pending = "pending", e.Expired = "expired", e;
46
- }({}), h = {
46
+ }({}), h = /* @__PURE__ */ function(e) {
47
+ return e.Fixed = "FIXED", e.Seasonal = "SEASONAL", e;
48
+ }({}), g = {
47
49
  APP: { ACCESS: "app:access" },
48
50
  DECK: {
49
51
  CREATE_OWN: "deck:create:own",
@@ -84,7 +86,10 @@ var s = /* @__PURE__ */ function(e) {
84
86
  UPDATE: "blogpost:update",
85
87
  DELETE: "blogpost:delete"
86
88
  },
87
- VESTY: { CHAT: "vesty:chat" },
89
+ VESTY: {
90
+ CHAT: "vesty:chat",
91
+ INSIGHTS: "vesty:insights"
92
+ },
88
93
  STUDY: {
89
94
  READ: "study:read",
90
95
  WRITE: "study:write"
@@ -95,45 +100,46 @@ var s = /* @__PURE__ */ function(e) {
95
100
  WRITE_PREMIUM: "library:write:premium"
96
101
  },
97
102
  ADMIN_PANEL: { VIEW: "admin-panel:view" }
98
- }, g = {
99
- APP_ACCESS: h.APP.ACCESS,
100
- DECK_CREATE_OWN: h.DECK.CREATE_OWN,
101
- DECK_CREATE_PUBLIC: h.DECK.CREATE_PUBLIC,
102
- DECK_READ_OWN: h.DECK.READ_OWN,
103
- DECK_READ_OTHERS: h.DECK.READ_OTHERS,
104
- DECK_READ_UNPUBLISHED: h.DECK.READ_UNPUBLISHED,
105
- DECK_READ_FREE: h.DECK.READ_FREE,
106
- DECK_READ_PREMIUM: h.DECK.READ_PREMIUM,
107
- DECK_READ_PRIVATE: h.DECK.READ_PRIVATE,
108
- DECK_UPDATE_OWN: h.DECK.UPDATE_OWN,
109
- DECK_UPDATE_PUBLIC: h.DECK.UPDATE_PUBLIC,
110
- DECK_DELETE_OWN: h.DECK.DELETE_OWN,
111
- DECK_DELETE_PUBLIC: h.DECK.DELETE_PUBLIC,
112
- CARD_DEMAND_READ_ALL: h.CARD_DEMAND.READ_ALL,
113
- CARD_DEMAND_CREATE: h.CARD_DEMAND.CREATE,
114
- CARD_DEMAND_ACTION: h.CARD_DEMAND.ACTION,
115
- USER_UPDATE_OWN: h.USER.UPDATE_OWN,
116
- USER_UPDATE_ALL: h.USER.UPDATE_ALL,
117
- USER_DELETE_OWN: h.USER.DELETE_OWN,
118
- USER_DELETE_ALL: h.USER.DELETE_ALL,
119
- USER_READ_OWN: h.USER.READ_OWN,
120
- USER_READ_ALL: h.USER.READ_ALL,
121
- STATS_VIEW: h.STATS.VIEW,
122
- MEMBERSHIP_MANAGE: h.MEMBERSHIP.MANAGE,
123
- PLAN_CREATE: h.PLAN.CREATE,
124
- PLAN_UPDATE: h.PLAN.UPDATE,
125
- PLAN_DELETE: h.PLAN.DELETE,
126
- BLOGPOST_CREATE: h.BLOGPOST.CREATE,
127
- BLOGPOST_UPDATE: h.BLOGPOST.UPDATE,
128
- BLOGPOST_DELETE: h.BLOGPOST.DELETE,
129
- VESTY_CHAT: h.VESTY.CHAT,
130
- STUDY_READ: h.STUDY.READ,
131
- STUDY_WRITE: h.STUDY.WRITE,
132
- LIBRARY_READ: h.LIBRARY.READ,
133
- LIBRARY_WRITE: h.LIBRARY.WRITE,
134
- LIBRARY_WRITE_PREMIUM: h.LIBRARY.WRITE_PREMIUM,
135
- ADMIN_PANEL_VIEW: h.ADMIN_PANEL.VIEW
136
- }, _ = Object.values(h).flatMap((e) => Object.values(e)), v = {
103
+ }, _ = {
104
+ APP_ACCESS: g.APP.ACCESS,
105
+ DECK_CREATE_OWN: g.DECK.CREATE_OWN,
106
+ DECK_CREATE_PUBLIC: g.DECK.CREATE_PUBLIC,
107
+ DECK_READ_OWN: g.DECK.READ_OWN,
108
+ DECK_READ_OTHERS: g.DECK.READ_OTHERS,
109
+ DECK_READ_UNPUBLISHED: g.DECK.READ_UNPUBLISHED,
110
+ DECK_READ_FREE: g.DECK.READ_FREE,
111
+ DECK_READ_PREMIUM: g.DECK.READ_PREMIUM,
112
+ DECK_READ_PRIVATE: g.DECK.READ_PRIVATE,
113
+ DECK_UPDATE_OWN: g.DECK.UPDATE_OWN,
114
+ DECK_UPDATE_PUBLIC: g.DECK.UPDATE_PUBLIC,
115
+ DECK_DELETE_OWN: g.DECK.DELETE_OWN,
116
+ DECK_DELETE_PUBLIC: g.DECK.DELETE_PUBLIC,
117
+ CARD_DEMAND_READ_ALL: g.CARD_DEMAND.READ_ALL,
118
+ CARD_DEMAND_CREATE: g.CARD_DEMAND.CREATE,
119
+ CARD_DEMAND_ACTION: g.CARD_DEMAND.ACTION,
120
+ USER_UPDATE_OWN: g.USER.UPDATE_OWN,
121
+ USER_UPDATE_ALL: g.USER.UPDATE_ALL,
122
+ USER_DELETE_OWN: g.USER.DELETE_OWN,
123
+ USER_DELETE_ALL: g.USER.DELETE_ALL,
124
+ USER_READ_OWN: g.USER.READ_OWN,
125
+ USER_READ_ALL: g.USER.READ_ALL,
126
+ STATS_VIEW: g.STATS.VIEW,
127
+ MEMBERSHIP_MANAGE: g.MEMBERSHIP.MANAGE,
128
+ PLAN_CREATE: g.PLAN.CREATE,
129
+ PLAN_UPDATE: g.PLAN.UPDATE,
130
+ PLAN_DELETE: g.PLAN.DELETE,
131
+ BLOGPOST_CREATE: g.BLOGPOST.CREATE,
132
+ BLOGPOST_UPDATE: g.BLOGPOST.UPDATE,
133
+ BLOGPOST_DELETE: g.BLOGPOST.DELETE,
134
+ VESTY_CHAT: g.VESTY.CHAT,
135
+ VESTY_INSIGHTS: g.VESTY.INSIGHTS,
136
+ STUDY_READ: g.STUDY.READ,
137
+ STUDY_WRITE: g.STUDY.WRITE,
138
+ LIBRARY_READ: g.LIBRARY.READ,
139
+ LIBRARY_WRITE: g.LIBRARY.WRITE,
140
+ LIBRARY_WRITE_PREMIUM: g.LIBRARY.WRITE_PREMIUM,
141
+ ADMIN_PANEL_VIEW: g.ADMIN_PANEL.VIEW
142
+ }, v = Object.values(g).flatMap((e) => Object.values(e)), y = {
137
143
  [d.User]: [
138
144
  "deck:read:free",
139
145
  "deck:read:own",
@@ -168,23 +174,24 @@ var s = /* @__PURE__ */ function(e) {
168
174
  "user:read:own",
169
175
  "admin-panel:view"
170
176
  ],
171
- [d.Admin]: _
172
- }, y = { [p.Premium]: [
177
+ [d.Admin]: v
178
+ }, b = { [p.Premium]: [
173
179
  "app:access",
174
180
  "deck:create:own",
175
181
  "deck:update:own",
176
182
  "deck:read:premium",
177
183
  "stats:view",
178
184
  "vesty:chat",
185
+ "vesty:insights",
179
186
  "library:write:premium"
180
- ] }, b = (e, t, n) => {
187
+ ] }, x = (e, t, n) => {
181
188
  if (!t) return !1;
182
- if (v[t].includes(e)) return !0;
183
- for (let t of n ?? []) if ((y[t] ?? []).includes(e)) return !0;
189
+ if (y[t].includes(e)) return !0;
190
+ for (let t of n ?? []) if ((b[t] ?? []).includes(e)) return !0;
184
191
  return !1;
185
- }, x = /* @__PURE__ */ function(e) {
192
+ }, S = /* @__PURE__ */ function(e) {
186
193
  return e.Published = "published", e.Draft = "draft", e.Archived = "archived", e;
187
- }({}), S = {
194
+ }({}), C = {
188
195
  história: "quaternary",
189
196
  geografia: "tertiary",
190
197
  matemática: "secondary",
@@ -199,7 +206,7 @@ var s = /* @__PURE__ */ function(e) {
199
206
  artes: "tertiary",
200
207
  inglês: "quinary",
201
208
  default: "default"
202
- }, C = {
209
+ }, w = {
203
210
  matemática: "radical",
204
211
  gramática: "spell-check",
205
212
  literatura: "book-open",
@@ -214,9 +221,9 @@ var s = /* @__PURE__ */ function(e) {
214
221
  artes: "palette",
215
222
  inglês: "languages",
216
223
  default: "graduation-cap"
217
- }, w = (e) => C[e] || C.default, T = (e) => S[e] || S.default, E = (e) => {
218
- let t = T(e);
224
+ }, T = (e) => w[e] || w.default, E = (e) => C[e] || C.default, D = (e) => {
225
+ let t = E(e);
219
226
  return i[t === "default" ? "gray" : t].DEFAULT;
220
227
  };
221
228
  //#endregion
222
- export { _ as ALL_PERMISSIONS, s as BlogPostStatus, l as DeckStatus, y as ENTITLEMENT_PERMISSIONS, p as Entitlement, x as EntranceExamProgramStatus, m as MembershipStatus, f as OrganizationRole, h as PERMISSIONS, g as Permission, v as ROLE_PERMISSIONS, r as ReviewRating, t as ReviewState, u as SUBJECTS, S as SUBJECT_COLORS, C as SUBJECT_ICONS, a as UNPAGINATED_SIZE, d as UserRole, c as cardDemandStatus, E as getSubjectCSSColor, T as getSubjectColor, w as getSubjectIcon, b as hasPermission, n as reviewRatings, e as reviewStates, o as unwrapApiResponse };
229
+ export { v as ALL_PERMISSIONS, s as BlogPostStatus, l as DeckStatus, b as ENTITLEMENT_PERMISSIONS, p as Entitlement, S as EntranceExamProgramStatus, m as MembershipStatus, f as OrganizationRole, g as PERMISSIONS, _ as Permission, h as PlanType, y as ROLE_PERMISSIONS, r as ReviewRating, t as ReviewState, u as SUBJECTS, C as SUBJECT_COLORS, w as SUBJECT_ICONS, a as UNPAGINATED_SIZE, d as UserRole, c as cardDemandStatus, D as getSubjectCSSColor, E as getSubjectColor, T as getSubjectIcon, x as hasPermission, n as reviewRatings, e as reviewStates, o as unwrapApiResponse };
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./fsrs-DO2rNRTM.cjs`),t=require(`./date-DoLsSDIb.cjs`);var n=.9,r=50,i=200,a=10,o=10,s=(e=>(e[e.New=0]=`New`,e[e.Learning=1]=`Learning`,e[e.Review=2]=`Review`,e[e.Relearning=3]=`Relearning`,e))(s||{}),c=(e=>(e[e.Manual=0]=`Manual`,e[e.Again=1]=`Again`,e[e.Hard=2]=`Hard`,e[e.Good=3]=`Good`,e[e.Easy=4]=`Easy`,e))(c||{}),l=class e{static card(t){return{...t,state:e.state(t.state),due:e.time(t.due),last_review:t.last_review?e.time(t.last_review):void 0}}static rating(e){if(typeof e==`string`){let t=c[`${e.charAt(0).toUpperCase()}${e.slice(1).toLowerCase()}`];if(t===void 0)throw Error(`Invalid rating:[${e}]`);return t}else if(typeof e==`number`)return e;throw Error(`Invalid rating:[${e}]`)}static state(e){if(typeof e==`string`){let t=s[`${e.charAt(0).toUpperCase()}${e.slice(1).toLowerCase()}`];if(t===void 0)throw Error(`Invalid state:[${e}]`);return t}else if(typeof e==`number`)return e;throw Error(`Invalid state:[${e}]`)}static time(e){if(typeof e==`object`&&e instanceof Date)return e;if(typeof e==`string`){let t=Date.parse(e);if(isNaN(t))throw Error(`Invalid date:[${e}]`);return new Date(t)}else if(typeof e==`number`)return new Date(e);throw Error(`Invalid date:[${e}]`)}static review_log(t){return{...t,due:e.time(t.due),rating:e.rating(t.rating),state:e.state(t.state),review:e.time(t.review)}}},u=`4.7.1`;Date.prototype.scheduler=function(e,t){return d(this,e,t)},Date.prototype.diff=function(e,t){return f(this,e,t)},Date.prototype.format=function(){return p(this)},Date.prototype.dueFormat=function(e,t,n){return ee(this,e,t,n)};function d(e,t,n){return new Date(n?l.time(e).getTime()+t*24*60*60*1e3:l.time(e).getTime()+t*60*1e3)}function f(e,t,n){if(!e||!t)throw Error(`Invalid date`);let r=l.time(e).getTime()-l.time(t).getTime(),i=0;switch(n){case`days`:i=Math.floor(r/(1440*60*1e3));break;case`minutes`:i=Math.floor(r/(60*1e3));break}return i}function p(e){let t=l.time(e),n=t.getFullYear(),r=t.getMonth()+1,i=t.getDate(),a=t.getHours(),o=t.getMinutes(),s=t.getSeconds();return`${n}-${m(r)}-${m(i)} ${m(a)}:${m(o)}:${m(s)}`}function m(e){return e<10?`0${e}`:`${e}`}var h=[60,60,24,31,12],g=[`second`,`min`,`hour`,`day`,`month`,`year`];function ee(e,t,n,r=g){e=l.time(e),t=l.time(t),r.length!==g.length&&(r=g);let i=e.getTime()-t.getTime(),a;for(i/=1e3,a=0;a<h.length&&!(i<h[a]);a++)i/=h[a];return`${Math.floor(i)}${n?r[a]:``}`}var te=Object.freeze([c.Again,c.Hard,c.Good,c.Easy]),ne=[{start:2.5,end:7,factor:.15},{start:7,end:20,factor:.1},{start:20,end:1/0,factor:.05}];function re(e,t,n){let r=1;for(let t of ne)r+=t.factor*Math.max(Math.min(e,t.end)-t.start,0);e=Math.min(e,n);let i=Math.max(2,Math.round(e-r)),a=Math.min(Math.round(e+r),n);return e>t&&(i=Math.max(i,t+1)),i=Math.min(i,a),{min_ivl:i,max_ivl:a}}function _(e,t,n){return Math.min(Math.max(e,t),n)}function ie(e,t){let n=Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()),r=Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate());return Math.floor((r-n)/864e5)}var ae=Object.freeze([.40255,1.18385,3.173,15.69105,7.1949,.5345,1.4604,.0046,1.54575,.1192,1.01925,1.9395,.11,.29605,2.2698,.2315,2.9898,.51655,.6621]);`${u}`;var v=.01,oe=Object.freeze([Object.freeze([v,100]),Object.freeze([v,100]),Object.freeze([v,100]),Object.freeze([v,100]),Object.freeze([1,10]),Object.freeze([.001,4]),Object.freeze([.001,4]),Object.freeze([.001,.75]),Object.freeze([0,4.5]),Object.freeze([0,.8]),Object.freeze([.001,3.5]),Object.freeze([.001,5]),Object.freeze([.001,.25]),Object.freeze([.001,.9]),Object.freeze([0,4]),Object.freeze([0,1]),Object.freeze([1,6]),Object.freeze([0,2]),Object.freeze([0,2])]),y=e=>{let t=[...ae];return e?.w&&(e.w.length===19?t=[...e.w]:e.w.length===17&&(t=e?.w.concat([0,0]),t[4]=+(t[5]*2+t[4]).toFixed(8),t[5]=+(Math.log(t[5]*3+1)/3).toFixed(8),t[6]=+(t[6]+.5).toFixed(8),console.debug(`[FSRS V5]auto fill w to 19 length`))),t=t.map((e,t)=>_(e,oe[t][0],oe[t][1])),{request_retention:e?.request_retention||.9,maximum_interval:e?.maximum_interval||36500,w:t,enable_fuzz:e?.enable_fuzz??!1,enable_short_term:e?.enable_short_term??!0}};function b(e,t){let n={due:e?l.time(e):new Date,stability:0,difficulty:0,elapsed_days:0,scheduled_days:0,reps:0,lapses:0,state:s.New,last_review:void 0};return t&&typeof t==`function`?t(n):n}var se=class{c;s0;s1;s2;constructor(e){let t=ce();this.c=1,this.s0=t(` `),this.s1=t(` `),this.s2=t(` `),e??=+new Date,this.s0-=t(e),this.s0<0&&(this.s0+=1),this.s1-=t(e),this.s1<0&&(this.s1+=1),this.s2-=t(e),this.s2<0&&(this.s2+=1)}next(){let e=2091639*this.s0+this.c*23283064365386963e-26;return this.s0=this.s1,this.s1=this.s2,this.s2=e-(this.c=e|0),this.s2}set state(e){this.c=e.c,this.s0=e.s0,this.s1=e.s1,this.s2=e.s2}get state(){return{c:this.c,s0:this.s0,s1:this.s1,s2:this.s2}}};function ce(){let e=4022871197;return function(t){t=String(t);for(let n=0;n<t.length;n++){e+=t.charCodeAt(n);let r=.02519603282416938*e;e=r>>>0,r-=e,r*=e,e=r>>>0,r-=e,e+=r*4294967296}return(e>>>0)*23283064365386963e-26}}function le(e){let t=new se(e),n=()=>t.next();return n.int32=()=>t.next()*4294967296|0,n.double=()=>n()+(n()*2097152|0)*11102230246251565e-32,n.state=()=>t.state,n.importState=e=>(t.state=e,n),n}var ue=-.5,de=19/81;function fe(e,t){return+((1+de*e/t)**+ue).toFixed(8)}var pe=class{param;intervalModifier;_seed;constructor(e){this.param=new Proxy(y(e),this.params_handler_proxy()),this.intervalModifier=this.calculate_interval_modifier(this.param.request_retention)}get interval_modifier(){return this.intervalModifier}set seed(e){this._seed=e}calculate_interval_modifier(e){if(e<=0||e>1)throw Error(`Requested retention rate should be in the range (0,1]`);return+((e**(1/ue)-1)/de).toFixed(8)}get parameters(){return this.param}set parameters(e){this.update_parameters(e)}params_handler_proxy(){let e=this;return{set:function(t,n,r){return n===`request_retention`&&Number.isFinite(r)&&(e.intervalModifier=e.calculate_interval_modifier(Number(r))),Reflect.set(t,n,r),!0}}}update_parameters(e){let t=y(e);for(let e in t)if(e in this.param){let n=e;this.param[n]=t[n]}}init_stability(e){return Math.max(this.param.w[e-1],.1)}init_difficulty(e){return this.constrain_difficulty(this.param.w[4]-Math.exp((e-1)*this.param.w[5])+1)}apply_fuzz(e,t){if(!this.param.enable_fuzz||e<2.5)return Math.round(e);let n=le(this._seed)(),{min_ivl:r,max_ivl:i}=re(e,t,this.param.maximum_interval);return Math.floor(n*(i-r+1)+r)}next_interval(e,t){let n=Math.min(Math.max(1,Math.round(e*this.intervalModifier)),this.param.maximum_interval);return this.apply_fuzz(n,t)}linear_damping(e,t){return+(e*(10-t)/9).toFixed(8)}next_difficulty(e,t){let n=-this.param.w[6]*(t-3),r=e+this.linear_damping(n,e);return this.constrain_difficulty(this.mean_reversion(this.init_difficulty(c.Easy),r))}constrain_difficulty(e){return Math.min(Math.max(+e.toFixed(8),1),10)}mean_reversion(e,t){return+(this.param.w[7]*e+(1-this.param.w[7])*t).toFixed(8)}next_recall_stability(e,t,n,r){let i=c.Hard===r?this.param.w[15]:1,a=c.Easy===r?this.param.w[16]:1;return+_(t*(1+Math.exp(this.param.w[8])*(11-e)*t**+-this.param.w[9]*(Math.exp((1-n)*this.param.w[10])-1)*i*a),v,36500).toFixed(8)}next_forget_stability(e,t,n){return+_(this.param.w[11]*e**+-this.param.w[12]*((t+1)**+this.param.w[13]-1)*Math.exp((1-n)*this.param.w[14]),v,36500).toFixed(8)}next_short_term_stability(e,t){return+_(e*Math.exp(this.param.w[17]*(t-3+this.param.w[18])),v,36500).toFixed(8)}forgetting_curve=fe;next_state(e,t,n){let{difficulty:r,stability:i}=e??{difficulty:0,stability:0};if(t<0)throw Error(`Invalid delta_t "${t}"`);if(n<0||n>4)throw Error(`Invalid grade "${n}"`);if(r===0&&i===0)return{difficulty:this.init_difficulty(n),stability:this.init_stability(n)};if(n===0)return{difficulty:r,stability:i};if(r<1||i<.01)throw Error(`Invalid memory state { difficulty: ${r}, stability: ${i} }`);let a=this.forgetting_curve(t,i),o=this.next_recall_stability(r,i,a,n),s=this.next_forget_stability(r,i,a),c=this.next_short_term_stability(i,n),l=o;if(n===1){let[e,t]=[0,0];this.param.enable_short_term&&(e=this.param.w[17],t=this.param.w[18]),l=_(+(i/Math.exp(e*t)).toFixed(8),v,s)}return t===0&&this.param.enable_short_term&&(l=c),{difficulty:this.next_difficulty(r,n),stability:l}}};function me(){return`${this.review_time.getTime()}_${this.current.reps}_${this.current.difficulty*this.current.stability}`}var x=(e=>(e.SCHEDULER=`Scheduler`,e.SEED=`Seed`,e))(x||{}),he=class{last;current;review_time;next=new Map;algorithm;initSeedStrategy;constructor(e,t,n,r={seed:me}){this.algorithm=n,this.initSeedStrategy=r.seed.bind(this),this.last=l.card(e),this.current=l.card(e),this.review_time=l.time(t),this.init()}init(){let{state:e,last_review:t}=this.current,n=0;e!==s.New&&t&&(n=ie(t,this.review_time)),this.current.last_review=this.review_time,this.current.elapsed_days=n,this.current.reps+=1,this.algorithm.seed=this.initSeedStrategy()}preview(){return{[c.Again]:this.review(c.Again),[c.Hard]:this.review(c.Hard),[c.Good]:this.review(c.Good),[c.Easy]:this.review(c.Easy),[Symbol.iterator]:this.previewIterator.bind(this)}}*previewIterator(){for(let e of te)yield this.review(e)}review(e){let{state:t}=this.last,n;switch(t){case s.New:n=this.newState(e);break;case s.Learning:case s.Relearning:n=this.learningState(e);break;case s.Review:n=this.reviewState(e);break}if(n)return n;throw Error(`Invalid grade`)}buildLog(e){let{last_review:t,due:n,elapsed_days:r}=this.last;return{rating:e,state:this.current.state,due:t||n,stability:this.current.stability,difficulty:this.current.difficulty,elapsed_days:this.current.elapsed_days,last_elapsed_days:r,scheduled_days:this.current.scheduled_days,review:this.review_time}}},ge=class extends he{newState(e){let t=this.next.get(e);if(t)return t;let n=l.card(this.current);switch(n.difficulty=this.algorithm.init_difficulty(e),n.stability=this.algorithm.init_stability(e),e){case c.Again:n.scheduled_days=0,n.due=this.review_time.scheduler(1),n.state=s.Learning;break;case c.Hard:n.scheduled_days=0,n.due=this.review_time.scheduler(5),n.state=s.Learning;break;case c.Good:n.scheduled_days=0,n.due=this.review_time.scheduler(10),n.state=s.Learning;break;case c.Easy:{let e=this.algorithm.next_interval(n.stability,this.current.elapsed_days);n.scheduled_days=e,n.due=this.review_time.scheduler(e,!0),n.state=s.Review;break}default:throw Error(`Invalid grade`)}let r={card:n,log:this.buildLog(e)};return this.next.set(e,r),r}learningState(e){let t=this.next.get(e);if(t)return t;let{state:n,difficulty:r,stability:i}=this.last,a=l.card(this.current),o=this.current.elapsed_days;switch(a.difficulty=this.algorithm.next_difficulty(r,e),a.stability=this.algorithm.next_short_term_stability(i,e),e){case c.Again:a.scheduled_days=0,a.due=this.review_time.scheduler(5,!1),a.state=n;break;case c.Hard:a.scheduled_days=0,a.due=this.review_time.scheduler(10),a.state=n;break;case c.Good:{let e=this.algorithm.next_interval(a.stability,o);a.scheduled_days=e,a.due=this.review_time.scheduler(e,!0),a.state=s.Review;break}case c.Easy:{let e=this.algorithm.next_short_term_stability(i,c.Good),t=this.algorithm.next_interval(e,o),n=Math.max(this.algorithm.next_interval(a.stability,o),t+1);a.scheduled_days=n,a.due=this.review_time.scheduler(n,!0),a.state=s.Review;break}default:throw Error(`Invalid grade`)}let u={card:a,log:this.buildLog(e)};return this.next.set(e,u),u}reviewState(e){let t=this.next.get(e);if(t)return t;let n=this.current.elapsed_days,{difficulty:r,stability:i}=this.last,a=this.algorithm.forgetting_curve(n,i),o=l.card(this.current),s=l.card(this.current),u=l.card(this.current),d=l.card(this.current);this.next_ds(o,s,u,d,r,i,a),this.next_interval(o,s,u,d,n),this.next_state(o,s,u,d),o.lapses+=1;let f={card:o,log:this.buildLog(c.Again)},p={card:s,log:super.buildLog(c.Hard)},m={card:u,log:super.buildLog(c.Good)},h={card:d,log:super.buildLog(c.Easy)};return this.next.set(c.Again,f),this.next.set(c.Hard,p),this.next.set(c.Good,m),this.next.set(c.Easy,h),this.next.get(e)}next_ds(e,t,n,r,i,a,o){e.difficulty=this.algorithm.next_difficulty(i,c.Again);let s=a/Math.exp(this.algorithm.parameters.w[17]*this.algorithm.parameters.w[18]),l=this.algorithm.next_forget_stability(i,a,o);e.stability=_(+s.toFixed(8),v,l),t.difficulty=this.algorithm.next_difficulty(i,c.Hard),t.stability=this.algorithm.next_recall_stability(i,a,o,c.Hard),n.difficulty=this.algorithm.next_difficulty(i,c.Good),n.stability=this.algorithm.next_recall_stability(i,a,o,c.Good),r.difficulty=this.algorithm.next_difficulty(i,c.Easy),r.stability=this.algorithm.next_recall_stability(i,a,o,c.Easy)}next_interval(e,t,n,r,i){let a,o;a=this.algorithm.next_interval(t.stability,i),o=this.algorithm.next_interval(n.stability,i),a=Math.min(a,o),o=Math.max(o,a+1);let s=Math.max(this.algorithm.next_interval(r.stability,i),o+1);e.scheduled_days=0,e.due=this.review_time.scheduler(5),t.scheduled_days=a,t.due=this.review_time.scheduler(a,!0),n.scheduled_days=o,n.due=this.review_time.scheduler(o,!0),r.scheduled_days=s,r.due=this.review_time.scheduler(s,!0)}next_state(e,t,n,r){e.state=s.Relearning,t.state=s.Review,n.state=s.Review,r.state=s.Review}},_e=class extends he{newState(e){let t=this.next.get(e);if(t)return t;this.current.scheduled_days=0,this.current.elapsed_days=0;let n=l.card(this.current),r=l.card(this.current),i=l.card(this.current),a=l.card(this.current);return this.init_ds(n,r,i,a),this.next_interval(n,r,i,a,0),this.next_state(n,r,i,a),this.update_next(n,r,i,a),this.next.get(e)}init_ds(e,t,n,r){e.difficulty=this.algorithm.init_difficulty(c.Again),e.stability=this.algorithm.init_stability(c.Again),t.difficulty=this.algorithm.init_difficulty(c.Hard),t.stability=this.algorithm.init_stability(c.Hard),n.difficulty=this.algorithm.init_difficulty(c.Good),n.stability=this.algorithm.init_stability(c.Good),r.difficulty=this.algorithm.init_difficulty(c.Easy),r.stability=this.algorithm.init_stability(c.Easy)}learningState(e){return this.reviewState(e)}reviewState(e){let t=this.next.get(e);if(t)return t;let n=this.current.elapsed_days,{difficulty:r,stability:i}=this.last,a=this.algorithm.forgetting_curve(n,i),o=l.card(this.current),s=l.card(this.current),c=l.card(this.current),u=l.card(this.current);return this.next_ds(o,s,c,u,r,i,a),this.next_interval(o,s,c,u,n),this.next_state(o,s,c,u),o.lapses+=1,this.update_next(o,s,c,u),this.next.get(e)}next_ds(e,t,n,r,i,a,o){e.difficulty=this.algorithm.next_difficulty(i,c.Again),e.stability=_(a,v,this.algorithm.next_forget_stability(i,a,o)),t.difficulty=this.algorithm.next_difficulty(i,c.Hard),t.stability=this.algorithm.next_recall_stability(i,a,o,c.Hard),n.difficulty=this.algorithm.next_difficulty(i,c.Good),n.stability=this.algorithm.next_recall_stability(i,a,o,c.Good),r.difficulty=this.algorithm.next_difficulty(i,c.Easy),r.stability=this.algorithm.next_recall_stability(i,a,o,c.Easy)}next_interval(e,t,n,r,i){let a,o,s,c;a=this.algorithm.next_interval(e.stability,i),o=this.algorithm.next_interval(t.stability,i),s=this.algorithm.next_interval(n.stability,i),c=this.algorithm.next_interval(r.stability,i),a=Math.min(a,o),o=Math.max(o,a+1),s=Math.max(s,o+1),c=Math.max(c,s+1),e.scheduled_days=a,e.due=this.review_time.scheduler(a,!0),t.scheduled_days=o,t.due=this.review_time.scheduler(o,!0),n.scheduled_days=s,n.due=this.review_time.scheduler(s,!0),r.scheduled_days=c,r.due=this.review_time.scheduler(c,!0)}next_state(e,t,n,r){e.state=s.Review,t.state=s.Review,n.state=s.Review,r.state=s.Review}update_next(e,t,n,r){let i={card:e,log:this.buildLog(c.Again)},a={card:t,log:super.buildLog(c.Hard)},o={card:n,log:super.buildLog(c.Good)},s={card:r,log:super.buildLog(c.Easy)};this.next.set(c.Again,i),this.next.set(c.Hard,a),this.next.set(c.Good,o),this.next.set(c.Easy,s)}},ve=class{fsrs;constructor(e){this.fsrs=e}replay(e,t,n){return this.fsrs.next(e,t,n)}handleManualRating(e,t,n,r,i,a,o){if(typeof t>`u`)throw Error(`reschedule: state is required for manual rating`);let l,u;if(t===s.New)l={rating:c.Manual,state:t,due:o??n,stability:e.stability,difficulty:e.difficulty,elapsed_days:r,last_elapsed_days:e.elapsed_days,scheduled_days:e.scheduled_days,review:n},u=b(n),u.last_review=n;else{if(typeof o>`u`)throw Error(`reschedule: due is required for manual rating`);let s=o.diff(n,`days`);l={rating:c.Manual,state:e.state,due:e.last_review||e.due,stability:e.stability,difficulty:e.difficulty,elapsed_days:r,last_elapsed_days:e.elapsed_days,scheduled_days:e.scheduled_days,review:n},u={...e,state:t,due:o,last_review:n,stability:i||e.stability,difficulty:a||e.difficulty,elapsed_days:r,scheduled_days:s,reps:e.reps+1}}return{card:u,log:l}}reschedule(e,t){let n=[],r=b(e.due);for(let e of t){let t;if(e.review=l.time(e.review),e.rating===c.Manual){let n=0;r.state!==s.New&&r.last_review&&(n=e.review.diff(r.last_review,`days`)),t=this.handleManualRating(r,e.state,e.review,n,e.stability,e.difficulty,e.due?l.time(e.due):void 0)}else t=this.replay(r,e.review,e.rating);n.push(t),r=t.card}return n}calculateManualRecord(e,t,n,r){if(!n)return null;let{card:i,log:a}=n,o=l.card(e);return o.due.getTime()===i.due.getTime()?null:(o.scheduled_days=i.due.diff(o.due,`days`),this.handleManualRating(o,i.state,l.time(t),a.elapsed_days,r?i.stability:void 0,r?i.difficulty:void 0,i.due))}},ye=class extends pe{strategyHandler=new Map;Scheduler;constructor(e){super(e);let{enable_short_term:t}=this.parameters;this.Scheduler=t?ge:_e}params_handler_proxy(){let e=this;return{set:function(t,n,r){return n===`request_retention`&&Number.isFinite(r)?e.intervalModifier=e.calculate_interval_modifier(Number(r)):n===`enable_short_term`&&(e.Scheduler=r===!0?ge:_e),Reflect.set(t,n,r),!0}}}useStrategy(e,t){return this.strategyHandler.set(e,t),this}clearStrategy(e){return e?this.strategyHandler.delete(e):this.strategyHandler.clear(),this}getScheduler(e,t){let n=this.strategyHandler.get(x.SEED);return new((this.strategyHandler.get(x.SCHEDULER))||this.Scheduler)(e,t,this,{seed:n||me})}repeat(e,t,n){let r=this.getScheduler(e,t).preview();return n&&typeof n==`function`?n(r):r}next(e,t,n,r){let i=this.getScheduler(e,t),a=l.rating(n);if(a===c.Manual)throw Error(`Cannot review a manual rating`);let o=i.review(a);return r&&typeof r==`function`?r(o):o}get_retrievability(e,t,n=!0){let r=l.card(e);t=t?l.time(t):new Date;let i=r.state===s.New?0:Math.max(t.diff(r.last_review,`days`),0),a=r.state===s.New?0:this.forgetting_curve(i,+r.stability.toFixed(8));return n?`${(a*100).toFixed(2)}%`:a}rollback(e,t,n){let r=l.card(e),i=l.review_log(t);if(i.rating===c.Manual)throw Error(`Cannot rollback a manual rating`);let a,o,u;switch(i.state){case s.New:a=i.due,o=void 0,u=0;break;case s.Learning:case s.Relearning:case s.Review:a=i.review,o=i.due,u=r.lapses-+(i.rating===c.Again&&i.state===s.Review);break}let d={...r,due:a,stability:i.stability,difficulty:i.difficulty,elapsed_days:i.last_elapsed_days,scheduled_days:i.scheduled_days,reps:Math.max(0,r.reps-1),lapses:Math.max(0,u),state:i.state,last_review:o};return n&&typeof n==`function`?n(d):d}forget(e,t,n=!1,r){let i=l.card(e);t=l.time(t);let a=i.state===s.New?0:t.diff(i.last_review,`days`),o={rating:c.Manual,state:i.state,due:i.due,stability:i.stability,difficulty:i.difficulty,elapsed_days:0,last_elapsed_days:i.elapsed_days,scheduled_days:a,review:t},u={card:{...i,due:t,stability:0,difficulty:0,elapsed_days:0,scheduled_days:0,reps:n?0:i.reps,lapses:n?0:i.lapses,state:s.New,last_review:i.last_review},log:o};return r&&typeof r==`function`?r(u):u}reschedule(e,t=[],n={}){let{recordLogHandler:r,reviewsOrderBy:i,skipManual:a=!0,now:o=new Date,update_memory_state:s=!1}=n;i&&typeof i==`function`&&t.sort(i),a&&(t=t.filter(e=>e.rating!==c.Manual));let u=new ve(this),d=u.reschedule(n.first_card||b(),t),f=d.length,p=l.card(e),m=u.calculateManualRecord(p,o,f?d[f-1]:void 0,s);return r&&typeof r==`function`?{collections:d.map(r),reschedule_item:m?r(m):null}:{collections:d,reschedule_item:m}}},be=(e=>new ye(e||{}))(y({request_retention:n,enable_fuzz:!0,maximum_interval:100})),xe=e=>e.due?e:{...e,due:new Date},Se=t=>e.i.indexOf(t),Ce=e=>({due:e.due,stability:e.stability,difficulty:e.difficulty,elapsed_days:e.elapsedDays,scheduled_days:e.scheduledDays,reps:e.reps,lapses:e.lapses,state:Se(e.state),last_review:e.lastReview}),we=(e,t,n)=>{let r=new Date,i=Ce(xe(e));return be.repeat(i,r,r=>{let i=r[ke(t)],a=Oe(i.card,e),o=i.log;return{nextCard:a,reviewLog:{id:0,cardReviewId:e.id,grade:t,state:De(o.state),due:o.due,stability:o.stability,difficulty:o.difficulty,elapsedDays:o.elapsed_days,lastElapsedDays:o.last_elapsed_days,scheduledDays:o.scheduled_days,review:o.review,duration:n}}})};function Te(t){let n=new Date,r=Ce(xe(t)),i=be.repeat(r,n),a=Object.fromEntries(e.r.map(e=>[e,new Date]));for(let e of te){let t=i[e].card.due,n=Ee(e);a[n]=t}return a}function Ee(t){return e.r[t]}function De(t){return e.i[t]}function Oe(e,t){return{...t,due:e.due,stability:e.stability,difficulty:e.difficulty,elapsedDays:e.elapsed_days,scheduledDays:e.scheduled_days,reps:e.reps,lapses:e.lapses,state:De(e.state),lastReview:e.last_review??null}}function ke(t){let n=e.r.indexOf(t);if(n===-1)throw Error(`Invalid rating: ${t}`);return n}function Ae(t,n){let r=b();return{id:``,due:null,stability:r.stability,difficulty:r.difficulty,elapsedDays:r.elapsed_days,scheduledDays:r.scheduled_days,reps:r.reps,lapses:r.lapses,state:e.n.New,lastReview:r.last_review??null,userDeckStudyId:t,cardId:n}}var S=Symbol.for(`immer-nothing`),C=Symbol.for(`immer-draftable`),w=Symbol.for(`immer-state`),je=process.env.NODE_ENV===`production`?[]:[function(e){return`The plugin for '${e}' has not been loaded into Immer. To enable the plugin, import and call \`enable${e}()\` when initializing your application.`},function(e){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${e}'`},`This object has been frozen and should not be mutated`,function(e){return`Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? `+e},`An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.`,`Immer forbids circular references`,"The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(e){return`'current' expects a draft, got: ${e}`},`Object.defineProperty() cannot be used on an Immer draft`,`Object.setPrototypeOf() cannot be used on an Immer draft`,`Immer only supports deleting array indices`,`Immer only supports setting array indices and the 'length' property`,function(e){return`'original' expects a draft, got: ${e}`}];function T(e,...t){if(process.env.NODE_ENV!==`production`){let n=je[e],r=typeof n==`function`?n.apply(null,t):n;throw Error(`[Immer] ${r}`)}throw Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var E=Object.getPrototypeOf;function D(e){return!!e&&!!e[w]}function O(e){return e?Pe(e)||Array.isArray(e)||!!e[C]||!!e.constructor?.[C]||M(e)||N(e):!1}var Me=Object.prototype.constructor.toString(),Ne=new WeakMap;function Pe(e){if(!e||typeof e!=`object`)return!1;let t=Object.getPrototypeOf(e);if(t===null||t===Object.prototype)return!0;let n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;if(n===Object)return!0;if(typeof n!=`function`)return!1;let r=Ne.get(n);return r===void 0&&(r=Function.toString.call(n),Ne.set(n,r)),r===Me}function k(e,t,n=!0){A(e)===0?(n?Reflect.ownKeys(e):Object.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function A(e){let t=e[w];return t?t.type_:Array.isArray(e)?1:M(e)?2:N(e)?3:0}function j(e,t){return A(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function Fe(e,t,n){let r=A(e);r===2?e.set(t,n):r===3?e.add(n):e[t]=n}function Ie(e,t){return e===t?e!==0||1/e==1/t:e!==e&&t!==t}function M(e){return e instanceof Map}function N(e){return e instanceof Set}function P(e){return e.copy_||e.base_}function F(e,t){if(M(e))return new Map(e);if(N(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);let n=Pe(e);if(t===!0||t===`class_only`&&!n){let t=Object.getOwnPropertyDescriptors(e);delete t[w];let n=Reflect.ownKeys(t);for(let r=0;r<n.length;r++){let i=n[r],a=t[i];a.writable===!1&&(a.writable=!0,a.configurable=!0),(a.get||a.set)&&(t[i]={configurable:!0,writable:!0,enumerable:a.enumerable,value:e[i]})}return Object.create(E(e),t)}else{let t=E(e);return t!==null&&n?{...e}:Object.assign(Object.create(t),e)}}function I(e,t=!1){return R(e)||D(e)||!O(e)?e:(A(e)>1&&Object.defineProperties(e,{set:L,add:L,clear:L,delete:L}),Object.freeze(e),t&&Object.values(e).forEach(e=>I(e,!0)),e)}function Le(){T(2)}var L={value:Le};function R(e){return typeof e!=`object`||!e?!0:Object.isFrozen(e)}var Re={};function z(e){let t=Re[e];return t||T(0,e),t}var B;function ze(){return B}function Be(e,t){return{drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function Ve(e,t){t&&(z(`Patches`),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function V(e){H(e),e.drafts_.forEach(Ue),e.drafts_=null}function H(e){e===B&&(B=e.parent_)}function He(e){return B=Be(B,e)}function Ue(e){let t=e[w];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function We(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];return e!==void 0&&e!==n?(n[w].modified_&&(V(t),T(4)),O(e)&&(e=U(t,e),t.parent_||W(t,e)),t.patches_&&z(`Patches`).generateReplacementPatches_(n[w].base_,e,t.patches_,t.inversePatches_)):e=U(t,n,[]),V(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e===S?void 0:e}function U(e,t,n){if(R(t))return t;let r=e.immer_.shouldUseStrictIteration(),i=t[w];if(!i)return k(t,(r,a)=>Ge(e,i,t,r,a,n),r),t;if(i.scope_!==e)return t;if(!i.modified_)return W(e,i.base_,!0),i.base_;if(!i.finalized_){i.finalized_=!0,i.scope_.unfinalizedDrafts_--;let t=i.copy_,a=t,o=!1;i.type_===3&&(a=new Set(t),t.clear(),o=!0),k(a,(r,a)=>Ge(e,i,t,r,a,n,o),r),W(e,t,!1),n&&e.patches_&&z(`Patches`).generatePatches_(i,n,e.patches_,e.inversePatches_)}return i.copy_}function Ge(e,t,n,r,i,a,o){if(i==null||typeof i!=`object`&&!o)return;let s=R(i);if(!(s&&!o)){if(process.env.NODE_ENV!==`production`&&i===n&&T(5),D(i)){let o=U(e,i,a&&t&&t.type_!==3&&!j(t.assigned_,r)?a.concat(r):void 0);if(Fe(n,r,o),D(o))e.canAutoFreeze_=!1;else return}else o&&n.add(i);if(O(i)&&!s){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1||t&&t.base_&&t.base_[r]===i&&s)return;U(e,i),(!t||!t.scope_.parent_)&&typeof r!=`symbol`&&(M(n)?n.has(r):Object.prototype.propertyIsEnumerable.call(n,r))&&W(e,i)}}}function W(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&I(t,n)}function Ke(e,t){let n=Array.isArray(e),r={type_:+!!n,scope_:t?t.scope_:ze(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1},i=r,a=G;n&&(i=[r],a=K);let{revoke:o,proxy:s}=Proxy.revocable(i,a);return r.draft_=s,r.revoke_=o,s}var G={get(e,t){if(t===w)return e;let n=P(e);if(!j(n,t))return qe(e,n,t);let r=n[t];return e.finalized_||!O(r)?r:r===q(e.base_,t)?(Y(e),e.copy_[t]=X(r,e)):r},has(e,t){return t in P(e)},ownKeys(e){return Reflect.ownKeys(P(e))},set(e,t,n){let r=Je(P(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let r=q(P(e),t),i=r?.[w];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_[t]=!1,!0;if(Ie(n,r)&&(n!==void 0||j(e.base_,t)))return!0;Y(e),J(e)}return e.copy_[t]===n&&(n!==void 0||t in e.copy_)||Number.isNaN(n)&&Number.isNaN(e.copy_[t])?!0:(e.copy_[t]=n,e.assigned_[t]=!0,!0)},deleteProperty(e,t){return q(e.base_,t)!==void 0||t in e.base_?(e.assigned_[t]=!1,Y(e),J(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=P(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{writable:!0,configurable:e.type_!==1||t!==`length`,enumerable:r.enumerable,value:n[t]}},defineProperty(){T(11)},getPrototypeOf(e){return E(e.base_)},setPrototypeOf(){T(12)}},K={};k(G,(e,t)=>{K[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}}),K.deleteProperty=function(e,t){return process.env.NODE_ENV!==`production`&&isNaN(parseInt(t))&&T(13),K.set.call(this,e,t,void 0)},K.set=function(e,t,n){return process.env.NODE_ENV!==`production`&&t!==`length`&&isNaN(parseInt(t))&&T(14),G.set.call(this,e[0],t,n,e[0])};function q(e,t){let n=e[w];return(n?P(n):e)[t]}function qe(e,t,n){let r=Je(t,n);return r?`value`in r?r.value:r.get?.call(e.draft_):void 0}function Je(e,t){if(!(t in e))return;let n=E(e);for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=E(n)}}function J(e){e.modified_||(e.modified_=!0,e.parent_&&J(e.parent_))}function Y(e){e.copy_||=F(e.base_,e.scope_.immer_.useStrictShallowCopy_)}var Ye=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!0,this.produce=(e,t,n)=>{if(typeof e==`function`&&typeof t!=`function`){let n=t;t=e;let r=this;return function(e=n,...i){return r.produce(e,e=>t.call(this,e,...i))}}typeof t!=`function`&&T(6),n!==void 0&&typeof n!=`function`&&T(7);let r;if(O(e)){let i=He(this),a=X(e,void 0),o=!0;try{r=t(a),o=!1}finally{o?V(i):H(i)}return Ve(i,n),We(r,i)}else if(!e||typeof e!=`object`){if(r=t(e),r===void 0&&(r=e),r===S&&(r=void 0),this.autoFreeze_&&I(r,!0),n){let t=[],i=[];z(`Patches`).generateReplacementPatches_(e,r,t,i),n(t,i)}return r}else T(1,e)},this.produceWithPatches=(e,t)=>{if(typeof e==`function`)return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},typeof e?.autoFreeze==`boolean`&&this.setAutoFreeze(e.autoFreeze),typeof e?.useStrictShallowCopy==`boolean`&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),typeof e?.useStrictIteration==`boolean`&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){O(e)||T(8),D(e)&&(e=Xe(e));let t=He(this),n=X(e,void 0);return n[w].isManual_=!0,H(t),n}finishDraft(e,t){let n=e&&e[w];(!n||!n.isManual_)&&T(9);let{scope_:r}=n;return Ve(r,t),We(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let r=t[n];if(r.path.length===0&&r.op===`replace`){e=r.value;break}}n>-1&&(t=t.slice(n+1));let r=z(`Patches`).applyPatches_;return D(e)?r(e,t):this.produce(e,e=>r(e,t))}};function X(e,t){let n=M(e)?z(`MapSet`).proxyMap_(e,t):N(e)?z(`MapSet`).proxySet_(e,t):Ke(e,t);return(t?t.scope_:ze()).drafts_.push(n),n}function Xe(e){return D(e)||T(10,e),Z(e)}function Z(e){if(!O(e)||R(e))return e;let t=e[w],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=F(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=F(e,!0);return k(n,(e,t)=>{Fe(n,e,Z(t))},r),t&&(t.finalized_=!1),n}var Ze=new Ye().produce;function Qe(e,t){let n=e+t,r=0;for(let e=0;e<n.length;e++){let t=n.charCodeAt(e);r=(r<<5)-r+t,r|=0}return r}function $e(e,t){return(Qe(e,t)>>>0)/4294967295}function et(e,t=new Set){if(e.reviewCards.length===0&&e.newCards.length===0)return;if(e.reviewCards.length===0)return Q(e.newCards,t)??e.newCards[0];if(e.newCards.length===0)return Q(e.reviewCards,t)??e.reviewCards[0];let n=Q(e.newCards,t),r=Q(e.reviewCards,t);if(!n)return r??e.newCards[0];if(!r)return n??e.reviewCards[0];let i=e.newCards.length,a=(.33+i/(i+e.reviewCards.length))/2;return $e(n.card.id,r.card.id)<a?n:r}function Q(e,t){return e.find(e=>!t.has(e.card.id))}function tt(e,t){let n=$(e,t);return n?Ze(e,e=>{rt(e,n)}):e}function nt(e,n,r){let i=$(n,r);if(!i)return n;let{nextCard:a}=we(i.cardReview,e,30),o=a.due&&(0,t.t.isSameDay)(a.due,new Date);return Ze(n,e=>{rt(e,i),o&&it(e,{...i,cardReview:a})})}function rt(e,t){t.cardReview.state===`New`?e.newCards=e.newCards.filter(e=>e.card.id!==t.card.id):e.reviewCards=e.reviewCards.filter(e=>e.card.id!==t.card.id),at(e,t.cardReview.state,`decrease`)}function it(e,t){if(t.cardReview.state===`New`){let n=e.newCards.findIndex(e=>e.cardReview.due&&t.cardReview.due&&e.cardReview.due>=t.cardReview.due||e.cardReview.difficulty>=t.cardReview.difficulty);n===-1?e.newCards.push(t):e.newCards.splice(n,0,t)}else{let n=ot(e,e.reviewCards);e.reviewCards.splice(n,0,t)}at(e,t.cardReview.state,`increase`)}function at(e,t,n){let r=n===`increase`?1:-1;switch(t){case`New`:e.stats.new+=r;break;case`Learning`:case`Relearning`:e.stats.learning+=r;break;case`Review`:e.stats.review+=r;break;default:e.stats.new+=r;break}e.stats.total+=r}function $(e,t){return e.newCards.find(e=>e.card.id===t)??e.reviewCards.find(e=>e.card.id===t)}function ot(e,t){if(t.length===0)return 0;let n=Math.max(4,Math.floor(t.length/3));return Math.min(n,t.length)}var st=5,ct={newCards:[],reviewCards:[],stats:{new:0,learning:0,review:0,total:0}},lt=class{recentlyReviewed=new Set;_reviewsCompleted=0;_correctGrades=0;getProgress(){return{reviewsCompleted:this._reviewsCompleted,correctGrades:this._correctGrades}}nextCard(e){return et(e,this.recentlyReviewed)}onRate(e,t){return this.recentlyReviewed.add(e),this.recentlyReviewed.size>5&&this.recentlyReviewed.delete(this.recentlyReviewed.values().next().value),this._reviewsCompleted++,(t===`Good`||t===`Easy`)&&this._correctGrades++,this.getProgress()}};exports.FSRS_RETENTION=n,exports.FlashcardSessionManager=lt,exports.MAX_CARDS_TO_FETCH=r,exports.MAX_LEARN_PER_DAY=i,exports.MAX_NEW_PER_DECK_DAY=a,exports.RECENTLY_REVIEWED_SET_SIZE=st,exports.THRESHOLD_CARDS_FOR_REFETCH=o,exports.defaultSessionData=ct,exports.getNextCardFromSession=et,exports.getReviewDateForEachRating=Te,exports.getSessionCard=$,exports.gradeCard=we,exports.mergeFsrsCard=Oe,exports.newCardReview=Ae,exports.removeCardFromSessionData=nt,exports.skipCardFromSessionData=tt;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./fsrs-DO2rNRTM.cjs`),t=require(`./date-Bn1ahM0R.cjs`);var n=.9,r=.1542,i=n**(-1/r)-1,a=50,o={learnDailyLimit:{recommended:200,min:100,max:500,step:50},newCardsPerDeckDailyLimit:{recommended:10,min:1,max:50,step:5}},s=10,c=(e,t)=>e===o.learnDailyLimit.recommended&&t===o.newCardsPerDeckDailyLimit.recommended,l=(e=>(e[e.New=0]=`New`,e[e.Learning=1]=`Learning`,e[e.Review=2]=`Review`,e[e.Relearning=3]=`Relearning`,e))(l||{}),u=(e=>(e[e.Manual=0]=`Manual`,e[e.Again=1]=`Again`,e[e.Hard=2]=`Hard`,e[e.Good=3]=`Good`,e[e.Easy=4]=`Easy`,e))(u||{}),d=class e{static card(t){return{...t,state:e.state(t.state),due:e.time(t.due),last_review:t.last_review?e.time(t.last_review):void 0}}static rating(e){if(typeof e==`string`){let t=u[`${e.charAt(0).toUpperCase()}${e.slice(1).toLowerCase()}`];if(t===void 0)throw Error(`Invalid rating:[${e}]`);return t}else if(typeof e==`number`)return e;throw Error(`Invalid rating:[${e}]`)}static state(e){if(typeof e==`string`){let t=l[`${e.charAt(0).toUpperCase()}${e.slice(1).toLowerCase()}`];if(t===void 0)throw Error(`Invalid state:[${e}]`);return t}else if(typeof e==`number`)return e;throw Error(`Invalid state:[${e}]`)}static time(e){if(typeof e==`object`&&e instanceof Date)return e;if(typeof e==`string`){let t=Date.parse(e);if(isNaN(t))throw Error(`Invalid date:[${e}]`);return new Date(t)}else if(typeof e==`number`)return new Date(e);throw Error(`Invalid date:[${e}]`)}static review_log(t){return{...t,due:e.time(t.due),rating:e.rating(t.rating),state:e.state(t.state),review:e.time(t.review)}}},f=`4.7.1`;Date.prototype.scheduler=function(e,t){return p(this,e,t)},Date.prototype.diff=function(e,t){return m(this,e,t)},Date.prototype.format=function(){return ee(this)},Date.prototype.dueFormat=function(e,t,n){return te(this,e,t,n)};function p(e,t,n){return new Date(n?d.time(e).getTime()+t*24*60*60*1e3:d.time(e).getTime()+t*60*1e3)}function m(e,t,n){if(!e||!t)throw Error(`Invalid date`);let r=d.time(e).getTime()-d.time(t).getTime(),i=0;switch(n){case`days`:i=Math.floor(r/(1440*60*1e3));break;case`minutes`:i=Math.floor(r/(60*1e3));break}return i}function ee(e){let t=d.time(e),n=t.getFullYear(),r=t.getMonth()+1,i=t.getDate(),a=t.getHours(),o=t.getMinutes(),s=t.getSeconds();return`${n}-${h(r)}-${h(i)} ${h(a)}:${h(o)}:${h(s)}`}function h(e){return e<10?`0${e}`:`${e}`}var g=[60,60,24,31,12],_=[`second`,`min`,`hour`,`day`,`month`,`year`];function te(e,t,n,r=_){e=d.time(e),t=d.time(t),r.length!==_.length&&(r=_);let i=e.getTime()-t.getTime(),a;for(i/=1e3,a=0;a<g.length&&!(i<g[a]);a++)i/=g[a];return`${Math.floor(i)}${n?r[a]:``}`}var ne=Object.freeze([u.Again,u.Hard,u.Good,u.Easy]),re=[{start:2.5,end:7,factor:.15},{start:7,end:20,factor:.1},{start:20,end:1/0,factor:.05}];function ie(e,t,n){let r=1;for(let t of re)r+=t.factor*Math.max(Math.min(e,t.end)-t.start,0);e=Math.min(e,n);let i=Math.max(2,Math.round(e-r)),a=Math.min(Math.round(e+r),n);return e>t&&(i=Math.max(i,t+1)),i=Math.min(i,a),{min_ivl:i,max_ivl:a}}function v(e,t,n){return Math.min(Math.max(e,t),n)}function ae(e,t){let n=Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()),r=Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate());return Math.floor((r-n)/864e5)}var oe=Object.freeze([.40255,1.18385,3.173,15.69105,7.1949,.5345,1.4604,.0046,1.54575,.1192,1.01925,1.9395,.11,.29605,2.2698,.2315,2.9898,.51655,.6621]);`${f}`;var y=.01,se=Object.freeze([Object.freeze([y,100]),Object.freeze([y,100]),Object.freeze([y,100]),Object.freeze([y,100]),Object.freeze([1,10]),Object.freeze([.001,4]),Object.freeze([.001,4]),Object.freeze([.001,.75]),Object.freeze([0,4.5]),Object.freeze([0,.8]),Object.freeze([.001,3.5]),Object.freeze([.001,5]),Object.freeze([.001,.25]),Object.freeze([.001,.9]),Object.freeze([0,4]),Object.freeze([0,1]),Object.freeze([1,6]),Object.freeze([0,2]),Object.freeze([0,2])]),b=e=>{let t=[...oe];return e?.w&&(e.w.length===19?t=[...e.w]:e.w.length===17&&(t=e?.w.concat([0,0]),t[4]=+(t[5]*2+t[4]).toFixed(8),t[5]=+(Math.log(t[5]*3+1)/3).toFixed(8),t[6]=+(t[6]+.5).toFixed(8),console.debug(`[FSRS V5]auto fill w to 19 length`))),t=t.map((e,t)=>v(e,se[t][0],se[t][1])),{request_retention:e?.request_retention||.9,maximum_interval:e?.maximum_interval||36500,w:t,enable_fuzz:e?.enable_fuzz??!1,enable_short_term:e?.enable_short_term??!0}};function x(e,t){let n={due:e?d.time(e):new Date,stability:0,difficulty:0,elapsed_days:0,scheduled_days:0,reps:0,lapses:0,state:l.New,last_review:void 0};return t&&typeof t==`function`?t(n):n}var ce=class{c;s0;s1;s2;constructor(e){let t=le();this.c=1,this.s0=t(` `),this.s1=t(` `),this.s2=t(` `),e??=+new Date,this.s0-=t(e),this.s0<0&&(this.s0+=1),this.s1-=t(e),this.s1<0&&(this.s1+=1),this.s2-=t(e),this.s2<0&&(this.s2+=1)}next(){let e=2091639*this.s0+this.c*23283064365386963e-26;return this.s0=this.s1,this.s1=this.s2,this.s2=e-(this.c=e|0),this.s2}set state(e){this.c=e.c,this.s0=e.s0,this.s1=e.s1,this.s2=e.s2}get state(){return{c:this.c,s0:this.s0,s1:this.s1,s2:this.s2}}};function le(){let e=4022871197;return function(t){t=String(t);for(let n=0;n<t.length;n++){e+=t.charCodeAt(n);let r=.02519603282416938*e;e=r>>>0,r-=e,r*=e,e=r>>>0,r-=e,e+=r*4294967296}return(e>>>0)*23283064365386963e-26}}function ue(e){let t=new ce(e),n=()=>t.next();return n.int32=()=>t.next()*4294967296|0,n.double=()=>n()+(n()*2097152|0)*11102230246251565e-32,n.state=()=>t.state,n.importState=e=>(t.state=e,n),n}var de=-.5,fe=19/81;function pe(e,t){return+((1+fe*e/t)**+de).toFixed(8)}var me=class{param;intervalModifier;_seed;constructor(e){this.param=new Proxy(b(e),this.params_handler_proxy()),this.intervalModifier=this.calculate_interval_modifier(this.param.request_retention)}get interval_modifier(){return this.intervalModifier}set seed(e){this._seed=e}calculate_interval_modifier(e){if(e<=0||e>1)throw Error(`Requested retention rate should be in the range (0,1]`);return+((e**(1/de)-1)/fe).toFixed(8)}get parameters(){return this.param}set parameters(e){this.update_parameters(e)}params_handler_proxy(){let e=this;return{set:function(t,n,r){return n===`request_retention`&&Number.isFinite(r)&&(e.intervalModifier=e.calculate_interval_modifier(Number(r))),Reflect.set(t,n,r),!0}}}update_parameters(e){let t=b(e);for(let e in t)if(e in this.param){let n=e;this.param[n]=t[n]}}init_stability(e){return Math.max(this.param.w[e-1],.1)}init_difficulty(e){return this.constrain_difficulty(this.param.w[4]-Math.exp((e-1)*this.param.w[5])+1)}apply_fuzz(e,t){if(!this.param.enable_fuzz||e<2.5)return Math.round(e);let n=ue(this._seed)(),{min_ivl:r,max_ivl:i}=ie(e,t,this.param.maximum_interval);return Math.floor(n*(i-r+1)+r)}next_interval(e,t){let n=Math.min(Math.max(1,Math.round(e*this.intervalModifier)),this.param.maximum_interval);return this.apply_fuzz(n,t)}linear_damping(e,t){return+(e*(10-t)/9).toFixed(8)}next_difficulty(e,t){let n=-this.param.w[6]*(t-3),r=e+this.linear_damping(n,e);return this.constrain_difficulty(this.mean_reversion(this.init_difficulty(u.Easy),r))}constrain_difficulty(e){return Math.min(Math.max(+e.toFixed(8),1),10)}mean_reversion(e,t){return+(this.param.w[7]*e+(1-this.param.w[7])*t).toFixed(8)}next_recall_stability(e,t,n,r){let i=u.Hard===r?this.param.w[15]:1,a=u.Easy===r?this.param.w[16]:1;return+v(t*(1+Math.exp(this.param.w[8])*(11-e)*t**+-this.param.w[9]*(Math.exp((1-n)*this.param.w[10])-1)*i*a),y,36500).toFixed(8)}next_forget_stability(e,t,n){return+v(this.param.w[11]*e**+-this.param.w[12]*((t+1)**+this.param.w[13]-1)*Math.exp((1-n)*this.param.w[14]),y,36500).toFixed(8)}next_short_term_stability(e,t){return+v(e*Math.exp(this.param.w[17]*(t-3+this.param.w[18])),y,36500).toFixed(8)}forgetting_curve=pe;next_state(e,t,n){let{difficulty:r,stability:i}=e??{difficulty:0,stability:0};if(t<0)throw Error(`Invalid delta_t "${t}"`);if(n<0||n>4)throw Error(`Invalid grade "${n}"`);if(r===0&&i===0)return{difficulty:this.init_difficulty(n),stability:this.init_stability(n)};if(n===0)return{difficulty:r,stability:i};if(r<1||i<.01)throw Error(`Invalid memory state { difficulty: ${r}, stability: ${i} }`);let a=this.forgetting_curve(t,i),o=this.next_recall_stability(r,i,a,n),s=this.next_forget_stability(r,i,a),c=this.next_short_term_stability(i,n),l=o;if(n===1){let[e,t]=[0,0];this.param.enable_short_term&&(e=this.param.w[17],t=this.param.w[18]),l=v(+(i/Math.exp(e*t)).toFixed(8),y,s)}return t===0&&this.param.enable_short_term&&(l=c),{difficulty:this.next_difficulty(r,n),stability:l}}};function he(){return`${this.review_time.getTime()}_${this.current.reps}_${this.current.difficulty*this.current.stability}`}var S=(e=>(e.SCHEDULER=`Scheduler`,e.SEED=`Seed`,e))(S||{}),ge=class{last;current;review_time;next=new Map;algorithm;initSeedStrategy;constructor(e,t,n,r={seed:he}){this.algorithm=n,this.initSeedStrategy=r.seed.bind(this),this.last=d.card(e),this.current=d.card(e),this.review_time=d.time(t),this.init()}init(){let{state:e,last_review:t}=this.current,n=0;e!==l.New&&t&&(n=ae(t,this.review_time)),this.current.last_review=this.review_time,this.current.elapsed_days=n,this.current.reps+=1,this.algorithm.seed=this.initSeedStrategy()}preview(){return{[u.Again]:this.review(u.Again),[u.Hard]:this.review(u.Hard),[u.Good]:this.review(u.Good),[u.Easy]:this.review(u.Easy),[Symbol.iterator]:this.previewIterator.bind(this)}}*previewIterator(){for(let e of ne)yield this.review(e)}review(e){let{state:t}=this.last,n;switch(t){case l.New:n=this.newState(e);break;case l.Learning:case l.Relearning:n=this.learningState(e);break;case l.Review:n=this.reviewState(e);break}if(n)return n;throw Error(`Invalid grade`)}buildLog(e){let{last_review:t,due:n,elapsed_days:r}=this.last;return{rating:e,state:this.current.state,due:t||n,stability:this.current.stability,difficulty:this.current.difficulty,elapsed_days:this.current.elapsed_days,last_elapsed_days:r,scheduled_days:this.current.scheduled_days,review:this.review_time}}},_e=class extends ge{newState(e){let t=this.next.get(e);if(t)return t;let n=d.card(this.current);switch(n.difficulty=this.algorithm.init_difficulty(e),n.stability=this.algorithm.init_stability(e),e){case u.Again:n.scheduled_days=0,n.due=this.review_time.scheduler(1),n.state=l.Learning;break;case u.Hard:n.scheduled_days=0,n.due=this.review_time.scheduler(5),n.state=l.Learning;break;case u.Good:n.scheduled_days=0,n.due=this.review_time.scheduler(10),n.state=l.Learning;break;case u.Easy:{let e=this.algorithm.next_interval(n.stability,this.current.elapsed_days);n.scheduled_days=e,n.due=this.review_time.scheduler(e,!0),n.state=l.Review;break}default:throw Error(`Invalid grade`)}let r={card:n,log:this.buildLog(e)};return this.next.set(e,r),r}learningState(e){let t=this.next.get(e);if(t)return t;let{state:n,difficulty:r,stability:i}=this.last,a=d.card(this.current),o=this.current.elapsed_days;switch(a.difficulty=this.algorithm.next_difficulty(r,e),a.stability=this.algorithm.next_short_term_stability(i,e),e){case u.Again:a.scheduled_days=0,a.due=this.review_time.scheduler(5,!1),a.state=n;break;case u.Hard:a.scheduled_days=0,a.due=this.review_time.scheduler(10),a.state=n;break;case u.Good:{let e=this.algorithm.next_interval(a.stability,o);a.scheduled_days=e,a.due=this.review_time.scheduler(e,!0),a.state=l.Review;break}case u.Easy:{let e=this.algorithm.next_short_term_stability(i,u.Good),t=this.algorithm.next_interval(e,o),n=Math.max(this.algorithm.next_interval(a.stability,o),t+1);a.scheduled_days=n,a.due=this.review_time.scheduler(n,!0),a.state=l.Review;break}default:throw Error(`Invalid grade`)}let s={card:a,log:this.buildLog(e)};return this.next.set(e,s),s}reviewState(e){let t=this.next.get(e);if(t)return t;let n=this.current.elapsed_days,{difficulty:r,stability:i}=this.last,a=this.algorithm.forgetting_curve(n,i),o=d.card(this.current),s=d.card(this.current),c=d.card(this.current),l=d.card(this.current);this.next_ds(o,s,c,l,r,i,a),this.next_interval(o,s,c,l,n),this.next_state(o,s,c,l),o.lapses+=1;let f={card:o,log:this.buildLog(u.Again)},p={card:s,log:super.buildLog(u.Hard)},m={card:c,log:super.buildLog(u.Good)},ee={card:l,log:super.buildLog(u.Easy)};return this.next.set(u.Again,f),this.next.set(u.Hard,p),this.next.set(u.Good,m),this.next.set(u.Easy,ee),this.next.get(e)}next_ds(e,t,n,r,i,a,o){e.difficulty=this.algorithm.next_difficulty(i,u.Again);let s=a/Math.exp(this.algorithm.parameters.w[17]*this.algorithm.parameters.w[18]),c=this.algorithm.next_forget_stability(i,a,o);e.stability=v(+s.toFixed(8),y,c),t.difficulty=this.algorithm.next_difficulty(i,u.Hard),t.stability=this.algorithm.next_recall_stability(i,a,o,u.Hard),n.difficulty=this.algorithm.next_difficulty(i,u.Good),n.stability=this.algorithm.next_recall_stability(i,a,o,u.Good),r.difficulty=this.algorithm.next_difficulty(i,u.Easy),r.stability=this.algorithm.next_recall_stability(i,a,o,u.Easy)}next_interval(e,t,n,r,i){let a,o;a=this.algorithm.next_interval(t.stability,i),o=this.algorithm.next_interval(n.stability,i),a=Math.min(a,o),o=Math.max(o,a+1);let s=Math.max(this.algorithm.next_interval(r.stability,i),o+1);e.scheduled_days=0,e.due=this.review_time.scheduler(5),t.scheduled_days=a,t.due=this.review_time.scheduler(a,!0),n.scheduled_days=o,n.due=this.review_time.scheduler(o,!0),r.scheduled_days=s,r.due=this.review_time.scheduler(s,!0)}next_state(e,t,n,r){e.state=l.Relearning,t.state=l.Review,n.state=l.Review,r.state=l.Review}},ve=class extends ge{newState(e){let t=this.next.get(e);if(t)return t;this.current.scheduled_days=0,this.current.elapsed_days=0;let n=d.card(this.current),r=d.card(this.current),i=d.card(this.current),a=d.card(this.current);return this.init_ds(n,r,i,a),this.next_interval(n,r,i,a,0),this.next_state(n,r,i,a),this.update_next(n,r,i,a),this.next.get(e)}init_ds(e,t,n,r){e.difficulty=this.algorithm.init_difficulty(u.Again),e.stability=this.algorithm.init_stability(u.Again),t.difficulty=this.algorithm.init_difficulty(u.Hard),t.stability=this.algorithm.init_stability(u.Hard),n.difficulty=this.algorithm.init_difficulty(u.Good),n.stability=this.algorithm.init_stability(u.Good),r.difficulty=this.algorithm.init_difficulty(u.Easy),r.stability=this.algorithm.init_stability(u.Easy)}learningState(e){return this.reviewState(e)}reviewState(e){let t=this.next.get(e);if(t)return t;let n=this.current.elapsed_days,{difficulty:r,stability:i}=this.last,a=this.algorithm.forgetting_curve(n,i),o=d.card(this.current),s=d.card(this.current),c=d.card(this.current),l=d.card(this.current);return this.next_ds(o,s,c,l,r,i,a),this.next_interval(o,s,c,l,n),this.next_state(o,s,c,l),o.lapses+=1,this.update_next(o,s,c,l),this.next.get(e)}next_ds(e,t,n,r,i,a,o){e.difficulty=this.algorithm.next_difficulty(i,u.Again),e.stability=v(a,y,this.algorithm.next_forget_stability(i,a,o)),t.difficulty=this.algorithm.next_difficulty(i,u.Hard),t.stability=this.algorithm.next_recall_stability(i,a,o,u.Hard),n.difficulty=this.algorithm.next_difficulty(i,u.Good),n.stability=this.algorithm.next_recall_stability(i,a,o,u.Good),r.difficulty=this.algorithm.next_difficulty(i,u.Easy),r.stability=this.algorithm.next_recall_stability(i,a,o,u.Easy)}next_interval(e,t,n,r,i){let a,o,s,c;a=this.algorithm.next_interval(e.stability,i),o=this.algorithm.next_interval(t.stability,i),s=this.algorithm.next_interval(n.stability,i),c=this.algorithm.next_interval(r.stability,i),a=Math.min(a,o),o=Math.max(o,a+1),s=Math.max(s,o+1),c=Math.max(c,s+1),e.scheduled_days=a,e.due=this.review_time.scheduler(a,!0),t.scheduled_days=o,t.due=this.review_time.scheduler(o,!0),n.scheduled_days=s,n.due=this.review_time.scheduler(s,!0),r.scheduled_days=c,r.due=this.review_time.scheduler(c,!0)}next_state(e,t,n,r){e.state=l.Review,t.state=l.Review,n.state=l.Review,r.state=l.Review}update_next(e,t,n,r){let i={card:e,log:this.buildLog(u.Again)},a={card:t,log:super.buildLog(u.Hard)},o={card:n,log:super.buildLog(u.Good)},s={card:r,log:super.buildLog(u.Easy)};this.next.set(u.Again,i),this.next.set(u.Hard,a),this.next.set(u.Good,o),this.next.set(u.Easy,s)}},ye=class{fsrs;constructor(e){this.fsrs=e}replay(e,t,n){return this.fsrs.next(e,t,n)}handleManualRating(e,t,n,r,i,a,o){if(typeof t>`u`)throw Error(`reschedule: state is required for manual rating`);let s,c;if(t===l.New)s={rating:u.Manual,state:t,due:o??n,stability:e.stability,difficulty:e.difficulty,elapsed_days:r,last_elapsed_days:e.elapsed_days,scheduled_days:e.scheduled_days,review:n},c=x(n),c.last_review=n;else{if(typeof o>`u`)throw Error(`reschedule: due is required for manual rating`);let l=o.diff(n,`days`);s={rating:u.Manual,state:e.state,due:e.last_review||e.due,stability:e.stability,difficulty:e.difficulty,elapsed_days:r,last_elapsed_days:e.elapsed_days,scheduled_days:e.scheduled_days,review:n},c={...e,state:t,due:o,last_review:n,stability:i||e.stability,difficulty:a||e.difficulty,elapsed_days:r,scheduled_days:l,reps:e.reps+1}}return{card:c,log:s}}reschedule(e,t){let n=[],r=x(e.due);for(let e of t){let t;if(e.review=d.time(e.review),e.rating===u.Manual){let n=0;r.state!==l.New&&r.last_review&&(n=e.review.diff(r.last_review,`days`)),t=this.handleManualRating(r,e.state,e.review,n,e.stability,e.difficulty,e.due?d.time(e.due):void 0)}else t=this.replay(r,e.review,e.rating);n.push(t),r=t.card}return n}calculateManualRecord(e,t,n,r){if(!n)return null;let{card:i,log:a}=n,o=d.card(e);return o.due.getTime()===i.due.getTime()?null:(o.scheduled_days=i.due.diff(o.due,`days`),this.handleManualRating(o,i.state,d.time(t),a.elapsed_days,r?i.stability:void 0,r?i.difficulty:void 0,i.due))}},be=class extends me{strategyHandler=new Map;Scheduler;constructor(e){super(e);let{enable_short_term:t}=this.parameters;this.Scheduler=t?_e:ve}params_handler_proxy(){let e=this;return{set:function(t,n,r){return n===`request_retention`&&Number.isFinite(r)?e.intervalModifier=e.calculate_interval_modifier(Number(r)):n===`enable_short_term`&&(e.Scheduler=r===!0?_e:ve),Reflect.set(t,n,r),!0}}}useStrategy(e,t){return this.strategyHandler.set(e,t),this}clearStrategy(e){return e?this.strategyHandler.delete(e):this.strategyHandler.clear(),this}getScheduler(e,t){let n=this.strategyHandler.get(S.SEED);return new((this.strategyHandler.get(S.SCHEDULER))||this.Scheduler)(e,t,this,{seed:n||he})}repeat(e,t,n){let r=this.getScheduler(e,t).preview();return n&&typeof n==`function`?n(r):r}next(e,t,n,r){let i=this.getScheduler(e,t),a=d.rating(n);if(a===u.Manual)throw Error(`Cannot review a manual rating`);let o=i.review(a);return r&&typeof r==`function`?r(o):o}get_retrievability(e,t,n=!0){let r=d.card(e);t=t?d.time(t):new Date;let i=r.state===l.New?0:Math.max(t.diff(r.last_review,`days`),0),a=r.state===l.New?0:this.forgetting_curve(i,+r.stability.toFixed(8));return n?`${(a*100).toFixed(2)}%`:a}rollback(e,t,n){let r=d.card(e),i=d.review_log(t);if(i.rating===u.Manual)throw Error(`Cannot rollback a manual rating`);let a,o,s;switch(i.state){case l.New:a=i.due,o=void 0,s=0;break;case l.Learning:case l.Relearning:case l.Review:a=i.review,o=i.due,s=r.lapses-+(i.rating===u.Again&&i.state===l.Review);break}let c={...r,due:a,stability:i.stability,difficulty:i.difficulty,elapsed_days:i.last_elapsed_days,scheduled_days:i.scheduled_days,reps:Math.max(0,r.reps-1),lapses:Math.max(0,s),state:i.state,last_review:o};return n&&typeof n==`function`?n(c):c}forget(e,t,n=!1,r){let i=d.card(e);t=d.time(t);let a=i.state===l.New?0:t.diff(i.last_review,`days`),o={rating:u.Manual,state:i.state,due:i.due,stability:i.stability,difficulty:i.difficulty,elapsed_days:0,last_elapsed_days:i.elapsed_days,scheduled_days:a,review:t},s={card:{...i,due:t,stability:0,difficulty:0,elapsed_days:0,scheduled_days:0,reps:n?0:i.reps,lapses:n?0:i.lapses,state:l.New,last_review:i.last_review},log:o};return r&&typeof r==`function`?r(s):s}reschedule(e,t=[],n={}){let{recordLogHandler:r,reviewsOrderBy:i,skipManual:a=!0,now:o=new Date,update_memory_state:s=!1}=n;i&&typeof i==`function`&&t.sort(i),a&&(t=t.filter(e=>e.rating!==u.Manual));let c=new ye(this),l=c.reschedule(n.first_card||x(),t),f=l.length,p=d.card(e),m=c.calculateManualRecord(p,o,f?l[f-1]:void 0,s);return r&&typeof r==`function`?{collections:l.map(r),reschedule_item:m?r(m):null}:{collections:l,reschedule_item:m}}},xe=(e=>new be(e||{}))(b({request_retention:n,enable_fuzz:!0,maximum_interval:100})),Se=e=>e.due?e:{...e,due:new Date},Ce=t=>e.i.indexOf(t),we=e=>({due:e.due,stability:e.stability,difficulty:e.difficulty,elapsed_days:e.elapsedDays,scheduled_days:e.scheduledDays,reps:e.reps,lapses:e.lapses,state:Ce(e.state),last_review:e.lastReview}),Te=(e,t,n)=>{let r=new Date,i=we(Se(e));return xe.repeat(i,r,r=>{let i=r[ke(t)],a=C(i.card,e),o=i.log;return{nextCard:a,reviewLog:{id:0,cardReviewId:e.id,grade:t,state:Oe(o.state),due:o.due,stability:o.stability,difficulty:o.difficulty,elapsedDays:o.elapsed_days,lastElapsedDays:o.last_elapsed_days,scheduledDays:o.scheduled_days,review:o.review,duration:n}}})};function Ee(t){let n=new Date,r=we(Se(t)),i=xe.repeat(r,n),a=Object.fromEntries(e.r.map(e=>[e,new Date]));for(let e of ne){let t=i[e].card.due,n=De(e);a[n]=t}return a}function De(t){return e.r[t]}function Oe(t){return e.i[t]}function C(e,t){return{...t,due:e.due,stability:e.stability,difficulty:e.difficulty,elapsedDays:e.elapsed_days,scheduledDays:e.scheduled_days,reps:e.reps,lapses:e.lapses,state:Oe(e.state),lastReview:e.last_review??null}}function ke(t){let n=e.r.indexOf(t);if(n===-1)throw Error(`Invalid rating: ${t}`);return n}function Ae(t,n){let r=x();return{id:``,due:null,stability:r.stability,difficulty:r.difficulty,elapsedDays:r.elapsed_days,scheduledDays:r.scheduled_days,reps:r.reps,lapses:r.lapses,state:e.n.New,lastReview:r.last_review??null,userDeckStudyId:t,cardId:n}}function je(e,t){return t<=0?0:(1+i*e/t)**-r}function Me(e,t){return je(e,t)*100}var Ne=Symbol.for(`immer-nothing`),Pe=Symbol.for(`immer-draftable`),w=Symbol.for(`immer-state`),Fe=process.env.NODE_ENV===`production`?[]:[function(e){return`The plugin for '${e}' has not been loaded into Immer. To enable the plugin, import and call \`enable${e}()\` when initializing your application.`},function(e){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${e}'`},`This object has been frozen and should not be mutated`,function(e){return`Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? `+e},`An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.`,`Immer forbids circular references`,"The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(e){return`'current' expects a draft, got: ${e}`},`Object.defineProperty() cannot be used on an Immer draft`,`Object.setPrototypeOf() cannot be used on an Immer draft`,`Immer only supports deleting array indices`,`Immer only supports setting array indices and the 'length' property`,function(e){return`'original' expects a draft, got: ${e}`}];function T(e,...t){if(process.env.NODE_ENV!==`production`){let n=Fe[e],r=typeof n==`function`?n.apply(null,t):n;throw Error(`[Immer] ${r}`)}throw Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var E=Object.getPrototypeOf;function D(e){return!!e&&!!e[w]}function O(e){return e?k(e)||Array.isArray(e)||!!e[Pe]||!!e.constructor?.[Pe]||N(e)||P(e):!1}var Ie=Object.prototype.constructor.toString(),Le=new WeakMap;function k(e){if(!e||typeof e!=`object`)return!1;let t=Object.getPrototypeOf(e);if(t===null||t===Object.prototype)return!0;let n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;if(n===Object)return!0;if(typeof n!=`function`)return!1;let r=Le.get(n);return r===void 0&&(r=Function.toString.call(n),Le.set(n,r)),r===Ie}function A(e,t,n=!0){j(e)===0?(n?Reflect.ownKeys(e):Object.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function j(e){let t=e[w];return t?t.type_:Array.isArray(e)?1:N(e)?2:P(e)?3:0}function M(e,t){return j(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function Re(e,t,n){let r=j(e);r===2?e.set(t,n):r===3?e.add(n):e[t]=n}function ze(e,t){return e===t?e!==0||1/e==1/t:e!==e&&t!==t}function N(e){return e instanceof Map}function P(e){return e instanceof Set}function F(e){return e.copy_||e.base_}function I(e,t){if(N(e))return new Map(e);if(P(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);let n=k(e);if(t===!0||t===`class_only`&&!n){let t=Object.getOwnPropertyDescriptors(e);delete t[w];let n=Reflect.ownKeys(t);for(let r=0;r<n.length;r++){let i=n[r],a=t[i];a.writable===!1&&(a.writable=!0,a.configurable=!0),(a.get||a.set)&&(t[i]={configurable:!0,writable:!0,enumerable:a.enumerable,value:e[i]})}return Object.create(E(e),t)}else{let t=E(e);return t!==null&&n?{...e}:Object.assign(Object.create(t),e)}}function L(e,t=!1){return z(e)||D(e)||!O(e)?e:(j(e)>1&&Object.defineProperties(e,{set:R,add:R,clear:R,delete:R}),Object.freeze(e),t&&Object.values(e).forEach(e=>L(e,!0)),e)}function Be(){T(2)}var R={value:Be};function z(e){return typeof e!=`object`||!e?!0:Object.isFrozen(e)}var Ve={};function B(e){let t=Ve[e];return t||T(0,e),t}var V;function He(){return V}function Ue(e,t){return{drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function We(e,t){t&&(B(`Patches`),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function H(e){U(e),e.drafts_.forEach(Ke),e.drafts_=null}function U(e){e===V&&(V=e.parent_)}function Ge(e){return V=Ue(V,e)}function Ke(e){let t=e[w];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function qe(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];return e!==void 0&&e!==n?(n[w].modified_&&(H(t),T(4)),O(e)&&(e=W(t,e),t.parent_||G(t,e)),t.patches_&&B(`Patches`).generateReplacementPatches_(n[w].base_,e,t.patches_,t.inversePatches_)):e=W(t,n,[]),H(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e===Ne?void 0:e}function W(e,t,n){if(z(t))return t;let r=e.immer_.shouldUseStrictIteration(),i=t[w];if(!i)return A(t,(r,a)=>Je(e,i,t,r,a,n),r),t;if(i.scope_!==e)return t;if(!i.modified_)return G(e,i.base_,!0),i.base_;if(!i.finalized_){i.finalized_=!0,i.scope_.unfinalizedDrafts_--;let t=i.copy_,a=t,o=!1;i.type_===3&&(a=new Set(t),t.clear(),o=!0),A(a,(r,a)=>Je(e,i,t,r,a,n,o),r),G(e,t,!1),n&&e.patches_&&B(`Patches`).generatePatches_(i,n,e.patches_,e.inversePatches_)}return i.copy_}function Je(e,t,n,r,i,a,o){if(i==null||typeof i!=`object`&&!o)return;let s=z(i);if(!(s&&!o)){if(process.env.NODE_ENV!==`production`&&i===n&&T(5),D(i)){let o=W(e,i,a&&t&&t.type_!==3&&!M(t.assigned_,r)?a.concat(r):void 0);if(Re(n,r,o),D(o))e.canAutoFreeze_=!1;else return}else o&&n.add(i);if(O(i)&&!s){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1||t&&t.base_&&t.base_[r]===i&&s)return;W(e,i),(!t||!t.scope_.parent_)&&typeof r!=`symbol`&&(N(n)?n.has(r):Object.prototype.propertyIsEnumerable.call(n,r))&&G(e,i)}}}function G(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&L(t,n)}function Ye(e,t){let n=Array.isArray(e),r={type_:+!!n,scope_:t?t.scope_:He(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1},i=r,a=K;n&&(i=[r],a=q);let{revoke:o,proxy:s}=Proxy.revocable(i,a);return r.draft_=s,r.revoke_=o,s}var K={get(e,t){if(t===w)return e;let n=F(e);if(!M(n,t))return Xe(e,n,t);let r=n[t];return e.finalized_||!O(r)?r:r===J(e.base_,t)?(X(e),e.copy_[t]=Z(r,e)):r},has(e,t){return t in F(e)},ownKeys(e){return Reflect.ownKeys(F(e))},set(e,t,n){let r=Ze(F(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let r=J(F(e),t),i=r?.[w];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_[t]=!1,!0;if(ze(n,r)&&(n!==void 0||M(e.base_,t)))return!0;X(e),Y(e)}return e.copy_[t]===n&&(n!==void 0||t in e.copy_)||Number.isNaN(n)&&Number.isNaN(e.copy_[t])?!0:(e.copy_[t]=n,e.assigned_[t]=!0,!0)},deleteProperty(e,t){return J(e.base_,t)!==void 0||t in e.base_?(e.assigned_[t]=!1,X(e),Y(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=F(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{writable:!0,configurable:e.type_!==1||t!==`length`,enumerable:r.enumerable,value:n[t]}},defineProperty(){T(11)},getPrototypeOf(e){return E(e.base_)},setPrototypeOf(){T(12)}},q={};A(K,(e,t)=>{q[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}}),q.deleteProperty=function(e,t){return process.env.NODE_ENV!==`production`&&isNaN(parseInt(t))&&T(13),q.set.call(this,e,t,void 0)},q.set=function(e,t,n){return process.env.NODE_ENV!==`production`&&t!==`length`&&isNaN(parseInt(t))&&T(14),K.set.call(this,e[0],t,n,e[0])};function J(e,t){let n=e[w];return(n?F(n):e)[t]}function Xe(e,t,n){let r=Ze(t,n);return r?`value`in r?r.value:r.get?.call(e.draft_):void 0}function Ze(e,t){if(!(t in e))return;let n=E(e);for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=E(n)}}function Y(e){e.modified_||(e.modified_=!0,e.parent_&&Y(e.parent_))}function X(e){e.copy_||=I(e.base_,e.scope_.immer_.useStrictShallowCopy_)}var Qe=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!0,this.produce=(e,t,n)=>{if(typeof e==`function`&&typeof t!=`function`){let n=t;t=e;let r=this;return function(e=n,...i){return r.produce(e,e=>t.call(this,e,...i))}}typeof t!=`function`&&T(6),n!==void 0&&typeof n!=`function`&&T(7);let r;if(O(e)){let i=Ge(this),a=Z(e,void 0),o=!0;try{r=t(a),o=!1}finally{o?H(i):U(i)}return We(i,n),qe(r,i)}else if(!e||typeof e!=`object`){if(r=t(e),r===void 0&&(r=e),r===Ne&&(r=void 0),this.autoFreeze_&&L(r,!0),n){let t=[],i=[];B(`Patches`).generateReplacementPatches_(e,r,t,i),n(t,i)}return r}else T(1,e)},this.produceWithPatches=(e,t)=>{if(typeof e==`function`)return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},typeof e?.autoFreeze==`boolean`&&this.setAutoFreeze(e.autoFreeze),typeof e?.useStrictShallowCopy==`boolean`&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),typeof e?.useStrictIteration==`boolean`&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){O(e)||T(8),D(e)&&(e=$e(e));let t=Ge(this),n=Z(e,void 0);return n[w].isManual_=!0,U(t),n}finishDraft(e,t){let n=e&&e[w];(!n||!n.isManual_)&&T(9);let{scope_:r}=n;return We(r,t),qe(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let r=t[n];if(r.path.length===0&&r.op===`replace`){e=r.value;break}}n>-1&&(t=t.slice(n+1));let r=B(`Patches`).applyPatches_;return D(e)?r(e,t):this.produce(e,e=>r(e,t))}};function Z(e,t){let n=N(e)?B(`MapSet`).proxyMap_(e,t):P(e)?B(`MapSet`).proxySet_(e,t):Ye(e,t);return(t?t.scope_:He()).drafts_.push(n),n}function $e(e){return D(e)||T(10,e),et(e)}function et(e){if(!O(e)||z(e))return e;let t=e[w],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=I(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=I(e,!0);return A(n,(e,t)=>{Re(n,e,et(t))},r),t&&(t.finalized_=!1),n}var tt=new Qe().produce;function nt(e,t){let n=e+t,r=0;for(let e=0;e<n.length;e++){let t=n.charCodeAt(e);r=(r<<5)-r+t,r|=0}return r}function rt(e,t){return(nt(e,t)>>>0)/4294967295}function it(e,t=new Set){if(e.reviewCards.length===0&&e.newCards.length===0)return;if(e.reviewCards.length===0)return Q(e.newCards,t)??e.newCards[0];if(e.newCards.length===0)return Q(e.reviewCards,t)??e.reviewCards[0];let n=Q(e.newCards,t),r=Q(e.reviewCards,t);if(!n)return r??e.newCards[0];if(!r)return n??e.reviewCards[0];let i=e.newCards.length,a=(.33+i/(i+e.reviewCards.length))/2;return rt(n.card.id,r.card.id)<a?n:r}function Q(e,t){return e.find(e=>!t.has(e.card.id))}function at(e,t){let n=$(e,t);return n?tt(e,e=>{st(e,n)}):e}function ot(e,n,r){let i=$(n,r);if(!i)return n;let{nextCard:a}=Te(i.cardReview,e,30),o=a.due&&(0,t.t.isSameDay)(a.due,new Date);return tt(n,e=>{st(e,i),o&&ct(e,{...i,cardReview:a})})}function st(e,t){t.cardReview.state===`New`?e.newCards=e.newCards.filter(e=>e.card.id!==t.card.id):e.reviewCards=e.reviewCards.filter(e=>e.card.id!==t.card.id),lt(e,t.cardReview.state,`decrease`)}function ct(e,t){if(t.cardReview.state===`New`){let n=e.newCards.findIndex(e=>e.cardReview.due&&t.cardReview.due&&e.cardReview.due>=t.cardReview.due||e.cardReview.difficulty>=t.cardReview.difficulty);n===-1?e.newCards.push(t):e.newCards.splice(n,0,t)}else{let n=ut(e,e.reviewCards);e.reviewCards.splice(n,0,t)}lt(e,t.cardReview.state,`increase`)}function lt(e,t,n){let r=n===`increase`?1:-1;switch(t){case`New`:e.stats.new+=r;break;case`Learning`:case`Relearning`:e.stats.learning+=r;break;case`Review`:e.stats.review+=r;break;default:e.stats.new+=r;break}e.stats.total+=r}function $(e,t){return e.newCards.find(e=>e.card.id===t)??e.reviewCards.find(e=>e.card.id===t)}function ut(e,t){if(t.length===0)return 0;let n=Math.max(4,Math.floor(t.length/3));return Math.min(n,t.length)}var dt=5,ft={newCards:[],reviewCards:[],stats:{new:0,learning:0,review:0,total:0}},pt=class{recentlyReviewed=new Set;_reviewsCompleted=0;_correctGrades=0;getProgress(){return{reviewsCompleted:this._reviewsCompleted,correctGrades:this._correctGrades}}nextCard(e){return it(e,this.recentlyReviewed)}onRate(e,t){return this.recentlyReviewed.add(e),this.recentlyReviewed.size>5&&this.recentlyReviewed.delete(this.recentlyReviewed.values().next().value),this._reviewsCompleted++,(t===`Good`||t===`Easy`)&&this._correctGrades++,this.getProgress()}};exports.FSRS_RETENTION=n,exports.FSRS_RETENTION_FACTOR=i,exports.FSRS_RETRIEVABILITY_DECAY=r,exports.FlashcardSessionManager=pt,exports.LEARNING_SETTINGS_LIMITS=o,exports.MAX_CARDS_TO_FETCH=a,exports.RECENTLY_REVIEWED_SET_SIZE=dt,exports.THRESHOLD_CARDS_FOR_REFETCH=s,exports.calculateRetentionPercentage=Me,exports.calculateRetrievability=je,exports.defaultSessionData=ft,exports.getNextCardFromSession=it,exports.getReviewDateForEachRating=Ee,exports.getSessionCard=$,exports.gradeCard=Te,exports.isRecommendedLearningSettings=c,exports.mergeFsrsCard=C,exports.newCardReview=Ae,exports.removeCardFromSessionData=ot,exports.skipCardFromSessionData=at;