@ancon/wildcat-utils 1.4.0 → 1.5.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/dist/api/getEndpointWithVersion.d.ts +7 -0
- package/dist/api/getEndpointWithVersion.js +12 -0
- package/dist/api/getUrlAndParams.d.ts +13 -0
- package/dist/api/getUrlAndParams.js +37 -0
- package/dist/api/index.d.ts +5 -0
- package/dist/api/index.js +11 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/outlet/getListOutletOpeningHoursTable.js +34 -33
- package/dist/outlet/types.d.ts +1 -1
- package/package.json +9 -5
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get a versioned endpoint URL
|
|
3
|
+
* @param endpoint Endpoint URL (ie "someEndpoint/{someId}")
|
|
4
|
+
* @param version Endpoint version (ie 1.1)
|
|
5
|
+
* @returns Versioned endpoint (ie "v1.1/someEndpoint/{someId}")
|
|
6
|
+
*/
|
|
7
|
+
export default function getEndpointWithVersion(endpoint: string, version?: number): string;
|
|
@@ -0,0 +1,12 @@
|
|
|
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;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { APIParams } from '@ancon/wildcat-types';
|
|
2
|
+
/**
|
|
3
|
+
* Get an object with URL and query parameters.
|
|
4
|
+
* If the queryParams object contains keys found in the URL string,
|
|
5
|
+
* those will be inserted into the new URL string and removed from the new params object.
|
|
6
|
+
* @param url URL
|
|
7
|
+
* @param queryParams Query parameters object
|
|
8
|
+
* @returns An object containing the URL and parameters
|
|
9
|
+
*/
|
|
10
|
+
export default function getUrlAndParams(url: string, queryParams?: APIParams): {
|
|
11
|
+
url: string;
|
|
12
|
+
params: APIParams;
|
|
13
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
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;
|
|
@@ -0,0 +1,11 @@
|
|
|
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.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -4,12 +4,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const moment_1 = __importDefault(require("moment"));
|
|
7
|
-
const
|
|
7
|
+
const enums_1 = require("../shared/enums");
|
|
8
|
+
const shared_1 = require("../shared");
|
|
8
9
|
const ORDER_FORMATS = [
|
|
9
|
-
{ id:
|
|
10
|
-
{ id:
|
|
11
|
-
{ id:
|
|
12
|
-
{ id:
|
|
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' },
|
|
13
14
|
];
|
|
14
15
|
function generateWeekFromToday(nowISOString) {
|
|
15
16
|
const today = moment_1.default.utc(nowISOString).subtract(1, 'day').startOf('day');
|
|
@@ -29,7 +30,7 @@ function getIntervalTimestampAsNumbers(timestamp) {
|
|
|
29
30
|
function formatInterval(interval, weekdayMoment) {
|
|
30
31
|
const [startHour, startMinute] = getIntervalTimestampAsNumbers(interval.start);
|
|
31
32
|
const [durationHour, durationMinute] = getIntervalTimestampAsNumbers(interval.duration);
|
|
32
|
-
if (interval.type ===
|
|
33
|
+
if (interval.type === enums_1.IntervalType.Interval) {
|
|
33
34
|
const startMoment = weekdayMoment
|
|
34
35
|
.clone()
|
|
35
36
|
.add(startHour, 'hour')
|
|
@@ -44,7 +45,7 @@ function formatInterval(interval, weekdayMoment) {
|
|
|
44
45
|
end: endMoment.toISOString(),
|
|
45
46
|
};
|
|
46
47
|
}
|
|
47
|
-
if (interval.type ===
|
|
48
|
+
if (interval.type === enums_1.IntervalType.Exception) {
|
|
48
49
|
const fromDateMoment = (0, moment_1.default)(interval.fromDate);
|
|
49
50
|
const toDateMoment = (0, moment_1.default)(interval.toDate);
|
|
50
51
|
if (weekdayMoment.isBetween(fromDateMoment, toDateMoment, undefined, '[]')) {
|
|
@@ -70,13 +71,13 @@ function formatInterval(interval, weekdayMoment) {
|
|
|
70
71
|
function collectReadableInterval(interval, week, collector) {
|
|
71
72
|
var _a;
|
|
72
73
|
const weekdayIsoMap = {
|
|
73
|
-
[
|
|
74
|
-
[
|
|
75
|
-
[
|
|
76
|
-
[
|
|
77
|
-
[
|
|
78
|
-
[
|
|
79
|
-
[
|
|
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,
|
|
80
81
|
};
|
|
81
82
|
for (let i = 0; i < week.length; i += 1) {
|
|
82
83
|
const weekdayMoment = week[i];
|
|
@@ -84,7 +85,7 @@ function collectReadableInterval(interval, week, collector) {
|
|
|
84
85
|
const intervalWeekdayEnum = interval.dayOfWeek;
|
|
85
86
|
const intervalIsoWeekday = (_a = weekdayIsoMap[intervalWeekdayEnum]) !== null && _a !== void 0 ? _a : null;
|
|
86
87
|
const intervalIsApplicableToday = intervalIsoWeekday === momentIsoWeekday ||
|
|
87
|
-
intervalWeekdayEnum ===
|
|
88
|
+
intervalWeekdayEnum === enums_1.DayOfWeek.Everyday;
|
|
88
89
|
if (!collector[momentIsoWeekday]) {
|
|
89
90
|
// eslint-disable-next-line no-param-reassign
|
|
90
91
|
collector[momentIsoWeekday] = {
|
|
@@ -100,20 +101,20 @@ function collectReadableInterval(interval, week, collector) {
|
|
|
100
101
|
if (formattedInterval) {
|
|
101
102
|
// eslint-disable-next-line no-param-reassign
|
|
102
103
|
collector[momentIsoWeekday].key += formattedInterval.id;
|
|
103
|
-
if (interval.type ===
|
|
104
|
-
interval.state ===
|
|
104
|
+
if (interval.type === enums_1.IntervalType.Interval &&
|
|
105
|
+
interval.state === enums_1.IntervalState.Open) {
|
|
105
106
|
collector[momentIsoWeekday].open.push(formattedInterval);
|
|
106
107
|
}
|
|
107
|
-
else if (interval.type ===
|
|
108
|
-
interval.state ===
|
|
108
|
+
else if (interval.type === enums_1.IntervalType.Interval &&
|
|
109
|
+
interval.state === enums_1.IntervalState.Closed) {
|
|
109
110
|
collector[momentIsoWeekday].closed.push(formattedInterval);
|
|
110
111
|
}
|
|
111
|
-
else if (interval.type ===
|
|
112
|
-
interval.state ===
|
|
112
|
+
else if (interval.type === enums_1.IntervalType.Exception &&
|
|
113
|
+
interval.state === enums_1.IntervalState.Open) {
|
|
113
114
|
collector[momentIsoWeekday].adjusted.push(formattedInterval);
|
|
114
115
|
}
|
|
115
|
-
else if (interval.type ===
|
|
116
|
-
interval.state ===
|
|
116
|
+
else if (interval.type === enums_1.IntervalType.Exception &&
|
|
117
|
+
interval.state === enums_1.IntervalState.Closed) {
|
|
117
118
|
collector[momentIsoWeekday].closed.push(formattedInterval);
|
|
118
119
|
}
|
|
119
120
|
}
|
|
@@ -122,18 +123,18 @@ function collectReadableInterval(interval, week, collector) {
|
|
|
122
123
|
}
|
|
123
124
|
function generateIntervalId(interval) {
|
|
124
125
|
switch (interval.type) {
|
|
125
|
-
case
|
|
126
|
-
return (0,
|
|
127
|
-
case
|
|
128
|
-
return (0,
|
|
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');
|
|
129
130
|
default:
|
|
130
|
-
return (0,
|
|
131
|
+
return (0, shared_1.generateId)('interval-unknown');
|
|
131
132
|
}
|
|
132
133
|
}
|
|
133
134
|
function splitServiceDateTimes(serviceDateTimes) {
|
|
134
135
|
const flattenedMap = serviceDateTimes.reduce((acc, serviceDateTime) => {
|
|
135
136
|
ORDER_FORMATS.forEach(readableOrderFormat => {
|
|
136
|
-
if ((0,
|
|
137
|
+
if ((0, shared_1.isWithinFlag)(readableOrderFormat.id, serviceDateTime.orderFormats)) {
|
|
137
138
|
if (!acc[readableOrderFormat.id]) {
|
|
138
139
|
acc[readableOrderFormat.id] = {
|
|
139
140
|
orderFormat: readableOrderFormat,
|
|
@@ -189,10 +190,10 @@ function getListOutletOpeningHoursTable(outlet, nowISOString) {
|
|
|
189
190
|
return acc;
|
|
190
191
|
}, {});
|
|
191
192
|
const readableOrderFormatMap = {
|
|
192
|
-
[
|
|
193
|
-
[
|
|
194
|
-
[
|
|
195
|
-
[
|
|
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],
|
|
196
197
|
};
|
|
197
198
|
const openingHoursTable = Object.entries(intervalsOrderFormatMap).map(([orderFormatId, intervals]) => ({
|
|
198
199
|
orderFormats: [readableOrderFormatMap[Number(orderFormatId)]],
|
package/dist/outlet/types.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ancon/wildcat-utils",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "",
|
|
5
|
-
"repository": "git@bitbucket.org:anconab/wildcat.utils.git",
|
|
5
|
+
"repository": "git@bitbucket.org:anconab/wildcat.client.utils.git",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"private": false,
|
|
8
8
|
"publishConfig": {
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
"dev": "tsc -w"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
20
|
+
"@ancon/wildcat-types": "^1.17.0",
|
|
20
21
|
"@babel/core": "^7.16.5",
|
|
21
22
|
"@babel/preset-env": "^7.16.5",
|
|
22
23
|
"@babel/preset-typescript": "^7.16.5",
|
|
@@ -29,6 +30,7 @@
|
|
|
29
30
|
"@types/jest": "^27.0.3",
|
|
30
31
|
"@typescript-eslint/eslint-plugin": "^5.8.1",
|
|
31
32
|
"@typescript-eslint/parser": "^5.8.1",
|
|
33
|
+
"axios": "^0.27.2",
|
|
32
34
|
"babel-jest": "^27.4.5",
|
|
33
35
|
"compare-versions": "^4.1.3",
|
|
34
36
|
"eslint": "^8.5.0",
|
|
@@ -45,8 +47,9 @@
|
|
|
45
47
|
"typescript": "^4.5.4"
|
|
46
48
|
},
|
|
47
49
|
"peerDependencies": {
|
|
48
|
-
"
|
|
49
|
-
"compare-versions": "^4.1.0"
|
|
50
|
+
"@ancon/wildcat-types": "*",
|
|
51
|
+
"compare-versions": "^4.1.0",
|
|
52
|
+
"moment": "^2.29.0"
|
|
50
53
|
},
|
|
51
54
|
"commitlint": {
|
|
52
55
|
"extends": [
|
|
@@ -95,5 +98,6 @@
|
|
|
95
98
|
}
|
|
96
99
|
]
|
|
97
100
|
]
|
|
98
|
-
}
|
|
101
|
+
},
|
|
102
|
+
"dependencies": {}
|
|
99
103
|
}
|