@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.
Files changed (77) hide show
  1. package/api/getEndpointWithVersion.cjs +1 -0
  2. package/{dist/api → api}/getEndpointWithVersion.d.ts +0 -0
  3. package/api/getEndpointWithVersion.js +6 -0
  4. package/api/getUrlAndParams.cjs +1 -0
  5. package/{dist/api → api}/getUrlAndParams.d.ts +0 -0
  6. package/api/getUrlAndParams.js +23 -0
  7. package/api/index.cjs +1 -0
  8. package/{dist/api → api}/index.d.ts +0 -2
  9. package/api/index.js +6 -0
  10. package/color/brighten.cjs +1 -0
  11. package/color/brighten.d.ts +8 -0
  12. package/color/brighten.js +7 -0
  13. package/color/darken.cjs +1 -0
  14. package/color/darken.d.ts +8 -0
  15. package/color/darken.js +7 -0
  16. package/color/index.cjs +1 -0
  17. package/color/index.d.ts +4 -0
  18. package/color/index.js +9 -0
  19. package/color/lighten.cjs +1 -0
  20. package/color/lighten.d.ts +8 -0
  21. package/color/lighten.js +7 -0
  22. package/index.cjs +1 -0
  23. package/{dist/index.d.ts → index.d.ts} +1 -0
  24. package/index.js +32 -0
  25. package/outlet/getListOutletOpeningHoursTable.cjs +1 -0
  26. package/{dist/outlet → outlet}/getListOutletOpeningHoursTable.d.ts +0 -0
  27. package/outlet/getListOutletOpeningHoursTable.js +172 -0
  28. package/outlet/index.cjs +1 -0
  29. package/{dist/outlet → outlet}/index.d.ts +0 -0
  30. package/outlet/index.js +8 -0
  31. package/outlet/types.cjs +1 -0
  32. package/{dist/outlet → outlet}/types.d.ts +0 -0
  33. package/outlet/types.js +1 -0
  34. package/package.json +86 -98
  35. package/shared/enums.cjs +1 -0
  36. package/{dist/shared → shared}/enums.d.ts +0 -0
  37. package/shared/enums.js +7 -0
  38. package/shared/generateId.cjs +1 -0
  39. package/{dist/shared → shared}/generateId.d.ts +0 -0
  40. package/shared/generateId.js +7 -0
  41. package/shared/index.cjs +1 -0
  42. package/{dist/shared → shared}/index.d.ts +0 -0
  43. package/shared/index.js +11 -0
  44. package/shared/isWithinFlag.cjs +1 -0
  45. package/{dist/shared → shared}/isWithinFlag.d.ts +0 -0
  46. package/shared/isWithinFlag.js +6 -0
  47. package/string/index.cjs +1 -0
  48. package/{dist/string → string}/index.d.ts +0 -0
  49. package/string/index.js +4 -0
  50. package/string/slugify.cjs +1 -0
  51. package/{dist/string → string}/slugify.d.ts +0 -0
  52. package/string/slugify.js +6 -0
  53. package/versioning/cleanVersionString.cjs +1 -0
  54. package/{dist/versioning → versioning}/cleanVersionString.d.ts +0 -0
  55. package/versioning/cleanVersionString.js +7 -0
  56. package/versioning/index.cjs +1 -0
  57. package/{dist/versioning → versioning}/index.d.ts +0 -0
  58. package/versioning/index.js +7 -0
  59. package/versioning/isVersionALessThanB.cjs +1 -0
  60. package/{dist/versioning → versioning}/isVersionALessThanB.d.ts +0 -0
  61. package/versioning/isVersionALessThanB.js +9 -0
  62. package/dist/api/getEndpointWithVersion.js +0 -12
  63. package/dist/api/getUrlAndParams.js +0 -37
  64. package/dist/api/index.js +0 -11
  65. package/dist/index.js +0 -17
  66. package/dist/outlet/getListOutletOpeningHoursTable.js +0 -211
  67. package/dist/outlet/index.js +0 -8
  68. package/dist/outlet/types.js +0 -2
  69. package/dist/shared/enums.js +0 -31
  70. package/dist/shared/generateId.js +0 -7
  71. package/dist/shared/index.js +0 -15
  72. package/dist/shared/isWithinFlag.js +0 -6
  73. package/dist/string/index.js +0 -8
  74. package/dist/string/slugify.js +0 -15
  75. package/dist/versioning/cleanVersionString.js +0 -12
  76. package/dist/versioning/index.js +0 -10
  77. 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,6 @@
