@xapp/stentor-service-jobber 1.85.1 → 1.86.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/lib/JobberService.d.ts +32 -2
- package/lib/JobberService.js +68 -29
- package/lib/JobberService.js.map +1 -1
- package/lib/ai.d.ts +13 -1
- package/lib/ai.js +102 -0
- package/lib/ai.js.map +1 -1
- package/lib/availability.d.ts +46 -1
- package/lib/availability.js +115 -0
- package/lib/availability.js.map +1 -1
- package/lib/util.d.ts +20 -7
- package/lib/util.js +44 -28
- package/lib/util.js.map +1 -1
- package/package.json +9 -7
package/lib/JobberService.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FetchService } from "stentor-service-fetch";
|
|
2
|
-
import { AvailabilityClass, BaseService, CrmResponse, CrmService, CrmServiceAvailability, CrmServiceAvailabilityOptions, CrmServiceAvailabilitySettings, CrmServiceJobType, DateTimeRange, ExternalLead } from "stentor-models";
|
|
2
|
+
import { AvailabilityClass, BaseService, CrmResponse, CrmService, CrmServiceAvailability, CrmServiceAvailabilityOptions, CrmServiceAvailabilitySettings, CrmServiceJobType, DateTimeRange, ExternalLead, JobTypeAvailabilityClass } from "stentor-models";
|
|
3
3
|
import { Product } from "./graphql";
|
|
4
4
|
export type JobberServiceRequest = <I, T>(query: string, variables?: I) => Promise<T>;
|
|
5
5
|
export interface JobberServiceProps extends BaseService, CrmServiceAvailabilitySettings {
|
|
@@ -35,6 +35,26 @@ export interface JobberServiceProps extends BaseService, CrmServiceAvailabilityS
|
|
|
35
35
|
* The default availability class to use when the AI can't determine the availability class.
|
|
36
36
|
*/
|
|
37
37
|
defaultAvailabilityClass?: string;
|
|
38
|
+
/**
|
|
39
|
+
* Deterministic job type id -> availability class id map. Beats the LLM's guess (jobType.class)
|
|
40
|
+
* when both resolve for the same job type.
|
|
41
|
+
*/
|
|
42
|
+
jobTypeClasses?: JobTypeAvailabilityClass[];
|
|
43
|
+
/**
|
|
44
|
+
* Forces every booking through this service (e.g. a campaign widget) into a single
|
|
45
|
+
* availability class, bypassing the job-type map and the AI guess entirely.
|
|
46
|
+
*/
|
|
47
|
+
forceAvailabilityClass?: string;
|
|
48
|
+
/**
|
|
49
|
+
* Same-day cutoff hour (0-23, military time, e.g. 15 = 3pm). Used when no per-class
|
|
50
|
+
* `currentDayAvailableUntil` or `defaultBusyDays.currentDayAvailableUntil` is configured.
|
|
51
|
+
*/
|
|
52
|
+
endOfWorkDayHour?: number;
|
|
53
|
+
/**
|
|
54
|
+
* IANA timezone (e.g. "America/New_York") used to evaluate "today" and the same-day cutoff.
|
|
55
|
+
* Defaults to America/New_York.
|
|
56
|
+
*/
|
|
57
|
+
timezone?: string;
|
|
38
58
|
/**
|
|
39
59
|
* Ability to modify the endpoint away from the default.
|
|
40
60
|
*/
|
|
@@ -170,7 +190,17 @@ export declare class JobberService extends FetchService implements CrmService {
|
|
|
170
190
|
* Returns cached result if the message matches the previous call.
|
|
171
191
|
*/
|
|
172
192
|
private getCachedJobTypeGuess;
|
|
173
|
-
getJobType(message: string, externalLead?: ExternalLead): Promise<CrmServiceJobType>;
|
|
193
|
+
getJobType(message: string, externalLead?: ExternalLead, options?: CrmServiceAvailabilitySettings): Promise<CrmServiceJobType>;
|
|
194
|
+
/**
|
|
195
|
+
* Lists the tenant's job types (thin wrapper over Jobber's products), for Studio's
|
|
196
|
+
* job-type -> class mapping UI.
|
|
197
|
+
*/
|
|
198
|
+
listJobTypes(): Promise<CrmServiceJobType[]>;
|
|
199
|
+
/**
|
|
200
|
+
* Asks the AI to suggest a job type -> availability class map for Studio to review, in a
|
|
201
|
+
* single GPT-4o call. Never throws - returns `[]` on failure.
|
|
202
|
+
*/
|
|
203
|
+
suggestJobTypeClasses(classes?: AvailabilityClass[]): Promise<JobTypeAvailabilityClass[]>;
|
|
174
204
|
/**
|
|
175
205
|
* Send the lead
|
|
176
206
|
*
|
package/lib/JobberService.js
CHANGED
|
@@ -40,11 +40,13 @@ class JobberService extends stentor_service_fetch_1.FetchService {
|
|
|
40
40
|
}
|
|
41
41
|
getAvailability(range, options) {
|
|
42
42
|
return __awaiter(this, void 0, void 0, function* () {
|
|
43
|
-
var _a, _b;
|
|
43
|
+
var _a, _b, _c, _d, _e;
|
|
44
44
|
const availability = {
|
|
45
45
|
range,
|
|
46
46
|
unavailabilities: []
|
|
47
47
|
};
|
|
48
|
+
const timezone = this.props.timezone || util_1.DEFAULT_TIMEZONE;
|
|
49
|
+
const settings = Object.assign(Object.assign({}, this.props), options);
|
|
48
50
|
// if no start use "now"
|
|
49
51
|
const startsOnOrAfter = range.start ? (0, stentor_utils_1.dateTimeToString)(range.start) : new Date().toISOString();
|
|
50
52
|
const startsBefore = range.end ? (0, stentor_utils_1.dateTimeToString)(range.end) : undefined;
|
|
@@ -68,16 +70,14 @@ class JobberService extends stentor_service_fetch_1.FetchService {
|
|
|
68
70
|
}
|
|
69
71
|
appointmentCount[date]++;
|
|
70
72
|
});
|
|
71
|
-
// Find avail class
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
const
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
this.props.maxTotalDailyAppointments ||
|
|
80
|
-
availability_1.DEFAULT_MAX_APPOINTMENTS_PER_DAY;
|
|
73
|
+
// Find avail class: force > jobTypeClasses map > jobType.class (legacy LLM guess) > default > none.
|
|
74
|
+
// An unmatched classId never silently means same-day - resolveAvailabilityClass falls back to
|
|
75
|
+
// a conservative class instead.
|
|
76
|
+
const resolution = (0, availability_1.resolveAvailabilityClass)(settings, options === null || options === void 0 ? void 0 : options.jobType, availability_1.defaultAvailabilityClasses);
|
|
77
|
+
const availabilityClass = resolution.availabilityClass;
|
|
78
|
+
(0, stentor_logger_1.log)().info(`Jobber: Using availability class: ${JSON.stringify(availabilityClass)} (source: ${resolution.source})`);
|
|
79
|
+
const daysToSkip = (_a = availabilityClass === null || availabilityClass === void 0 ? void 0 : availabilityClass.numberOfDaysOut) !== null && _a !== void 0 ? _a : 0;
|
|
80
|
+
const threshold = (_d = (_c = (_b = availabilityClass === null || availabilityClass === void 0 ? void 0 : availabilityClass.appointmentsPerDay) !== null && _b !== void 0 ? _b : options === null || options === void 0 ? void 0 : options.maxTotalDailyAppointments) !== null && _c !== void 0 ? _c : this.props.maxTotalDailyAppointments) !== null && _d !== void 0 ? _d : availability_1.DEFAULT_MAX_APPOINTMENTS_PER_DAY;
|
|
81
81
|
// Filter days with more than threshold appointments
|
|
82
82
|
const busyDays = Object.keys(appointmentCount).filter((date) => appointmentCount[date] >= threshold);
|
|
83
83
|
(0, stentor_logger_1.log)().info(`Jobber: Got ${busyDays === null || busyDays === void 0 ? void 0 : busyDays.length} busy day(s) for threshold ${threshold}: ${busyDays}`);
|
|
@@ -85,10 +85,10 @@ class JobberService extends stentor_service_fetch_1.FetchService {
|
|
|
85
85
|
availability.unavailabilities = busyDays.map((day) => ({ date: { date: day }, available: false }));
|
|
86
86
|
// Add locked days for job type (usually skip next N). This needs a map (jobType: skippedDays) in the CRM constructor
|
|
87
87
|
if ((options === null || options === void 0 ? void 0 : options.jobType) && this.props.delayedJobTypes) {
|
|
88
|
-
if (this.props.delayedJobTypes.indexOf((
|
|
88
|
+
if (this.props.delayedJobTypes.indexOf((_e = options === null || options === void 0 ? void 0 : options.jobType) === null || _e === void 0 ? void 0 : _e.id) !== -1) {
|
|
89
89
|
// Block today always when they request N days
|
|
90
|
-
availability.unavailabilities.push({ date: (0, util_1.today)(), available: false });
|
|
91
|
-
const nextDays = (0, util_1.getNextDays)(3);
|
|
90
|
+
availability.unavailabilities.push({ date: (0, util_1.today)(timezone), available: false });
|
|
91
|
+
const nextDays = (0, util_1.getNextDays)(3, timezone);
|
|
92
92
|
const skippedDays = nextDays.map((date) => ({
|
|
93
93
|
date,
|
|
94
94
|
available: false
|
|
@@ -96,12 +96,12 @@ class JobberService extends stentor_service_fetch_1.FetchService {
|
|
|
96
96
|
availability.unavailabilities = availability.unavailabilities.concat(skippedDays);
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
|
-
//
|
|
99
|
+
// Jobber has no capacity planning - class rules always apply.
|
|
100
100
|
if (daysToSkip > 0) {
|
|
101
101
|
// Block today always when they request N days
|
|
102
|
-
availability.unavailabilities.push({ date: (0, util_1.today)(), available: false });
|
|
102
|
+
availability.unavailabilities.push({ date: (0, util_1.today)(timezone), available: false });
|
|
103
103
|
// Skip the requested
|
|
104
|
-
const nextDays = (0, util_1.getNextDays)(daysToSkip);
|
|
104
|
+
const nextDays = (0, util_1.getNextDays)(daysToSkip, timezone);
|
|
105
105
|
const skippedDays = nextDays.map((date) => ({
|
|
106
106
|
date,
|
|
107
107
|
available: false
|
|
@@ -109,10 +109,11 @@ class JobberService extends stentor_service_fetch_1.FetchService {
|
|
|
109
109
|
availability.unavailabilities = availability.unavailabilities.concat(skippedDays);
|
|
110
110
|
}
|
|
111
111
|
else {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
112
|
+
const cutoffMinutes = (0, availability_1.resolveCutoffMinutes)(availabilityClass, settings, this.props.endOfWorkDayHour, availability_1.DEFAULT_END_OF_WORK_DAY_HOUR);
|
|
113
|
+
// 0 days-to-skip means no lead time was requested. Today is blocked at/after the cutoff.
|
|
114
|
+
if ((0, util_1.isAfterMinutes)(cutoffMinutes, timezone)) {
|
|
115
|
+
(0, stentor_logger_1.log)().info(`Jobber: blocking today because of after hours request (cutoff minutes: ${cutoffMinutes}, tz: ${timezone})`);
|
|
116
|
+
availability.unavailabilities.push({ date: (0, util_1.today)(timezone), available: false });
|
|
116
117
|
}
|
|
117
118
|
}
|
|
118
119
|
// Add explicitly specified blocked days (holidays)
|
|
@@ -142,7 +143,7 @@ class JobberService extends stentor_service_fetch_1.FetchService {
|
|
|
142
143
|
* Cached wrapper for guessJobTypes to avoid duplicate OpenAI API calls.
|
|
143
144
|
* Returns cached result if the message matches the previous call.
|
|
144
145
|
*/
|
|
145
|
-
getCachedJobTypeGuess(message, jobTypes) {
|
|
146
|
+
getCachedJobTypeGuess(message, jobTypes, settings) {
|
|
146
147
|
return __awaiter(this, void 0, void 0, function* () {
|
|
147
148
|
var _a;
|
|
148
149
|
// Return cached result if available for the same message
|
|
@@ -150,8 +151,8 @@ class JobberService extends stentor_service_fetch_1.FetchService {
|
|
|
150
151
|
(0, stentor_logger_1.log)().debug("Jobber: Using cached job type guess");
|
|
151
152
|
return this.jobTypeCache.result;
|
|
152
153
|
}
|
|
153
|
-
const availabilityClasses =
|
|
154
|
-
const defaultAvailabilityClassId =
|
|
154
|
+
const availabilityClasses = settings.availabilityClasses || availability_1.defaultAvailabilityClasses;
|
|
155
|
+
const defaultAvailabilityClassId = settings.defaultAvailabilityClass || availabilityClasses[0].id;
|
|
155
156
|
let result;
|
|
156
157
|
try {
|
|
157
158
|
result = yield (0, ai_1.guessJobTypes)({
|
|
@@ -174,20 +175,24 @@ class JobberService extends stentor_service_fetch_1.FetchService {
|
|
|
174
175
|
return result;
|
|
175
176
|
});
|
|
176
177
|
}
|
|
177
|
-
getJobType(message, externalLead) {
|
|
178
|
+
getJobType(message, externalLead, options) {
|
|
178
179
|
return __awaiter(this, void 0, void 0, function* () {
|
|
179
|
-
var _a;
|
|
180
|
+
var _a, _b, _c, _d, _e;
|
|
181
|
+
const settings = Object.assign(Object.assign({}, this.props), options);
|
|
180
182
|
const jobTypes = yield this.fetchJobTypes();
|
|
181
183
|
let jobType;
|
|
182
184
|
if (jobTypes && jobTypes.length > 0) {
|
|
183
185
|
(0, stentor_logger_1.log)().info("Jobber: Asking AI about job type");
|
|
184
|
-
const suggestedJobTypes = yield this.getCachedJobTypeGuess(message, jobTypes);
|
|
186
|
+
const suggestedJobTypes = yield this.getCachedJobTypeGuess(message, jobTypes, settings);
|
|
185
187
|
const suggestedJobType = (_a = suggestedJobTypes === null || suggestedJobTypes === void 0 ? void 0 : suggestedJobTypes.jobTypes) === null || _a === void 0 ? void 0 : _a[0];
|
|
186
188
|
if (suggestedJobType) {
|
|
187
189
|
(0, stentor_logger_1.log)().info(`Jobber: AI selected job type: ${JSON.stringify(suggestedJobType)}`);
|
|
190
|
+
// A deterministic map hit beats the LLM's own guess; a forced class beats both.
|
|
191
|
+
const mappedClassId = (_c = (_b = settings.jobTypeClasses) === null || _b === void 0 ? void 0 : _b.find((m) => m && String(m.jobTypeId) === String(suggestedJobType.id))) === null || _c === void 0 ? void 0 : _c.classId;
|
|
192
|
+
const resolvedClassId = (_e = (_d = settings.forceAvailabilityClass) !== null && _d !== void 0 ? _d : mappedClassId) !== null && _e !== void 0 ? _e : String(suggestedJobType.classId);
|
|
188
193
|
jobType = {
|
|
189
194
|
id: suggestedJobType.id + "",
|
|
190
|
-
class:
|
|
195
|
+
class: resolvedClassId,
|
|
191
196
|
name: suggestedJobType.name
|
|
192
197
|
};
|
|
193
198
|
}
|
|
@@ -198,9 +203,43 @@ class JobberService extends stentor_service_fetch_1.FetchService {
|
|
|
198
203
|
else {
|
|
199
204
|
(0, stentor_logger_1.log)().info("Jobber: NOT Asking AI about job type (no job types)");
|
|
200
205
|
}
|
|
206
|
+
// Even when the AI failed or there were no job types, a forced class still needs to
|
|
207
|
+
// reach getAvailability (and the lead) - it's a widget-level policy, not an AI guess.
|
|
208
|
+
if (!jobType && settings.forceAvailabilityClass) {
|
|
209
|
+
jobType = { id: undefined, class: settings.forceAvailabilityClass };
|
|
210
|
+
}
|
|
201
211
|
return jobType;
|
|
202
212
|
});
|
|
203
213
|
}
|
|
214
|
+
/**
|
|
215
|
+
* Lists the tenant's job types (thin wrapper over Jobber's products), for Studio's
|
|
216
|
+
* job-type -> class mapping UI.
|
|
217
|
+
*/
|
|
218
|
+
listJobTypes() {
|
|
219
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
220
|
+
const jobTypes = yield this.fetchJobTypes();
|
|
221
|
+
return (jobTypes || []).map((jt) => ({ id: String(jt.id), name: jt.name }));
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Asks the AI to suggest a job type -> availability class map for Studio to review, in a
|
|
226
|
+
* single GPT-4o call. Never throws - returns `[]` on failure.
|
|
227
|
+
*/
|
|
228
|
+
suggestJobTypeClasses(classes) {
|
|
229
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
230
|
+
var _a;
|
|
231
|
+
const jobTypes = yield this.fetchJobTypes();
|
|
232
|
+
if (!jobTypes || jobTypes.length === 0) {
|
|
233
|
+
return [];
|
|
234
|
+
}
|
|
235
|
+
const availabilityClasses = (classes === null || classes === void 0 ? void 0 : classes.length) ? classes : this.props.availabilityClasses || availability_1.defaultAvailabilityClasses;
|
|
236
|
+
return (0, ai_1.suggestJobTypeClassMap)({
|
|
237
|
+
jobTypes,
|
|
238
|
+
availabilityClasses,
|
|
239
|
+
apiKey: (_a = this.props.openAI) === null || _a === void 0 ? void 0 : _a.apiKey
|
|
240
|
+
});
|
|
241
|
+
});
|
|
242
|
+
}
|
|
204
243
|
// Called by CRM Service to send the lead
|
|
205
244
|
/**
|
|
206
245
|
* Send the lead
|
|
@@ -326,7 +365,7 @@ class JobberService extends stentor_service_fetch_1.FetchService {
|
|
|
326
365
|
appointmentTime = (0, date_fns_1.addHours)(appointmentTime, offsetHours);
|
|
327
366
|
const requestTime = appointmentTime ? appointmentTime.toISOString() : undefined;
|
|
328
367
|
const jobTypes = yield this.fetchJobTypes();
|
|
329
|
-
const suggestedJobTypes = yield this.getCachedJobTypeGuess(contact.message, jobTypes);
|
|
368
|
+
const suggestedJobTypes = yield this.getCachedJobTypeGuess(contact.message, jobTypes, this.props);
|
|
330
369
|
const suggestedJobType = (_b = suggestedJobTypes === null || suggestedJobTypes === void 0 ? void 0 : suggestedJobTypes.jobTypes) === null || _b === void 0 ? void 0 : _b[0];
|
|
331
370
|
const jobRequest = {
|
|
332
371
|
job: {
|
package/lib/JobberService.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JobberService.js","sourceRoot":"","sources":["../src/JobberService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"JobberService.js","sourceRoot":"","sources":["../src/JobberService.ts"],"names":[],"mappings":"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"}
|
package/lib/ai.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*! Copyright (c) 2022, XAPPmedia */
|
|
2
|
-
import { AvailabilityClass } from "stentor-models";
|
|
2
|
+
import { AvailabilityClass, JobTypeAvailabilityClass } from "stentor-models";
|
|
3
3
|
export interface JobTypeAiQuery {
|
|
4
4
|
question: string;
|
|
5
5
|
jobTypes: JobTypeDescriptor[];
|
|
@@ -24,3 +24,15 @@ export interface AiResponse {
|
|
|
24
24
|
jobTypes: JobTypeAiResponse[];
|
|
25
25
|
}
|
|
26
26
|
export declare function guessJobTypes(query: JobTypeAiQuery): Promise<AiResponse>;
|
|
27
|
+
export interface SuggestJobTypeClassMapQuery {
|
|
28
|
+
jobTypes: JobTypeDescriptor[];
|
|
29
|
+
availabilityClasses: AvailabilityClass[];
|
|
30
|
+
apiKey?: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Asks GPT-4o to map every job type to the best-fit availability class in a single call.
|
|
34
|
+
*
|
|
35
|
+
* Never throws - returns `[]` on any parse/network failure. The output is filtered against
|
|
36
|
+
* both the real job-type ids and the real class ids; unmatched job types are omitted.
|
|
37
|
+
*/
|
|
38
|
+
export declare function suggestJobTypeClassMap(query: SuggestJobTypeClassMapQuery): Promise<JobTypeAvailabilityClass[]>;
|
package/lib/ai.js
CHANGED
|
@@ -14,6 +14,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
14
14
|
};
|
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
16
|
exports.guessJobTypes = guessJobTypes;
|
|
17
|
+
exports.suggestJobTypeClassMap = suggestJobTypeClassMap;
|
|
17
18
|
const openai_1 = __importDefault(require("openai"));
|
|
18
19
|
require("dotenv").config();
|
|
19
20
|
const stentor_logger_1 = require("stentor-logger");
|
|
@@ -129,6 +130,15 @@ function guessJobTypes(query) {
|
|
|
129
130
|
}
|
|
130
131
|
}
|
|
131
132
|
if (filteredJobTypes.length > 0) {
|
|
133
|
+
// AI can also make up bogus availability class ids - never let one through unvalidated,
|
|
134
|
+
// an unmatched classId falling through to "no class" is the silent-same-day bug.
|
|
135
|
+
filteredJobTypes.forEach((jobType) => {
|
|
136
|
+
const validClass = availabilityClasses.find((ac) => ac && String(ac.id) === String(jobType.classId));
|
|
137
|
+
if (!validClass) {
|
|
138
|
+
(0, stentor_logger_1.log)().error(`OpenAI: Deleted bogus availability class id: ${jobType.classId}`);
|
|
139
|
+
jobType.classId = query.defaultAvailabilityClassId;
|
|
140
|
+
}
|
|
141
|
+
});
|
|
132
142
|
choices.jobTypes = filteredJobTypes;
|
|
133
143
|
}
|
|
134
144
|
else {
|
|
@@ -153,4 +163,96 @@ function guessJobTypes(query) {
|
|
|
153
163
|
return choices;
|
|
154
164
|
});
|
|
155
165
|
}
|
|
166
|
+
/**
|
|
167
|
+
* Asks GPT-4o to map every job type to the best-fit availability class in a single call.
|
|
168
|
+
*
|
|
169
|
+
* Never throws - returns `[]` on any parse/network failure. The output is filtered against
|
|
170
|
+
* both the real job-type ids and the real class ids; unmatched job types are omitted.
|
|
171
|
+
*/
|
|
172
|
+
function suggestJobTypeClassMap(query) {
|
|
173
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
174
|
+
var _a, _b, _c;
|
|
175
|
+
const { jobTypes, availabilityClasses, apiKey } = query;
|
|
176
|
+
if (!jobTypes || jobTypes.length === 0 || !availabilityClasses || availabilityClasses.length === 0) {
|
|
177
|
+
return [];
|
|
178
|
+
}
|
|
179
|
+
try {
|
|
180
|
+
const openai = new openai_1.default({ apiKey });
|
|
181
|
+
const response = yield openai.chat.completions.create({
|
|
182
|
+
model: "gpt-4o",
|
|
183
|
+
response_format: { type: "json_object" },
|
|
184
|
+
messages: [
|
|
185
|
+
{
|
|
186
|
+
role: "system",
|
|
187
|
+
content: `You are a helpful assistant for a home services company.
|
|
188
|
+
Your task is to map every job type in the provided list to the single best-fit
|
|
189
|
+
availability class from the provided list of availability classes.
|
|
190
|
+
|
|
191
|
+
Output your response as JSON as it will be parsed programmatically. Use the following keys:
|
|
192
|
+
|
|
193
|
+
* jobTypeClasses: required - an array of objects with the following keys:
|
|
194
|
+
"jobTypeId": required - The id of the job type, copied exactly from the provided job types,
|
|
195
|
+
"jobTypeName": optional - The name of the job type,
|
|
196
|
+
"classId": required - The id of the best-fit availability class, copied exactly from the provided availability classes.
|
|
197
|
+
|
|
198
|
+
Every job type in the input list must have exactly one entry in the output.
|
|
199
|
+
|
|
200
|
+
Here are the job types: ${JSON.stringify(jobTypes)}
|
|
201
|
+
Here are the availability classes: ${JSON.stringify(availabilityClasses)}`
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
role: "user",
|
|
205
|
+
content: "Map every job type to its best-fit availability class."
|
|
206
|
+
}
|
|
207
|
+
],
|
|
208
|
+
temperature: 0,
|
|
209
|
+
max_tokens: 4096,
|
|
210
|
+
top_p: 1,
|
|
211
|
+
frequency_penalty: 0,
|
|
212
|
+
presence_penalty: 0
|
|
213
|
+
});
|
|
214
|
+
const rawContent = (_c = (_b = (_a = response === null || response === void 0 ? void 0 : response.choices) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.message) === null || _c === void 0 ? void 0 : _c.content;
|
|
215
|
+
let parsed;
|
|
216
|
+
try {
|
|
217
|
+
parsed = JSON.parse(rawContent);
|
|
218
|
+
}
|
|
219
|
+
catch (err) {
|
|
220
|
+
(0, stentor_logger_1.log)().error(`OpenAI: Cannot parse job type class map response. ${err}`);
|
|
221
|
+
(0, stentor_logger_1.log)().error(`OpenAI: RESPONSE: "${rawContent}"`);
|
|
222
|
+
return [];
|
|
223
|
+
}
|
|
224
|
+
const suggestions = parsed === null || parsed === void 0 ? void 0 : parsed.jobTypeClasses;
|
|
225
|
+
if (!suggestions || suggestions.length === 0) {
|
|
226
|
+
return [];
|
|
227
|
+
}
|
|
228
|
+
const validated = [];
|
|
229
|
+
for (const suggestion of suggestions) {
|
|
230
|
+
if (!suggestion) {
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
const jobType = jobTypes.find((jt) => jt && String(jt.id) === String(suggestion.jobTypeId));
|
|
234
|
+
const availabilityClass = availabilityClasses.find((ac) => ac && String(ac.id) === String(suggestion.classId));
|
|
235
|
+
if (!jobType) {
|
|
236
|
+
(0, stentor_logger_1.log)().error(`OpenAI: Deleted bogus job type id from suggested class map: ${suggestion.jobTypeId}`);
|
|
237
|
+
continue;
|
|
238
|
+
}
|
|
239
|
+
if (!availabilityClass) {
|
|
240
|
+
(0, stentor_logger_1.log)().error(`OpenAI: Deleted bogus class id from suggested class map: ${suggestion.classId}`);
|
|
241
|
+
continue;
|
|
242
|
+
}
|
|
243
|
+
validated.push({
|
|
244
|
+
jobTypeId: String(jobType.id),
|
|
245
|
+
classId: String(availabilityClass.id),
|
|
246
|
+
jobTypeName: jobType.name,
|
|
247
|
+
source: "AI"
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
return validated;
|
|
251
|
+
}
|
|
252
|
+
catch (err) {
|
|
253
|
+
(0, stentor_logger_1.log)().error(`OpenAI: suggestJobTypeClassMap failed. ${err}`);
|
|
254
|
+
return [];
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
}
|
|
156
258
|
//# sourceMappingURL=ai.js.map
|
package/lib/ai.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.js","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":";AAAA,oCAAoC;;;;;;;;;;;;;;AAoCpC,
|
|
1
|
+
{"version":3,"file":"ai.js","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"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"}
|
package/lib/availability.d.ts
CHANGED
|
@@ -1,6 +1,51 @@
|
|
|
1
1
|
/*! Copyright (c) 2024, XAPPmedia */
|
|
2
|
-
import { AvailabilityClass } from "stentor-models";
|
|
2
|
+
import { AvailabilityClass, CrmServiceAvailabilitySettings, CrmServiceJobType } from "stentor-models";
|
|
3
3
|
export declare const DEFAULT_MIN_DAYS_OUT = 5;
|
|
4
4
|
export declare const DEFAULT_MAX_APPOINTMENTS_PER_DAY = 4;
|
|
5
5
|
export declare const DEFAULT_END_OF_WORK_DAY_HOUR = 18;
|
|
6
|
+
/**
|
|
7
|
+
* Parses a "HH:MM" (24h) string into minutes since midnight.
|
|
8
|
+
*
|
|
9
|
+
* Never throws. Anything that isn't a strict "HH:MM" match (out of range hours,
|
|
10
|
+
* single digit hours, garbage, undefined) returns `undefined` and logs a warning.
|
|
11
|
+
*/
|
|
12
|
+
export declare function parseHHMM(value?: string): number | undefined;
|
|
13
|
+
export type AvailabilityClassSource = "force" | "map" | "jobType" | "default" | "none";
|
|
14
|
+
export interface AvailabilityClassResolution {
|
|
15
|
+
availabilityClass?: AvailabilityClass;
|
|
16
|
+
classId?: string;
|
|
17
|
+
source: AvailabilityClassSource;
|
|
18
|
+
/**
|
|
19
|
+
* Set when the resolved classId didn't match any known class - the caller fell back
|
|
20
|
+
* to the tenant default / most-conservative class instead of silently allowing same-day.
|
|
21
|
+
*/
|
|
22
|
+
unmatchedClassId?: string;
|
|
23
|
+
fallback?: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Resolves which availability class applies, in priority order:
|
|
27
|
+
*
|
|
28
|
+
* 1. settings.forceAvailabilityClass (campaign widget forces a class)
|
|
29
|
+
* 2. settings.jobTypeClasses[jobType.id].classId (deterministic map)
|
|
30
|
+
* 3. jobType.class (legacy LLM guess)
|
|
31
|
+
* 4. settings.defaultAvailabilityClass
|
|
32
|
+
* 5. none
|
|
33
|
+
*
|
|
34
|
+
* An unmatched classId (defined, but not found in the class list) never resolves to
|
|
35
|
+
* "no class" - that would silently re-open same-day booking. It instead falls back to
|
|
36
|
+
* the tenant's default class, else the most conservative (largest numberOfDaysOut) class.
|
|
37
|
+
*/
|
|
38
|
+
export declare function resolveAvailabilityClass(settings: CrmServiceAvailabilitySettings | undefined, jobType?: CrmServiceJobType, fallbackClasses?: AvailabilityClass[]): AvailabilityClassResolution;
|
|
39
|
+
/**
|
|
40
|
+
* Resolves the same-day cutoff, in minutes since midnight, in priority order:
|
|
41
|
+
*
|
|
42
|
+
* 1. cls.currentDayAvailableUntil (per-class cutoff)
|
|
43
|
+
* 2. settings.defaultBusyDays.currentDayAvailableUntil
|
|
44
|
+
* 3. legacyEndOfWorkDayHour (hours) - via `??`, never `|`, so 0 is honored
|
|
45
|
+
* 4. defaultHour (hours) - the service default (ST 15, Jobber 18)
|
|
46
|
+
*
|
|
47
|
+
* Never throws, never returns NaN. An invalid HH:MM string at any rung falls through
|
|
48
|
+
* to the next rung rather than blowing up the whole resolution.
|
|
49
|
+
*/
|
|
50
|
+
export declare function resolveCutoffMinutes(cls: AvailabilityClass | undefined, settings: CrmServiceAvailabilitySettings | undefined, legacyEndOfWorkDayHour: number | undefined, defaultHour: number): number;
|
|
6
51
|
export declare const defaultAvailabilityClasses: AvailabilityClass[];
|
package/lib/availability.js
CHANGED
|
@@ -2,9 +2,124 @@
|
|
|
2
2
|
/*! Copyright (c) 2024, XAPPmedia */
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.defaultAvailabilityClasses = exports.DEFAULT_END_OF_WORK_DAY_HOUR = exports.DEFAULT_MAX_APPOINTMENTS_PER_DAY = exports.DEFAULT_MIN_DAYS_OUT = void 0;
|
|
5
|
+
exports.parseHHMM = parseHHMM;
|
|
6
|
+
exports.resolveAvailabilityClass = resolveAvailabilityClass;
|
|
7
|
+
exports.resolveCutoffMinutes = resolveCutoffMinutes;
|
|
8
|
+
const stentor_logger_1 = require("stentor-logger");
|
|
5
9
|
exports.DEFAULT_MIN_DAYS_OUT = 5;
|
|
6
10
|
exports.DEFAULT_MAX_APPOINTMENTS_PER_DAY = 4;
|
|
7
11
|
exports.DEFAULT_END_OF_WORK_DAY_HOUR = 18;
|
|
12
|
+
const HH_MM_PATTERN = /^([01]\d|2[0-3]):[0-5]\d$/;
|
|
13
|
+
/**
|
|
14
|
+
* Parses a "HH:MM" (24h) string into minutes since midnight.
|
|
15
|
+
*
|
|
16
|
+
* Never throws. Anything that isn't a strict "HH:MM" match (out of range hours,
|
|
17
|
+
* single digit hours, garbage, undefined) returns `undefined` and logs a warning.
|
|
18
|
+
*/
|
|
19
|
+
function parseHHMM(value) {
|
|
20
|
+
if (typeof value !== "string" || !HH_MM_PATTERN.test(value)) {
|
|
21
|
+
if (value !== undefined) {
|
|
22
|
+
(0, stentor_logger_1.log)().warn(`Jobber: invalid HH:MM cutoff value: "${value}"`);
|
|
23
|
+
}
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
const [hoursStr, minutesStr] = value.split(":");
|
|
27
|
+
return parseInt(hoursStr, 10) * 60 + parseInt(minutesStr, 10);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Resolves which availability class applies, in priority order:
|
|
31
|
+
*
|
|
32
|
+
* 1. settings.forceAvailabilityClass (campaign widget forces a class)
|
|
33
|
+
* 2. settings.jobTypeClasses[jobType.id].classId (deterministic map)
|
|
34
|
+
* 3. jobType.class (legacy LLM guess)
|
|
35
|
+
* 4. settings.defaultAvailabilityClass
|
|
36
|
+
* 5. none
|
|
37
|
+
*
|
|
38
|
+
* An unmatched classId (defined, but not found in the class list) never resolves to
|
|
39
|
+
* "no class" - that would silently re-open same-day booking. It instead falls back to
|
|
40
|
+
* the tenant's default class, else the most conservative (largest numberOfDaysOut) class.
|
|
41
|
+
*/
|
|
42
|
+
function resolveAvailabilityClass(settings, jobType, fallbackClasses) {
|
|
43
|
+
var _a, _b, _c;
|
|
44
|
+
let classId;
|
|
45
|
+
let source = "none";
|
|
46
|
+
if (settings === null || settings === void 0 ? void 0 : settings.forceAvailabilityClass) {
|
|
47
|
+
classId = settings.forceAvailabilityClass;
|
|
48
|
+
source = "force";
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
const jobTypeId = (jobType === null || jobType === void 0 ? void 0 : jobType.id) !== undefined && (jobType === null || jobType === void 0 ? void 0 : jobType.id) !== null ? String(jobType.id) : undefined;
|
|
52
|
+
const mapped = jobTypeId
|
|
53
|
+
? (_a = settings === null || settings === void 0 ? void 0 : settings.jobTypeClasses) === null || _a === void 0 ? void 0 : _a.find((m) => m && String(m.jobTypeId) === jobTypeId)
|
|
54
|
+
: undefined;
|
|
55
|
+
if (mapped === null || mapped === void 0 ? void 0 : mapped.classId) {
|
|
56
|
+
classId = mapped.classId;
|
|
57
|
+
source = "map";
|
|
58
|
+
}
|
|
59
|
+
else if (jobType === null || jobType === void 0 ? void 0 : jobType.class) {
|
|
60
|
+
classId = jobType.class;
|
|
61
|
+
source = "jobType";
|
|
62
|
+
}
|
|
63
|
+
else if (settings === null || settings === void 0 ? void 0 : settings.defaultAvailabilityClass) {
|
|
64
|
+
classId = settings.defaultAvailabilityClass;
|
|
65
|
+
source = "default";
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
const classes = (_c = (_b = settings === null || settings === void 0 ? void 0 : settings.availabilityClasses) !== null && _b !== void 0 ? _b : fallbackClasses) !== null && _c !== void 0 ? _c : [];
|
|
69
|
+
if (classId === undefined || classes.length === 0) {
|
|
70
|
+
return { classId: undefined, source: "none" };
|
|
71
|
+
}
|
|
72
|
+
const matched = classes.find((c) => c && c.id === classId);
|
|
73
|
+
if (matched) {
|
|
74
|
+
return { availabilityClass: matched, classId, source };
|
|
75
|
+
}
|
|
76
|
+
// classId is defined but not found - never silently fall through to "no class" (= same-day).
|
|
77
|
+
(0, stentor_logger_1.log)().error(`Jobber: Unmatched availability classId "${classId}" (source: "${source}"). Falling back to a conservative class.`);
|
|
78
|
+
const defaultClass = (settings === null || settings === void 0 ? void 0 : settings.defaultAvailabilityClass)
|
|
79
|
+
? classes.find((c) => c && c.id === settings.defaultAvailabilityClass)
|
|
80
|
+
: undefined;
|
|
81
|
+
const mostConservative = classes.reduce((max, c) => {
|
|
82
|
+
var _a, _b;
|
|
83
|
+
if (!c)
|
|
84
|
+
return max;
|
|
85
|
+
if (!max || ((_a = c.numberOfDaysOut) !== null && _a !== void 0 ? _a : 0) > ((_b = max.numberOfDaysOut) !== null && _b !== void 0 ? _b : 0))
|
|
86
|
+
return c;
|
|
87
|
+
return max;
|
|
88
|
+
}, undefined);
|
|
89
|
+
return {
|
|
90
|
+
availabilityClass: defaultClass !== null && defaultClass !== void 0 ? defaultClass : mostConservative,
|
|
91
|
+
classId,
|
|
92
|
+
source,
|
|
93
|
+
unmatchedClassId: classId,
|
|
94
|
+
fallback: true
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Resolves the same-day cutoff, in minutes since midnight, in priority order:
|
|
99
|
+
*
|
|
100
|
+
* 1. cls.currentDayAvailableUntil (per-class cutoff)
|
|
101
|
+
* 2. settings.defaultBusyDays.currentDayAvailableUntil
|
|
102
|
+
* 3. legacyEndOfWorkDayHour (hours) - via `??`, never `|`, so 0 is honored
|
|
103
|
+
* 4. defaultHour (hours) - the service default (ST 15, Jobber 18)
|
|
104
|
+
*
|
|
105
|
+
* Never throws, never returns NaN. An invalid HH:MM string at any rung falls through
|
|
106
|
+
* to the next rung rather than blowing up the whole resolution.
|
|
107
|
+
*/
|
|
108
|
+
function resolveCutoffMinutes(cls, settings, legacyEndOfWorkDayHour, defaultHour) {
|
|
109
|
+
var _a;
|
|
110
|
+
const classCutoff = parseHHMM(cls === null || cls === void 0 ? void 0 : cls.currentDayAvailableUntil);
|
|
111
|
+
if (classCutoff !== undefined) {
|
|
112
|
+
return classCutoff;
|
|
113
|
+
}
|
|
114
|
+
const defaultBusyDaysCutoff = parseHHMM((_a = settings === null || settings === void 0 ? void 0 : settings.defaultBusyDays) === null || _a === void 0 ? void 0 : _a.currentDayAvailableUntil);
|
|
115
|
+
if (defaultBusyDaysCutoff !== undefined) {
|
|
116
|
+
return defaultBusyDaysCutoff;
|
|
117
|
+
}
|
|
118
|
+
if (typeof legacyEndOfWorkDayHour === "number" && !Number.isNaN(legacyEndOfWorkDayHour)) {
|
|
119
|
+
return legacyEndOfWorkDayHour * 60;
|
|
120
|
+
}
|
|
121
|
+
return defaultHour * 60;
|
|
122
|
+
}
|
|
8
123
|
exports.defaultAvailabilityClasses = [
|
|
9
124
|
{
|
|
10
125
|
id: "avail-class-repair",
|
package/lib/availability.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"availability.js","sourceRoot":"","sources":["../src/availability.ts"],"names":[],"mappings":";AAAA,oCAAoC;;;
|
|
1
|
+
{"version":3,"file":"availability.js","sourceRoot":"","sources":["../src/availability.ts"],"names":[],"mappings":"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"}
|
package/lib/util.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { DateTime, ExternalLead } from "stentor-models";
|
|
2
2
|
import { JobberContact } from "./JobberService";
|
|
3
|
+
export declare const DEFAULT_TIMEZONE = "America/New_York";
|
|
3
4
|
export declare function getName(lead: ExternalLead): string;
|
|
4
5
|
/**
|
|
5
6
|
* Converts an ExternalLead to a JobberContact
|
|
@@ -13,22 +14,34 @@ export declare function addMessageToTranscript(contact: JobberContact, transcrip
|
|
|
13
14
|
export declare function getUTCOffset(dateString: string): number;
|
|
14
15
|
export declare function moveBackByMinutes(d: Date, minutes: number): Date;
|
|
15
16
|
/**
|
|
16
|
-
* Array of DateTime objects for the next n days from today
|
|
17
|
+
* Array of DateTime objects for the next n days from today, in the given IANA timezone.
|
|
17
18
|
*
|
|
18
19
|
* @param n
|
|
20
|
+
* @param timezone IANA timezone (e.g. "America/New_York"). Defaults to America/New_York.
|
|
19
21
|
* @returns
|
|
20
22
|
*/
|
|
21
|
-
export declare function getNextDays(n: number): DateTime[];
|
|
23
|
+
export declare function getNextDays(n: number, timezone?: string): DateTime[];
|
|
22
24
|
/**
|
|
23
|
-
* Today's date
|
|
25
|
+
* Today's date in the given IANA timezone.
|
|
24
26
|
*
|
|
27
|
+
* @param timezone IANA timezone (e.g. "America/New_York"). Defaults to America/New_York.
|
|
25
28
|
* @returns
|
|
26
29
|
*/
|
|
27
|
-
export declare function today(): DateTime;
|
|
30
|
+
export declare function today(timezone?: string): DateTime;
|
|
28
31
|
/**
|
|
32
|
+
* Are we at or after the given number of minutes since midnight, today, in the given timezone?
|
|
29
33
|
*
|
|
30
|
-
*
|
|
34
|
+
* Boundary is inclusive: `now >= cutoff` blocks today (a 16:00 cutoff blocks starting exactly at 16:00:00).
|
|
31
35
|
*
|
|
32
|
-
* @
|
|
36
|
+
* @param minutesOfDay minutes since midnight (0-1440). Out of range/non-numeric input is clamped and a warning logged.
|
|
37
|
+
* @param timezone IANA timezone. Defaults to America/New_York.
|
|
38
|
+
*/
|
|
39
|
+
export declare function isAfterMinutes(minutesOfDay: number, timezone?: string): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* @deprecated use {@link resolveCutoffMinutes} + {@link isAfterMinutes} instead. Kept as a thin
|
|
42
|
+
* wrapper for backwards compatibility (existing tests exercise it directly).
|
|
43
|
+
*
|
|
44
|
+
* @param hour Are we after n hour today (15 for 3pm)
|
|
45
|
+
* @param timezone IANA timezone. Defaults to America/New_York.
|
|
33
46
|
*/
|
|
34
|
-
export declare function isAfterHour(hour: number): boolean;
|
|
47
|
+
export declare function isAfterHour(hour: number, timezone?: string): boolean;
|
package/lib/util.js
CHANGED
|
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DEFAULT_TIMEZONE = void 0;
|
|
6
7
|
exports.getName = getName;
|
|
7
8
|
exports.leadToJobberContact = leadToJobberContact;
|
|
8
9
|
exports.leadToNote = leadToNote;
|
|
@@ -11,11 +12,15 @@ exports.getUTCOffset = getUTCOffset;
|
|
|
11
12
|
exports.moveBackByMinutes = moveBackByMinutes;
|
|
12
13
|
exports.getNextDays = getNextDays;
|
|
13
14
|
exports.today = today;
|
|
15
|
+
exports.isAfterMinutes = isAfterMinutes;
|
|
14
16
|
exports.isAfterHour = isAfterHour;
|
|
15
17
|
/*! Copyright (c) 2024, XAPP AI */
|
|
16
18
|
const addresser_1 = __importDefault(require("addresser"));
|
|
17
19
|
const stentor_logger_1 = require("stentor-logger");
|
|
18
20
|
const stentor_utils_1 = require("stentor-utils");
|
|
21
|
+
const date_fns_tz_1 = require("date-fns-tz");
|
|
22
|
+
exports.DEFAULT_TIMEZONE = "America/New_York";
|
|
23
|
+
const MINUTES_PER_DAY = 24 * 60;
|
|
19
24
|
function getName(lead) {
|
|
20
25
|
// Try to find a field with the name "FULL_NAME" in the lead.fields array
|
|
21
26
|
const fullNameField = lead.fields.find((field) => field.name === "FULL_NAME");
|
|
@@ -203,19 +208,18 @@ function moveBackByMinutes(d, minutes) {
|
|
|
203
208
|
return d;
|
|
204
209
|
}
|
|
205
210
|
/**
|
|
206
|
-
* Array of DateTime objects for the next n days from today
|
|
211
|
+
* Array of DateTime objects for the next n days from today, in the given IANA timezone.
|
|
207
212
|
*
|
|
208
213
|
* @param n
|
|
214
|
+
* @param timezone IANA timezone (e.g. "America/New_York"). Defaults to America/New_York.
|
|
209
215
|
* @returns
|
|
210
216
|
*/
|
|
211
|
-
function getNextDays(n) {
|
|
217
|
+
function getNextDays(n, timezone = exports.DEFAULT_TIMEZONE) {
|
|
212
218
|
const dates = [];
|
|
213
|
-
|
|
214
|
-
const serverOffset = today.getTimezoneOffset();
|
|
215
|
-
today = moveBackByMinutes(today, 240 - serverOffset); // TODO: visitor (browser) or service location address
|
|
219
|
+
const zonedToday = (0, date_fns_tz_1.toZonedTime)(new Date(), timezone);
|
|
216
220
|
for (let i = 1; i <= n; i++) {
|
|
217
|
-
const nextDay = new Date(
|
|
218
|
-
nextDay.setDate(
|
|
221
|
+
const nextDay = new Date(zonedToday);
|
|
222
|
+
nextDay.setDate(zonedToday.getDate() + i);
|
|
219
223
|
const year = nextDay.getFullYear();
|
|
220
224
|
const month = (nextDay.getMonth() + 1).toString().padStart(2, "0");
|
|
221
225
|
const day = nextDay.getDate().toString().padStart(2, "0");
|
|
@@ -224,36 +228,48 @@ function getNextDays(n) {
|
|
|
224
228
|
return dates;
|
|
225
229
|
}
|
|
226
230
|
/**
|
|
227
|
-
* Today's date
|
|
231
|
+
* Today's date in the given IANA timezone.
|
|
228
232
|
*
|
|
233
|
+
* @param timezone IANA timezone (e.g. "America/New_York"). Defaults to America/New_York.
|
|
229
234
|
* @returns
|
|
230
235
|
*/
|
|
231
|
-
function today() {
|
|
232
|
-
|
|
233
|
-
const
|
|
234
|
-
|
|
235
|
-
const
|
|
236
|
-
const month = (today.getMonth() + 1).toString().padStart(2, "0");
|
|
237
|
-
const day = today.getDate().toString().padStart(2, "0");
|
|
236
|
+
function today(timezone = exports.DEFAULT_TIMEZONE) {
|
|
237
|
+
const zonedToday = (0, date_fns_tz_1.toZonedTime)(new Date(), timezone);
|
|
238
|
+
const year = zonedToday.getFullYear();
|
|
239
|
+
const month = (zonedToday.getMonth() + 1).toString().padStart(2, "0");
|
|
240
|
+
const day = zonedToday.getDate().toString().padStart(2, "0");
|
|
238
241
|
return { date: `${year}-${month}-${day}` };
|
|
239
242
|
}
|
|
240
243
|
/**
|
|
244
|
+
* Are we at or after the given number of minutes since midnight, today, in the given timezone?
|
|
241
245
|
*
|
|
242
|
-
*
|
|
246
|
+
* Boundary is inclusive: `now >= cutoff` blocks today (a 16:00 cutoff blocks starting exactly at 16:00:00).
|
|
243
247
|
*
|
|
244
|
-
* @
|
|
248
|
+
* @param minutesOfDay minutes since midnight (0-1440). Out of range/non-numeric input is clamped and a warning logged.
|
|
249
|
+
* @param timezone IANA timezone. Defaults to America/New_York.
|
|
245
250
|
*/
|
|
246
|
-
function
|
|
247
|
-
|
|
248
|
-
if (
|
|
249
|
-
(0, stentor_logger_1.log)().warn(`Jobber: invalid
|
|
250
|
-
|
|
251
|
+
function isAfterMinutes(minutesOfDay, timezone = exports.DEFAULT_TIMEZONE) {
|
|
252
|
+
let cutoff = minutesOfDay;
|
|
253
|
+
if (typeof cutoff !== "number" || Number.isNaN(cutoff) || cutoff < 0 || cutoff > MINUTES_PER_DAY) {
|
|
254
|
+
(0, stentor_logger_1.log)().warn(`Jobber: invalid cutoff minutes: ${minutesOfDay}`);
|
|
255
|
+
cutoff = ((cutoff % MINUTES_PER_DAY) + MINUTES_PER_DAY) % MINUTES_PER_DAY;
|
|
256
|
+
if (!Number.isFinite(cutoff)) {
|
|
257
|
+
cutoff = 0;
|
|
258
|
+
}
|
|
251
259
|
}
|
|
252
|
-
|
|
253
|
-
const
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
260
|
+
const zonedNow = (0, date_fns_tz_1.toZonedTime)(new Date(), timezone);
|
|
261
|
+
const nowMinutes = zonedNow.getHours() * 60 + zonedNow.getMinutes();
|
|
262
|
+
(0, stentor_logger_1.log)().info(`Jobber: isAfterMinutes: comparing ${nowMinutes} to ${cutoff} (${timezone})`);
|
|
263
|
+
return nowMinutes >= cutoff;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* @deprecated use {@link resolveCutoffMinutes} + {@link isAfterMinutes} instead. Kept as a thin
|
|
267
|
+
* wrapper for backwards compatibility (existing tests exercise it directly).
|
|
268
|
+
*
|
|
269
|
+
* @param hour Are we after n hour today (15 for 3pm)
|
|
270
|
+
* @param timezone IANA timezone. Defaults to America/New_York.
|
|
271
|
+
*/
|
|
272
|
+
function isAfterHour(hour, timezone = exports.DEFAULT_TIMEZONE) {
|
|
273
|
+
return isAfterMinutes(hour * 60, timezone);
|
|
258
274
|
}
|
|
259
275
|
//# sourceMappingURL=util.js.map
|
package/lib/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;;;;;AAcA,0BAgBC;AAQD,kDA6HC;AAED,gCA8BC;AAED,wDAUC;AAED,oCAKC;AAED,8CAMC;AASD,kCAeC;AAQD,sBAQC;AAUD,wCAiBC;AASD,kCAEC;AA5SD,kCAAkC;AAClC,0DAAkC;AAGlC,mDAAqC;AACrC,iDAAkD;AAClD,6CAA0C;AAI7B,QAAA,gBAAgB,GAAG,kBAAkB,CAAC;AAEnD,MAAM,eAAe,GAAG,EAAE,GAAG,EAAE,CAAC;AAEhC,SAAgB,OAAO,CAAC,IAAkB;IACtC,yEAAyE;IACzE,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;IAE9E,oDAAoD;IACpD,IAAI,aAAa;QAAE,OAAO,aAAa,CAAC,KAAK,CAAC;IAE9C,oFAAoF;IACpF,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;IAChF,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;IAE9E,0GAA0G;IAC1G,IAAI,cAAc,IAAI,aAAa;QAAE,OAAO,GAAG,cAAc,CAAC,KAAK,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;IAE7F,iGAAiG;IACjG,OAAO,EAAE,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAC,IAAkB;;IAClD,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3B,MAAM,OAAO,GAAkB;QAC3B,IAAI;KACP,CAAC;IAEF,oFAAoF;IACpF,IAAI,CAAC,IAAA,iCAAiB,EAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,0CAAE,KAAK,CAAC;IACvF,IAAI,KAAK,EAAE,CAAC;QACR,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,0CAAE,KAAK,CAAC;IACvF,IAAI,KAAK,EAAE,CAAC;QACR,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED,IAAI,GAAG,GAAG,MAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,0CAAE,KAAK,CAAC;IACjF,IAAI,IAAI,GAAG,MAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,0CAAE,KAAK,CAAC;IACnF,IAAI,KAAK,GAAG,MAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,0CAAE,KAAK,CAAC;IACrF,IAAI,MAAM,GAAG,MAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,0CAAE,KAAK,CAAC;IAEvF,oGAAoG;IACpG,kGAAkG;IAClG,IAAI,OAAO,GAAG,MAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC,0CAAE,KAAK,CAAC;IACzF,IAAI,CAAC;QACD,MAAM,KAAK,GAAG,mBAAS,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAE9C,IAAI,KAAK,EAAE,CAAC;YACR,yCAAyC;YACzC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACP,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC;YACxB,CAAC;YACD,IAAI,CAAC,IAAI,EAAE,CAAC;gBACR,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC;YAC3B,CAAC;YACD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,KAAK,GAAG,KAAK,CAAC,iBAAiB,CAAC;YACpC,CAAC;YACD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YAC/E,CAAC;QACL,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,8CAA8C;QAC9C,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,IAAI,MAAM,EAAE,CAAC;gBACT,OAAO,GAAG,GAAG,MAAM,EAAE,CAAC;YAC1B,CAAC;YACD,IAAI,IAAI,EAAE,CAAC;gBACP,OAAO,GAAG,GAAG,OAAO,KAAK,IAAI,EAAE,CAAC;YACpC,CAAC;YACD,IAAI,KAAK,EAAE,CAAC;gBACR,OAAO,GAAG,GAAG,OAAO,KAAK,KAAK,EAAE,CAAC;YACrC,CAAC;YACD,IAAI,GAAG,EAAE,CAAC;gBACN,OAAO,GAAG,GAAG,OAAO,KAAK,GAAG,EAAE,CAAC;YACnC,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,qBAAqB;YACrB,wDAAwD;YACxD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,MAAM,GAAG,OAAO,CAAC;YACrB,CAAC;YAED,IAAI,IAAI,EAAE,CAAC;gBACP,OAAO,GAAG,GAAG,OAAO,KAAK,IAAI,EAAE,CAAC;YACpC,CAAC;YAED,IAAI,KAAK,EAAE,CAAC;gBACR,OAAO,GAAG,GAAG,OAAO,KAAK,KAAK,EAAE,CAAC;YACrC,CAAC;YAED,IAAI,GAAG,EAAE,CAAC;gBACN,OAAO,GAAG,GAAG,OAAO,KAAK,GAAG,EAAE,CAAC;YACnC,CAAC;QACL,CAAC;IACL,CAAC;IAED,gCAAgC;IAChC,IAAI,GAAG,EAAE,CAAC;QACN,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;IACtB,CAAC;IACD,IAAI,IAAI,EAAE,CAAC;QACP,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IACxB,CAAC;IACD,IAAI,KAAK,EAAE,CAAC;QACR,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;IAC1B,CAAC;IACD,IAAI,MAAM,EAAE,CAAC;QACT,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;IAC5B,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACV,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;IAC9B,CAAC;IAED,MAAM,QAAQ,GAAG,MAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,UAAU,CAAC,0CAAE,KAAK,CAAC;IAC5F,IAAI,QAAQ,EAAE,CAAC;QACX,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAChC,CAAC;IAED,MAAM,aAAa,GAAG,MAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,gBAAgB,CAAC,0CAAE,KAAK,CAAC;IACvG,IAAI,aAAa,EAAE,CAAC;QAChB,OAAO,CAAC,aAAa,GAAG,aAAa,CAAC;IAC1C,CAAC;IACD,MAAM,OAAO,GAAG,MAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,SAAS,CAAC,0CAAE,KAAK,CAAC;IAC1F,IAAI,OAAO,EAAE,CAAC;QACV,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;IAC9B,CAAC;IAED,MAAM,eAAe,GAAG,MAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,kBAAkB,CAAC,0CAAE,KAAK,CAAC;IAC3G,IAAI,eAAe,EAAE,CAAC;QAClB,OAAO,CAAC,eAAe,GAAG,eAAe,CAAC;IAC9C,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,SAAgB,UAAU,CAAC,IAAkB;IACzC,oDAAoD;IACpD,IAAI,UAAU,GAAG,EAAE,CAAC;IAEpB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IAExC,0BAA0B;IAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3B,mDAAmD;IACnD,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;;QAClC,uDAAuD;QACvD,qFAAqF;QACrF,yEAAyE;QACzE,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,CAAA,MAAA,CAAC,CAAC,IAAI,0CAAE,EAAE,MAAK,KAAK,IAAI,CAAA,MAAA,CAAC,CAAC,IAAI,0CAAE,EAAE,KAAI,KAAK,EAAE,CAAC;YAC9C,MAAM,GAAG,GAAG,IAAI,IAAI,MAAM,IAAI,CAAC;QACnC,CAAC;aAAM,IAAI,CAAA,MAAA,CAAC,CAAC,IAAI,0CAAE,EAAE,MAAK,KAAK,EAAE,CAAC;YAC9B,MAAM,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC;QACrC,CAAC;aAAM,CAAC;YACJ,MAAM,GAAG,YAAY,CAAC;QAC1B,CAAC;QAED,wFAAwF;QACxF,UAAU,IAAI,GAAG,MAAM,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,2CAA2C;IAC3C,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,SAAgB,sBAAsB,CAAC,OAAsB,EAAE,cAA4B;IACvF,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC;YAC3B,IAAI,EAAE;gBACF,EAAE,EAAE,MAAM;aACb;YACD,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,WAAW,EAAE,EAAE;SAClB,CAAC,CAAC;IACP,CAAC;AACL,CAAC;AAED,SAAgB,YAAY,CAAC,UAAkB;IAC3C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;IAClC,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAClD,MAAM,cAAc,GAAG,gBAAgB,GAAG,EAAE,CAAC;IAC7C,OAAO,CAAC,cAAc,CAAC,CAAC,wFAAwF;AACpH,CAAC;AAED,SAAgB,iBAAiB,CAAC,CAAO,EAAE,OAAe;IACtD,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QAChB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,OAAO,CAAC,CAAC;IAC3C,CAAC;IACD,IAAA,oBAAG,GAAE,CAAC,IAAI,CAAC,sBAAsB,OAAO,aAAa,CAAC,EAAE,CAAC,CAAC;IAC1D,OAAO,CAAC,CAAC;AACb,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,WAAW,CAAC,CAAS,EAAE,WAAmB,wBAAgB;IACtE,MAAM,KAAK,GAAe,EAAE,CAAC;IAE7B,MAAM,UAAU,GAAG,IAAA,yBAAW,EAAC,IAAI,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;IAErD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;QACrC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACnE,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC1D,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,KAAK,CAAC,WAAmB,wBAAgB;IACrD,MAAM,UAAU,GAAG,IAAA,yBAAW,EAAC,IAAI,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;IAErD,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IACtC,MAAM,KAAK,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtE,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAE7D,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,EAAE,EAAE,CAAC;AAC/C,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,cAAc,CAAC,YAAoB,EAAE,WAAmB,wBAAgB;IACpF,IAAI,MAAM,GAAG,YAAY,CAAC;IAE1B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,eAAe,EAAE,CAAC;QAC/F,IAAA,oBAAG,GAAE,CAAC,IAAI,CAAC,mCAAmC,YAAY,EAAE,CAAC,CAAC;QAC9D,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,eAAe,CAAC,GAAG,eAAe,CAAC,GAAG,eAAe,CAAC;QAC1E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,MAAM,GAAG,CAAC,CAAC;QACf,CAAC;IACL,CAAC;IAED,MAAM,QAAQ,GAAG,IAAA,yBAAW,EAAC,IAAI,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC;IAEpE,IAAA,oBAAG,GAAE,CAAC,IAAI,CAAC,qCAAqC,UAAU,OAAO,MAAM,KAAK,QAAQ,GAAG,CAAC,CAAC;IAEzF,OAAO,UAAU,IAAI,MAAM,CAAC;AAChC,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,WAAW,CAAC,IAAY,EAAE,WAAmB,wBAAgB;IACzE,OAAO,cAAc,CAAC,IAAI,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC/C,CAAC"}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
7
|
-
"version": "1.
|
|
7
|
+
"version": "1.86.0",
|
|
8
8
|
"description": "Service to integrate with Jobber",
|
|
9
9
|
"types": "lib/index",
|
|
10
10
|
"main": "lib/index",
|
|
@@ -20,9 +20,9 @@
|
|
|
20
20
|
"dotenv": "17.4.2",
|
|
21
21
|
"mocha": "11.7.5",
|
|
22
22
|
"sinon": "21.0.0",
|
|
23
|
-
"stentor-logger": "1.
|
|
24
|
-
"stentor-models": "1.
|
|
25
|
-
"stentor-service-fetch": "1.
|
|
23
|
+
"stentor-logger": "1.74.0",
|
|
24
|
+
"stentor-models": "1.74.0",
|
|
25
|
+
"stentor-service-fetch": "1.74.0",
|
|
26
26
|
"ts-node": "10.9.2",
|
|
27
27
|
"typescript": "5.9.3"
|
|
28
28
|
},
|
|
@@ -32,16 +32,18 @@
|
|
|
32
32
|
"stentor-service-fetch": "1.x"
|
|
33
33
|
},
|
|
34
34
|
"scripts": {
|
|
35
|
+
"prepack": "yarn build",
|
|
35
36
|
"build": "tsc -d true -p .",
|
|
36
37
|
"clean": "rm -rf ./lib/*",
|
|
37
38
|
"test": "mocha --recursive -r ts-node/register \"./src/**/*.test.ts\"",
|
|
38
39
|
"test:f": "mocha --recursive -r ts-node/register \"./src/**/*.ftest.ts\"",
|
|
39
40
|
"local": "mocha --recursive -r ts-node/register \"./src/**/*.ftest.ts\""
|
|
40
41
|
},
|
|
41
|
-
"gitHead": "
|
|
42
|
+
"gitHead": "3a345719866a5c39329b605545f04c465e6baf48",
|
|
42
43
|
"dependencies": {
|
|
43
44
|
"addresser": "1.1.20",
|
|
44
|
-
"axios": "1.
|
|
45
|
-
"date-fns": "4.1.0"
|
|
45
|
+
"axios": "1.18.1",
|
|
46
|
+
"date-fns": "4.1.0",
|
|
47
|
+
"date-fns-tz": "3.2.0"
|
|
46
48
|
}
|
|
47
49
|
}
|