@ancon/wildcat-utils 1.6.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api/getEndpointWithVersion.cjs +1 -0
- package/{dist/api → api}/getEndpointWithVersion.d.ts +0 -0
- package/api/getEndpointWithVersion.js +6 -0
- package/api/getUrlAndParams.cjs +1 -0
- package/{dist/api → api}/getUrlAndParams.d.ts +0 -0
- package/api/getUrlAndParams.js +23 -0
- package/api/index.cjs +1 -0
- package/{dist/api → api}/index.d.ts +0 -2
- package/api/index.js +6 -0
- package/color/brighten.cjs +1 -0
- package/color/brighten.d.ts +8 -0
- package/color/brighten.js +7 -0
- package/color/darken.cjs +1 -0
- package/color/darken.d.ts +8 -0
- package/color/darken.js +7 -0
- package/color/index.cjs +1 -0
- package/color/index.d.ts +4 -0
- package/color/index.js +9 -0
- package/color/lighten.cjs +1 -0
- package/color/lighten.d.ts +8 -0
- package/color/lighten.js +7 -0
- package/index.cjs +1 -0
- package/{dist/index.d.ts → index.d.ts} +1 -0
- package/index.js +32 -0
- package/outlet/getListOutletOpeningHoursTable.cjs +1 -0
- package/{dist/outlet → outlet}/getListOutletOpeningHoursTable.d.ts +0 -0
- package/outlet/getListOutletOpeningHoursTable.js +172 -0
- package/outlet/index.cjs +1 -0
- package/{dist/outlet → outlet}/index.d.ts +0 -0
- package/outlet/index.js +8 -0
- package/outlet/types.cjs +1 -0
- package/{dist/outlet → outlet}/types.d.ts +0 -0
- package/outlet/types.js +1 -0
- package/package.json +86 -98
- package/shared/enums.cjs +1 -0
- package/{dist/shared → shared}/enums.d.ts +0 -0
- package/shared/enums.js +7 -0
- package/shared/generateId.cjs +1 -0
- package/{dist/shared → shared}/generateId.d.ts +0 -0
- package/shared/generateId.js +7 -0
- package/shared/index.cjs +1 -0
- package/{dist/shared → shared}/index.d.ts +0 -0
- package/shared/index.js +11 -0
- package/shared/isWithinFlag.cjs +1 -0
- package/{dist/shared → shared}/isWithinFlag.d.ts +0 -0
- package/shared/isWithinFlag.js +6 -0
- package/string/index.cjs +1 -0
- package/{dist/string → string}/index.d.ts +0 -0
- package/string/index.js +4 -0
- package/string/slugify.cjs +1 -0
- package/{dist/string → string}/slugify.d.ts +0 -0
- package/string/slugify.js +6 -0
- package/versioning/cleanVersionString.cjs +1 -0
- package/{dist/versioning → versioning}/cleanVersionString.d.ts +0 -0
- package/versioning/cleanVersionString.js +7 -0
- package/versioning/index.cjs +1 -0
- package/{dist/versioning → versioning}/index.d.ts +0 -0
- package/versioning/index.js +7 -0
- package/versioning/isVersionALessThanB.cjs +1 -0
- package/{dist/versioning → versioning}/isVersionALessThanB.d.ts +0 -0
- package/versioning/isVersionALessThanB.js +9 -0
- package/dist/api/getEndpointWithVersion.js +0 -12
- package/dist/api/getUrlAndParams.js +0 -37
- package/dist/api/index.js +0 -11
- package/dist/index.js +0 -17
- package/dist/outlet/getListOutletOpeningHoursTable.js +0 -211
- package/dist/outlet/index.js +0 -8
- package/dist/outlet/types.js +0 -2
- package/dist/shared/enums.js +0 -31
- package/dist/shared/generateId.js +0 -7
- package/dist/shared/index.js +0 -15
- package/dist/shared/isWithinFlag.js +0 -6
- package/dist/string/index.js +0 -8
- package/dist/string/slugify.js +0 -15
- package/dist/versioning/cleanVersionString.js +0 -12
- package/dist/versioning/index.js +0 -10
- package/dist/versioning/isVersionALessThanB.js +0 -13
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";function i(t,e=1){return`v${e.toFixed(1)}/${t}`}module.exports=i;
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const l=/(\/{.+?})/g,c=/[/{}]/g;function f(s,t){const o={url:s,params:t??{}};if(!t)return o;const n=s.match(l);return n!=null&&n.length?n.reduce((e,p)=>{const r=p.replace(c,""),g=t[r];return g?(delete e.params[r],e.url=e.url.replace(new RegExp(p,"g"),`/${g}`)):e.params[r]=t[r],e},{url:s,params:{...t}}):o}module.exports=f;
|
|
File without changes
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
const f = /(\/{.+?})/g, g = /[/{}]/g;
|
|
2
|
+
function a(o, e) {
|
|
3
|
+
const s = { url: o, params: e ?? {} };
|
|
4
|
+
if (!e)
|
|
5
|
+
return s;
|
|
6
|
+
const t = o.match(f);
|
|
7
|
+
return t != null && t.length ? t.reduce(
|
|
8
|
+
(n, l) => {
|
|
9
|
+
const r = l.replace(g, ""), p = e[r];
|
|
10
|
+
return p ? (delete n.params[r], n.url = n.url.replace(
|
|
11
|
+
new RegExp(l, "g"),
|
|
12
|
+
`/${p}`
|
|
13
|
+
)) : n.params[r] = e[r], n;
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
url: o,
|
|
17
|
+
params: { ...e }
|
|
18
|
+
}
|
|
19
|
+
) : s;
|
|
20
|
+
}
|
|
21
|
+
export {
|
|
22
|
+
a as default
|
|
23
|
+
};
|
package/api/index.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./getUrlAndParams.cjs"),t=require("./getEndpointWithVersion.cjs");exports.getUrlAndParams=e;exports.getEndpointWithVersion=t;
|
package/api/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const n=require("tinycolor2");function e(t,r){return n(t).brighten(r).toString()}module.exports=e;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Brighten the HEX color a given amount.
|
|
3
|
+
*
|
|
4
|
+
* @param hex - The color HEX code
|
|
5
|
+
* @param amount - The amount to brighten by. The valid range is 0 to 100. Default value: 10.
|
|
6
|
+
* @returns The brightened HEX color code
|
|
7
|
+
*/
|
|
8
|
+
export default function brighten(hex: string, amount?: number): string;
|
package/color/darken.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const n=require("tinycolor2");function e(r,t){return n(r).darken(t).toString()}module.exports=e;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Darken the color a given amount. Providing 100 will always return black.
|
|
3
|
+
*
|
|
4
|
+
* @param hex - The color HEX code
|
|
5
|
+
* @param amount - The amount to darken by. The valid range is 0 to 100. Default value: 10.
|
|
6
|
+
* @returns The darkened HEX color code
|
|
7
|
+
*/
|
|
8
|
+
export default function darken(hex: string, amount?: number): string;
|
package/color/darken.js
ADDED
package/color/index.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./lighten.cjs"),r=require("./brighten.cjs"),o=require("./darken.cjs");require("tinycolor2");exports.lighten=e;exports.brighten=r;exports.darken=o;
|
package/color/index.d.ts
ADDED
package/color/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const r=require("tinycolor2");function e(t,n){return r(t).lighten(n).toString()}module.exports=e;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lighten the given hex color a given amount. Providing 100 will always return white.
|
|
3
|
+
*
|
|
4
|
+
* @param hex - The color HEX code
|
|
5
|
+
* @param amount - The amount to lighten by. The valid range is 0 to 100. Default value: 10.
|
|
6
|
+
* @returns The lightened HEX color
|
|
7
|
+
*/
|
|
8
|
+
export default function lighten(hex: string, amount?: number): string;
|
package/color/lighten.js
ADDED
package/index.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./shared/enums.cjs"),r=require("./shared/isWithinFlag.cjs"),t=require("./shared/generateId.cjs"),n=require("./outlet/getListOutletOpeningHoursTable.cjs"),i=require("./versioning/isVersionALessThanB.cjs"),s=require("./versioning/cleanVersionString.cjs"),o=require("./api/getUrlAndParams.cjs"),a=require("./api/getEndpointWithVersion.cjs"),u=require("./string/slugify.cjs"),g=require("./color/lighten.cjs"),l=require("./color/brighten.cjs"),c=require("./color/darken.cjs");require("moment");require("compare-versions");require("tinycolor2");exports.DayOfWeek=e.DayOfWeek;exports.IntervalState=e.IntervalState;exports.IntervalType=e.IntervalType;exports.OrderFormat=e.OrderFormat;exports.isWithinFlag=r;exports.generateId=t;exports.getListOutletOpeningHoursTable=n;exports.isVersionALessThanB=i;exports.cleanVersionString=s;exports.getUrlAndParams=o;exports.getEndpointWithVersion=a;exports.slugify=u;exports.lighten=g;exports.brighten=l;exports.darken=c;
|
package/index.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { DayOfWeek as f, IntervalState as s, IntervalType as l, OrderFormat as i } from "./shared/enums.js";
|
|
2
|
+
import { default as p } from "./shared/isWithinFlag.js";
|
|
3
|
+
import { default as d } from "./shared/generateId.js";
|
|
4
|
+
import { default as x } from "./outlet/getListOutletOpeningHoursTable.js";
|
|
5
|
+
import { default as h } from "./versioning/isVersionALessThanB.js";
|
|
6
|
+
import { default as y } from "./versioning/cleanVersionString.js";
|
|
7
|
+
import { default as T } from "./api/getUrlAndParams.js";
|
|
8
|
+
import { default as W } from "./api/getEndpointWithVersion.js";
|
|
9
|
+
import { default as k } from "./string/slugify.js";
|
|
10
|
+
import { default as A } from "./color/lighten.js";
|
|
11
|
+
import { default as L } from "./color/brighten.js";
|
|
12
|
+
import { default as c } from "./color/darken.js";
|
|
13
|
+
import "moment";
|
|
14
|
+
import "compare-versions";
|
|
15
|
+
import "tinycolor2";
|
|
16
|
+
export {
|
|
17
|
+
f as DayOfWeek,
|
|
18
|
+
s as IntervalState,
|
|
19
|
+
l as IntervalType,
|
|
20
|
+
i as OrderFormat,
|
|
21
|
+
L as brighten,
|
|
22
|
+
y as cleanVersionString,
|
|
23
|
+
c as darken,
|
|
24
|
+
d as generateId,
|
|
25
|
+
W as getEndpointWithVersion,
|
|
26
|
+
x as getListOutletOpeningHoursTable,
|
|
27
|
+
T as getUrlAndParams,
|
|
28
|
+
h as isVersionALessThanB,
|
|
29
|
+
p as isWithinFlag,
|
|
30
|
+
A as lighten,
|
|
31
|
+
k as slugify
|
|
32
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const k=require("moment"),r=require("../shared/enums.cjs"),g=require("../shared/isWithinFlag.cjs"),I=require("../shared/generateId.cjs"),l=[{id:r.OrderFormat.EatIn,name:"eatIn"},{id:r.OrderFormat.Takeaway,name:"takeaway"},{id:r.OrderFormat.TableOrder,name:"tableOrder"},{id:r.OrderFormat.Delivery,name:"delivery"}];function F(e){const n=k.utc(e).subtract(1,"day").startOf("day"),t=[];for(let i=0,s=n;i<7;i+=1)s=s.clone().add(1,"day").startOf("day"),t.push(s.clone());return t}function v(e){return[...e].sort((n,t)=>n.isoWeekday()-t.isoWeekday())}function W(e){return e.split(":").map(Number)}function S(e,n){const[t,i]=W(e.start),[s,a]=W(e.duration);if(e.type===r.IntervalType.Interval){const o=n.clone().add(t,"hour").add(i,"minute"),u=o.clone().add(s,"hour").add(a,"minute");return{id:e.id,start:o.toISOString(),end:u.toISOString()}}if(e.type===r.IntervalType.Exception){const o=k(e.fromDate),u=k(e.toDate);if(n.isBetween(o,u,void 0,"[]")){const c=n.clone().add(t,"hour").add(i,"minute"),y=c.clone().add(s,"hour").add(a,"minute");return{id:e.id,start:c.toISOString(),end:y.toISOString(),reason:e.reason}}return null}throw new Error("Invalid interval type")}function h(e,n,t){const i={[r.DayOfWeek.Monday]:1,[r.DayOfWeek.Tuesday]:2,[r.DayOfWeek.Wednesday]:3,[r.DayOfWeek.Thursday]:4,[r.DayOfWeek.Friday]:5,[r.DayOfWeek.Saturday]:6,[r.DayOfWeek.Sunday]:7};for(let s=0;s<n.length;s+=1){const a=n[s],o=a.isoWeekday(),u=e.dayOfWeek,y=(i[u]??null)===o||u===r.DayOfWeek.Everyday;if(t[o]||(t[o]={isoWeekday:o,key:"",open:[],adjusted:[],closed:[]}),y){const d=S(e,a);d&&(t[o].key+=d.id,e.type===r.IntervalType.Interval&&e.state===r.IntervalState.Open?t[o].open.push(d):e.type===r.IntervalType.Interval&&e.state===r.IntervalState.Closed?t[o].closed.push(d):e.type===r.IntervalType.Exception&&e.state===r.IntervalState.Open?t[o].adjusted.push(d):e.type===r.IntervalType.Exception&&e.state===r.IntervalState.Closed&&t[o].closed.push(d))}}}function T(e){switch(e.type){case r.IntervalType.Exception:return I("interval-exception");case r.IntervalType.Interval:return I("interval-normal");default:return I("interval-unknown")}}function D(e){const n=e.reduce((t,i)=>(l.forEach(s=>{g(s.id,i.orderFormats)&&(t[s.id]||(t[s.id]={orderFormat:s,intervals:[]}),t[s.id].intervals.push(...i.intervals.sort((a,o)=>a.dayOfWeek-o.dayOfWeek)))}),t),{});return Object.values(n)}function M(e){return e.reduce((n,t,i)=>{const s=n.findIndex(a=>a!==t&&!a.orderFormats.some(o=>t.orderFormats.some(u=>u.id===o.id))&&a.openingHours.every(o=>t.openingHours.some(u=>u.key===o.key))&&t.openingHours.every(o=>a.openingHours.some(u=>u.key===o.key)));if(s>=0){const a=n[s];return n.splice(s,1,{...a,orderFormats:[...t.orderFormats,...a.orderFormats]}),n.splice(i,1),n}return n},[...e])}function H(e){return e.map(n=>({...n,intervals:n.intervals.map(t=>({...t,id:T(t)}))}))}function E(e,n){const t=D(H(e.serviceDateTimes)),i=F(n),s=v(i),a=t.reduce((y,d)=>(y[d.orderFormat.id]||(y[d.orderFormat.id]={}),d.intervals.reduce((O,p)=>(h(p,s,O),O),y[d.orderFormat.id]),y),{}),o={[r.OrderFormat.EatIn]:l[0],[r.OrderFormat.Takeaway]:l[1],[r.OrderFormat.TableOrder]:l[2],[r.OrderFormat.Delivery]:l[3]},u=Object.entries(a).map(([y,d])=>({orderFormats:[o[Number(y)]],openingHours:Object.entries(d).map(([O,p])=>({isoWeekday:Number(O),key:p.key,open:p.open.sort((m,f)=>m.start.localeCompare(f.start)),adjusted:p.adjusted.sort((m,f)=>m.start.localeCompare(f.start)),closed:p.closed.sort((m,f)=>m.start.localeCompare(f.start))}))}));return M(u).sort((y,d)=>y.orderFormats[0].id-d.orderFormats[0].id)}module.exports=E;
|
|
File without changes
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import F from "moment";
|
|
2
|
+
import { OrderFormat as p, DayOfWeek as m, IntervalType as y, IntervalState as O } from "../shared/enums.js";
|
|
3
|
+
import h from "../shared/isWithinFlag.js";
|
|
4
|
+
import W from "../shared/generateId.js";
|
|
5
|
+
const k = [
|
|
6
|
+
{ id: p.EatIn, name: "eatIn" },
|
|
7
|
+
{ id: p.Takeaway, name: "takeaway" },
|
|
8
|
+
{ id: p.TableOrder, name: "tableOrder" },
|
|
9
|
+
{ id: p.Delivery, name: "delivery" }
|
|
10
|
+
];
|
|
11
|
+
function M(e) {
|
|
12
|
+
const r = F.utc(e).subtract(1, "day").startOf("day"), t = [];
|
|
13
|
+
for (let a = 0, o = r; a < 7; a += 1)
|
|
14
|
+
o = o.clone().add(1, "day").startOf("day"), t.push(o.clone());
|
|
15
|
+
return t;
|
|
16
|
+
}
|
|
17
|
+
function v(e) {
|
|
18
|
+
return [...e].sort((r, t) => r.isoWeekday() - t.isoWeekday());
|
|
19
|
+
}
|
|
20
|
+
function S(e) {
|
|
21
|
+
return e.split(":").map(Number);
|
|
22
|
+
}
|
|
23
|
+
function H(e, r) {
|
|
24
|
+
const [t, a] = S(e.start), [o, s] = S(
|
|
25
|
+
e.duration
|
|
26
|
+
);
|
|
27
|
+
if (e.type === y.Interval) {
|
|
28
|
+
const n = r.clone().add(t, "hour").add(a, "minute"), i = n.clone().add(o, "hour").add(s, "minute");
|
|
29
|
+
return {
|
|
30
|
+
id: e.id,
|
|
31
|
+
start: n.toISOString(),
|
|
32
|
+
end: i.toISOString()
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
if (e.type === y.Exception) {
|
|
36
|
+
const n = F(e.fromDate), i = F(e.toDate);
|
|
37
|
+
if (r.isBetween(n, i, void 0, "[]")) {
|
|
38
|
+
const I = r.clone().add(t, "hour").add(a, "minute"), u = I.clone().add(o, "hour").add(s, "minute");
|
|
39
|
+
return {
|
|
40
|
+
id: e.id,
|
|
41
|
+
start: I.toISOString(),
|
|
42
|
+
end: u.toISOString(),
|
|
43
|
+
reason: e.reason
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
throw new Error("Invalid interval type");
|
|
49
|
+
}
|
|
50
|
+
function E(e, r, t) {
|
|
51
|
+
const a = {
|
|
52
|
+
[m.Monday]: 1,
|
|
53
|
+
[m.Tuesday]: 2,
|
|
54
|
+
[m.Wednesday]: 3,
|
|
55
|
+
[m.Thursday]: 4,
|
|
56
|
+
[m.Friday]: 5,
|
|
57
|
+
[m.Saturday]: 6,
|
|
58
|
+
[m.Sunday]: 7
|
|
59
|
+
};
|
|
60
|
+
for (let o = 0; o < r.length; o += 1) {
|
|
61
|
+
const s = r[o], n = s.isoWeekday(), i = e.dayOfWeek, u = (a[i] ?? null) === n || i === m.Everyday;
|
|
62
|
+
if (t[n] || (t[n] = {
|
|
63
|
+
isoWeekday: n,
|
|
64
|
+
key: "",
|
|
65
|
+
open: [],
|
|
66
|
+
adjusted: [],
|
|
67
|
+
closed: []
|
|
68
|
+
}), u) {
|
|
69
|
+
const d = H(e, s);
|
|
70
|
+
d && (t[n].key += d.id, e.type === y.Interval && e.state === O.Open ? t[n].open.push(d) : e.type === y.Interval && e.state === O.Closed ? t[n].closed.push(d) : e.type === y.Exception && e.state === O.Open ? t[n].adjusted.push(d) : e.type === y.Exception && e.state === O.Closed && t[n].closed.push(d));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function T(e) {
|
|
75
|
+
switch (e.type) {
|
|
76
|
+
case y.Exception:
|
|
77
|
+
return W("interval-exception");
|
|
78
|
+
case y.Interval:
|
|
79
|
+
return W("interval-normal");
|
|
80
|
+
default:
|
|
81
|
+
return W("interval-unknown");
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
function x(e) {
|
|
85
|
+
const r = e.reduce(
|
|
86
|
+
(t, a) => (k.forEach((o) => {
|
|
87
|
+
h(o.id, a.orderFormats) && (t[o.id] || (t[o.id] = {
|
|
88
|
+
orderFormat: o,
|
|
89
|
+
intervals: []
|
|
90
|
+
}), t[o.id].intervals.push(
|
|
91
|
+
...a.intervals.sort(
|
|
92
|
+
(s, n) => s.dayOfWeek - n.dayOfWeek
|
|
93
|
+
)
|
|
94
|
+
));
|
|
95
|
+
}), t),
|
|
96
|
+
{}
|
|
97
|
+
);
|
|
98
|
+
return Object.values(r);
|
|
99
|
+
}
|
|
100
|
+
function j(e) {
|
|
101
|
+
return e.reduce(
|
|
102
|
+
(r, t, a) => {
|
|
103
|
+
const o = r.findIndex(
|
|
104
|
+
(s) => s !== t && !s.orderFormats.some(
|
|
105
|
+
(n) => t.orderFormats.some(
|
|
106
|
+
(i) => i.id === n.id
|
|
107
|
+
)
|
|
108
|
+
) && s.openingHours.every(
|
|
109
|
+
(n) => t.openingHours.some((i) => i.key === n.key)
|
|
110
|
+
) && t.openingHours.every(
|
|
111
|
+
(n) => s.openingHours.some((i) => i.key === n.key)
|
|
112
|
+
)
|
|
113
|
+
);
|
|
114
|
+
if (o >= 0) {
|
|
115
|
+
const s = r[o];
|
|
116
|
+
return r.splice(o, 1, {
|
|
117
|
+
...s,
|
|
118
|
+
orderFormats: [...t.orderFormats, ...s.orderFormats]
|
|
119
|
+
}), r.splice(a, 1), r;
|
|
120
|
+
}
|
|
121
|
+
return r;
|
|
122
|
+
},
|
|
123
|
+
[...e]
|
|
124
|
+
);
|
|
125
|
+
}
|
|
126
|
+
function w(e) {
|
|
127
|
+
return e.map((r) => ({
|
|
128
|
+
...r,
|
|
129
|
+
intervals: r.intervals.map((t) => ({
|
|
130
|
+
...t,
|
|
131
|
+
id: T(t)
|
|
132
|
+
}))
|
|
133
|
+
}));
|
|
134
|
+
}
|
|
135
|
+
function A(e, r) {
|
|
136
|
+
const t = x(
|
|
137
|
+
w(e.serviceDateTimes)
|
|
138
|
+
), a = M(r), o = v(a), s = t.reduce(
|
|
139
|
+
(u, d) => (u[d.orderFormat.id] || (u[d.orderFormat.id] = {}), d.intervals.reduce((g, f) => (E(f, o, g), g), u[d.orderFormat.id]), u),
|
|
140
|
+
{}
|
|
141
|
+
), n = {
|
|
142
|
+
[p.EatIn]: k[0],
|
|
143
|
+
[p.Takeaway]: k[1],
|
|
144
|
+
[p.TableOrder]: k[2],
|
|
145
|
+
[p.Delivery]: k[3]
|
|
146
|
+
}, i = Object.entries(
|
|
147
|
+
s
|
|
148
|
+
).map(([u, d]) => ({
|
|
149
|
+
orderFormats: [n[Number(u)]],
|
|
150
|
+
openingHours: Object.entries(d).map(
|
|
151
|
+
([g, f]) => ({
|
|
152
|
+
isoWeekday: Number(g),
|
|
153
|
+
key: f.key,
|
|
154
|
+
open: f.open.sort(
|
|
155
|
+
(c, l) => c.start.localeCompare(l.start)
|
|
156
|
+
),
|
|
157
|
+
adjusted: f.adjusted.sort(
|
|
158
|
+
(c, l) => c.start.localeCompare(l.start)
|
|
159
|
+
),
|
|
160
|
+
closed: f.closed.sort(
|
|
161
|
+
(c, l) => c.start.localeCompare(l.start)
|
|
162
|
+
)
|
|
163
|
+
})
|
|
164
|
+
)
|
|
165
|
+
}));
|
|
166
|
+
return j(i).sort(
|
|
167
|
+
(u, d) => u.orderFormats[0].id - d.orderFormats[0].id
|
|
168
|
+
);
|
|
169
|
+
}
|
|
170
|
+
export {
|
|
171
|
+
A as default
|
|
172
|
+
};
|
package/outlet/index.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./getListOutletOpeningHoursTable.cjs");require("moment");require("../shared/enums.cjs");require("../shared/isWithinFlag.cjs");require("../shared/generateId.cjs");exports.getListOutletOpeningHoursTable=e;
|
|
File without changes
|
package/outlet/index.js
ADDED
package/outlet/types.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
File without changes
|
package/outlet/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
package/package.json
CHANGED
|
@@ -1,103 +1,91 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ancon/wildcat-utils",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "",
|
|
5
|
-
"repository": "git@bitbucket.org:anconab/wildcat.client.utils.git",
|
|
6
|
-
"main": "dist/index.js",
|
|
3
|
+
"version": "1.8.0",
|
|
7
4
|
"private": false,
|
|
8
|
-
"
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
"
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
"
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
"
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
"
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
"
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
"
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
"
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
"
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
"
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
"
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
"
|
|
68
|
-
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "index.cjs",
|
|
7
|
+
"module": "index.js",
|
|
8
|
+
"types": "index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
"./api/getEndpointWithVersion": {
|
|
11
|
+
"import": "./api/getEndpointWithVersion.js",
|
|
12
|
+
"require": "./api/getEndpointWithVersion.cjs"
|
|
13
|
+
},
|
|
14
|
+
"./api/getUrlAndParams": {
|
|
15
|
+
"import": "./api/getUrlAndParams.js",
|
|
16
|
+
"require": "./api/getUrlAndParams.cjs"
|
|
17
|
+
},
|
|
18
|
+
"./api": {
|
|
19
|
+
"import": "./api/index.js",
|
|
20
|
+
"require": "./api/index.cjs"
|
|
21
|
+
},
|
|
22
|
+
"./color/brighten": {
|
|
23
|
+
"import": "./color/brighten.js",
|
|
24
|
+
"require": "./color/brighten.cjs"
|
|
25
|
+
},
|
|
26
|
+
"./color/darken": {
|
|
27
|
+
"import": "./color/darken.js",
|
|
28
|
+
"require": "./color/darken.cjs"
|
|
29
|
+
},
|
|
30
|
+
"./color": {
|
|
31
|
+
"import": "./color/index.js",
|
|
32
|
+
"require": "./color/index.cjs"
|
|
33
|
+
},
|
|
34
|
+
"./color/lighten": {
|
|
35
|
+
"import": "./color/lighten.js",
|
|
36
|
+
"require": "./color/lighten.cjs"
|
|
37
|
+
},
|
|
38
|
+
".": {
|
|
39
|
+
"import": "./index.js",
|
|
40
|
+
"require": "./index.cjs"
|
|
41
|
+
},
|
|
42
|
+
"./outlet/getListOutletOpeningHoursTable": {
|
|
43
|
+
"import": "./outlet/getListOutletOpeningHoursTable.js",
|
|
44
|
+
"require": "./outlet/getListOutletOpeningHoursTable.cjs"
|
|
45
|
+
},
|
|
46
|
+
"./outlet": {
|
|
47
|
+
"import": "./outlet/index.js",
|
|
48
|
+
"require": "./outlet/index.cjs"
|
|
49
|
+
},
|
|
50
|
+
"./outlet/types": {
|
|
51
|
+
"import": "./outlet/types.js",
|
|
52
|
+
"require": "./outlet/types.cjs"
|
|
53
|
+
},
|
|
54
|
+
"./shared/enums": {
|
|
55
|
+
"import": "./shared/enums.js",
|
|
56
|
+
"require": "./shared/enums.cjs"
|
|
57
|
+
},
|
|
58
|
+
"./shared/generateId": {
|
|
59
|
+
"import": "./shared/generateId.js",
|
|
60
|
+
"require": "./shared/generateId.cjs"
|
|
61
|
+
},
|
|
62
|
+
"./shared": {
|
|
63
|
+
"import": "./shared/index.js",
|
|
64
|
+
"require": "./shared/index.cjs"
|
|
65
|
+
},
|
|
66
|
+
"./shared/isWithinFlag": {
|
|
67
|
+
"import": "./shared/isWithinFlag.js",
|
|
68
|
+
"require": "./shared/isWithinFlag.cjs"
|
|
69
|
+
},
|
|
70
|
+
"./string": {
|
|
71
|
+
"import": "./string/index.js",
|
|
72
|
+
"require": "./string/index.cjs"
|
|
73
|
+
},
|
|
74
|
+
"./string/slugify": {
|
|
75
|
+
"import": "./string/slugify.js",
|
|
76
|
+
"require": "./string/slugify.cjs"
|
|
77
|
+
},
|
|
78
|
+
"./versioning/cleanVersionString": {
|
|
79
|
+
"import": "./versioning/cleanVersionString.js",
|
|
80
|
+
"require": "./versioning/cleanVersionString.cjs"
|
|
81
|
+
},
|
|
82
|
+
"./versioning": {
|
|
83
|
+
"import": "./versioning/index.js",
|
|
84
|
+
"require": "./versioning/index.cjs"
|
|
85
|
+
},
|
|
86
|
+
"./versioning/isVersionALessThanB": {
|
|
87
|
+
"import": "./versioning/isVersionALessThanB.js",
|
|
88
|
+
"require": "./versioning/isVersionALessThanB.cjs"
|
|
69
89
|
}
|
|
70
|
-
}
|
|
71
|
-
"lint-staged": {
|
|
72
|
-
"src/**/*.ts": [
|
|
73
|
-
"eslint",
|
|
74
|
-
"prettier --write"
|
|
75
|
-
]
|
|
76
|
-
},
|
|
77
|
-
"release": {
|
|
78
|
-
"branches": [
|
|
79
|
-
"main"
|
|
80
|
-
],
|
|
81
|
-
"plugins": [
|
|
82
|
-
[
|
|
83
|
-
"@semantic-release/commit-analyzer"
|
|
84
|
-
],
|
|
85
|
-
[
|
|
86
|
-
"@semantic-release/release-notes-generator",
|
|
87
|
-
{
|
|
88
|
-
"preset": "conventionalCommits"
|
|
89
|
-
}
|
|
90
|
-
],
|
|
91
|
-
"@semantic-release/npm",
|
|
92
|
-
[
|
|
93
|
-
"@semantic-release/git",
|
|
94
|
-
{
|
|
95
|
-
"assets": [
|
|
96
|
-
"package.json"
|
|
97
|
-
]
|
|
98
|
-
}
|
|
99
|
-
]
|
|
100
|
-
]
|
|
101
|
-
},
|
|
102
|
-
"dependencies": {}
|
|
90
|
+
}
|
|
103
91
|
}
|
package/shared/enums.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var n=(d=>(d[d.EatIn=1]="EatIn",d[d.Takeaway=2]="Takeaway",d[d.TableOrder=4]="TableOrder",d[d.Delivery=8]="Delivery",d))(n||{}),u=(d=>(d[d.Monday=1]="Monday",d[d.Tuesday=2]="Tuesday",d[d.Wednesday=4]="Wednesday",d[d.Thursday=8]="Thursday",d[d.Friday=16]="Friday",d[d.Saturday=32]="Saturday",d[d.Sunday=64]="Sunday",d[d.Everyday=127]="Everyday",d))(u||{}),a=(d=>(d[d.Open=0]="Open",d[d.Closed=1]="Closed",d))(a||{}),r=(d=>(d[d.Interval=0]="Interval",d[d.Exception=1]="Exception",d))(r||{});exports.DayOfWeek=u;exports.IntervalState=a;exports.IntervalType=r;exports.OrderFormat=n;
|
|
File without changes
|
package/shared/enums.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
var n = /* @__PURE__ */ ((d) => (d[d.EatIn = 1] = "EatIn", d[d.Takeaway = 2] = "Takeaway", d[d.TableOrder = 4] = "TableOrder", d[d.Delivery = 8] = "Delivery", d))(n || {}), u = /* @__PURE__ */ ((d) => (d[d.Monday = 1] = "Monday", d[d.Tuesday = 2] = "Tuesday", d[d.Wednesday = 4] = "Wednesday", d[d.Thursday = 8] = "Thursday", d[d.Friday = 16] = "Friday", d[d.Saturday = 32] = "Saturday", d[d.Sunday = 64] = "Sunday", d[d.Everyday = 127] = "Everyday", d))(u || {}), s = /* @__PURE__ */ ((d) => (d[d.Open = 0] = "Open", d[d.Closed = 1] = "Closed", d))(s || {}), i = /* @__PURE__ */ ((d) => (d[d.Interval = 0] = "Interval", d[d.Exception = 1] = "Exception", d))(i || {});
|
|
2
|
+
export {
|
|
3
|
+
u as DayOfWeek,
|
|
4
|
+
s as IntervalState,
|
|
5
|
+
i as IntervalType,
|
|
6
|
+
n as OrderFormat
|
|
7
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";function n(t){const r=Math.random().toString();return`${t?`${t}-`:""}${r.substring(2)}`}module.exports=n;
|
|
File without changes
|
package/shared/index.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./enums.cjs"),r=require("./isWithinFlag.cjs"),t=require("./generateId.cjs");exports.DayOfWeek=e.DayOfWeek;exports.IntervalState=e.IntervalState;exports.IntervalType=e.IntervalType;exports.OrderFormat=e.OrderFormat;exports.isWithinFlag=r;exports.generateId=t;
|
|
File without changes
|
package/shared/index.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { DayOfWeek as t, IntervalState as a, IntervalType as o, OrderFormat as f } from "./enums.js";
|
|
2
|
+
import { default as d } from "./isWithinFlag.js";
|
|
3
|
+
import { default as n } from "./generateId.js";
|
|
4
|
+
export {
|
|
5
|
+
t as DayOfWeek,
|
|
6
|
+
a as IntervalState,
|
|
7
|
+
o as IntervalType,
|
|
8
|
+
f as OrderFormat,
|
|
9
|
+
n as generateId,
|
|
10
|
+
d as isWithinFlag
|
|
11
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";function r(t,i){return(i&t)===t}module.exports=r;
|
|
File without changes
|
package/string/index.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./slugify.cjs");exports.slugify=e;
|
|
File without changes
|
package/string/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";function a(e,r){return e.toLocaleLowerCase(r).replace(/[åäæ]/g,"a").replace(/[öø]/g,"o").replace(/[é]/g,"e").replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,"")}module.exports=a;
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";function s(r){const e=r.toLowerCase().split("-")[0];return e.charAt(0)==="v"?e.substring(1):e}module.exports=s;
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./isVersionALessThanB.cjs"),i=require("./cleanVersionString.cjs");require("compare-versions");exports.isVersionALessThanB=e;exports.cleanVersionString=i;
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const i=require("compare-versions"),e=require("./cleanVersionString.cjs");function c(n,r){const s=e(n),o=e(r);return i.compare(s,o,"<")}module.exports=c;
|
|
File without changes
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
/**
|
|
4
|
-
* Get a versioned endpoint URL
|
|
5
|
-
* @param endpoint Endpoint URL (ie "someEndpoint/{someId}")
|
|
6
|
-
* @param version Endpoint version (ie 1.1)
|
|
7
|
-
* @returns Versioned endpoint (ie "v1.1/someEndpoint/{someId}")
|
|
8
|
-
*/
|
|
9
|
-
function getEndpointWithVersion(endpoint, version = 1.0) {
|
|
10
|
-
return `v${version.toFixed(1)}/${endpoint}`;
|
|
11
|
-
}
|
|
12
|
-
exports.default = getEndpointWithVersion;
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const URL_PARAM_EXP = /(\/{.+?})/g;
|
|
4
|
-
const BRACES_EXP = /[/{}]/g;
|
|
5
|
-
/**
|
|
6
|
-
* Get an object with URL and query parameters.
|
|
7
|
-
* If the queryParams object contains keys found in the URL string,
|
|
8
|
-
* those will be inserted into the new URL string and removed from the new params object.
|
|
9
|
-
* @param url URL
|
|
10
|
-
* @param queryParams Query parameters object
|
|
11
|
-
* @returns An object containing the URL and parameters
|
|
12
|
-
*/
|
|
13
|
-
function getUrlAndParams(url, queryParams) {
|
|
14
|
-
const fallback = { url, params: queryParams !== null && queryParams !== void 0 ? queryParams : {} };
|
|
15
|
-
if (!queryParams)
|
|
16
|
-
return fallback;
|
|
17
|
-
const urlParamTemplates = url.match(URL_PARAM_EXP);
|
|
18
|
-
if (urlParamTemplates === null || urlParamTemplates === void 0 ? void 0 : urlParamTemplates.length) {
|
|
19
|
-
return urlParamTemplates.reduce((acc, paramTemplate) => {
|
|
20
|
-
const paramName = paramTemplate.replace(BRACES_EXP, '');
|
|
21
|
-
const paramValue = queryParams[paramName];
|
|
22
|
-
if (!paramValue) {
|
|
23
|
-
acc.params[paramName] = queryParams[paramName];
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
26
|
-
delete acc.params[paramName];
|
|
27
|
-
acc.url = acc.url.replace(new RegExp(paramTemplate, 'g'), `/${paramValue}`);
|
|
28
|
-
}
|
|
29
|
-
return acc;
|
|
30
|
-
}, {
|
|
31
|
-
url,
|
|
32
|
-
params: Object.assign({}, queryParams),
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
return fallback;
|
|
36
|
-
}
|
|
37
|
-
exports.default = getUrlAndParams;
|
package/dist/api/index.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getEndpointWithVersion = exports.getUrlAndParams = void 0;
|
|
7
|
-
const getUrlAndParams_1 = __importDefault(require("./getUrlAndParams"));
|
|
8
|
-
exports.getUrlAndParams = getUrlAndParams_1.default;
|
|
9
|
-
const getEndpointWithVersion_1 = __importDefault(require("./getEndpointWithVersion"));
|
|
10
|
-
exports.getEndpointWithVersion = getEndpointWithVersion_1.default;
|
|
11
|
-
exports.default = {};
|
package/dist/index.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
-
};
|
|
12
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
__exportStar(require("./shared"), exports);
|
|
14
|
-
__exportStar(require("./outlet"), exports);
|
|
15
|
-
__exportStar(require("./versioning"), exports);
|
|
16
|
-
__exportStar(require("./api"), exports);
|
|
17
|
-
__exportStar(require("./string"), exports);
|
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const moment_1 = __importDefault(require("moment"));
|
|
7
|
-
const enums_1 = require("../shared/enums");
|
|
8
|
-
const shared_1 = require("../shared");
|
|
9
|
-
const ORDER_FORMATS = [
|
|
10
|
-
{ id: enums_1.OrderFormat.EatIn, name: 'eatIn' },
|
|
11
|
-
{ id: enums_1.OrderFormat.Takeaway, name: 'takeaway' },
|
|
12
|
-
{ id: enums_1.OrderFormat.TableOrder, name: 'tableOrder' },
|
|
13
|
-
{ id: enums_1.OrderFormat.Delivery, name: 'delivery' },
|
|
14
|
-
];
|
|
15
|
-
function generateWeekFromToday(nowISOString) {
|
|
16
|
-
const today = moment_1.default.utc(nowISOString).subtract(1, 'day').startOf('day');
|
|
17
|
-
const result = [];
|
|
18
|
-
for (let i = 0, current = today; i < 7; i += 1) {
|
|
19
|
-
current = current.clone().add(1, 'day').startOf('day');
|
|
20
|
-
result.push(current.clone());
|
|
21
|
-
}
|
|
22
|
-
return result;
|
|
23
|
-
}
|
|
24
|
-
function sortByIsoWeekday(moments) {
|
|
25
|
-
return [...moments].sort((a, b) => a.isoWeekday() - b.isoWeekday());
|
|
26
|
-
}
|
|
27
|
-
function getIntervalTimestampAsNumbers(timestamp) {
|
|
28
|
-
return timestamp.split(':').map(Number);
|
|
29
|
-
}
|
|
30
|
-
function formatInterval(interval, weekdayMoment) {
|
|
31
|
-
const [startHour, startMinute] = getIntervalTimestampAsNumbers(interval.start);
|
|
32
|
-
const [durationHour, durationMinute] = getIntervalTimestampAsNumbers(interval.duration);
|
|
33
|
-
if (interval.type === enums_1.IntervalType.Interval) {
|
|
34
|
-
const startMoment = weekdayMoment
|
|
35
|
-
.clone()
|
|
36
|
-
.add(startHour, 'hour')
|
|
37
|
-
.add(startMinute, 'minute');
|
|
38
|
-
const endMoment = startMoment
|
|
39
|
-
.clone()
|
|
40
|
-
.add(durationHour, 'hour')
|
|
41
|
-
.add(durationMinute, 'minute');
|
|
42
|
-
return {
|
|
43
|
-
id: interval.id,
|
|
44
|
-
start: startMoment.toISOString(),
|
|
45
|
-
end: endMoment.toISOString(),
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
if (interval.type === enums_1.IntervalType.Exception) {
|
|
49
|
-
const fromDateMoment = (0, moment_1.default)(interval.fromDate);
|
|
50
|
-
const toDateMoment = (0, moment_1.default)(interval.toDate);
|
|
51
|
-
if (weekdayMoment.isBetween(fromDateMoment, toDateMoment, undefined, '[]')) {
|
|
52
|
-
const startMoment = weekdayMoment
|
|
53
|
-
.clone()
|
|
54
|
-
.add(startHour, 'hour')
|
|
55
|
-
.add(startMinute, 'minute');
|
|
56
|
-
const endMoment = startMoment
|
|
57
|
-
.clone()
|
|
58
|
-
.add(durationHour, 'hour')
|
|
59
|
-
.add(durationMinute, 'minute');
|
|
60
|
-
return {
|
|
61
|
-
id: interval.id,
|
|
62
|
-
start: startMoment.toISOString(),
|
|
63
|
-
end: endMoment.toISOString(),
|
|
64
|
-
reason: interval.reason,
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
return null;
|
|
68
|
-
}
|
|
69
|
-
throw new Error('Invalid interval type');
|
|
70
|
-
}
|
|
71
|
-
function collectReadableInterval(interval, week, collector) {
|
|
72
|
-
var _a;
|
|
73
|
-
const weekdayIsoMap = {
|
|
74
|
-
[enums_1.DayOfWeek.Monday]: 1,
|
|
75
|
-
[enums_1.DayOfWeek.Tuesday]: 2,
|
|
76
|
-
[enums_1.DayOfWeek.Wednesday]: 3,
|
|
77
|
-
[enums_1.DayOfWeek.Thursday]: 4,
|
|
78
|
-
[enums_1.DayOfWeek.Friday]: 5,
|
|
79
|
-
[enums_1.DayOfWeek.Saturday]: 6,
|
|
80
|
-
[enums_1.DayOfWeek.Sunday]: 7,
|
|
81
|
-
};
|
|
82
|
-
for (let i = 0; i < week.length; i += 1) {
|
|
83
|
-
const weekdayMoment = week[i];
|
|
84
|
-
const momentIsoWeekday = weekdayMoment.isoWeekday();
|
|
85
|
-
const intervalWeekdayEnum = interval.dayOfWeek;
|
|
86
|
-
const intervalIsoWeekday = (_a = weekdayIsoMap[intervalWeekdayEnum]) !== null && _a !== void 0 ? _a : null;
|
|
87
|
-
const intervalIsApplicableToday = intervalIsoWeekday === momentIsoWeekday ||
|
|
88
|
-
intervalWeekdayEnum === enums_1.DayOfWeek.Everyday;
|
|
89
|
-
if (!collector[momentIsoWeekday]) {
|
|
90
|
-
// eslint-disable-next-line no-param-reassign
|
|
91
|
-
collector[momentIsoWeekday] = {
|
|
92
|
-
isoWeekday: momentIsoWeekday,
|
|
93
|
-
key: '',
|
|
94
|
-
open: [],
|
|
95
|
-
adjusted: [],
|
|
96
|
-
closed: [],
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
if (intervalIsApplicableToday) {
|
|
100
|
-
const formattedInterval = formatInterval(interval, weekdayMoment);
|
|
101
|
-
if (formattedInterval) {
|
|
102
|
-
// eslint-disable-next-line no-param-reassign
|
|
103
|
-
collector[momentIsoWeekday].key += formattedInterval.id;
|
|
104
|
-
if (interval.type === enums_1.IntervalType.Interval &&
|
|
105
|
-
interval.state === enums_1.IntervalState.Open) {
|
|
106
|
-
collector[momentIsoWeekday].open.push(formattedInterval);
|
|
107
|
-
}
|
|
108
|
-
else if (interval.type === enums_1.IntervalType.Interval &&
|
|
109
|
-
interval.state === enums_1.IntervalState.Closed) {
|
|
110
|
-
collector[momentIsoWeekday].closed.push(formattedInterval);
|
|
111
|
-
}
|
|
112
|
-
else if (interval.type === enums_1.IntervalType.Exception &&
|
|
113
|
-
interval.state === enums_1.IntervalState.Open) {
|
|
114
|
-
collector[momentIsoWeekday].adjusted.push(formattedInterval);
|
|
115
|
-
}
|
|
116
|
-
else if (interval.type === enums_1.IntervalType.Exception &&
|
|
117
|
-
interval.state === enums_1.IntervalState.Closed) {
|
|
118
|
-
collector[momentIsoWeekday].closed.push(formattedInterval);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
function generateIntervalId(interval) {
|
|
125
|
-
switch (interval.type) {
|
|
126
|
-
case enums_1.IntervalType.Exception:
|
|
127
|
-
return (0, shared_1.generateId)('interval-exception');
|
|
128
|
-
case enums_1.IntervalType.Interval:
|
|
129
|
-
return (0, shared_1.generateId)('interval-normal');
|
|
130
|
-
default:
|
|
131
|
-
return (0, shared_1.generateId)('interval-unknown');
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
function splitServiceDateTimes(serviceDateTimes) {
|
|
135
|
-
const flattenedMap = serviceDateTimes.reduce((acc, serviceDateTime) => {
|
|
136
|
-
ORDER_FORMATS.forEach(readableOrderFormat => {
|
|
137
|
-
if ((0, shared_1.isWithinFlag)(readableOrderFormat.id, serviceDateTime.orderFormats)) {
|
|
138
|
-
if (!acc[readableOrderFormat.id]) {
|
|
139
|
-
acc[readableOrderFormat.id] = {
|
|
140
|
-
orderFormat: readableOrderFormat,
|
|
141
|
-
intervals: [],
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
|
-
acc[readableOrderFormat.id].intervals.push(...serviceDateTime.intervals.sort((a, b) => a.dayOfWeek - b.dayOfWeek));
|
|
145
|
-
}
|
|
146
|
-
});
|
|
147
|
-
return acc;
|
|
148
|
-
}, {});
|
|
149
|
-
return Object.values(flattenedMap);
|
|
150
|
-
}
|
|
151
|
-
function mergeDuplicateOpeningHours(tables) {
|
|
152
|
-
return tables.reduce((acc, table, index) => {
|
|
153
|
-
const duplicateIndex = acc.findIndex((otherTable) => otherTable !== table &&
|
|
154
|
-
!otherTable.orderFormats.some(otherOrderFormat => table.orderFormats.some(orderFormat => orderFormat.id === otherOrderFormat.id)) &&
|
|
155
|
-
otherTable.openingHours.every(openingHours => table.openingHours.some(o => o.key === openingHours.key)) &&
|
|
156
|
-
table.openingHours.every(openingHours => otherTable.openingHours.some(o => o.key === openingHours.key)));
|
|
157
|
-
if (duplicateIndex >= 0) {
|
|
158
|
-
const duplicate = acc[duplicateIndex];
|
|
159
|
-
acc.splice(duplicateIndex, 1, Object.assign(Object.assign({}, duplicate), { orderFormats: [...table.orderFormats, ...duplicate.orderFormats] }));
|
|
160
|
-
acc.splice(index, 1);
|
|
161
|
-
return acc;
|
|
162
|
-
}
|
|
163
|
-
return acc;
|
|
164
|
-
}, [...tables]);
|
|
165
|
-
}
|
|
166
|
-
function identifyIntervals(serviceDateTimes) {
|
|
167
|
-
return serviceDateTimes.map(serviceDateTime => (Object.assign(Object.assign({}, serviceDateTime), { intervals: serviceDateTime.intervals.map(interval => (Object.assign(Object.assign({}, interval), { id: generateIntervalId(interval) }))) })));
|
|
168
|
-
}
|
|
169
|
-
/**
|
|
170
|
-
* Get an array of opening hours divided by order formats
|
|
171
|
-
* @param outlet Outlet from nearby endpoint
|
|
172
|
-
* @param nowISOString Optional ISO date string of current datetime
|
|
173
|
-
* @returns Opening hours table
|
|
174
|
-
*/
|
|
175
|
-
function getListOutletOpeningHoursTable(outlet, nowISOString) {
|
|
176
|
-
// Split service date times into one array for each order format
|
|
177
|
-
const splittedServiceDateTimes = splitServiceDateTimes(identifyIntervals(outlet.serviceDateTimes));
|
|
178
|
-
// Get next 7 days including today
|
|
179
|
-
const generatedWeekFromToday = generateWeekFromToday(nowISOString);
|
|
180
|
-
// Sort days by ISO weekday (Monday first)
|
|
181
|
-
const sortedWeek = sortByIsoWeekday(generatedWeekFromToday);
|
|
182
|
-
const intervalsOrderFormatMap = splittedServiceDateTimes.reduce((acc, serviceDateTime) => {
|
|
183
|
-
if (!acc[serviceDateTime.orderFormat.id]) {
|
|
184
|
-
acc[serviceDateTime.orderFormat.id] = {};
|
|
185
|
-
}
|
|
186
|
-
serviceDateTime.intervals.reduce((intervalsAcc, interval) => {
|
|
187
|
-
collectReadableInterval(interval, sortedWeek, intervalsAcc);
|
|
188
|
-
return intervalsAcc;
|
|
189
|
-
}, acc[serviceDateTime.orderFormat.id]);
|
|
190
|
-
return acc;
|
|
191
|
-
}, {});
|
|
192
|
-
const readableOrderFormatMap = {
|
|
193
|
-
[enums_1.OrderFormat.EatIn]: ORDER_FORMATS[0],
|
|
194
|
-
[enums_1.OrderFormat.Takeaway]: ORDER_FORMATS[1],
|
|
195
|
-
[enums_1.OrderFormat.TableOrder]: ORDER_FORMATS[2],
|
|
196
|
-
[enums_1.OrderFormat.Delivery]: ORDER_FORMATS[3],
|
|
197
|
-
};
|
|
198
|
-
const openingHoursTable = Object.entries(intervalsOrderFormatMap).map(([orderFormatId, intervals]) => ({
|
|
199
|
-
orderFormats: [readableOrderFormatMap[Number(orderFormatId)]],
|
|
200
|
-
openingHours: Object.entries(intervals).map(([isoWeekday, readableInterval]) => ({
|
|
201
|
-
isoWeekday: Number(isoWeekday),
|
|
202
|
-
key: readableInterval.key,
|
|
203
|
-
open: readableInterval.open.sort((a, b) => a.start.localeCompare(b.start)),
|
|
204
|
-
adjusted: readableInterval.adjusted.sort((a, b) => a.start.localeCompare(b.start)),
|
|
205
|
-
closed: readableInterval.closed.sort((a, b) => a.start.localeCompare(b.start)),
|
|
206
|
-
})),
|
|
207
|
-
}));
|
|
208
|
-
const mergedOpeningHours = mergeDuplicateOpeningHours(openingHoursTable);
|
|
209
|
-
return mergedOpeningHours.sort((a, b) => a.orderFormats[0].id - b.orderFormats[0].id);
|
|
210
|
-
}
|
|
211
|
-
exports.default = getListOutletOpeningHoursTable;
|
package/dist/outlet/index.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getListOutletOpeningHoursTable = void 0;
|
|
7
|
-
var getListOutletOpeningHoursTable_1 = require("./getListOutletOpeningHoursTable");
|
|
8
|
-
Object.defineProperty(exports, "getListOutletOpeningHoursTable", { enumerable: true, get: function () { return __importDefault(getListOutletOpeningHoursTable_1).default; } });
|
package/dist/outlet/types.js
DELETED
package/dist/shared/enums.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.IntervalType = exports.IntervalState = exports.DayOfWeek = exports.OrderFormat = void 0;
|
|
4
|
-
var OrderFormat;
|
|
5
|
-
(function (OrderFormat) {
|
|
6
|
-
OrderFormat[OrderFormat["EatIn"] = 1] = "EatIn";
|
|
7
|
-
OrderFormat[OrderFormat["Takeaway"] = 2] = "Takeaway";
|
|
8
|
-
OrderFormat[OrderFormat["TableOrder"] = 4] = "TableOrder";
|
|
9
|
-
OrderFormat[OrderFormat["Delivery"] = 8] = "Delivery";
|
|
10
|
-
})(OrderFormat = exports.OrderFormat || (exports.OrderFormat = {}));
|
|
11
|
-
var DayOfWeek;
|
|
12
|
-
(function (DayOfWeek) {
|
|
13
|
-
DayOfWeek[DayOfWeek["Monday"] = 1] = "Monday";
|
|
14
|
-
DayOfWeek[DayOfWeek["Tuesday"] = 2] = "Tuesday";
|
|
15
|
-
DayOfWeek[DayOfWeek["Wednesday"] = 4] = "Wednesday";
|
|
16
|
-
DayOfWeek[DayOfWeek["Thursday"] = 8] = "Thursday";
|
|
17
|
-
DayOfWeek[DayOfWeek["Friday"] = 16] = "Friday";
|
|
18
|
-
DayOfWeek[DayOfWeek["Saturday"] = 32] = "Saturday";
|
|
19
|
-
DayOfWeek[DayOfWeek["Sunday"] = 64] = "Sunday";
|
|
20
|
-
DayOfWeek[DayOfWeek["Everyday"] = 127] = "Everyday";
|
|
21
|
-
})(DayOfWeek = exports.DayOfWeek || (exports.DayOfWeek = {}));
|
|
22
|
-
var IntervalState;
|
|
23
|
-
(function (IntervalState) {
|
|
24
|
-
IntervalState[IntervalState["Open"] = 0] = "Open";
|
|
25
|
-
IntervalState[IntervalState["Closed"] = 1] = "Closed";
|
|
26
|
-
})(IntervalState = exports.IntervalState || (exports.IntervalState = {}));
|
|
27
|
-
var IntervalType;
|
|
28
|
-
(function (IntervalType) {
|
|
29
|
-
IntervalType[IntervalType["Interval"] = 0] = "Interval";
|
|
30
|
-
IntervalType[IntervalType["Exception"] = 1] = "Exception";
|
|
31
|
-
})(IntervalType = exports.IntervalType || (exports.IntervalType = {}));
|
package/dist/shared/index.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.generateId = exports.isWithinFlag = exports.OrderFormat = exports.IntervalType = exports.DayOfWeek = exports.IntervalState = void 0;
|
|
7
|
-
var enums_1 = require("./enums");
|
|
8
|
-
Object.defineProperty(exports, "IntervalState", { enumerable: true, get: function () { return enums_1.IntervalState; } });
|
|
9
|
-
Object.defineProperty(exports, "DayOfWeek", { enumerable: true, get: function () { return enums_1.DayOfWeek; } });
|
|
10
|
-
Object.defineProperty(exports, "IntervalType", { enumerable: true, get: function () { return enums_1.IntervalType; } });
|
|
11
|
-
Object.defineProperty(exports, "OrderFormat", { enumerable: true, get: function () { return enums_1.OrderFormat; } });
|
|
12
|
-
var isWithinFlag_1 = require("./isWithinFlag");
|
|
13
|
-
Object.defineProperty(exports, "isWithinFlag", { enumerable: true, get: function () { return __importDefault(isWithinFlag_1).default; } });
|
|
14
|
-
var generateId_1 = require("./generateId");
|
|
15
|
-
Object.defineProperty(exports, "generateId", { enumerable: true, get: function () { return __importDefault(generateId_1).default; } });
|
package/dist/string/index.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.slugify = void 0;
|
|
7
|
-
const slugify_1 = __importDefault(require("./slugify"));
|
|
8
|
-
exports.slugify = slugify_1.default;
|
package/dist/string/slugify.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
function slugify(str, locales) {
|
|
4
|
-
return str
|
|
5
|
-
.toLocaleLowerCase(locales)
|
|
6
|
-
.replace(/[åäæ]/g, 'a') // Replace å, ä and æ with a
|
|
7
|
-
.replace(/[öø]/g, 'o') // Replace ö and ø with o
|
|
8
|
-
.replace(/[é]/g, 'e') // Replace é with e
|
|
9
|
-
.replace(/\s+/g, '-') // Replace spaces with -
|
|
10
|
-
.replace(/[^\w-]+/g, '') // Remove all non-word chars
|
|
11
|
-
.replace(/--+/g, '-') // Replace multiple - with single -
|
|
12
|
-
.replace(/^-+/, '') // Trim - from start of text
|
|
13
|
-
.replace(/-+$/, ''); // Trim - from end of text
|
|
14
|
-
}
|
|
15
|
-
exports.default = slugify;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
function cleanVersionString(version) {
|
|
4
|
-
// Transform to lowercase
|
|
5
|
-
const lowercase = version.toLowerCase();
|
|
6
|
-
// Remove anything after `-` for example -beta.2
|
|
7
|
-
const versionPart = lowercase.split('-')[0];
|
|
8
|
-
// Remove starting `v` if needed
|
|
9
|
-
const removedV = versionPart.charAt(0) === 'v' ? versionPart.substring(1) : versionPart;
|
|
10
|
-
return removedV;
|
|
11
|
-
}
|
|
12
|
-
exports.default = cleanVersionString;
|
package/dist/versioning/index.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.cleanVersionString = exports.isVersionALessThanB = void 0;
|
|
7
|
-
var isVersionALessThanB_1 = require("./isVersionALessThanB");
|
|
8
|
-
Object.defineProperty(exports, "isVersionALessThanB", { enumerable: true, get: function () { return __importDefault(isVersionALessThanB_1).default; } });
|
|
9
|
-
var cleanVersionString_1 = require("./cleanVersionString");
|
|
10
|
-
Object.defineProperty(exports, "cleanVersionString", { enumerable: true, get: function () { return __importDefault(cleanVersionString_1).default; } });
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const compare_versions_1 = __importDefault(require("compare-versions"));
|
|
7
|
-
const cleanVersionString_1 = __importDefault(require("./cleanVersionString"));
|
|
8
|
-
function isVersionALessThanB(versionA, versionB) {
|
|
9
|
-
const cleanedVersionA = (0, cleanVersionString_1.default)(versionA);
|
|
10
|
-
const cleanedVersionB = (0, cleanVersionString_1.default)(versionB);
|
|
11
|
-
return compare_versions_1.default.compare(cleanedVersionA, cleanedVersionB, '<');
|
|
12
|
-
}
|
|
13
|
-
exports.default = isVersionALessThanB;
|