1
+ function n(t, e = 1) {
2
+ return `v${e.toFixed(1)}/${t}`;
3
+ }
4
+ export {
5
+ n as default
6
+ };
@@ -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;
@@ -1,5 +1,3 @@
1
1
  import getUrlAndParams from './getUrlAndParams';
2
2
  import getEndpointWithVersion from './getEndpointWithVersion';
3
3
  export { getUrlAndParams, getEndpointWithVersion };
4
- declare const _default: {};
5
- export default _default;
package/api/index.js ADDED
@@ -0,0 +1,6 @@
1
+ import { default as r } from "./getUrlAndParams.js";
2
+ import { default as o } from "./getEndpointWithVersion.js";
3
+ export {
4
+ o as getEndpointWithVersion,
5
+ r as getUrlAndParams
6
+ };
@@ -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;
@@ -0,0 +1,7 @@
1
+ import n from "tinycolor2";
2
+ function i(t, r) {
3
+ return n(t).brighten(r).toString();
4
+ }
5
+ export {
6
+ i as default
7
+ };
@@ -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;
@@ -0,0 +1,7 @@
1
+ import n from "tinycolor2";
2
+ function e(r, t) {
3
+ return n(r).darken(t).toString();
4
+ }
5
+ export {
6
+ e as default
7
+ };
@@ -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;
@@ -0,0 +1,4 @@
1
+ import lighten from './lighten';
2
+ import brighten from './brighten';
3
+ import darken from './darken';
4
+ export { lighten, brighten, darken };
package/color/index.js ADDED
@@ -0,0 +1,9 @@
1
+ import { default as a } from "./lighten.js";
2
+ import { default as f } from "./brighten.js";
3
+ import { default as l } from "./darken.js";
4
+ import "tinycolor2";
5
+ export {
6
+ f as brighten,
7
+ l as darken,
8
+ a as lighten
9
+ };
@@ -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;
@@ -0,0 +1,7 @@
1
+ import o from "tinycolor2";
2
+ function i(t, n) {
3
+ return o(t).lighten(n).toString();
4
+ }
5
+ export {
6
+ i as default
7
+ };
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;
@@ -3,3 +3,4 @@ export * from './outlet';
3
3
  export * from './versioning';
4
4
  export * from './api';
5
5
  export * from './string';
6
+ export * from './color';
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;
@@ -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
+ };
@@ -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
@@ -0,0 +1,8 @@
1
+ import { default as m } from "./getListOutletOpeningHoursTable.js";
2
+ import "moment";
3
+ import "../shared/enums.js";
4
+ import "../shared/isWithinFlag.js";
5
+ import "../shared/generateId.js";
6
+ export {
7
+ m as getListOutletOpeningHoursTable
8
+ };
@@ -0,0 +1 @@
1
+ "use strict";
File without changes
@@ -0,0 +1 @@
1
+
package/package.json CHANGED
@@ -1,103 +1,91 @@
1
1
  {
2
2
  "name": "@ancon/wildcat-utils",
3
- "version": "1.6.0",
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
- "publishConfig": {
9
- "access": "public"
10
- },
11
- "files": [
12
- "dist"
13
- ],
14
- "scripts": {
15
- "test": "jest",
16
- "build": "tsc",
17
- "dev": "tsc -w"
18
- },
19
- "devDependencies": {
20
- "@ancon/wildcat-types": "^1.17.0",
21
- "@babel/core": "^7.16.5",
22
- "@babel/preset-env": "^7.16.5",
23
- "@babel/preset-typescript": "^7.16.5",
24
- "@commitlint/cli": "^16.0.1",
25
- "@commitlint/config-conventional": "^16.0.0",
26
- "@semantic-release/commit-analyzer": "^9.0.2",
27
- "@semantic-release/git": "^10.0.1",
28
- "@semantic-release/npm": "^8.0.3",
29
- "@semantic-release/release-notes-generator": "^10.0.3",
30
- "@types/jest": "^27.0.3",
31
- "@typescript-eslint/eslint-plugin": "^5.8.1",
32
- "@typescript-eslint/parser": "^5.8.1",
33
- "axios": "^0.27.2",
34
- "babel-jest": "^27.4.5",
35
- "compare-versions": "^4.1.3",
36
- "eslint": "^8.5.0",
37
- "eslint-config-airbnb-base": "^15.0.0",
38
- "eslint-config-airbnb-typescript": "^16.1.0",
39
- "eslint-plugin-import": "^2.25.3",
40
- "husky": "^4.3.8",
41
- "jest": "^27.4.5",
42
- "lint-staged": "^10.2.11",
43
- "moment": "^2.29.1",
44
- "prettier": "^2.0.5",
45
- "semantic-release": "^18.0.1",
46
- "ts-jest": "^27.1.2",
47
- "typescript": "^4.5.4"
48
- },
49
- "peerDependencies": {
50
- "@ancon/wildcat-types": "*",
51
- "compare-versions": "^4.1.0",
52
- "moment": "^2.29.0"
53
- },
54
- "commitlint": {
55
- "extends": [
56
- "@commitlint/config-conventional"
57
- ]
58
- },
59
- "prettier": {
60
- "semi": false,
61
- "singleQuote": true,
62
- "trailingComma": "all",
63
- "arrowParens": "avoid"
64
- },
65
- "husky": {
66
- "hooks": {
67
- "commit-msg": "commitlint -E HUSKY_GIT_PARAMS",
68
- "pre-commit": "lint-staged"
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
  }
@@ -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
@@ -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
@@ -0,0 +1,7 @@
1
+ function r(t) {
2
+ const n = Math.random().toString();
3
+ return `${t ? `${t}-` : ""}${n.substring(2)}`;
4
+ }
5
+ export {
6
+ r as default
7
+ };
@@ -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
@@ -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
@@ -0,0 +1,6 @@
1
+ function a(t, i) {
2
+ return (i & t) === t;
3
+ }
4
+ export {
5
+ a as default
6
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./slugify.cjs");exports.slugify=e;
File without changes
@@ -0,0 +1,4 @@
1
+ import { default as e } from "./slugify.js";
2
+ export {
3
+ e as slugify
4
+ };
@@ -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,6 @@
1
+ function r(e, a) {
2
+ return e.toLocaleLowerCase(a).replace(/[åäæ]/g, "a").replace(/[öø]/g, "o").replace(/[é]/g, "e").replace(/\s+/g, "-").replace(/[^\w-]+/g, "").replace(/--+/g, "-").replace(/^-+/, "").replace(/-+$/, "");
3
+ }
4
+ export {
5
+ r as default
6
+ };
@@ -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;
@@ -0,0 +1,7 @@
1
+ function s(r) {
2
+ const e = r.toLowerCase().split("-")[0];
3
+ return e.charAt(0) === "v" ? e.substring(1) : e;
4
+ }
5
+ export {
6
+ s as default
7
+ };
@@ -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,7 @@
1
+ import { default as s } from "./isVersionALessThanB.js";
2
+ import { default as t } from "./cleanVersionString.js";
3
+ import "compare-versions";
4
+ export {
5
+ t as cleanVersionString,
6
+ s as isVersionALessThanB
7
+ };
@@ -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;
@@ -0,0 +1,9 @@
1
+ import i from "compare-versions";
2
+ import e from "./cleanVersionString.js";
3
+ function c(n, o) {
4
+ const r = e(n), s = e(o);
5
+ return i.compare(r, s, "<");
6
+ }
7
+ export {
8
+ c as default
9
+ };
@@ -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;
@@ -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; } });
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -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 = {}));
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- function generateId(name) {
4
- const rnd = Math.random().toString();
5
- return `${name ? `${name}-` : ''}${rnd.substring(2)}`;
6
- }
7
- exports.default = generateId;
@@ -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; } });
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- function isWithinFlag(needle, haystack) {
4
- return (haystack & needle) === needle;
5
- }
6
- exports.default = isWithinFlag;
@@ -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;
@@ -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;
@@ -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;