@land-catalyst/batch-data-sdk 1.1.12
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/LICENSE +22 -0
- package/README.md +1032 -0
- package/dist/builders.d.ts +821 -0
- package/dist/builders.js +2622 -0
- package/dist/client.d.ts +435 -0
- package/dist/client.interface.d.ts +210 -0
- package/dist/client.interface.js +2 -0
- package/dist/client.js +757 -0
- package/dist/errors.d.ts +10 -0
- package/dist/errors.js +19 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.js +28 -0
- package/dist/logger.interface.d.ts +19 -0
- package/dist/logger.interface.js +47 -0
- package/dist/types.d.ts +1738 -0
- package/dist/types.js +9 -0
- package/package.json +62 -0
package/dist/builders.js
ADDED
|
@@ -0,0 +1,2622 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* BatchData.io Query Builders
|
|
4
|
+
*
|
|
5
|
+
* Fluent query builder API for constructing BatchData property subscription requests
|
|
6
|
+
*
|
|
7
|
+
* Usage example:
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const searchQuery = new SearchCriteriaBuilder("Maricopa County, AZ")
|
|
10
|
+
* .address(new AddressSearchCriteriaBuilder()
|
|
11
|
+
* .city(new StringFilterBuilder().equals("Phoenix").build())
|
|
12
|
+
* .state(new StringFilterBuilder().equals("AZ").build())
|
|
13
|
+
* .build())
|
|
14
|
+
* .building(new BuildingSearchCriteriaBuilder()
|
|
15
|
+
* .yearBuilt(new NumericRangeFilterBuilder().min(1990).max(2020).build())
|
|
16
|
+
* .build())
|
|
17
|
+
* .build();
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
exports.PropertyPermitRequestBuilder = exports.PropertyLookupAsyncRequestBuilder = exports.PropertySearchAsyncRequestBuilder = exports.PropertySearchRequestBuilder = exports.PropertyLookupRequestBuilder = exports.AsyncPropertyLookupOptionsBuilder = exports.PropertyLookupOptionsBuilder = exports.PropertyLookupRequestItemBuilder = exports.PropertySubscriptionBuilder = exports.DeliveryConfigBuilder = exports.SearchCriteriaBuilder = exports.OrSearchCriteriaBuilder = exports.ValuationSearchCriteriaBuilder = exports.TaxSearchCriteriaBuilder = exports.SaleSearchCriteriaBuilder = exports.PropertyOwnerProfileSearchCriteriaBuilder = exports.PermitSearchCriteriaBuilder = exports.OwnerSearchCriteriaBuilder = exports.OpenLienSearchCriteriaBuilder = exports.LotSearchCriteriaBuilder = exports.ListingSearchCriteriaBuilder = exports.LegalSearchCriteriaBuilder = exports.InvoluntaryLienSearchCriteriaBuilder = exports.IntelSearchCriteriaBuilder = exports.IdsSearchCriteriaBuilder = exports.GeneralSearchCriteriaBuilder = exports.ForeclosureSearchCriteriaBuilder = exports.DemographicsSearchCriteriaBuilder = exports.CompAddressSearchCriteriaBuilder = exports.BuildingSearchCriteriaBuilder = exports.AssessmentSearchCriteriaBuilder = exports.AddressSearchCriteriaBuilder = exports.GeoLocationFactory = exports.DateRangeFilterBuilder = exports.NumericRangeFilterBuilder = exports.StringFilterBuilder = void 0;
|
|
22
|
+
/**
|
|
23
|
+
* Abstract base class for builders that store nested builders
|
|
24
|
+
* Handles the common pattern of storing builder instances and building them all at once
|
|
25
|
+
*/
|
|
26
|
+
class BaseBuilder {
|
|
27
|
+
constructor() {
|
|
28
|
+
this.criteria = {};
|
|
29
|
+
this.builders = {};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Helper method to set a property either directly or via a builder configurator.
|
|
33
|
+
* This extracts the common pattern of checking if a configurator function is provided,
|
|
34
|
+
* creating/reusing a builder instance, and either calling the configurator or setting
|
|
35
|
+
* the value directly.
|
|
36
|
+
*
|
|
37
|
+
* @param key - The property key to set
|
|
38
|
+
* @param valueOrConfigurator - Either the direct value or a configurator function
|
|
39
|
+
* @param builderFactory - Factory function to create a new builder instance if needed
|
|
40
|
+
* @returns This builder instance for method chaining
|
|
41
|
+
*/
|
|
42
|
+
setPropertyWithBuilder(key, valueOrConfigurator, builderFactory) {
|
|
43
|
+
if (typeof valueOrConfigurator === "function") {
|
|
44
|
+
if (!this.builders[key]) {
|
|
45
|
+
this.builders[key] = builderFactory();
|
|
46
|
+
}
|
|
47
|
+
// Type assertion needed because TypeScript can't narrow the union type properly
|
|
48
|
+
valueOrConfigurator(this.builders[key]);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
this.criteria[key] = valueOrConfigurator;
|
|
52
|
+
this.builders[key] = undefined;
|
|
53
|
+
}
|
|
54
|
+
return this;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Helper method that accepts a builder class constructor and infers types from it.
|
|
58
|
+
* This allows you to pass the builder class directly instead of a factory function.
|
|
59
|
+
*
|
|
60
|
+
* @param key - The property key to set
|
|
61
|
+
* @param valueOrConfigurator - Either the direct value or a configurator function
|
|
62
|
+
* @param BuilderClass - The builder class constructor (e.g., NumericRangeFilterBuilder)
|
|
63
|
+
* @returns This builder instance for method chaining
|
|
64
|
+
*/
|
|
65
|
+
setPropertyWithBuilderClass(key, valueOrConfigurator, BuilderClass) {
|
|
66
|
+
return this.setPropertyWithBuilder(key, valueOrConfigurator, () => new BuilderClass());
|
|
67
|
+
}
|
|
68
|
+
build() {
|
|
69
|
+
const result = { ...this.criteria };
|
|
70
|
+
for (const key in this.builders) {
|
|
71
|
+
const builder = this.builders[key];
|
|
72
|
+
if (builder) {
|
|
73
|
+
result[key] = builder.build();
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return result;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Base builder for string filters
|
|
81
|
+
*/
|
|
82
|
+
class StringFilterBuilder {
|
|
83
|
+
constructor() {
|
|
84
|
+
this.filter = {};
|
|
85
|
+
}
|
|
86
|
+
static from(filter) {
|
|
87
|
+
const builder = new StringFilterBuilder();
|
|
88
|
+
builder.filter = { ...filter };
|
|
89
|
+
return builder;
|
|
90
|
+
}
|
|
91
|
+
equals(value) {
|
|
92
|
+
this.filter.equals = value;
|
|
93
|
+
return this;
|
|
94
|
+
}
|
|
95
|
+
contains(value) {
|
|
96
|
+
this.filter.contains = value;
|
|
97
|
+
return this;
|
|
98
|
+
}
|
|
99
|
+
startsWith(value) {
|
|
100
|
+
this.filter.startsWith = value;
|
|
101
|
+
return this;
|
|
102
|
+
}
|
|
103
|
+
endsWith(value) {
|
|
104
|
+
this.filter.endsWith = value;
|
|
105
|
+
return this;
|
|
106
|
+
}
|
|
107
|
+
inList(values) {
|
|
108
|
+
this.filter.inList = values;
|
|
109
|
+
return this;
|
|
110
|
+
}
|
|
111
|
+
notInList(values) {
|
|
112
|
+
this.filter.notInList = values;
|
|
113
|
+
return this;
|
|
114
|
+
}
|
|
115
|
+
matches(patterns) {
|
|
116
|
+
this.filter.matches = patterns;
|
|
117
|
+
return this;
|
|
118
|
+
}
|
|
119
|
+
build() {
|
|
120
|
+
return this.filter;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
exports.StringFilterBuilder = StringFilterBuilder;
|
|
124
|
+
/**
|
|
125
|
+
* Base builder for numeric range filters
|
|
126
|
+
*/
|
|
127
|
+
class NumericRangeFilterBuilder {
|
|
128
|
+
constructor() {
|
|
129
|
+
this.filter = {};
|
|
130
|
+
}
|
|
131
|
+
static from(filter) {
|
|
132
|
+
const builder = new NumericRangeFilterBuilder();
|
|
133
|
+
builder.filter = { ...filter };
|
|
134
|
+
return builder;
|
|
135
|
+
}
|
|
136
|
+
min(value) {
|
|
137
|
+
this.filter.min = value;
|
|
138
|
+
return this;
|
|
139
|
+
}
|
|
140
|
+
max(value) {
|
|
141
|
+
this.filter.max = value;
|
|
142
|
+
return this;
|
|
143
|
+
}
|
|
144
|
+
range(min, max) {
|
|
145
|
+
this.filter.min = min;
|
|
146
|
+
this.filter.max = max;
|
|
147
|
+
return this;
|
|
148
|
+
}
|
|
149
|
+
build() {
|
|
150
|
+
return this.filter;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
exports.NumericRangeFilterBuilder = NumericRangeFilterBuilder;
|
|
154
|
+
/**
|
|
155
|
+
* Base builder for date range filters
|
|
156
|
+
*/
|
|
157
|
+
class DateRangeFilterBuilder {
|
|
158
|
+
constructor() {
|
|
159
|
+
this.filter = {};
|
|
160
|
+
}
|
|
161
|
+
static from(filter) {
|
|
162
|
+
const builder = new DateRangeFilterBuilder();
|
|
163
|
+
builder.filter = { ...filter };
|
|
164
|
+
return builder;
|
|
165
|
+
}
|
|
166
|
+
minDate(date) {
|
|
167
|
+
this.filter.minDate = date;
|
|
168
|
+
return this;
|
|
169
|
+
}
|
|
170
|
+
maxDate(date) {
|
|
171
|
+
this.filter.maxDate = date;
|
|
172
|
+
return this;
|
|
173
|
+
}
|
|
174
|
+
range(minDate, maxDate) {
|
|
175
|
+
this.filter.minDate = minDate;
|
|
176
|
+
this.filter.maxDate = maxDate;
|
|
177
|
+
return this;
|
|
178
|
+
}
|
|
179
|
+
build() {
|
|
180
|
+
return this.filter;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
exports.DateRangeFilterBuilder = DateRangeFilterBuilder;
|
|
184
|
+
/**
|
|
185
|
+
* Helper class for creating geographic location filters
|
|
186
|
+
* This is not a builder in the traditional sense - it's a factory that creates
|
|
187
|
+
* different geo location objects (distance, bounding box, polygon)
|
|
188
|
+
*/
|
|
189
|
+
class GeoLocationFactory {
|
|
190
|
+
/**
|
|
191
|
+
* Create a distance-based filter
|
|
192
|
+
*/
|
|
193
|
+
static distance(latitude, longitude, options) {
|
|
194
|
+
const distance = {
|
|
195
|
+
geoPoint: { latitude, longitude },
|
|
196
|
+
};
|
|
197
|
+
if (options?.meters)
|
|
198
|
+
distance.distanceMeters = options.meters;
|
|
199
|
+
if (options?.kilometers)
|
|
200
|
+
distance.distanceKilometers = options.kilometers;
|
|
201
|
+
if (options?.feet)
|
|
202
|
+
distance.distanceFeet = options.feet;
|
|
203
|
+
if (options?.yards)
|
|
204
|
+
distance.distanceYards = options.yards;
|
|
205
|
+
if (options?.miles)
|
|
206
|
+
distance.distanceMiles = options.miles;
|
|
207
|
+
return distance;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Create a bounding box filter
|
|
211
|
+
*/
|
|
212
|
+
static boundingBox(nwLatitude, nwLongitude, seLatitude, seLongitude) {
|
|
213
|
+
return {
|
|
214
|
+
nwGeoPoint: { latitude: nwLatitude, longitude: nwLongitude },
|
|
215
|
+
seGeoPoint: { latitude: seLatitude, longitude: seLongitude },
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Create a polygon filter
|
|
220
|
+
*/
|
|
221
|
+
static polygon(points) {
|
|
222
|
+
return {
|
|
223
|
+
geoPoints: points.map((p) => ({
|
|
224
|
+
latitude: p.latitude,
|
|
225
|
+
longitude: p.longitude,
|
|
226
|
+
})),
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
exports.GeoLocationFactory = GeoLocationFactory;
|
|
231
|
+
/**
|
|
232
|
+
* Builder for address search criteria
|
|
233
|
+
*/
|
|
234
|
+
class AddressSearchCriteriaBuilder extends BaseBuilder {
|
|
235
|
+
constructor() {
|
|
236
|
+
super(...arguments);
|
|
237
|
+
this.criteria = {};
|
|
238
|
+
}
|
|
239
|
+
static from(criteria) {
|
|
240
|
+
const builder = new AddressSearchCriteriaBuilder();
|
|
241
|
+
builder.criteria = { ...criteria };
|
|
242
|
+
return builder;
|
|
243
|
+
}
|
|
244
|
+
street(filterOrConfigurator) {
|
|
245
|
+
return this.setPropertyWithBuilderClass("street", filterOrConfigurator, StringFilterBuilder);
|
|
246
|
+
}
|
|
247
|
+
city(filterOrConfigurator) {
|
|
248
|
+
return this.setPropertyWithBuilderClass("city", filterOrConfigurator, StringFilterBuilder);
|
|
249
|
+
}
|
|
250
|
+
locality(filterOrConfigurator) {
|
|
251
|
+
return this.setPropertyWithBuilderClass("locality", filterOrConfigurator, StringFilterBuilder);
|
|
252
|
+
}
|
|
253
|
+
county(filterOrConfigurator) {
|
|
254
|
+
return this.setPropertyWithBuilderClass("county", filterOrConfigurator, StringFilterBuilder);
|
|
255
|
+
}
|
|
256
|
+
countyFipsCode(filterOrConfigurator) {
|
|
257
|
+
return this.setPropertyWithBuilderClass("countyFipsCode", filterOrConfigurator, StringFilterBuilder);
|
|
258
|
+
}
|
|
259
|
+
state(filterOrConfigurator) {
|
|
260
|
+
return this.setPropertyWithBuilderClass("state", filterOrConfigurator, StringFilterBuilder);
|
|
261
|
+
}
|
|
262
|
+
zip(filterOrConfigurator) {
|
|
263
|
+
return this.setPropertyWithBuilderClass("zip", filterOrConfigurator, StringFilterBuilder);
|
|
264
|
+
}
|
|
265
|
+
unitType(filterOrConfigurator) {
|
|
266
|
+
return this.setPropertyWithBuilderClass("unitType", filterOrConfigurator, StringFilterBuilder);
|
|
267
|
+
}
|
|
268
|
+
formattedStreet(filterOrConfigurator) {
|
|
269
|
+
return this.setPropertyWithBuilderClass("formattedStreet", filterOrConfigurator, StringFilterBuilder);
|
|
270
|
+
}
|
|
271
|
+
streetNoUnit(filterOrConfigurator) {
|
|
272
|
+
return this.setPropertyWithBuilderClass("streetNoUnit", filterOrConfigurator, StringFilterBuilder);
|
|
273
|
+
}
|
|
274
|
+
geoLocationDistance(latitude, longitude, options) {
|
|
275
|
+
this.criteria.geoLocationDistance = GeoLocationFactory.distance(latitude, longitude, options);
|
|
276
|
+
return this;
|
|
277
|
+
}
|
|
278
|
+
geoLocationBoundingBox(nwLatitude, nwLongitude, seLatitude, seLongitude) {
|
|
279
|
+
this.criteria.geoLocationBoundingBox = GeoLocationFactory.boundingBox(nwLatitude, nwLongitude, seLatitude, seLongitude);
|
|
280
|
+
return this;
|
|
281
|
+
}
|
|
282
|
+
geoLocationPolygon(points) {
|
|
283
|
+
this.criteria.geoLocationPolygon = GeoLocationFactory.polygon(points);
|
|
284
|
+
return this;
|
|
285
|
+
}
|
|
286
|
+
initialGeoStatus(filterOrConfigurator) {
|
|
287
|
+
return this.setPropertyWithBuilderClass("initialGeoStatus", filterOrConfigurator, StringFilterBuilder);
|
|
288
|
+
}
|
|
289
|
+
geoStatus(filterOrConfigurator) {
|
|
290
|
+
return this.setPropertyWithBuilderClass("geoStatus", filterOrConfigurator, StringFilterBuilder);
|
|
291
|
+
}
|
|
292
|
+
cityState(filterOrConfigurator) {
|
|
293
|
+
return this.setPropertyWithBuilderClass("cityState", filterOrConfigurator, StringFilterBuilder);
|
|
294
|
+
}
|
|
295
|
+
countyState(filterOrConfigurator) {
|
|
296
|
+
return this.setPropertyWithBuilderClass("countyState", filterOrConfigurator, StringFilterBuilder);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
exports.AddressSearchCriteriaBuilder = AddressSearchCriteriaBuilder;
|
|
300
|
+
/**
|
|
301
|
+
* Builder for assessment search criteria
|
|
302
|
+
*/
|
|
303
|
+
class AssessmentSearchCriteriaBuilder extends BaseBuilder {
|
|
304
|
+
constructor() {
|
|
305
|
+
super(...arguments);
|
|
306
|
+
this.criteria = {};
|
|
307
|
+
}
|
|
308
|
+
static from(criteria) {
|
|
309
|
+
const builder = new AssessmentSearchCriteriaBuilder();
|
|
310
|
+
builder.criteria = { ...criteria };
|
|
311
|
+
return builder;
|
|
312
|
+
}
|
|
313
|
+
assessmentYear(filterOrConfigurator) {
|
|
314
|
+
return this.setPropertyWithBuilderClass("assessmentYear", filterOrConfigurator, NumericRangeFilterBuilder);
|
|
315
|
+
}
|
|
316
|
+
totalAssessedValue(filterOrConfigurator) {
|
|
317
|
+
return this.setPropertyWithBuilderClass("totalAssessedValue", filterOrConfigurator, NumericRangeFilterBuilder);
|
|
318
|
+
}
|
|
319
|
+
assessedImprovementValue(filterOrConfigurator) {
|
|
320
|
+
return this.setPropertyWithBuilderClass("assessedImprovementValue", filterOrConfigurator, NumericRangeFilterBuilder);
|
|
321
|
+
}
|
|
322
|
+
assessedLandValue(filterOrConfigurator) {
|
|
323
|
+
return this.setPropertyWithBuilderClass("assessedLandValue", filterOrConfigurator, NumericRangeFilterBuilder);
|
|
324
|
+
}
|
|
325
|
+
marketValueYear(filterOrConfigurator) {
|
|
326
|
+
return this.setPropertyWithBuilderClass("marketValueYear", filterOrConfigurator, NumericRangeFilterBuilder);
|
|
327
|
+
}
|
|
328
|
+
landMarketValue(filterOrConfigurator) {
|
|
329
|
+
return this.setPropertyWithBuilderClass("landMarketValue", filterOrConfigurator, NumericRangeFilterBuilder);
|
|
330
|
+
}
|
|
331
|
+
improvementMarketValue(filterOrConfigurator) {
|
|
332
|
+
return this.setPropertyWithBuilderClass("improvementMarketValue", filterOrConfigurator, NumericRangeFilterBuilder);
|
|
333
|
+
}
|
|
334
|
+
totalMarketValue(filterOrConfigurator) {
|
|
335
|
+
return this.setPropertyWithBuilderClass("totalMarketValue", filterOrConfigurator, NumericRangeFilterBuilder);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
exports.AssessmentSearchCriteriaBuilder = AssessmentSearchCriteriaBuilder;
|
|
339
|
+
/**
|
|
340
|
+
* Builder for building search criteria
|
|
341
|
+
*/
|
|
342
|
+
class BuildingSearchCriteriaBuilder extends BaseBuilder {
|
|
343
|
+
constructor() {
|
|
344
|
+
super(...arguments);
|
|
345
|
+
this.criteria = {};
|
|
346
|
+
}
|
|
347
|
+
static from(criteria) {
|
|
348
|
+
const builder = new BuildingSearchCriteriaBuilder();
|
|
349
|
+
builder.criteria = { ...criteria };
|
|
350
|
+
return builder;
|
|
351
|
+
}
|
|
352
|
+
airConditioningSource(filterOrConfigurator) {
|
|
353
|
+
return this.setPropertyWithBuilderClass("airConditioningSource", filterOrConfigurator, StringFilterBuilder);
|
|
354
|
+
}
|
|
355
|
+
basementType(filterOrConfigurator) {
|
|
356
|
+
return this.setPropertyWithBuilderClass("basementType", filterOrConfigurator, StringFilterBuilder);
|
|
357
|
+
}
|
|
358
|
+
totalBuildingAreaSquareFeet(filterOrConfigurator) {
|
|
359
|
+
return this.setPropertyWithBuilderClass("totalBuildingAreaSquareFeet", filterOrConfigurator, NumericRangeFilterBuilder);
|
|
360
|
+
}
|
|
361
|
+
buildingClass(filterOrConfigurator) {
|
|
362
|
+
if (typeof filterOrConfigurator === "function") {
|
|
363
|
+
const builder = new StringFilterBuilder();
|
|
364
|
+
filterOrConfigurator(builder);
|
|
365
|
+
this.criteria.buildingClass = builder.build();
|
|
366
|
+
}
|
|
367
|
+
else {
|
|
368
|
+
this.criteria.buildingClass = filterOrConfigurator;
|
|
369
|
+
}
|
|
370
|
+
return this;
|
|
371
|
+
}
|
|
372
|
+
buildingCondition(filterOrConfigurator) {
|
|
373
|
+
if (typeof filterOrConfigurator === "function") {
|
|
374
|
+
const builder = new StringFilterBuilder();
|
|
375
|
+
filterOrConfigurator(builder);
|
|
376
|
+
this.criteria.buildingCondition = builder.build();
|
|
377
|
+
}
|
|
378
|
+
else {
|
|
379
|
+
this.criteria.buildingCondition = filterOrConfigurator;
|
|
380
|
+
}
|
|
381
|
+
return this;
|
|
382
|
+
}
|
|
383
|
+
buildingQuality(filterOrConfigurator) {
|
|
384
|
+
if (typeof filterOrConfigurator === "function") {
|
|
385
|
+
const builder = new StringFilterBuilder();
|
|
386
|
+
filterOrConfigurator(builder);
|
|
387
|
+
this.criteria.buildingQuality = builder.build();
|
|
388
|
+
}
|
|
389
|
+
else {
|
|
390
|
+
this.criteria.buildingQuality = filterOrConfigurator;
|
|
391
|
+
}
|
|
392
|
+
return this;
|
|
393
|
+
}
|
|
394
|
+
buildingType(filterOrConfigurator) {
|
|
395
|
+
if (typeof filterOrConfigurator === "function") {
|
|
396
|
+
const builder = new StringFilterBuilder();
|
|
397
|
+
filterOrConfigurator(builder);
|
|
398
|
+
this.criteria.buildingType = builder.build();
|
|
399
|
+
}
|
|
400
|
+
else {
|
|
401
|
+
this.criteria.buildingType = filterOrConfigurator;
|
|
402
|
+
}
|
|
403
|
+
return this;
|
|
404
|
+
}
|
|
405
|
+
driveway(filterOrConfigurator) {
|
|
406
|
+
if (typeof filterOrConfigurator === "function") {
|
|
407
|
+
const builder = new StringFilterBuilder();
|
|
408
|
+
filterOrConfigurator(builder);
|
|
409
|
+
this.criteria.driveway = builder.build();
|
|
410
|
+
}
|
|
411
|
+
else {
|
|
412
|
+
this.criteria.driveway = filterOrConfigurator;
|
|
413
|
+
}
|
|
414
|
+
return this;
|
|
415
|
+
}
|
|
416
|
+
exteriorWalls(filterOrConfigurator) {
|
|
417
|
+
if (typeof filterOrConfigurator === "function") {
|
|
418
|
+
const builder = new StringFilterBuilder();
|
|
419
|
+
filterOrConfigurator(builder);
|
|
420
|
+
this.criteria.exteriorWalls = builder.build();
|
|
421
|
+
}
|
|
422
|
+
else {
|
|
423
|
+
this.criteria.exteriorWalls = filterOrConfigurator;
|
|
424
|
+
}
|
|
425
|
+
return this;
|
|
426
|
+
}
|
|
427
|
+
floorCover(filterOrConfigurator) {
|
|
428
|
+
if (typeof filterOrConfigurator === "function") {
|
|
429
|
+
const builder = new StringFilterBuilder();
|
|
430
|
+
filterOrConfigurator(builder);
|
|
431
|
+
this.criteria.floorCover = builder.build();
|
|
432
|
+
}
|
|
433
|
+
else {
|
|
434
|
+
this.criteria.floorCover = filterOrConfigurator;
|
|
435
|
+
}
|
|
436
|
+
return this;
|
|
437
|
+
}
|
|
438
|
+
garageParkingSpaceCount(filterOrConfigurator) {
|
|
439
|
+
return this.setPropertyWithBuilderClass("garageParkingSpaceCount", filterOrConfigurator, NumericRangeFilterBuilder);
|
|
440
|
+
}
|
|
441
|
+
garage(filterOrConfigurator) {
|
|
442
|
+
if (typeof filterOrConfigurator === "function") {
|
|
443
|
+
const builder = new StringFilterBuilder();
|
|
444
|
+
filterOrConfigurator(builder);
|
|
445
|
+
this.criteria.garage = builder.build();
|
|
446
|
+
}
|
|
447
|
+
else {
|
|
448
|
+
this.criteria.garage = filterOrConfigurator;
|
|
449
|
+
}
|
|
450
|
+
return this;
|
|
451
|
+
}
|
|
452
|
+
heatSource(filterOrConfigurator) {
|
|
453
|
+
if (typeof filterOrConfigurator === "function") {
|
|
454
|
+
const builder = new StringFilterBuilder();
|
|
455
|
+
filterOrConfigurator(builder);
|
|
456
|
+
this.criteria.heatSource = builder.build();
|
|
457
|
+
}
|
|
458
|
+
else {
|
|
459
|
+
this.criteria.heatSource = filterOrConfigurator;
|
|
460
|
+
}
|
|
461
|
+
return this;
|
|
462
|
+
}
|
|
463
|
+
heatingFuelType(filterOrConfigurator) {
|
|
464
|
+
if (typeof filterOrConfigurator === "function") {
|
|
465
|
+
const builder = new StringFilterBuilder();
|
|
466
|
+
filterOrConfigurator(builder);
|
|
467
|
+
this.criteria.heatingFuelType = builder.build();
|
|
468
|
+
}
|
|
469
|
+
else {
|
|
470
|
+
this.criteria.heatingFuelType = filterOrConfigurator;
|
|
471
|
+
}
|
|
472
|
+
return this;
|
|
473
|
+
}
|
|
474
|
+
interiorWalls(filterOrConfigurator) {
|
|
475
|
+
if (typeof filterOrConfigurator === "function") {
|
|
476
|
+
const builder = new StringFilterBuilder();
|
|
477
|
+
filterOrConfigurator(builder);
|
|
478
|
+
this.criteria.interiorWalls = builder.build();
|
|
479
|
+
}
|
|
480
|
+
else {
|
|
481
|
+
this.criteria.interiorWalls = filterOrConfigurator;
|
|
482
|
+
}
|
|
483
|
+
return this;
|
|
484
|
+
}
|
|
485
|
+
buildingCount(filterOrConfigurator) {
|
|
486
|
+
return this.setPropertyWithBuilderClass("buildingCount", filterOrConfigurator, NumericRangeFilterBuilder);
|
|
487
|
+
}
|
|
488
|
+
bathroomCount(filterOrConfigurator) {
|
|
489
|
+
return this.setPropertyWithBuilderClass("bathroomCount", filterOrConfigurator, NumericRangeFilterBuilder);
|
|
490
|
+
}
|
|
491
|
+
calculatedBathroomCount(filterOrConfigurator) {
|
|
492
|
+
return this.setPropertyWithBuilderClass("calculatedBathroomCount", filterOrConfigurator, NumericRangeFilterBuilder);
|
|
493
|
+
}
|
|
494
|
+
bedroomCount(filterOrConfigurator) {
|
|
495
|
+
return this.setPropertyWithBuilderClass("bedroomCount", filterOrConfigurator, NumericRangeFilterBuilder);
|
|
496
|
+
}
|
|
497
|
+
patio(filterOrConfigurator) {
|
|
498
|
+
if (typeof filterOrConfigurator === "function") {
|
|
499
|
+
const builder = new StringFilterBuilder();
|
|
500
|
+
filterOrConfigurator(builder);
|
|
501
|
+
this.criteria.patio = builder.build();
|
|
502
|
+
}
|
|
503
|
+
else {
|
|
504
|
+
this.criteria.patio = filterOrConfigurator;
|
|
505
|
+
}
|
|
506
|
+
return this;
|
|
507
|
+
}
|
|
508
|
+
storyCount(filterOrConfigurator) {
|
|
509
|
+
return this.setPropertyWithBuilderClass("storyCount", filterOrConfigurator, NumericRangeFilterBuilder);
|
|
510
|
+
}
|
|
511
|
+
features(filterOrConfigurator) {
|
|
512
|
+
if (typeof filterOrConfigurator === "function") {
|
|
513
|
+
const builder = new StringFilterBuilder();
|
|
514
|
+
filterOrConfigurator(builder);
|
|
515
|
+
this.criteria.features = builder.build();
|
|
516
|
+
}
|
|
517
|
+
else {
|
|
518
|
+
this.criteria.features = filterOrConfigurator;
|
|
519
|
+
}
|
|
520
|
+
return this;
|
|
521
|
+
}
|
|
522
|
+
residentialUnitCount(filterOrConfigurator) {
|
|
523
|
+
return this.setPropertyWithBuilderClass("residentialUnitCount", filterOrConfigurator, NumericRangeFilterBuilder);
|
|
524
|
+
}
|
|
525
|
+
pool(filterOrConfigurator) {
|
|
526
|
+
if (typeof filterOrConfigurator === "function") {
|
|
527
|
+
const builder = new StringFilterBuilder();
|
|
528
|
+
filterOrConfigurator(builder);
|
|
529
|
+
this.criteria.pool = builder.build();
|
|
530
|
+
}
|
|
531
|
+
else {
|
|
532
|
+
this.criteria.pool = filterOrConfigurator;
|
|
533
|
+
}
|
|
534
|
+
return this;
|
|
535
|
+
}
|
|
536
|
+
porch(filterOrConfigurator) {
|
|
537
|
+
if (typeof filterOrConfigurator === "function") {
|
|
538
|
+
const builder = new StringFilterBuilder();
|
|
539
|
+
filterOrConfigurator(builder);
|
|
540
|
+
this.criteria.porch = builder.build();
|
|
541
|
+
}
|
|
542
|
+
else {
|
|
543
|
+
this.criteria.porch = filterOrConfigurator;
|
|
544
|
+
}
|
|
545
|
+
return this;
|
|
546
|
+
}
|
|
547
|
+
roofCover(filterOrConfigurator) {
|
|
548
|
+
if (typeof filterOrConfigurator === "function") {
|
|
549
|
+
const builder = new StringFilterBuilder();
|
|
550
|
+
filterOrConfigurator(builder);
|
|
551
|
+
this.criteria.roofCover = builder.build();
|
|
552
|
+
}
|
|
553
|
+
else {
|
|
554
|
+
this.criteria.roofCover = filterOrConfigurator;
|
|
555
|
+
}
|
|
556
|
+
return this;
|
|
557
|
+
}
|
|
558
|
+
roofType(filterOrConfigurator) {
|
|
559
|
+
if (typeof filterOrConfigurator === "function") {
|
|
560
|
+
const builder = new StringFilterBuilder();
|
|
561
|
+
filterOrConfigurator(builder);
|
|
562
|
+
this.criteria.roofType = builder.build();
|
|
563
|
+
}
|
|
564
|
+
else {
|
|
565
|
+
this.criteria.roofType = filterOrConfigurator;
|
|
566
|
+
}
|
|
567
|
+
return this;
|
|
568
|
+
}
|
|
569
|
+
sewer(filterOrConfigurator) {
|
|
570
|
+
if (typeof filterOrConfigurator === "function") {
|
|
571
|
+
const builder = new StringFilterBuilder();
|
|
572
|
+
filterOrConfigurator(builder);
|
|
573
|
+
this.criteria.sewer = builder.build();
|
|
574
|
+
}
|
|
575
|
+
else {
|
|
576
|
+
this.criteria.sewer = filterOrConfigurator;
|
|
577
|
+
}
|
|
578
|
+
return this;
|
|
579
|
+
}
|
|
580
|
+
style(filterOrConfigurator) {
|
|
581
|
+
if (typeof filterOrConfigurator === "function") {
|
|
582
|
+
const builder = new StringFilterBuilder();
|
|
583
|
+
filterOrConfigurator(builder);
|
|
584
|
+
this.criteria.style = builder.build();
|
|
585
|
+
}
|
|
586
|
+
else {
|
|
587
|
+
this.criteria.style = filterOrConfigurator;
|
|
588
|
+
}
|
|
589
|
+
return this;
|
|
590
|
+
}
|
|
591
|
+
roomCount(filterOrConfigurator) {
|
|
592
|
+
return this.setPropertyWithBuilderClass("roomCount", filterOrConfigurator, NumericRangeFilterBuilder);
|
|
593
|
+
}
|
|
594
|
+
unitCount(filterOrConfigurator) {
|
|
595
|
+
return this.setPropertyWithBuilderClass("unitCount", filterOrConfigurator, NumericRangeFilterBuilder);
|
|
596
|
+
}
|
|
597
|
+
constructionType(filterOrConfigurator) {
|
|
598
|
+
if (typeof filterOrConfigurator === "function") {
|
|
599
|
+
const builder = new StringFilterBuilder();
|
|
600
|
+
filterOrConfigurator(builder);
|
|
601
|
+
this.criteria.constructionType = builder.build();
|
|
602
|
+
}
|
|
603
|
+
else {
|
|
604
|
+
this.criteria.constructionType = filterOrConfigurator;
|
|
605
|
+
}
|
|
606
|
+
return this;
|
|
607
|
+
}
|
|
608
|
+
waterService(filterOrConfigurator) {
|
|
609
|
+
if (typeof filterOrConfigurator === "function") {
|
|
610
|
+
const builder = new StringFilterBuilder();
|
|
611
|
+
filterOrConfigurator(builder);
|
|
612
|
+
this.criteria.waterService = builder.build();
|
|
613
|
+
}
|
|
614
|
+
else {
|
|
615
|
+
this.criteria.waterService = filterOrConfigurator;
|
|
616
|
+
}
|
|
617
|
+
return this;
|
|
618
|
+
}
|
|
619
|
+
yearBuilt(filterOrConfigurator) {
|
|
620
|
+
return this.setPropertyWithBuilderClass("yearBuilt", filterOrConfigurator, NumericRangeFilterBuilder);
|
|
621
|
+
}
|
|
622
|
+
build() {
|
|
623
|
+
const result = { ...this.criteria };
|
|
624
|
+
if (this.builders.airConditioningSource) {
|
|
625
|
+
result.airConditioningSource =
|
|
626
|
+
this.builders.airConditioningSource.build();
|
|
627
|
+
}
|
|
628
|
+
if (this.builders.basementType) {
|
|
629
|
+
result.basementType = this.builders.basementType.build();
|
|
630
|
+
}
|
|
631
|
+
if (this.builders.totalBuildingAreaSquareFeet) {
|
|
632
|
+
result.totalBuildingAreaSquareFeet =
|
|
633
|
+
this.builders.totalBuildingAreaSquareFeet.build();
|
|
634
|
+
}
|
|
635
|
+
if (this.builders.buildingClass) {
|
|
636
|
+
result.buildingClass = this.builders.buildingClass.build();
|
|
637
|
+
}
|
|
638
|
+
if (this.builders.buildingCondition) {
|
|
639
|
+
result.buildingCondition = this.builders.buildingCondition.build();
|
|
640
|
+
}
|
|
641
|
+
if (this.builders.buildingQuality) {
|
|
642
|
+
result.buildingQuality = this.builders.buildingQuality.build();
|
|
643
|
+
}
|
|
644
|
+
if (this.builders.buildingType) {
|
|
645
|
+
result.buildingType = this.builders.buildingType.build();
|
|
646
|
+
}
|
|
647
|
+
if (this.builders.driveway) {
|
|
648
|
+
result.driveway = this.builders.driveway.build();
|
|
649
|
+
}
|
|
650
|
+
if (this.builders.exteriorWalls) {
|
|
651
|
+
result.exteriorWalls = this.builders.exteriorWalls.build();
|
|
652
|
+
}
|
|
653
|
+
if (this.builders.floorCover) {
|
|
654
|
+
result.floorCover = this.builders.floorCover.build();
|
|
655
|
+
}
|
|
656
|
+
if (this.builders.garageParkingSpaceCount) {
|
|
657
|
+
result.garageParkingSpaceCount =
|
|
658
|
+
this.builders.garageParkingSpaceCount.build();
|
|
659
|
+
}
|
|
660
|
+
if (this.builders.garage) {
|
|
661
|
+
result.garage = this.builders.garage.build();
|
|
662
|
+
}
|
|
663
|
+
if (this.builders.heatSource) {
|
|
664
|
+
result.heatSource = this.builders.heatSource.build();
|
|
665
|
+
}
|
|
666
|
+
if (this.builders.heatingFuelType) {
|
|
667
|
+
result.heatingFuelType = this.builders.heatingFuelType.build();
|
|
668
|
+
}
|
|
669
|
+
if (this.builders.interiorWalls) {
|
|
670
|
+
result.interiorWalls = this.builders.interiorWalls.build();
|
|
671
|
+
}
|
|
672
|
+
if (this.builders.buildingCount) {
|
|
673
|
+
result.buildingCount = this.builders.buildingCount.build();
|
|
674
|
+
}
|
|
675
|
+
if (this.builders.bathroomCount) {
|
|
676
|
+
result.bathroomCount = this.builders.bathroomCount.build();
|
|
677
|
+
}
|
|
678
|
+
if (this.builders.calculatedBathroomCount) {
|
|
679
|
+
result.calculatedBathroomCount =
|
|
680
|
+
this.builders.calculatedBathroomCount.build();
|
|
681
|
+
}
|
|
682
|
+
if (this.builders.bedroomCount) {
|
|
683
|
+
result.bedroomCount = this.builders.bedroomCount.build();
|
|
684
|
+
}
|
|
685
|
+
if (this.builders.patio) {
|
|
686
|
+
result.patio = this.builders.patio.build();
|
|
687
|
+
}
|
|
688
|
+
if (this.builders.storyCount) {
|
|
689
|
+
result.storyCount = this.builders.storyCount.build();
|
|
690
|
+
}
|
|
691
|
+
if (this.builders.features) {
|
|
692
|
+
result.features = this.builders.features.build();
|
|
693
|
+
}
|
|
694
|
+
if (this.builders.residentialUnitCount) {
|
|
695
|
+
result.residentialUnitCount = this.builders.residentialUnitCount.build();
|
|
696
|
+
}
|
|
697
|
+
if (this.builders.pool) {
|
|
698
|
+
result.pool = this.builders.pool.build();
|
|
699
|
+
}
|
|
700
|
+
if (this.builders.porch) {
|
|
701
|
+
result.porch = this.builders.porch.build();
|
|
702
|
+
}
|
|
703
|
+
if (this.builders.roofCover) {
|
|
704
|
+
result.roofCover = this.builders.roofCover.build();
|
|
705
|
+
}
|
|
706
|
+
if (this.builders.roofType) {
|
|
707
|
+
result.roofType = this.builders.roofType.build();
|
|
708
|
+
}
|
|
709
|
+
if (this.builders.sewer) {
|
|
710
|
+
result.sewer = this.builders.sewer.build();
|
|
711
|
+
}
|
|
712
|
+
if (this.builders.style) {
|
|
713
|
+
result.style = this.builders.style.build();
|
|
714
|
+
}
|
|
715
|
+
if (this.builders.roomCount) {
|
|
716
|
+
result.roomCount = this.builders.roomCount.build();
|
|
717
|
+
}
|
|
718
|
+
if (this.builders.unitCount) {
|
|
719
|
+
result.unitCount = this.builders.unitCount.build();
|
|
720
|
+
}
|
|
721
|
+
if (this.builders.constructionType) {
|
|
722
|
+
result.constructionType = this.builders.constructionType.build();
|
|
723
|
+
}
|
|
724
|
+
if (this.builders.waterService) {
|
|
725
|
+
result.waterService = this.builders.waterService.build();
|
|
726
|
+
}
|
|
727
|
+
if (this.builders.yearBuilt) {
|
|
728
|
+
result.yearBuilt = this.builders.yearBuilt.build();
|
|
729
|
+
}
|
|
730
|
+
return result;
|
|
731
|
+
}
|
|
732
|
+
}
|
|
733
|
+
exports.BuildingSearchCriteriaBuilder = BuildingSearchCriteriaBuilder;
|
|
734
|
+
/**
|
|
735
|
+
* Builder for comp address search criteria
|
|
736
|
+
*/
|
|
737
|
+
class CompAddressSearchCriteriaBuilder {
|
|
738
|
+
constructor() {
|
|
739
|
+
this.criteria = {};
|
|
740
|
+
}
|
|
741
|
+
static from(criteria) {
|
|
742
|
+
const builder = new CompAddressSearchCriteriaBuilder();
|
|
743
|
+
builder.criteria = { ...criteria };
|
|
744
|
+
return builder;
|
|
745
|
+
}
|
|
746
|
+
street(value) {
|
|
747
|
+
this.criteria.street = value;
|
|
748
|
+
return this;
|
|
749
|
+
}
|
|
750
|
+
city(value) {
|
|
751
|
+
this.criteria.city = value;
|
|
752
|
+
return this;
|
|
753
|
+
}
|
|
754
|
+
state(value) {
|
|
755
|
+
this.criteria.state = value;
|
|
756
|
+
return this;
|
|
757
|
+
}
|
|
758
|
+
zip(value) {
|
|
759
|
+
this.criteria.zip = value;
|
|
760
|
+
return this;
|
|
761
|
+
}
|
|
762
|
+
hash(value) {
|
|
763
|
+
this.criteria.hash = value;
|
|
764
|
+
return this;
|
|
765
|
+
}
|
|
766
|
+
build() {
|
|
767
|
+
return this.criteria;
|
|
768
|
+
}
|
|
769
|
+
}
|
|
770
|
+
exports.CompAddressSearchCriteriaBuilder = CompAddressSearchCriteriaBuilder;
|
|
771
|
+
/**
|
|
772
|
+
* Builder for demographics search criteria
|
|
773
|
+
*/
|
|
774
|
+
class DemographicsSearchCriteriaBuilder extends BaseBuilder {
|
|
775
|
+
constructor() {
|
|
776
|
+
super(...arguments);
|
|
777
|
+
this.criteria = {};
|
|
778
|
+
}
|
|
779
|
+
static from(criteria) {
|
|
780
|
+
const builder = new DemographicsSearchCriteriaBuilder();
|
|
781
|
+
builder.criteria = { ...criteria };
|
|
782
|
+
return builder;
|
|
783
|
+
}
|
|
784
|
+
age(filterOrConfigurator) {
|
|
785
|
+
return this.setPropertyWithBuilderClass("age", filterOrConfigurator, NumericRangeFilterBuilder);
|
|
786
|
+
}
|
|
787
|
+
householdSize(filterOrConfigurator) {
|
|
788
|
+
return this.setPropertyWithBuilderClass("householdSize", filterOrConfigurator, NumericRangeFilterBuilder);
|
|
789
|
+
}
|
|
790
|
+
income(filterOrConfigurator) {
|
|
791
|
+
return this.setPropertyWithBuilderClass("income", filterOrConfigurator, NumericRangeFilterBuilder);
|
|
792
|
+
}
|
|
793
|
+
netWorth(filterOrConfigurator) {
|
|
794
|
+
return this.setPropertyWithBuilderClass("netWorth", filterOrConfigurator, NumericRangeFilterBuilder);
|
|
795
|
+
}
|
|
796
|
+
discretionaryIncome(filterOrConfigurator) {
|
|
797
|
+
return this.setPropertyWithBuilderClass("discretionaryIncome", filterOrConfigurator, NumericRangeFilterBuilder);
|
|
798
|
+
}
|
|
799
|
+
homeownerRenter(filterOrConfigurator) {
|
|
800
|
+
return this.setPropertyWithBuilderClass("homeownerRenter", filterOrConfigurator, StringFilterBuilder);
|
|
801
|
+
}
|
|
802
|
+
businessOwner(filterOrConfigurator) {
|
|
803
|
+
return this.setPropertyWithBuilderClass("businessOwner", filterOrConfigurator, StringFilterBuilder);
|
|
804
|
+
}
|
|
805
|
+
gender(filterOrConfigurator) {
|
|
806
|
+
return this.setPropertyWithBuilderClass("gender", filterOrConfigurator, StringFilterBuilder);
|
|
807
|
+
}
|
|
808
|
+
hasChildren(value) {
|
|
809
|
+
this.criteria.hasChildren = { equals: value };
|
|
810
|
+
return this;
|
|
811
|
+
}
|
|
812
|
+
investments(filterOrConfigurator) {
|
|
813
|
+
return this.setPropertyWithBuilderClass("investments", filterOrConfigurator, StringFilterBuilder);
|
|
814
|
+
}
|
|
815
|
+
demographics(filterOrConfigurator) {
|
|
816
|
+
return this.setPropertyWithBuilderClass("demographics", filterOrConfigurator, StringFilterBuilder);
|
|
817
|
+
}
|
|
818
|
+
religiousAffiliation(filterOrConfigurator) {
|
|
819
|
+
return this.setPropertyWithBuilderClass("religiousAffiliation", filterOrConfigurator, StringFilterBuilder);
|
|
820
|
+
}
|
|
821
|
+
}
|
|
822
|
+
exports.DemographicsSearchCriteriaBuilder = DemographicsSearchCriteriaBuilder;
|
|
823
|
+
/**
|
|
824
|
+
* Builder for foreclosure search criteria
|
|
825
|
+
*/
|
|
826
|
+
class ForeclosureSearchCriteriaBuilder {
|
|
827
|
+
constructor() {
|
|
828
|
+
this.criteria = {};
|
|
829
|
+
}
|
|
830
|
+
static from(criteria) {
|
|
831
|
+
const builder = new ForeclosureSearchCriteriaBuilder();
|
|
832
|
+
builder.criteria = { ...criteria };
|
|
833
|
+
return builder;
|
|
834
|
+
}
|
|
835
|
+
status(filterOrConfigurator) {
|
|
836
|
+
if (typeof filterOrConfigurator === "function") {
|
|
837
|
+
const builder = new StringFilterBuilder();
|
|
838
|
+
filterOrConfigurator(builder);
|
|
839
|
+
this.criteria.status = builder.build();
|
|
840
|
+
}
|
|
841
|
+
else {
|
|
842
|
+
this.criteria.status = filterOrConfigurator;
|
|
843
|
+
}
|
|
844
|
+
return this;
|
|
845
|
+
}
|
|
846
|
+
recordingDate(filterOrConfigurator) {
|
|
847
|
+
if (typeof filterOrConfigurator === "function") {
|
|
848
|
+
const builder = new DateRangeFilterBuilder();
|
|
849
|
+
filterOrConfigurator(builder);
|
|
850
|
+
this.criteria.recordingDate = builder.build();
|
|
851
|
+
}
|
|
852
|
+
else {
|
|
853
|
+
this.criteria.recordingDate = filterOrConfigurator;
|
|
854
|
+
}
|
|
855
|
+
return this;
|
|
856
|
+
}
|
|
857
|
+
auctionDate(filterOrConfigurator) {
|
|
858
|
+
if (typeof filterOrConfigurator === "function") {
|
|
859
|
+
const builder = new DateRangeFilterBuilder();
|
|
860
|
+
filterOrConfigurator(builder);
|
|
861
|
+
this.criteria.auctionDate = builder.build();
|
|
862
|
+
}
|
|
863
|
+
else {
|
|
864
|
+
this.criteria.auctionDate = filterOrConfigurator;
|
|
865
|
+
}
|
|
866
|
+
return this;
|
|
867
|
+
}
|
|
868
|
+
releaseDate(filterOrConfigurator) {
|
|
869
|
+
if (typeof filterOrConfigurator === "function") {
|
|
870
|
+
const builder = new DateRangeFilterBuilder();
|
|
871
|
+
filterOrConfigurator(builder);
|
|
872
|
+
this.criteria.releaseDate = builder.build();
|
|
873
|
+
}
|
|
874
|
+
else {
|
|
875
|
+
this.criteria.releaseDate = filterOrConfigurator;
|
|
876
|
+
}
|
|
877
|
+
return this;
|
|
878
|
+
}
|
|
879
|
+
auctionMinimumBidAmount(filterOrConfigurator) {
|
|
880
|
+
if (typeof filterOrConfigurator === "function") {
|
|
881
|
+
const builder = new NumericRangeFilterBuilder();
|
|
882
|
+
filterOrConfigurator(builder);
|
|
883
|
+
this.criteria.auctionMinimumBidAmount = builder.build();
|
|
884
|
+
}
|
|
885
|
+
else {
|
|
886
|
+
this.criteria.auctionMinimumBidAmount = filterOrConfigurator;
|
|
887
|
+
}
|
|
888
|
+
return this;
|
|
889
|
+
}
|
|
890
|
+
pastDueAmount(filterOrConfigurator) {
|
|
891
|
+
if (typeof filterOrConfigurator === "function") {
|
|
892
|
+
const builder = new NumericRangeFilterBuilder();
|
|
893
|
+
filterOrConfigurator(builder);
|
|
894
|
+
this.criteria.pastDueAmount = builder.build();
|
|
895
|
+
}
|
|
896
|
+
else {
|
|
897
|
+
this.criteria.pastDueAmount = filterOrConfigurator;
|
|
898
|
+
}
|
|
899
|
+
return this;
|
|
900
|
+
}
|
|
901
|
+
build() {
|
|
902
|
+
return this.criteria;
|
|
903
|
+
}
|
|
904
|
+
}
|
|
905
|
+
exports.ForeclosureSearchCriteriaBuilder = ForeclosureSearchCriteriaBuilder;
|
|
906
|
+
/**
|
|
907
|
+
* Builder for general search criteria
|
|
908
|
+
*/
|
|
909
|
+
class GeneralSearchCriteriaBuilder {
|
|
910
|
+
constructor() {
|
|
911
|
+
this.criteria = {};
|
|
912
|
+
}
|
|
913
|
+
static from(criteria) {
|
|
914
|
+
const builder = new GeneralSearchCriteriaBuilder();
|
|
915
|
+
builder.criteria = { ...criteria };
|
|
916
|
+
return builder;
|
|
917
|
+
}
|
|
918
|
+
propertyTypeCategory(filterOrConfigurator) {
|
|
919
|
+
if (typeof filterOrConfigurator === "function") {
|
|
920
|
+
const builder = new StringFilterBuilder();
|
|
921
|
+
filterOrConfigurator(builder);
|
|
922
|
+
this.criteria.propertyTypeCategory = builder.build();
|
|
923
|
+
}
|
|
924
|
+
else {
|
|
925
|
+
this.criteria.propertyTypeCategory = filterOrConfigurator;
|
|
926
|
+
}
|
|
927
|
+
return this;
|
|
928
|
+
}
|
|
929
|
+
propertyTypeDetail(filterOrConfigurator) {
|
|
930
|
+
if (typeof filterOrConfigurator === "function") {
|
|
931
|
+
const builder = new StringFilterBuilder();
|
|
932
|
+
filterOrConfigurator(builder);
|
|
933
|
+
this.criteria.propertyTypeDetail = builder.build();
|
|
934
|
+
}
|
|
935
|
+
else {
|
|
936
|
+
this.criteria.propertyTypeDetail = filterOrConfigurator;
|
|
937
|
+
}
|
|
938
|
+
return this;
|
|
939
|
+
}
|
|
940
|
+
build() {
|
|
941
|
+
return this.criteria;
|
|
942
|
+
}
|
|
943
|
+
}
|
|
944
|
+
exports.GeneralSearchCriteriaBuilder = GeneralSearchCriteriaBuilder;
|
|
945
|
+
/**
|
|
946
|
+
* Builder for IDs search criteria
|
|
947
|
+
*/
|
|
948
|
+
class IdsSearchCriteriaBuilder {
|
|
949
|
+
constructor() {
|
|
950
|
+
this.criteria = {};
|
|
951
|
+
}
|
|
952
|
+
static from(criteria) {
|
|
953
|
+
const builder = new IdsSearchCriteriaBuilder();
|
|
954
|
+
builder.criteria = { ...criteria };
|
|
955
|
+
return builder;
|
|
956
|
+
}
|
|
957
|
+
addressHash(filterOrConfigurator) {
|
|
958
|
+
if (typeof filterOrConfigurator === "function") {
|
|
959
|
+
const builder = new StringFilterBuilder();
|
|
960
|
+
filterOrConfigurator(builder);
|
|
961
|
+
this.criteria.addressHash = builder.build();
|
|
962
|
+
}
|
|
963
|
+
else {
|
|
964
|
+
this.criteria.addressHash = filterOrConfigurator;
|
|
965
|
+
}
|
|
966
|
+
return this;
|
|
967
|
+
}
|
|
968
|
+
mailingAddressHash(filterOrConfigurator) {
|
|
969
|
+
if (typeof filterOrConfigurator === "function") {
|
|
970
|
+
const builder = new StringFilterBuilder();
|
|
971
|
+
filterOrConfigurator(builder);
|
|
972
|
+
this.criteria.mailingAddressHash = builder.build();
|
|
973
|
+
}
|
|
974
|
+
else {
|
|
975
|
+
this.criteria.mailingAddressHash = filterOrConfigurator;
|
|
976
|
+
}
|
|
977
|
+
return this;
|
|
978
|
+
}
|
|
979
|
+
fipsCode(filterOrConfigurator) {
|
|
980
|
+
if (typeof filterOrConfigurator === "function") {
|
|
981
|
+
const builder = new StringFilterBuilder();
|
|
982
|
+
filterOrConfigurator(builder);
|
|
983
|
+
this.criteria.fipsCode = builder.build();
|
|
984
|
+
}
|
|
985
|
+
else {
|
|
986
|
+
this.criteria.fipsCode = filterOrConfigurator;
|
|
987
|
+
}
|
|
988
|
+
return this;
|
|
989
|
+
}
|
|
990
|
+
apn(filterOrConfigurator) {
|
|
991
|
+
if (typeof filterOrConfigurator === "function") {
|
|
992
|
+
const builder = new StringFilterBuilder();
|
|
993
|
+
filterOrConfigurator(builder);
|
|
994
|
+
this.criteria.apn = builder.build();
|
|
995
|
+
}
|
|
996
|
+
else {
|
|
997
|
+
this.criteria.apn = filterOrConfigurator;
|
|
998
|
+
}
|
|
999
|
+
return this;
|
|
1000
|
+
}
|
|
1001
|
+
taxId(filterOrConfigurator) {
|
|
1002
|
+
if (typeof filterOrConfigurator === "function") {
|
|
1003
|
+
const builder = new StringFilterBuilder();
|
|
1004
|
+
filterOrConfigurator(builder);
|
|
1005
|
+
this.criteria.taxId = builder.build();
|
|
1006
|
+
}
|
|
1007
|
+
else {
|
|
1008
|
+
this.criteria.taxId = filterOrConfigurator;
|
|
1009
|
+
}
|
|
1010
|
+
return this;
|
|
1011
|
+
}
|
|
1012
|
+
build() {
|
|
1013
|
+
return this.criteria;
|
|
1014
|
+
}
|
|
1015
|
+
}
|
|
1016
|
+
exports.IdsSearchCriteriaBuilder = IdsSearchCriteriaBuilder;
|
|
1017
|
+
/**
|
|
1018
|
+
* Builder for intel search criteria
|
|
1019
|
+
*/
|
|
1020
|
+
class IntelSearchCriteriaBuilder {
|
|
1021
|
+
constructor() {
|
|
1022
|
+
this.criteria = {};
|
|
1023
|
+
}
|
|
1024
|
+
static from(criteria) {
|
|
1025
|
+
const builder = new IntelSearchCriteriaBuilder();
|
|
1026
|
+
builder.criteria = { ...criteria };
|
|
1027
|
+
return builder;
|
|
1028
|
+
}
|
|
1029
|
+
lastSoldDate(filterOrConfigurator) {
|
|
1030
|
+
if (typeof filterOrConfigurator === "function") {
|
|
1031
|
+
const builder = new DateRangeFilterBuilder();
|
|
1032
|
+
filterOrConfigurator(builder);
|
|
1033
|
+
this.criteria.lastSoldDate = builder.build();
|
|
1034
|
+
}
|
|
1035
|
+
else {
|
|
1036
|
+
this.criteria.lastSoldDate = filterOrConfigurator;
|
|
1037
|
+
}
|
|
1038
|
+
return this;
|
|
1039
|
+
}
|
|
1040
|
+
lastSoldPrice(filterOrConfigurator) {
|
|
1041
|
+
if (typeof filterOrConfigurator === "function") {
|
|
1042
|
+
const builder = new NumericRangeFilterBuilder();
|
|
1043
|
+
filterOrConfigurator(builder);
|
|
1044
|
+
this.criteria.lastSoldPrice = builder.build();
|
|
1045
|
+
}
|
|
1046
|
+
else {
|
|
1047
|
+
this.criteria.lastSoldPrice = filterOrConfigurator;
|
|
1048
|
+
}
|
|
1049
|
+
return this;
|
|
1050
|
+
}
|
|
1051
|
+
salePropensity(filterOrConfigurator) {
|
|
1052
|
+
if (typeof filterOrConfigurator === "function") {
|
|
1053
|
+
const builder = new NumericRangeFilterBuilder();
|
|
1054
|
+
filterOrConfigurator(builder);
|
|
1055
|
+
this.criteria.salePropensity = builder.build();
|
|
1056
|
+
}
|
|
1057
|
+
else {
|
|
1058
|
+
this.criteria.salePropensity = filterOrConfigurator;
|
|
1059
|
+
}
|
|
1060
|
+
return this;
|
|
1061
|
+
}
|
|
1062
|
+
build() {
|
|
1063
|
+
return this.criteria;
|
|
1064
|
+
}
|
|
1065
|
+
}
|
|
1066
|
+
exports.IntelSearchCriteriaBuilder = IntelSearchCriteriaBuilder;
|
|
1067
|
+
/**
|
|
1068
|
+
* Builder for involuntary lien search criteria
|
|
1069
|
+
*/
|
|
1070
|
+
class InvoluntaryLienSearchCriteriaBuilder {
|
|
1071
|
+
constructor() {
|
|
1072
|
+
this.criteria = {};
|
|
1073
|
+
}
|
|
1074
|
+
static from(criteria) {
|
|
1075
|
+
const builder = new InvoluntaryLienSearchCriteriaBuilder();
|
|
1076
|
+
builder.criteria = { ...criteria };
|
|
1077
|
+
return builder;
|
|
1078
|
+
}
|
|
1079
|
+
lienType(filterOrConfigurator) {
|
|
1080
|
+
if (typeof filterOrConfigurator === "function") {
|
|
1081
|
+
const builder = new StringFilterBuilder();
|
|
1082
|
+
filterOrConfigurator(builder);
|
|
1083
|
+
this.criteria.lienType = builder.build();
|
|
1084
|
+
}
|
|
1085
|
+
else {
|
|
1086
|
+
this.criteria.lienType = filterOrConfigurator;
|
|
1087
|
+
}
|
|
1088
|
+
return this;
|
|
1089
|
+
}
|
|
1090
|
+
lienTypeCode(filterOrConfigurator) {
|
|
1091
|
+
if (typeof filterOrConfigurator === "function") {
|
|
1092
|
+
const builder = new StringFilterBuilder();
|
|
1093
|
+
filterOrConfigurator(builder);
|
|
1094
|
+
this.criteria.lienTypeCode = builder.build();
|
|
1095
|
+
}
|
|
1096
|
+
else {
|
|
1097
|
+
this.criteria.lienTypeCode = filterOrConfigurator;
|
|
1098
|
+
}
|
|
1099
|
+
return this;
|
|
1100
|
+
}
|
|
1101
|
+
documentType(filterOrConfigurator) {
|
|
1102
|
+
if (typeof filterOrConfigurator === "function") {
|
|
1103
|
+
const builder = new StringFilterBuilder();
|
|
1104
|
+
filterOrConfigurator(builder);
|
|
1105
|
+
this.criteria.documentType = builder.build();
|
|
1106
|
+
}
|
|
1107
|
+
else {
|
|
1108
|
+
this.criteria.documentType = filterOrConfigurator;
|
|
1109
|
+
}
|
|
1110
|
+
return this;
|
|
1111
|
+
}
|
|
1112
|
+
documentTypeCode(filterOrConfigurator) {
|
|
1113
|
+
if (typeof filterOrConfigurator === "function") {
|
|
1114
|
+
const builder = new StringFilterBuilder();
|
|
1115
|
+
filterOrConfigurator(builder);
|
|
1116
|
+
this.criteria.documentTypeCode = builder.build();
|
|
1117
|
+
}
|
|
1118
|
+
else {
|
|
1119
|
+
this.criteria.documentTypeCode = filterOrConfigurator;
|
|
1120
|
+
}
|
|
1121
|
+
return this;
|
|
1122
|
+
}
|
|
1123
|
+
recordingDate(filterOrConfigurator) {
|
|
1124
|
+
if (typeof filterOrConfigurator === "function") {
|
|
1125
|
+
const builder = new DateRangeFilterBuilder();
|
|
1126
|
+
filterOrConfigurator(builder);
|
|
1127
|
+
this.criteria.recordingDate = builder.build();
|
|
1128
|
+
}
|
|
1129
|
+
else {
|
|
1130
|
+
this.criteria.recordingDate = filterOrConfigurator;
|
|
1131
|
+
}
|
|
1132
|
+
return this;
|
|
1133
|
+
}
|
|
1134
|
+
filingDate(filterOrConfigurator) {
|
|
1135
|
+
if (typeof filterOrConfigurator === "function") {
|
|
1136
|
+
const builder = new DateRangeFilterBuilder();
|
|
1137
|
+
filterOrConfigurator(builder);
|
|
1138
|
+
this.criteria.filingDate = builder.build();
|
|
1139
|
+
}
|
|
1140
|
+
else {
|
|
1141
|
+
this.criteria.filingDate = filterOrConfigurator;
|
|
1142
|
+
}
|
|
1143
|
+
return this;
|
|
1144
|
+
}
|
|
1145
|
+
lienAmount(filterOrConfigurator) {
|
|
1146
|
+
if (typeof filterOrConfigurator === "function") {
|
|
1147
|
+
const builder = new NumericRangeFilterBuilder();
|
|
1148
|
+
filterOrConfigurator(builder);
|
|
1149
|
+
this.criteria.lienAmount = builder.build();
|
|
1150
|
+
}
|
|
1151
|
+
else {
|
|
1152
|
+
this.criteria.lienAmount = filterOrConfigurator;
|
|
1153
|
+
}
|
|
1154
|
+
return this;
|
|
1155
|
+
}
|
|
1156
|
+
build() {
|
|
1157
|
+
return this.criteria;
|
|
1158
|
+
}
|
|
1159
|
+
}
|
|
1160
|
+
exports.InvoluntaryLienSearchCriteriaBuilder = InvoluntaryLienSearchCriteriaBuilder;
|
|
1161
|
+
/**
|
|
1162
|
+
* Builder for legal search criteria
|
|
1163
|
+
*/
|
|
1164
|
+
class LegalSearchCriteriaBuilder {
|
|
1165
|
+
constructor() {
|
|
1166
|
+
this.criteria = {};
|
|
1167
|
+
}
|
|
1168
|
+
static from(criteria) {
|
|
1169
|
+
const builder = new LegalSearchCriteriaBuilder();
|
|
1170
|
+
builder.criteria = { ...criteria };
|
|
1171
|
+
return builder;
|
|
1172
|
+
}
|
|
1173
|
+
subdivisionName(filterOrConfigurator) {
|
|
1174
|
+
if (typeof filterOrConfigurator === "function") {
|
|
1175
|
+
const builder = new StringFilterBuilder();
|
|
1176
|
+
filterOrConfigurator(builder);
|
|
1177
|
+
this.criteria.subdivisionName = builder.build();
|
|
1178
|
+
}
|
|
1179
|
+
else {
|
|
1180
|
+
this.criteria.subdivisionName = filterOrConfigurator;
|
|
1181
|
+
}
|
|
1182
|
+
return this;
|
|
1183
|
+
}
|
|
1184
|
+
build() {
|
|
1185
|
+
return this.criteria;
|
|
1186
|
+
}
|
|
1187
|
+
}
|
|
1188
|
+
exports.LegalSearchCriteriaBuilder = LegalSearchCriteriaBuilder;
|
|
1189
|
+
/**
|
|
1190
|
+
* Builder for listing search criteria
|
|
1191
|
+
*/
|
|
1192
|
+
class ListingSearchCriteriaBuilder {
|
|
1193
|
+
constructor() {
|
|
1194
|
+
this.criteria = {};
|
|
1195
|
+
}
|
|
1196
|
+
static from(criteria) {
|
|
1197
|
+
const builder = new ListingSearchCriteriaBuilder();
|
|
1198
|
+
builder.criteria = { ...criteria };
|
|
1199
|
+
return builder;
|
|
1200
|
+
}
|
|
1201
|
+
description(filterOrConfigurator) {
|
|
1202
|
+
if (typeof filterOrConfigurator === "function") {
|
|
1203
|
+
const builder = new StringFilterBuilder();
|
|
1204
|
+
filterOrConfigurator(builder);
|
|
1205
|
+
this.criteria.description = builder.build();
|
|
1206
|
+
}
|
|
1207
|
+
else {
|
|
1208
|
+
this.criteria.description = filterOrConfigurator;
|
|
1209
|
+
}
|
|
1210
|
+
return this;
|
|
1211
|
+
}
|
|
1212
|
+
price(filterOrConfigurator) {
|
|
1213
|
+
if (typeof filterOrConfigurator === "function") {
|
|
1214
|
+
const builder = new NumericRangeFilterBuilder();
|
|
1215
|
+
filterOrConfigurator(builder);
|
|
1216
|
+
this.criteria.price = builder.build();
|
|
1217
|
+
}
|
|
1218
|
+
else {
|
|
1219
|
+
this.criteria.price = filterOrConfigurator;
|
|
1220
|
+
}
|
|
1221
|
+
return this;
|
|
1222
|
+
}
|
|
1223
|
+
daysOnMarket(filterOrConfigurator) {
|
|
1224
|
+
if (typeof filterOrConfigurator === "function") {
|
|
1225
|
+
const builder = new NumericRangeFilterBuilder();
|
|
1226
|
+
filterOrConfigurator(builder);
|
|
1227
|
+
this.criteria.daysOnMarket = builder.build();
|
|
1228
|
+
}
|
|
1229
|
+
else {
|
|
1230
|
+
this.criteria.daysOnMarket = filterOrConfigurator;
|
|
1231
|
+
}
|
|
1232
|
+
return this;
|
|
1233
|
+
}
|
|
1234
|
+
status(filterOrConfigurator) {
|
|
1235
|
+
if (typeof filterOrConfigurator === "function") {
|
|
1236
|
+
const builder = new StringFilterBuilder();
|
|
1237
|
+
filterOrConfigurator(builder);
|
|
1238
|
+
this.criteria.status = builder.build();
|
|
1239
|
+
}
|
|
1240
|
+
else {
|
|
1241
|
+
this.criteria.status = filterOrConfigurator;
|
|
1242
|
+
}
|
|
1243
|
+
return this;
|
|
1244
|
+
}
|
|
1245
|
+
statusCategory(filterOrConfigurator) {
|
|
1246
|
+
if (typeof filterOrConfigurator === "function") {
|
|
1247
|
+
const builder = new StringFilterBuilder();
|
|
1248
|
+
filterOrConfigurator(builder);
|
|
1249
|
+
this.criteria.statusCategory = builder.build();
|
|
1250
|
+
}
|
|
1251
|
+
else {
|
|
1252
|
+
this.criteria.statusCategory = filterOrConfigurator;
|
|
1253
|
+
}
|
|
1254
|
+
return this;
|
|
1255
|
+
}
|
|
1256
|
+
failedListingDate(filterOrConfigurator) {
|
|
1257
|
+
if (typeof filterOrConfigurator === "function") {
|
|
1258
|
+
const builder = new DateRangeFilterBuilder();
|
|
1259
|
+
filterOrConfigurator(builder);
|
|
1260
|
+
this.criteria.failedListingDate = builder.build();
|
|
1261
|
+
}
|
|
1262
|
+
else {
|
|
1263
|
+
this.criteria.failedListingDate = filterOrConfigurator;
|
|
1264
|
+
}
|
|
1265
|
+
return this;
|
|
1266
|
+
}
|
|
1267
|
+
soldDate(filterOrConfigurator) {
|
|
1268
|
+
if (typeof filterOrConfigurator === "function") {
|
|
1269
|
+
const builder = new DateRangeFilterBuilder();
|
|
1270
|
+
filterOrConfigurator(builder);
|
|
1271
|
+
this.criteria.soldDate = builder.build();
|
|
1272
|
+
}
|
|
1273
|
+
else {
|
|
1274
|
+
this.criteria.soldDate = filterOrConfigurator;
|
|
1275
|
+
}
|
|
1276
|
+
return this;
|
|
1277
|
+
}
|
|
1278
|
+
build() {
|
|
1279
|
+
return this.criteria;
|
|
1280
|
+
}
|
|
1281
|
+
}
|
|
1282
|
+
exports.ListingSearchCriteriaBuilder = ListingSearchCriteriaBuilder;
|
|
1283
|
+
/**
|
|
1284
|
+
* Builder for lot search criteria
|
|
1285
|
+
*/
|
|
1286
|
+
class LotSearchCriteriaBuilder {
|
|
1287
|
+
constructor() {
|
|
1288
|
+
this.criteria = {};
|
|
1289
|
+
}
|
|
1290
|
+
static from(criteria) {
|
|
1291
|
+
const builder = new LotSearchCriteriaBuilder();
|
|
1292
|
+
builder.criteria = { ...criteria };
|
|
1293
|
+
return builder;
|
|
1294
|
+
}
|
|
1295
|
+
lotSizeAcres(filterOrConfigurator) {
|
|
1296
|
+
if (typeof filterOrConfigurator === "function") {
|
|
1297
|
+
const builder = new NumericRangeFilterBuilder();
|
|
1298
|
+
filterOrConfigurator(builder);
|
|
1299
|
+
this.criteria.lotSizeAcres = builder.build();
|
|
1300
|
+
}
|
|
1301
|
+
else {
|
|
1302
|
+
this.criteria.lotSizeAcres = filterOrConfigurator;
|
|
1303
|
+
}
|
|
1304
|
+
return this;
|
|
1305
|
+
}
|
|
1306
|
+
lotDepthFeet(filterOrConfigurator) {
|
|
1307
|
+
if (typeof filterOrConfigurator === "function") {
|
|
1308
|
+
const builder = new NumericRangeFilterBuilder();
|
|
1309
|
+
filterOrConfigurator(builder);
|
|
1310
|
+
this.criteria.lotDepthFeet = builder.build();
|
|
1311
|
+
}
|
|
1312
|
+
else {
|
|
1313
|
+
this.criteria.lotDepthFeet = filterOrConfigurator;
|
|
1314
|
+
}
|
|
1315
|
+
return this;
|
|
1316
|
+
}
|
|
1317
|
+
lotFrontageFeet(filterOrConfigurator) {
|
|
1318
|
+
if (typeof filterOrConfigurator === "function") {
|
|
1319
|
+
const builder = new NumericRangeFilterBuilder();
|
|
1320
|
+
filterOrConfigurator(builder);
|
|
1321
|
+
this.criteria.lotFrontageFeet = builder.build();
|
|
1322
|
+
}
|
|
1323
|
+
else {
|
|
1324
|
+
this.criteria.lotFrontageFeet = filterOrConfigurator;
|
|
1325
|
+
}
|
|
1326
|
+
return this;
|
|
1327
|
+
}
|
|
1328
|
+
lotSizeSquareFeet(filterOrConfigurator) {
|
|
1329
|
+
if (typeof filterOrConfigurator === "function") {
|
|
1330
|
+
const builder = new NumericRangeFilterBuilder();
|
|
1331
|
+
filterOrConfigurator(builder);
|
|
1332
|
+
this.criteria.lotSizeSquareFeet = builder.build();
|
|
1333
|
+
}
|
|
1334
|
+
else {
|
|
1335
|
+
this.criteria.lotSizeSquareFeet = filterOrConfigurator;
|
|
1336
|
+
}
|
|
1337
|
+
return this;
|
|
1338
|
+
}
|
|
1339
|
+
zoningCode(filterOrConfigurator) {
|
|
1340
|
+
if (typeof filterOrConfigurator === "function") {
|
|
1341
|
+
const builder = new StringFilterBuilder();
|
|
1342
|
+
filterOrConfigurator(builder);
|
|
1343
|
+
this.criteria.zoningCode = builder.build();
|
|
1344
|
+
}
|
|
1345
|
+
else {
|
|
1346
|
+
this.criteria.zoningCode = filterOrConfigurator;
|
|
1347
|
+
}
|
|
1348
|
+
return this;
|
|
1349
|
+
}
|
|
1350
|
+
build() {
|
|
1351
|
+
return this.criteria;
|
|
1352
|
+
}
|
|
1353
|
+
}
|
|
1354
|
+
exports.LotSearchCriteriaBuilder = LotSearchCriteriaBuilder;
|
|
1355
|
+
/**
|
|
1356
|
+
* Builder for open lien search criteria
|
|
1357
|
+
*/
|
|
1358
|
+
class OpenLienSearchCriteriaBuilder {
|
|
1359
|
+
constructor() {
|
|
1360
|
+
this.criteria = {};
|
|
1361
|
+
}
|
|
1362
|
+
static from(criteria) {
|
|
1363
|
+
const builder = new OpenLienSearchCriteriaBuilder();
|
|
1364
|
+
builder.criteria = { ...criteria };
|
|
1365
|
+
return builder;
|
|
1366
|
+
}
|
|
1367
|
+
allLoanTypes(filter) {
|
|
1368
|
+
this.criteria.allLoanTypes = filter;
|
|
1369
|
+
return this;
|
|
1370
|
+
}
|
|
1371
|
+
juniorLoanTypes(filter) {
|
|
1372
|
+
this.criteria.juniorLoanTypes = filter;
|
|
1373
|
+
return this;
|
|
1374
|
+
}
|
|
1375
|
+
totalOpenLienCount(filter) {
|
|
1376
|
+
this.criteria.totalOpenLienCount = filter;
|
|
1377
|
+
return this;
|
|
1378
|
+
}
|
|
1379
|
+
totalOpenLienBalance(filter) {
|
|
1380
|
+
this.criteria.totalOpenLienBalance = filter;
|
|
1381
|
+
return this;
|
|
1382
|
+
}
|
|
1383
|
+
firstLoanLtv(filter) {
|
|
1384
|
+
this.criteria.firstLoanLtv = filter;
|
|
1385
|
+
return this;
|
|
1386
|
+
}
|
|
1387
|
+
firstLoanInterestRate(filter) {
|
|
1388
|
+
this.criteria.firstLoanInterestRate = filter;
|
|
1389
|
+
return this;
|
|
1390
|
+
}
|
|
1391
|
+
secondLoanInterestRate(filter) {
|
|
1392
|
+
this.criteria.secondLoanInterestRate = filter;
|
|
1393
|
+
return this;
|
|
1394
|
+
}
|
|
1395
|
+
thirdLoanInterestRate(filter) {
|
|
1396
|
+
this.criteria.thirdLoanInterestRate = filter;
|
|
1397
|
+
return this;
|
|
1398
|
+
}
|
|
1399
|
+
fourthLoanInterestRate(filter) {
|
|
1400
|
+
this.criteria.fourthLoanInterestRate = filter;
|
|
1401
|
+
return this;
|
|
1402
|
+
}
|
|
1403
|
+
firstLoanType(filter) {
|
|
1404
|
+
this.criteria.firstLoanType = filter;
|
|
1405
|
+
return this;
|
|
1406
|
+
}
|
|
1407
|
+
secondLoanType(filter) {
|
|
1408
|
+
this.criteria.secondLoanType = filter;
|
|
1409
|
+
return this;
|
|
1410
|
+
}
|
|
1411
|
+
thirdLoanType(filter) {
|
|
1412
|
+
this.criteria.thirdLoanType = filter;
|
|
1413
|
+
return this;
|
|
1414
|
+
}
|
|
1415
|
+
fourthLoanType(filter) {
|
|
1416
|
+
this.criteria.fourthLoanType = filter;
|
|
1417
|
+
return this;
|
|
1418
|
+
}
|
|
1419
|
+
firstLoanRecordingDate(filter) {
|
|
1420
|
+
this.criteria.firstLoanRecordingDate = filter;
|
|
1421
|
+
return this;
|
|
1422
|
+
}
|
|
1423
|
+
lastLoanRecordingDate(filter) {
|
|
1424
|
+
this.criteria.lastLoanRecordingDate = filter;
|
|
1425
|
+
return this;
|
|
1426
|
+
}
|
|
1427
|
+
build() {
|
|
1428
|
+
return this.criteria;
|
|
1429
|
+
}
|
|
1430
|
+
}
|
|
1431
|
+
exports.OpenLienSearchCriteriaBuilder = OpenLienSearchCriteriaBuilder;
|
|
1432
|
+
/**
|
|
1433
|
+
* Builder for owner search criteria
|
|
1434
|
+
*/
|
|
1435
|
+
class OwnerSearchCriteriaBuilder {
|
|
1436
|
+
constructor() {
|
|
1437
|
+
this.criteria = {};
|
|
1438
|
+
}
|
|
1439
|
+
static from(criteria) {
|
|
1440
|
+
const builder = new OwnerSearchCriteriaBuilder();
|
|
1441
|
+
builder.criteria = { ...criteria };
|
|
1442
|
+
return builder;
|
|
1443
|
+
}
|
|
1444
|
+
firstName(filter) {
|
|
1445
|
+
this.criteria.firstName = filter;
|
|
1446
|
+
return this;
|
|
1447
|
+
}
|
|
1448
|
+
lastName(filter) {
|
|
1449
|
+
this.criteria.lastName = filter;
|
|
1450
|
+
return this;
|
|
1451
|
+
}
|
|
1452
|
+
ownerOccupied(value) {
|
|
1453
|
+
this.criteria.ownerOccupied = { equals: value };
|
|
1454
|
+
return this;
|
|
1455
|
+
}
|
|
1456
|
+
mailingStreet(filter) {
|
|
1457
|
+
this.criteria.mailingStreet = filter;
|
|
1458
|
+
return this;
|
|
1459
|
+
}
|
|
1460
|
+
mailingCity(filter) {
|
|
1461
|
+
this.criteria.mailingCity = filter;
|
|
1462
|
+
return this;
|
|
1463
|
+
}
|
|
1464
|
+
mailingState(filter) {
|
|
1465
|
+
this.criteria.mailingState = filter;
|
|
1466
|
+
return this;
|
|
1467
|
+
}
|
|
1468
|
+
mailingZip(filter) {
|
|
1469
|
+
this.criteria.mailingZip = filter;
|
|
1470
|
+
return this;
|
|
1471
|
+
}
|
|
1472
|
+
ownerStatusType(filter) {
|
|
1473
|
+
this.criteria.ownerStatusType = filter;
|
|
1474
|
+
return this;
|
|
1475
|
+
}
|
|
1476
|
+
lengthOfResidenceMonths(filter) {
|
|
1477
|
+
this.criteria.lengthOfResidenceMonths = filter;
|
|
1478
|
+
return this;
|
|
1479
|
+
}
|
|
1480
|
+
lengthOfResidenceYears(filter) {
|
|
1481
|
+
this.criteria.lengthOfResidenceYears = filter;
|
|
1482
|
+
return this;
|
|
1483
|
+
}
|
|
1484
|
+
ownershipStartDate(filter) {
|
|
1485
|
+
this.criteria.ownershipStartDate = filter;
|
|
1486
|
+
return this;
|
|
1487
|
+
}
|
|
1488
|
+
mailingAddressHash(filter) {
|
|
1489
|
+
this.criteria.mailingAddressHash = filter;
|
|
1490
|
+
return this;
|
|
1491
|
+
}
|
|
1492
|
+
build() {
|
|
1493
|
+
return this.criteria;
|
|
1494
|
+
}
|
|
1495
|
+
}
|
|
1496
|
+
exports.OwnerSearchCriteriaBuilder = OwnerSearchCriteriaBuilder;
|
|
1497
|
+
/**
|
|
1498
|
+
* Builder for permit search criteria
|
|
1499
|
+
*/
|
|
1500
|
+
class PermitSearchCriteriaBuilder {
|
|
1501
|
+
constructor() {
|
|
1502
|
+
this.criteria = {};
|
|
1503
|
+
}
|
|
1504
|
+
static from(criteria) {
|
|
1505
|
+
const builder = new PermitSearchCriteriaBuilder();
|
|
1506
|
+
builder.criteria = { ...criteria };
|
|
1507
|
+
return builder;
|
|
1508
|
+
}
|
|
1509
|
+
permitCount(filter) {
|
|
1510
|
+
this.criteria.permitCount = filter;
|
|
1511
|
+
return this;
|
|
1512
|
+
}
|
|
1513
|
+
latestDate(filter) {
|
|
1514
|
+
this.criteria.latestDate = filter;
|
|
1515
|
+
return this;
|
|
1516
|
+
}
|
|
1517
|
+
earliestDate(filter) {
|
|
1518
|
+
this.criteria.earliestDate = filter;
|
|
1519
|
+
return this;
|
|
1520
|
+
}
|
|
1521
|
+
totalJobValue(filter) {
|
|
1522
|
+
this.criteria.totalJobValue = filter;
|
|
1523
|
+
return this;
|
|
1524
|
+
}
|
|
1525
|
+
allTags(filter) {
|
|
1526
|
+
this.criteria.allTags = filter;
|
|
1527
|
+
return this;
|
|
1528
|
+
}
|
|
1529
|
+
build() {
|
|
1530
|
+
return this.criteria;
|
|
1531
|
+
}
|
|
1532
|
+
}
|
|
1533
|
+
exports.PermitSearchCriteriaBuilder = PermitSearchCriteriaBuilder;
|
|
1534
|
+
/**
|
|
1535
|
+
* Builder for property owner profile search criteria
|
|
1536
|
+
*/
|
|
1537
|
+
class PropertyOwnerProfileSearchCriteriaBuilder {
|
|
1538
|
+
constructor() {
|
|
1539
|
+
this.criteria = {};
|
|
1540
|
+
}
|
|
1541
|
+
static from(criteria) {
|
|
1542
|
+
const builder = new PropertyOwnerProfileSearchCriteriaBuilder();
|
|
1543
|
+
builder.criteria = { ...criteria };
|
|
1544
|
+
return builder;
|
|
1545
|
+
}
|
|
1546
|
+
propertiesCount(filter) {
|
|
1547
|
+
this.criteria.propertiesCount = filter;
|
|
1548
|
+
return this;
|
|
1549
|
+
}
|
|
1550
|
+
propertiesTotalEquity(filter) {
|
|
1551
|
+
this.criteria.propertiesTotalEquity = filter;
|
|
1552
|
+
return this;
|
|
1553
|
+
}
|
|
1554
|
+
propertiesTotalEstimatedValue(filter) {
|
|
1555
|
+
this.criteria.propertiesTotalEstimatedValue = filter;
|
|
1556
|
+
return this;
|
|
1557
|
+
}
|
|
1558
|
+
mortgagesTotalBalance(filter) {
|
|
1559
|
+
this.criteria.mortgagesTotalBalance = filter;
|
|
1560
|
+
return this;
|
|
1561
|
+
}
|
|
1562
|
+
mortgagesCount(filter) {
|
|
1563
|
+
this.criteria.mortgagesCount = filter;
|
|
1564
|
+
return this;
|
|
1565
|
+
}
|
|
1566
|
+
mortgagesAverageBalance(filter) {
|
|
1567
|
+
this.criteria.mortgagesAverageBalance = filter;
|
|
1568
|
+
return this;
|
|
1569
|
+
}
|
|
1570
|
+
build() {
|
|
1571
|
+
return this.criteria;
|
|
1572
|
+
}
|
|
1573
|
+
}
|
|
1574
|
+
exports.PropertyOwnerProfileSearchCriteriaBuilder = PropertyOwnerProfileSearchCriteriaBuilder;
|
|
1575
|
+
/**
|
|
1576
|
+
* Builder for sale search criteria
|
|
1577
|
+
*/
|
|
1578
|
+
class SaleSearchCriteriaBuilder {
|
|
1579
|
+
constructor() {
|
|
1580
|
+
this.criteria = {};
|
|
1581
|
+
}
|
|
1582
|
+
static from(criteria) {
|
|
1583
|
+
const builder = new SaleSearchCriteriaBuilder();
|
|
1584
|
+
builder.criteria = { ...criteria };
|
|
1585
|
+
return builder;
|
|
1586
|
+
}
|
|
1587
|
+
lastSalePrice(filter) {
|
|
1588
|
+
this.criteria.lastSalePrice = filter;
|
|
1589
|
+
return this;
|
|
1590
|
+
}
|
|
1591
|
+
lastSaleDate(filter) {
|
|
1592
|
+
this.criteria.lastSaleDate = filter;
|
|
1593
|
+
return this;
|
|
1594
|
+
}
|
|
1595
|
+
lastSaleDocumentType(filter) {
|
|
1596
|
+
this.criteria.lastSaleDocumentType = filter;
|
|
1597
|
+
return this;
|
|
1598
|
+
}
|
|
1599
|
+
lastSalePricePerSquareFoot(filter) {
|
|
1600
|
+
this.criteria.lastSalePricePerSquareFoot = filter;
|
|
1601
|
+
return this;
|
|
1602
|
+
}
|
|
1603
|
+
flipLength(filter) {
|
|
1604
|
+
this.criteria.flipLength = filter;
|
|
1605
|
+
return this;
|
|
1606
|
+
}
|
|
1607
|
+
flipLengthCategory(filter) {
|
|
1608
|
+
this.criteria.flipLengthCategory = filter;
|
|
1609
|
+
return this;
|
|
1610
|
+
}
|
|
1611
|
+
flipProfit(filter) {
|
|
1612
|
+
this.criteria.flipProfit = filter;
|
|
1613
|
+
return this;
|
|
1614
|
+
}
|
|
1615
|
+
build() {
|
|
1616
|
+
return this.criteria;
|
|
1617
|
+
}
|
|
1618
|
+
}
|
|
1619
|
+
exports.SaleSearchCriteriaBuilder = SaleSearchCriteriaBuilder;
|
|
1620
|
+
/**
|
|
1621
|
+
* Builder for tax search criteria
|
|
1622
|
+
*/
|
|
1623
|
+
class TaxSearchCriteriaBuilder {
|
|
1624
|
+
constructor() {
|
|
1625
|
+
this.criteria = {};
|
|
1626
|
+
}
|
|
1627
|
+
static from(criteria) {
|
|
1628
|
+
const builder = new TaxSearchCriteriaBuilder();
|
|
1629
|
+
builder.criteria = { ...criteria };
|
|
1630
|
+
return builder;
|
|
1631
|
+
}
|
|
1632
|
+
taxDelinquentYear(filter) {
|
|
1633
|
+
this.criteria.taxDelinquentYear = filter;
|
|
1634
|
+
return this;
|
|
1635
|
+
}
|
|
1636
|
+
build() {
|
|
1637
|
+
return this.criteria;
|
|
1638
|
+
}
|
|
1639
|
+
}
|
|
1640
|
+
exports.TaxSearchCriteriaBuilder = TaxSearchCriteriaBuilder;
|
|
1641
|
+
/**
|
|
1642
|
+
* Builder for valuation search criteria
|
|
1643
|
+
*/
|
|
1644
|
+
class ValuationSearchCriteriaBuilder {
|
|
1645
|
+
constructor() {
|
|
1646
|
+
this.criteria = {};
|
|
1647
|
+
}
|
|
1648
|
+
static from(criteria) {
|
|
1649
|
+
const builder = new ValuationSearchCriteriaBuilder();
|
|
1650
|
+
builder.criteria = { ...criteria };
|
|
1651
|
+
return builder;
|
|
1652
|
+
}
|
|
1653
|
+
estimatedValue(filter) {
|
|
1654
|
+
this.criteria.estimatedValue = filter;
|
|
1655
|
+
return this;
|
|
1656
|
+
}
|
|
1657
|
+
ltv(filter) {
|
|
1658
|
+
this.criteria.ltv = filter;
|
|
1659
|
+
return this;
|
|
1660
|
+
}
|
|
1661
|
+
equityPercent(filter) {
|
|
1662
|
+
this.criteria.equityPercent = filter;
|
|
1663
|
+
return this;
|
|
1664
|
+
}
|
|
1665
|
+
build() {
|
|
1666
|
+
return this.criteria;
|
|
1667
|
+
}
|
|
1668
|
+
}
|
|
1669
|
+
exports.ValuationSearchCriteriaBuilder = ValuationSearchCriteriaBuilder;
|
|
1670
|
+
/**
|
|
1671
|
+
* Builder for OR search criteria
|
|
1672
|
+
*/
|
|
1673
|
+
class OrSearchCriteriaBuilder {
|
|
1674
|
+
constructor() {
|
|
1675
|
+
this.criteria = {};
|
|
1676
|
+
}
|
|
1677
|
+
static from(criteria) {
|
|
1678
|
+
const builder = new OrSearchCriteriaBuilder();
|
|
1679
|
+
builder.criteria = { ...criteria };
|
|
1680
|
+
return builder;
|
|
1681
|
+
}
|
|
1682
|
+
listing() {
|
|
1683
|
+
return {
|
|
1684
|
+
status: (filter) => {
|
|
1685
|
+
if (!this.criteria.listing) {
|
|
1686
|
+
this.criteria.listing = {};
|
|
1687
|
+
}
|
|
1688
|
+
this.criteria.listing.status = filter;
|
|
1689
|
+
return this.criteria.listing.status;
|
|
1690
|
+
},
|
|
1691
|
+
};
|
|
1692
|
+
}
|
|
1693
|
+
sale() {
|
|
1694
|
+
return {
|
|
1695
|
+
lastSaleDate: (filter) => {
|
|
1696
|
+
if (!this.criteria.sale) {
|
|
1697
|
+
this.criteria.sale = {};
|
|
1698
|
+
}
|
|
1699
|
+
this.criteria.sale.lastSaleDate = filter;
|
|
1700
|
+
return this.criteria.sale.lastSaleDate;
|
|
1701
|
+
},
|
|
1702
|
+
};
|
|
1703
|
+
}
|
|
1704
|
+
build() {
|
|
1705
|
+
return this.criteria;
|
|
1706
|
+
}
|
|
1707
|
+
}
|
|
1708
|
+
exports.OrSearchCriteriaBuilder = OrSearchCriteriaBuilder;
|
|
1709
|
+
/**
|
|
1710
|
+
* Main builder for search criteria
|
|
1711
|
+
*
|
|
1712
|
+
* Note: The API requires a query field (returns 400 without it), even when
|
|
1713
|
+
* address filters are provided. Query appears to be a geographic scope string
|
|
1714
|
+
* (e.g., "US", "AZ", "Maricopa County, AZ"). You can set it via constructor
|
|
1715
|
+
* or using the query() method.
|
|
1716
|
+
*/
|
|
1717
|
+
class SearchCriteriaBuilder extends BaseBuilder {
|
|
1718
|
+
/**
|
|
1719
|
+
* Creates a new SearchCriteriaBuilder
|
|
1720
|
+
*
|
|
1721
|
+
* @param query - Geographic scope for the search (e.g., "US", "AZ", "Maricopa County, AZ").
|
|
1722
|
+
* This is required by the API even when address filters are provided.
|
|
1723
|
+
* The query defines the geographic boundary/scope for property searches.
|
|
1724
|
+
*/
|
|
1725
|
+
constructor(query) {
|
|
1726
|
+
super();
|
|
1727
|
+
this.criteria = {};
|
|
1728
|
+
this.criteria.query = query;
|
|
1729
|
+
}
|
|
1730
|
+
static from(criteria) {
|
|
1731
|
+
const builder = new SearchCriteriaBuilder(criteria.query);
|
|
1732
|
+
builder.criteria = { ...criteria };
|
|
1733
|
+
return builder;
|
|
1734
|
+
}
|
|
1735
|
+
/**
|
|
1736
|
+
* Sets the geographic scope for the search
|
|
1737
|
+
*
|
|
1738
|
+
* @param value - Geographic scope string (e.g., "US", "AZ", "Maricopa County, AZ").
|
|
1739
|
+
* This defines the geographic boundary/scope for property searches.
|
|
1740
|
+
* Required by the API even when address filters are provided.
|
|
1741
|
+
* @returns This builder instance for method chaining
|
|
1742
|
+
*/
|
|
1743
|
+
query(value) {
|
|
1744
|
+
this.criteria.query = value;
|
|
1745
|
+
return this;
|
|
1746
|
+
}
|
|
1747
|
+
quickList(value) {
|
|
1748
|
+
this.criteria.quickList = value;
|
|
1749
|
+
return this;
|
|
1750
|
+
}
|
|
1751
|
+
quickLists(values) {
|
|
1752
|
+
this.criteria.quickLists = values;
|
|
1753
|
+
return this;
|
|
1754
|
+
}
|
|
1755
|
+
orQuickLists(values) {
|
|
1756
|
+
this.criteria.orQuickLists = values;
|
|
1757
|
+
return this;
|
|
1758
|
+
}
|
|
1759
|
+
address(criteriaOrConfigurator) {
|
|
1760
|
+
return this.setPropertyWithBuilderClass("address", criteriaOrConfigurator, AddressSearchCriteriaBuilder);
|
|
1761
|
+
}
|
|
1762
|
+
assessment(criteriaOrConfigurator) {
|
|
1763
|
+
if (typeof criteriaOrConfigurator === "function") {
|
|
1764
|
+
const builder = new AssessmentSearchCriteriaBuilder();
|
|
1765
|
+
criteriaOrConfigurator(builder);
|
|
1766
|
+
this.criteria.assessment = builder.build();
|
|
1767
|
+
}
|
|
1768
|
+
else {
|
|
1769
|
+
this.criteria.assessment = criteriaOrConfigurator;
|
|
1770
|
+
}
|
|
1771
|
+
return this;
|
|
1772
|
+
}
|
|
1773
|
+
building(criteriaOrConfigurator) {
|
|
1774
|
+
if (typeof criteriaOrConfigurator === "function") {
|
|
1775
|
+
const builder = new BuildingSearchCriteriaBuilder();
|
|
1776
|
+
criteriaOrConfigurator(builder);
|
|
1777
|
+
this.criteria.building = builder.build();
|
|
1778
|
+
}
|
|
1779
|
+
else {
|
|
1780
|
+
this.criteria.building = criteriaOrConfigurator;
|
|
1781
|
+
}
|
|
1782
|
+
return this;
|
|
1783
|
+
}
|
|
1784
|
+
compAddress(criteriaOrConfigurator) {
|
|
1785
|
+
if (typeof criteriaOrConfigurator === "function") {
|
|
1786
|
+
const builder = new CompAddressSearchCriteriaBuilder();
|
|
1787
|
+
criteriaOrConfigurator(builder);
|
|
1788
|
+
this.criteria.compAddress = builder.build();
|
|
1789
|
+
}
|
|
1790
|
+
else {
|
|
1791
|
+
this.criteria.compAddress = criteriaOrConfigurator;
|
|
1792
|
+
}
|
|
1793
|
+
return this;
|
|
1794
|
+
}
|
|
1795
|
+
demographics(criteriaOrConfigurator) {
|
|
1796
|
+
if (typeof criteriaOrConfigurator === "function") {
|
|
1797
|
+
const builder = new DemographicsSearchCriteriaBuilder();
|
|
1798
|
+
criteriaOrConfigurator(builder);
|
|
1799
|
+
this.criteria.demographics = builder.build();
|
|
1800
|
+
}
|
|
1801
|
+
else {
|
|
1802
|
+
this.criteria.demographics = criteriaOrConfigurator;
|
|
1803
|
+
}
|
|
1804
|
+
return this;
|
|
1805
|
+
}
|
|
1806
|
+
foreclosure(criteriaOrConfigurator) {
|
|
1807
|
+
if (typeof criteriaOrConfigurator === "function") {
|
|
1808
|
+
const builder = new ForeclosureSearchCriteriaBuilder();
|
|
1809
|
+
criteriaOrConfigurator(builder);
|
|
1810
|
+
this.criteria.foreclosure = builder.build();
|
|
1811
|
+
}
|
|
1812
|
+
else {
|
|
1813
|
+
this.criteria.foreclosure = criteriaOrConfigurator;
|
|
1814
|
+
}
|
|
1815
|
+
return this;
|
|
1816
|
+
}
|
|
1817
|
+
general(criteriaOrConfigurator) {
|
|
1818
|
+
if (typeof criteriaOrConfigurator === "function") {
|
|
1819
|
+
const builder = new GeneralSearchCriteriaBuilder();
|
|
1820
|
+
criteriaOrConfigurator(builder);
|
|
1821
|
+
this.criteria.general = builder.build();
|
|
1822
|
+
}
|
|
1823
|
+
else {
|
|
1824
|
+
this.criteria.general = criteriaOrConfigurator;
|
|
1825
|
+
}
|
|
1826
|
+
return this;
|
|
1827
|
+
}
|
|
1828
|
+
ids(criteriaOrConfigurator) {
|
|
1829
|
+
if (typeof criteriaOrConfigurator === "function") {
|
|
1830
|
+
const builder = new IdsSearchCriteriaBuilder();
|
|
1831
|
+
criteriaOrConfigurator(builder);
|
|
1832
|
+
this.criteria.ids = builder.build();
|
|
1833
|
+
}
|
|
1834
|
+
else {
|
|
1835
|
+
this.criteria.ids = criteriaOrConfigurator;
|
|
1836
|
+
}
|
|
1837
|
+
return this;
|
|
1838
|
+
}
|
|
1839
|
+
intel(criteriaOrConfigurator) {
|
|
1840
|
+
if (typeof criteriaOrConfigurator === "function") {
|
|
1841
|
+
const builder = new IntelSearchCriteriaBuilder();
|
|
1842
|
+
criteriaOrConfigurator(builder);
|
|
1843
|
+
this.criteria.intel = builder.build();
|
|
1844
|
+
}
|
|
1845
|
+
else {
|
|
1846
|
+
this.criteria.intel = criteriaOrConfigurator;
|
|
1847
|
+
}
|
|
1848
|
+
return this;
|
|
1849
|
+
}
|
|
1850
|
+
involuntaryLien(criteriaOrConfigurator) {
|
|
1851
|
+
if (typeof criteriaOrConfigurator === "function") {
|
|
1852
|
+
const builder = new InvoluntaryLienSearchCriteriaBuilder();
|
|
1853
|
+
criteriaOrConfigurator(builder);
|
|
1854
|
+
this.criteria.involuntaryLien = builder.build();
|
|
1855
|
+
}
|
|
1856
|
+
else {
|
|
1857
|
+
this.criteria.involuntaryLien = criteriaOrConfigurator;
|
|
1858
|
+
}
|
|
1859
|
+
return this;
|
|
1860
|
+
}
|
|
1861
|
+
legal(criteriaOrConfigurator) {
|
|
1862
|
+
if (typeof criteriaOrConfigurator === "function") {
|
|
1863
|
+
const builder = new LegalSearchCriteriaBuilder();
|
|
1864
|
+
criteriaOrConfigurator(builder);
|
|
1865
|
+
this.criteria.legal = builder.build();
|
|
1866
|
+
}
|
|
1867
|
+
else {
|
|
1868
|
+
this.criteria.legal = criteriaOrConfigurator;
|
|
1869
|
+
}
|
|
1870
|
+
return this;
|
|
1871
|
+
}
|
|
1872
|
+
listing(criteriaOrConfigurator) {
|
|
1873
|
+
if (typeof criteriaOrConfigurator === "function") {
|
|
1874
|
+
const builder = new ListingSearchCriteriaBuilder();
|
|
1875
|
+
criteriaOrConfigurator(builder);
|
|
1876
|
+
this.criteria.listing = builder.build();
|
|
1877
|
+
}
|
|
1878
|
+
else {
|
|
1879
|
+
this.criteria.listing = criteriaOrConfigurator;
|
|
1880
|
+
}
|
|
1881
|
+
return this;
|
|
1882
|
+
}
|
|
1883
|
+
lot(criteriaOrConfigurator) {
|
|
1884
|
+
if (typeof criteriaOrConfigurator === "function") {
|
|
1885
|
+
const builder = new LotSearchCriteriaBuilder();
|
|
1886
|
+
criteriaOrConfigurator(builder);
|
|
1887
|
+
this.criteria.lot = builder.build();
|
|
1888
|
+
}
|
|
1889
|
+
else {
|
|
1890
|
+
this.criteria.lot = criteriaOrConfigurator;
|
|
1891
|
+
}
|
|
1892
|
+
return this;
|
|
1893
|
+
}
|
|
1894
|
+
openLien(criteriaOrConfigurator) {
|
|
1895
|
+
if (typeof criteriaOrConfigurator === "function") {
|
|
1896
|
+
const builder = new OpenLienSearchCriteriaBuilder();
|
|
1897
|
+
criteriaOrConfigurator(builder);
|
|
1898
|
+
this.criteria.openLien = builder.build();
|
|
1899
|
+
}
|
|
1900
|
+
else {
|
|
1901
|
+
this.criteria.openLien = criteriaOrConfigurator;
|
|
1902
|
+
}
|
|
1903
|
+
return this;
|
|
1904
|
+
}
|
|
1905
|
+
owner(criteriaOrConfigurator) {
|
|
1906
|
+
if (typeof criteriaOrConfigurator === "function") {
|
|
1907
|
+
const builder = new OwnerSearchCriteriaBuilder();
|
|
1908
|
+
criteriaOrConfigurator(builder);
|
|
1909
|
+
this.criteria.owner = builder.build();
|
|
1910
|
+
}
|
|
1911
|
+
else {
|
|
1912
|
+
this.criteria.owner = criteriaOrConfigurator;
|
|
1913
|
+
}
|
|
1914
|
+
return this;
|
|
1915
|
+
}
|
|
1916
|
+
permit(criteriaOrConfigurator) {
|
|
1917
|
+
if (typeof criteriaOrConfigurator === "function") {
|
|
1918
|
+
const builder = new PermitSearchCriteriaBuilder();
|
|
1919
|
+
criteriaOrConfigurator(builder);
|
|
1920
|
+
this.criteria.permit = builder.build();
|
|
1921
|
+
}
|
|
1922
|
+
else {
|
|
1923
|
+
this.criteria.permit = criteriaOrConfigurator;
|
|
1924
|
+
}
|
|
1925
|
+
return this;
|
|
1926
|
+
}
|
|
1927
|
+
propertyOwnerProfile(criteriaOrConfigurator) {
|
|
1928
|
+
if (typeof criteriaOrConfigurator === "function") {
|
|
1929
|
+
const builder = new PropertyOwnerProfileSearchCriteriaBuilder();
|
|
1930
|
+
criteriaOrConfigurator(builder);
|
|
1931
|
+
this.criteria.propertyOwnerProfile = builder.build();
|
|
1932
|
+
}
|
|
1933
|
+
else {
|
|
1934
|
+
this.criteria.propertyOwnerProfile = criteriaOrConfigurator;
|
|
1935
|
+
}
|
|
1936
|
+
return this;
|
|
1937
|
+
}
|
|
1938
|
+
sale(criteriaOrConfigurator) {
|
|
1939
|
+
if (typeof criteriaOrConfigurator === "function") {
|
|
1940
|
+
const builder = new SaleSearchCriteriaBuilder();
|
|
1941
|
+
criteriaOrConfigurator(builder);
|
|
1942
|
+
this.criteria.sale = builder.build();
|
|
1943
|
+
}
|
|
1944
|
+
else {
|
|
1945
|
+
this.criteria.sale = criteriaOrConfigurator;
|
|
1946
|
+
}
|
|
1947
|
+
return this;
|
|
1948
|
+
}
|
|
1949
|
+
tax(criteriaOrConfigurator) {
|
|
1950
|
+
if (typeof criteriaOrConfigurator === "function") {
|
|
1951
|
+
const builder = new TaxSearchCriteriaBuilder();
|
|
1952
|
+
criteriaOrConfigurator(builder);
|
|
1953
|
+
this.criteria.tax = builder.build();
|
|
1954
|
+
}
|
|
1955
|
+
else {
|
|
1956
|
+
this.criteria.tax = criteriaOrConfigurator;
|
|
1957
|
+
}
|
|
1958
|
+
return this;
|
|
1959
|
+
}
|
|
1960
|
+
valuation(criteriaOrConfigurator) {
|
|
1961
|
+
if (typeof criteriaOrConfigurator === "function") {
|
|
1962
|
+
const builder = new ValuationSearchCriteriaBuilder();
|
|
1963
|
+
criteriaOrConfigurator(builder);
|
|
1964
|
+
this.criteria.valuation = builder.build();
|
|
1965
|
+
}
|
|
1966
|
+
else {
|
|
1967
|
+
this.criteria.valuation = criteriaOrConfigurator;
|
|
1968
|
+
}
|
|
1969
|
+
return this;
|
|
1970
|
+
}
|
|
1971
|
+
or(criteria) {
|
|
1972
|
+
this.criteria.or = criteria;
|
|
1973
|
+
return this;
|
|
1974
|
+
}
|
|
1975
|
+
}
|
|
1976
|
+
exports.SearchCriteriaBuilder = SearchCriteriaBuilder;
|
|
1977
|
+
/**
|
|
1978
|
+
* Builder for delivery configuration
|
|
1979
|
+
*/
|
|
1980
|
+
class DeliveryConfigBuilder {
|
|
1981
|
+
constructor() {
|
|
1982
|
+
this.config = {};
|
|
1983
|
+
}
|
|
1984
|
+
static from(config) {
|
|
1985
|
+
const builder = new DeliveryConfigBuilder();
|
|
1986
|
+
builder.config = { ...config };
|
|
1987
|
+
return builder;
|
|
1988
|
+
}
|
|
1989
|
+
webhook(url, headers, errorUrl) {
|
|
1990
|
+
this.config.type = "webhook";
|
|
1991
|
+
this.config.url = url;
|
|
1992
|
+
if (errorUrl) {
|
|
1993
|
+
this.config.errorUrl = errorUrl;
|
|
1994
|
+
}
|
|
1995
|
+
if (headers) {
|
|
1996
|
+
this.config.headers = headers;
|
|
1997
|
+
}
|
|
1998
|
+
return this;
|
|
1999
|
+
}
|
|
2000
|
+
kinesis(streamName, region, iamAccessKeyId, iamSecretAccessKey) {
|
|
2001
|
+
this.config.type = "kinesis";
|
|
2002
|
+
this.config.streamName = streamName;
|
|
2003
|
+
this.config.region = region;
|
|
2004
|
+
this.config.iamAccessKeyId = iamAccessKeyId;
|
|
2005
|
+
this.config.iamSecretAccessKey = iamSecretAccessKey;
|
|
2006
|
+
return this;
|
|
2007
|
+
}
|
|
2008
|
+
build() {
|
|
2009
|
+
if (!this.config.type) {
|
|
2010
|
+
throw new Error("Delivery type (webhook or kinesis) is required");
|
|
2011
|
+
}
|
|
2012
|
+
if (this.config.type === "webhook" && !this.config.url) {
|
|
2013
|
+
throw new Error("URL is required for webhook delivery");
|
|
2014
|
+
}
|
|
2015
|
+
if (this.config.type === "kinesis") {
|
|
2016
|
+
if (!this.config.streamName ||
|
|
2017
|
+
!this.config.region ||
|
|
2018
|
+
!this.config.iamAccessKeyId ||
|
|
2019
|
+
!this.config.iamSecretAccessKey) {
|
|
2020
|
+
throw new Error("Stream name, region, IAM access key ID, and secret access key are required for Kinesis delivery");
|
|
2021
|
+
}
|
|
2022
|
+
}
|
|
2023
|
+
return this.config;
|
|
2024
|
+
}
|
|
2025
|
+
}
|
|
2026
|
+
exports.DeliveryConfigBuilder = DeliveryConfigBuilder;
|
|
2027
|
+
/**
|
|
2028
|
+
* Main builder for property subscription requests
|
|
2029
|
+
*/
|
|
2030
|
+
class PropertySubscriptionBuilder extends BaseBuilder {
|
|
2031
|
+
static from(request) {
|
|
2032
|
+
const builder = new PropertySubscriptionBuilder();
|
|
2033
|
+
builder.searchCriteria(request.searchCriteria);
|
|
2034
|
+
builder.deliveryConfig(request.deliveryConfig);
|
|
2035
|
+
return builder;
|
|
2036
|
+
}
|
|
2037
|
+
searchCriteria(criteriaOrConfigurator) {
|
|
2038
|
+
if (typeof criteriaOrConfigurator === "function") {
|
|
2039
|
+
const builder = new SearchCriteriaBuilder("");
|
|
2040
|
+
criteriaOrConfigurator(builder);
|
|
2041
|
+
this.criteria.searchCriteria = builder.build();
|
|
2042
|
+
this.builders.searchCriteria = undefined;
|
|
2043
|
+
}
|
|
2044
|
+
else {
|
|
2045
|
+
this.criteria.searchCriteria = criteriaOrConfigurator;
|
|
2046
|
+
this.builders.searchCriteria = undefined;
|
|
2047
|
+
}
|
|
2048
|
+
return this;
|
|
2049
|
+
}
|
|
2050
|
+
deliveryConfig(configOrConfigurator) {
|
|
2051
|
+
if (typeof configOrConfigurator === "function") {
|
|
2052
|
+
const builder = new DeliveryConfigBuilder();
|
|
2053
|
+
configOrConfigurator(builder);
|
|
2054
|
+
this.criteria.deliveryConfig = builder.build();
|
|
2055
|
+
this.builders.deliveryConfig = undefined;
|
|
2056
|
+
}
|
|
2057
|
+
else {
|
|
2058
|
+
this.criteria.deliveryConfig = configOrConfigurator;
|
|
2059
|
+
this.builders.deliveryConfig = undefined;
|
|
2060
|
+
}
|
|
2061
|
+
return this;
|
|
2062
|
+
}
|
|
2063
|
+
build() {
|
|
2064
|
+
if (!this.criteria.searchCriteria) {
|
|
2065
|
+
throw new Error("Search criteria is required");
|
|
2066
|
+
}
|
|
2067
|
+
if (!this.criteria.deliveryConfig) {
|
|
2068
|
+
throw new Error("Delivery configuration is required");
|
|
2069
|
+
}
|
|
2070
|
+
return {
|
|
2071
|
+
searchCriteria: this.criteria.searchCriteria,
|
|
2072
|
+
deliveryConfig: this.criteria.deliveryConfig,
|
|
2073
|
+
};
|
|
2074
|
+
}
|
|
2075
|
+
}
|
|
2076
|
+
exports.PropertySubscriptionBuilder = PropertySubscriptionBuilder;
|
|
2077
|
+
/**
|
|
2078
|
+
* Builder for property lookup request items
|
|
2079
|
+
*/
|
|
2080
|
+
class PropertyLookupRequestItemBuilder {
|
|
2081
|
+
constructor() {
|
|
2082
|
+
this.item = {};
|
|
2083
|
+
}
|
|
2084
|
+
static from(item) {
|
|
2085
|
+
const builder = new PropertyLookupRequestItemBuilder();
|
|
2086
|
+
builder.item = { ...item };
|
|
2087
|
+
return builder;
|
|
2088
|
+
}
|
|
2089
|
+
address(address) {
|
|
2090
|
+
this.item.address = address;
|
|
2091
|
+
return this;
|
|
2092
|
+
}
|
|
2093
|
+
propertyId(propertyId) {
|
|
2094
|
+
this.item.propertyId = propertyId;
|
|
2095
|
+
return this;
|
|
2096
|
+
}
|
|
2097
|
+
hash(hash) {
|
|
2098
|
+
this.item.hash = hash;
|
|
2099
|
+
return this;
|
|
2100
|
+
}
|
|
2101
|
+
apn(apn) {
|
|
2102
|
+
this.item.apn = apn;
|
|
2103
|
+
return this;
|
|
2104
|
+
}
|
|
2105
|
+
countyFipsCode(countyFipsCode) {
|
|
2106
|
+
this.item.countyFipsCode = countyFipsCode;
|
|
2107
|
+
return this;
|
|
2108
|
+
}
|
|
2109
|
+
requestId(requestId) {
|
|
2110
|
+
this.item.requestId = requestId;
|
|
2111
|
+
return this;
|
|
2112
|
+
}
|
|
2113
|
+
build() {
|
|
2114
|
+
return this.item;
|
|
2115
|
+
}
|
|
2116
|
+
}
|
|
2117
|
+
exports.PropertyLookupRequestItemBuilder = PropertyLookupRequestItemBuilder;
|
|
2118
|
+
/**
|
|
2119
|
+
* Builder for property lookup options
|
|
2120
|
+
* PropertyLookupOptions has 40+ fields, so a builder provides a cleaner API
|
|
2121
|
+
*/
|
|
2122
|
+
class PropertyLookupOptionsBuilder {
|
|
2123
|
+
constructor() {
|
|
2124
|
+
this.options = {};
|
|
2125
|
+
}
|
|
2126
|
+
static from(options) {
|
|
2127
|
+
const builder = new PropertyLookupOptionsBuilder();
|
|
2128
|
+
builder.options = { ...options };
|
|
2129
|
+
return builder;
|
|
2130
|
+
}
|
|
2131
|
+
pagination(skip, take) {
|
|
2132
|
+
this.options.skip = skip;
|
|
2133
|
+
this.options.take = take;
|
|
2134
|
+
return this;
|
|
2135
|
+
}
|
|
2136
|
+
skip(skip) {
|
|
2137
|
+
this.options.skip = skip;
|
|
2138
|
+
return this;
|
|
2139
|
+
}
|
|
2140
|
+
take(take) {
|
|
2141
|
+
this.options.take = take;
|
|
2142
|
+
return this;
|
|
2143
|
+
}
|
|
2144
|
+
showRequests(show) {
|
|
2145
|
+
this.options.showRequests = show;
|
|
2146
|
+
return this;
|
|
2147
|
+
}
|
|
2148
|
+
areaPolygon(show) {
|
|
2149
|
+
this.options.areaPolygon = show;
|
|
2150
|
+
return this;
|
|
2151
|
+
}
|
|
2152
|
+
quicklistCounts(show) {
|
|
2153
|
+
this.options.quicklistCounts = show;
|
|
2154
|
+
return this;
|
|
2155
|
+
}
|
|
2156
|
+
distance(miles, yards, feet, kilometers, meters) {
|
|
2157
|
+
this.options.useDistance = true;
|
|
2158
|
+
if (miles !== undefined)
|
|
2159
|
+
this.options.distanceMiles = miles;
|
|
2160
|
+
if (yards !== undefined)
|
|
2161
|
+
this.options.distanceYards = yards;
|
|
2162
|
+
if (feet !== undefined)
|
|
2163
|
+
this.options.distanceFeet = feet;
|
|
2164
|
+
if (kilometers !== undefined)
|
|
2165
|
+
this.options.distanceKilometers = kilometers;
|
|
2166
|
+
if (meters !== undefined)
|
|
2167
|
+
this.options.distanceMeters = meters;
|
|
2168
|
+
return this;
|
|
2169
|
+
}
|
|
2170
|
+
boundingBox(nw, se) {
|
|
2171
|
+
this.options.useBoundingBox = true;
|
|
2172
|
+
this.options.boundingBoxNw = nw;
|
|
2173
|
+
this.options.boundingBoxSe = se;
|
|
2174
|
+
return this;
|
|
2175
|
+
}
|
|
2176
|
+
bedrooms(min, max) {
|
|
2177
|
+
this.options.useBedrooms = true;
|
|
2178
|
+
if (min !== undefined)
|
|
2179
|
+
this.options.minBedrooms = min;
|
|
2180
|
+
if (max !== undefined)
|
|
2181
|
+
this.options.maxBedrooms = max;
|
|
2182
|
+
return this;
|
|
2183
|
+
}
|
|
2184
|
+
bathrooms(min, max) {
|
|
2185
|
+
this.options.useBathrooms = true;
|
|
2186
|
+
if (min !== undefined)
|
|
2187
|
+
this.options.minBathrooms = min;
|
|
2188
|
+
if (max !== undefined)
|
|
2189
|
+
this.options.maxBathrooms = max;
|
|
2190
|
+
return this;
|
|
2191
|
+
}
|
|
2192
|
+
stories(min, max) {
|
|
2193
|
+
this.options.useStories = true;
|
|
2194
|
+
if (min !== undefined)
|
|
2195
|
+
this.options.minStories = min;
|
|
2196
|
+
if (max !== undefined)
|
|
2197
|
+
this.options.maxStories = max;
|
|
2198
|
+
return this;
|
|
2199
|
+
}
|
|
2200
|
+
area(minPercent, maxPercent) {
|
|
2201
|
+
this.options.useArea = true;
|
|
2202
|
+
if (minPercent !== undefined)
|
|
2203
|
+
this.options.minAreaPercent = minPercent;
|
|
2204
|
+
if (maxPercent !== undefined)
|
|
2205
|
+
this.options.maxAreaPercent = maxPercent;
|
|
2206
|
+
return this;
|
|
2207
|
+
}
|
|
2208
|
+
yearBuilt(min, max) {
|
|
2209
|
+
this.options.useYearBuilt = true;
|
|
2210
|
+
if (min !== undefined)
|
|
2211
|
+
this.options.minYearBuilt = min;
|
|
2212
|
+
if (max !== undefined)
|
|
2213
|
+
this.options.maxYearBuilt = max;
|
|
2214
|
+
return this;
|
|
2215
|
+
}
|
|
2216
|
+
lotSize(minPercent, maxPercent) {
|
|
2217
|
+
this.options.useLotSize = true;
|
|
2218
|
+
if (minPercent !== undefined)
|
|
2219
|
+
this.options.minLotSizePercent = minPercent;
|
|
2220
|
+
if (maxPercent !== undefined)
|
|
2221
|
+
this.options.maxLotSizePercent = maxPercent;
|
|
2222
|
+
return this;
|
|
2223
|
+
}
|
|
2224
|
+
skipTrace(enabled) {
|
|
2225
|
+
this.options.skipTrace = enabled;
|
|
2226
|
+
return this;
|
|
2227
|
+
}
|
|
2228
|
+
aggregateLoanTypes(enabled) {
|
|
2229
|
+
this.options.aggregateLoanTypes = enabled;
|
|
2230
|
+
return this;
|
|
2231
|
+
}
|
|
2232
|
+
images(enabled) {
|
|
2233
|
+
this.options.images = enabled;
|
|
2234
|
+
return this;
|
|
2235
|
+
}
|
|
2236
|
+
dateFormat(format) {
|
|
2237
|
+
this.options.dateFormat = format;
|
|
2238
|
+
return this;
|
|
2239
|
+
}
|
|
2240
|
+
sort(field, order, sessionId) {
|
|
2241
|
+
this.options.sort = { field, order, sessionId };
|
|
2242
|
+
return this;
|
|
2243
|
+
}
|
|
2244
|
+
useSubdivision(enabled) {
|
|
2245
|
+
this.options.useSubdivision = enabled;
|
|
2246
|
+
return this;
|
|
2247
|
+
}
|
|
2248
|
+
build() {
|
|
2249
|
+
return this.options;
|
|
2250
|
+
}
|
|
2251
|
+
}
|
|
2252
|
+
exports.PropertyLookupOptionsBuilder = PropertyLookupOptionsBuilder;
|
|
2253
|
+
/**
|
|
2254
|
+
* Builder for async property lookup options
|
|
2255
|
+
* Extends PropertyLookupOptionsBuilder with async-specific methods like webhook
|
|
2256
|
+
*/
|
|
2257
|
+
class AsyncPropertyLookupOptionsBuilder extends PropertyLookupOptionsBuilder {
|
|
2258
|
+
static from(options) {
|
|
2259
|
+
const builder = new AsyncPropertyLookupOptionsBuilder();
|
|
2260
|
+
builder.options = { ...options };
|
|
2261
|
+
return builder;
|
|
2262
|
+
}
|
|
2263
|
+
webhook(url, errorUrl) {
|
|
2264
|
+
this.options.webhookUrl = url;
|
|
2265
|
+
if (errorUrl) {
|
|
2266
|
+
this.options.errorWebhookUrl = errorUrl;
|
|
2267
|
+
}
|
|
2268
|
+
return this;
|
|
2269
|
+
}
|
|
2270
|
+
}
|
|
2271
|
+
exports.AsyncPropertyLookupOptionsBuilder = AsyncPropertyLookupOptionsBuilder;
|
|
2272
|
+
/**
|
|
2273
|
+
* Builder for property lookup requests
|
|
2274
|
+
*/
|
|
2275
|
+
class PropertyLookupRequestBuilder extends BaseBuilder {
|
|
2276
|
+
constructor() {
|
|
2277
|
+
super(...arguments);
|
|
2278
|
+
this.requestItems = [];
|
|
2279
|
+
}
|
|
2280
|
+
static from(request) {
|
|
2281
|
+
const builder = new PropertyLookupRequestBuilder();
|
|
2282
|
+
builder.requestItems = [...request.requests];
|
|
2283
|
+
if (request.options) {
|
|
2284
|
+
builder.options(request.options);
|
|
2285
|
+
}
|
|
2286
|
+
return builder;
|
|
2287
|
+
}
|
|
2288
|
+
items(items) {
|
|
2289
|
+
this.requestItems = items;
|
|
2290
|
+
return this;
|
|
2291
|
+
}
|
|
2292
|
+
addItem(item) {
|
|
2293
|
+
this.requestItems.push(item);
|
|
2294
|
+
return this;
|
|
2295
|
+
}
|
|
2296
|
+
addItemBuilder(builder) {
|
|
2297
|
+
this.requestItems.push(builder.build());
|
|
2298
|
+
return this;
|
|
2299
|
+
}
|
|
2300
|
+
options(optionsOrConfigurator) {
|
|
2301
|
+
return this.setPropertyWithBuilderClass("options", optionsOrConfigurator, PropertyLookupOptionsBuilder);
|
|
2302
|
+
}
|
|
2303
|
+
build() {
|
|
2304
|
+
const request = {
|
|
2305
|
+
requests: this.requestItems,
|
|
2306
|
+
};
|
|
2307
|
+
if (this.builders.options) {
|
|
2308
|
+
request.options = this.builders.options.build();
|
|
2309
|
+
}
|
|
2310
|
+
else if (this.criteria.options) {
|
|
2311
|
+
request.options = this.criteria.options;
|
|
2312
|
+
}
|
|
2313
|
+
return request;
|
|
2314
|
+
}
|
|
2315
|
+
}
|
|
2316
|
+
exports.PropertyLookupRequestBuilder = PropertyLookupRequestBuilder;
|
|
2317
|
+
/**
|
|
2318
|
+
* Builder for property search requests
|
|
2319
|
+
*/
|
|
2320
|
+
class PropertySearchRequestBuilder extends BaseBuilder {
|
|
2321
|
+
static from(request) {
|
|
2322
|
+
const builder = new PropertySearchRequestBuilder();
|
|
2323
|
+
builder.searchCriteria(request.searchCriteria);
|
|
2324
|
+
if (request.options) {
|
|
2325
|
+
builder.options(request.options);
|
|
2326
|
+
}
|
|
2327
|
+
return builder;
|
|
2328
|
+
}
|
|
2329
|
+
searchCriteria(criteriaOrConfigurator) {
|
|
2330
|
+
if (typeof criteriaOrConfigurator === "function") {
|
|
2331
|
+
const builder = new SearchCriteriaBuilder("");
|
|
2332
|
+
criteriaOrConfigurator(builder);
|
|
2333
|
+
this.criteria.searchCriteria = builder.build();
|
|
2334
|
+
this.builders.searchCriteria = undefined;
|
|
2335
|
+
}
|
|
2336
|
+
else {
|
|
2337
|
+
this.criteria.searchCriteria = criteriaOrConfigurator;
|
|
2338
|
+
this.builders.searchCriteria = undefined;
|
|
2339
|
+
}
|
|
2340
|
+
return this;
|
|
2341
|
+
}
|
|
2342
|
+
options(optionsOrConfigurator) {
|
|
2343
|
+
return this.setPropertyWithBuilderClass("options", optionsOrConfigurator, PropertyLookupOptionsBuilder);
|
|
2344
|
+
}
|
|
2345
|
+
build() {
|
|
2346
|
+
if (!this.criteria.searchCriteria) {
|
|
2347
|
+
throw new Error("Search criteria is required");
|
|
2348
|
+
}
|
|
2349
|
+
const request = {
|
|
2350
|
+
searchCriteria: this.criteria.searchCriteria,
|
|
2351
|
+
};
|
|
2352
|
+
if (this.builders.options) {
|
|
2353
|
+
request.options = this.builders.options.build();
|
|
2354
|
+
}
|
|
2355
|
+
else if (this.criteria.options) {
|
|
2356
|
+
request.options = this.criteria.options;
|
|
2357
|
+
}
|
|
2358
|
+
return request;
|
|
2359
|
+
}
|
|
2360
|
+
}
|
|
2361
|
+
exports.PropertySearchRequestBuilder = PropertySearchRequestBuilder;
|
|
2362
|
+
/**
|
|
2363
|
+
* Builder for property search async requests
|
|
2364
|
+
*/
|
|
2365
|
+
class PropertySearchAsyncRequestBuilder extends BaseBuilder {
|
|
2366
|
+
static from(request) {
|
|
2367
|
+
const builder = new PropertySearchAsyncRequestBuilder();
|
|
2368
|
+
builder.searchCriteria(request.searchCriteria);
|
|
2369
|
+
if (request.options) {
|
|
2370
|
+
builder.options(request.options);
|
|
2371
|
+
}
|
|
2372
|
+
return builder;
|
|
2373
|
+
}
|
|
2374
|
+
searchCriteria(criteriaOrConfigurator) {
|
|
2375
|
+
if (typeof criteriaOrConfigurator === "function") {
|
|
2376
|
+
const builder = new SearchCriteriaBuilder("");
|
|
2377
|
+
criteriaOrConfigurator(builder);
|
|
2378
|
+
this.criteria.searchCriteria = builder.build();
|
|
2379
|
+
this.builders.searchCriteria = undefined;
|
|
2380
|
+
}
|
|
2381
|
+
else {
|
|
2382
|
+
this.criteria.searchCriteria = criteriaOrConfigurator;
|
|
2383
|
+
this.builders.searchCriteria = undefined;
|
|
2384
|
+
}
|
|
2385
|
+
return this;
|
|
2386
|
+
}
|
|
2387
|
+
options(optionsOrConfigurator) {
|
|
2388
|
+
return this.setPropertyWithBuilderClass("options", optionsOrConfigurator, PropertyLookupOptionsBuilder);
|
|
2389
|
+
}
|
|
2390
|
+
build() {
|
|
2391
|
+
if (!this.criteria.searchCriteria) {
|
|
2392
|
+
throw new Error("Search criteria is required");
|
|
2393
|
+
}
|
|
2394
|
+
const request = {
|
|
2395
|
+
searchCriteria: this.criteria.searchCriteria,
|
|
2396
|
+
};
|
|
2397
|
+
if (this.builders.options) {
|
|
2398
|
+
request.options = this.builders.options.build();
|
|
2399
|
+
}
|
|
2400
|
+
else if (this.criteria.options) {
|
|
2401
|
+
request.options = this.criteria.options;
|
|
2402
|
+
}
|
|
2403
|
+
return request;
|
|
2404
|
+
}
|
|
2405
|
+
}
|
|
2406
|
+
exports.PropertySearchAsyncRequestBuilder = PropertySearchAsyncRequestBuilder;
|
|
2407
|
+
/**
|
|
2408
|
+
* Builder for property lookup async requests
|
|
2409
|
+
*/
|
|
2410
|
+
class PropertyLookupAsyncRequestBuilder extends BaseBuilder {
|
|
2411
|
+
constructor() {
|
|
2412
|
+
super(...arguments);
|
|
2413
|
+
this.requestItems = [];
|
|
2414
|
+
}
|
|
2415
|
+
static from(request) {
|
|
2416
|
+
const builder = new PropertyLookupAsyncRequestBuilder();
|
|
2417
|
+
builder.requestItems = [...request.requests];
|
|
2418
|
+
if (request.options) {
|
|
2419
|
+
builder.options(request.options);
|
|
2420
|
+
}
|
|
2421
|
+
return builder;
|
|
2422
|
+
}
|
|
2423
|
+
items(items) {
|
|
2424
|
+
this.requestItems = items;
|
|
2425
|
+
return this;
|
|
2426
|
+
}
|
|
2427
|
+
addItem(item) {
|
|
2428
|
+
this.requestItems.push(item);
|
|
2429
|
+
return this;
|
|
2430
|
+
}
|
|
2431
|
+
addItemBuilder(builder) {
|
|
2432
|
+
this.requestItems.push(builder.build());
|
|
2433
|
+
return this;
|
|
2434
|
+
}
|
|
2435
|
+
options(optionsOrConfigurator) {
|
|
2436
|
+
return this.setPropertyWithBuilderClass("options", optionsOrConfigurator, PropertyLookupOptionsBuilder);
|
|
2437
|
+
}
|
|
2438
|
+
build() {
|
|
2439
|
+
const request = {
|
|
2440
|
+
requests: this.requestItems,
|
|
2441
|
+
};
|
|
2442
|
+
if (this.builders.options) {
|
|
2443
|
+
request.options = this.builders.options.build();
|
|
2444
|
+
}
|
|
2445
|
+
else if (this.criteria.options) {
|
|
2446
|
+
request.options = this.criteria.options;
|
|
2447
|
+
}
|
|
2448
|
+
return request;
|
|
2449
|
+
}
|
|
2450
|
+
}
|
|
2451
|
+
exports.PropertyLookupAsyncRequestBuilder = PropertyLookupAsyncRequestBuilder;
|
|
2452
|
+
/**
|
|
2453
|
+
* Builder for property permit request filters
|
|
2454
|
+
*/
|
|
2455
|
+
class PropertyPermitRequestBuilder {
|
|
2456
|
+
constructor() {
|
|
2457
|
+
this.request = {};
|
|
2458
|
+
this.options = {};
|
|
2459
|
+
}
|
|
2460
|
+
static from(permitRequest) {
|
|
2461
|
+
const builder = new PropertyPermitRequestBuilder();
|
|
2462
|
+
builder.request = { ...permitRequest.request };
|
|
2463
|
+
builder.options = permitRequest.options ? { ...permitRequest.options } : {};
|
|
2464
|
+
return builder;
|
|
2465
|
+
}
|
|
2466
|
+
// Address/identifier methods
|
|
2467
|
+
address(address) {
|
|
2468
|
+
this.request.address = address;
|
|
2469
|
+
return this;
|
|
2470
|
+
}
|
|
2471
|
+
hash(hash) {
|
|
2472
|
+
this.request.hash = hash;
|
|
2473
|
+
return this;
|
|
2474
|
+
}
|
|
2475
|
+
propertyId(propertyId) {
|
|
2476
|
+
this.request.propertyId = propertyId;
|
|
2477
|
+
return this;
|
|
2478
|
+
}
|
|
2479
|
+
apn(apn) {
|
|
2480
|
+
this.request.apn = apn;
|
|
2481
|
+
return this;
|
|
2482
|
+
}
|
|
2483
|
+
countyFipsCode(countyFipsCode) {
|
|
2484
|
+
this.request.countyFipsCode = countyFipsCode;
|
|
2485
|
+
return this;
|
|
2486
|
+
}
|
|
2487
|
+
// Filter methods
|
|
2488
|
+
allTags(filter) {
|
|
2489
|
+
this.request.allTags = filter;
|
|
2490
|
+
return this;
|
|
2491
|
+
}
|
|
2492
|
+
allTagsBuilder(filter) {
|
|
2493
|
+
this.request.allTags = filter;
|
|
2494
|
+
return this;
|
|
2495
|
+
}
|
|
2496
|
+
description(filter) {
|
|
2497
|
+
this.request.description = filter;
|
|
2498
|
+
return this;
|
|
2499
|
+
}
|
|
2500
|
+
descriptionBuilder(filter) {
|
|
2501
|
+
this.request.description = filter;
|
|
2502
|
+
return this;
|
|
2503
|
+
}
|
|
2504
|
+
endDate(filter) {
|
|
2505
|
+
this.request.endDate = filter;
|
|
2506
|
+
return this;
|
|
2507
|
+
}
|
|
2508
|
+
endDateBuilder(filter) {
|
|
2509
|
+
this.request.endDate = filter;
|
|
2510
|
+
return this;
|
|
2511
|
+
}
|
|
2512
|
+
fileDate(filter) {
|
|
2513
|
+
this.request.fileDate = filter;
|
|
2514
|
+
return this;
|
|
2515
|
+
}
|
|
2516
|
+
fileDateBuilder(filter) {
|
|
2517
|
+
this.request.fileDate = filter;
|
|
2518
|
+
return this;
|
|
2519
|
+
}
|
|
2520
|
+
finalDate(filter) {
|
|
2521
|
+
this.request.finalDate = filter;
|
|
2522
|
+
return this;
|
|
2523
|
+
}
|
|
2524
|
+
finalDateBuilder(filter) {
|
|
2525
|
+
this.request.finalDate = filter;
|
|
2526
|
+
return this;
|
|
2527
|
+
}
|
|
2528
|
+
issueDate(filter) {
|
|
2529
|
+
this.request.issueDate = filter;
|
|
2530
|
+
return this;
|
|
2531
|
+
}
|
|
2532
|
+
issueDateBuilder(filter) {
|
|
2533
|
+
this.request.issueDate = filter;
|
|
2534
|
+
return this;
|
|
2535
|
+
}
|
|
2536
|
+
jobValue(filter) {
|
|
2537
|
+
this.request.jobValue = filter;
|
|
2538
|
+
return this;
|
|
2539
|
+
}
|
|
2540
|
+
jobValueBuilder(filter) {
|
|
2541
|
+
this.request.jobValue = filter;
|
|
2542
|
+
return this;
|
|
2543
|
+
}
|
|
2544
|
+
startDate(filter) {
|
|
2545
|
+
this.request.startDate = filter;
|
|
2546
|
+
return this;
|
|
2547
|
+
}
|
|
2548
|
+
startDateBuilder(filter) {
|
|
2549
|
+
this.request.startDate = filter;
|
|
2550
|
+
return this;
|
|
2551
|
+
}
|
|
2552
|
+
status(filter) {
|
|
2553
|
+
this.request.status = filter;
|
|
2554
|
+
return this;
|
|
2555
|
+
}
|
|
2556
|
+
statusBuilder(filter) {
|
|
2557
|
+
this.request.status = filter;
|
|
2558
|
+
return this;
|
|
2559
|
+
}
|
|
2560
|
+
subType(filter) {
|
|
2561
|
+
this.request.subType = filter;
|
|
2562
|
+
return this;
|
|
2563
|
+
}
|
|
2564
|
+
subTypeBuilder(filter) {
|
|
2565
|
+
this.request.subType = filter;
|
|
2566
|
+
return this;
|
|
2567
|
+
}
|
|
2568
|
+
type(filter) {
|
|
2569
|
+
this.request.type = filter;
|
|
2570
|
+
return this;
|
|
2571
|
+
}
|
|
2572
|
+
typeBuilder(filter) {
|
|
2573
|
+
this.request.type = filter;
|
|
2574
|
+
return this;
|
|
2575
|
+
}
|
|
2576
|
+
// Options methods
|
|
2577
|
+
pagination(skip, take) {
|
|
2578
|
+
this.options.skip = skip;
|
|
2579
|
+
this.options.take = take;
|
|
2580
|
+
return this;
|
|
2581
|
+
}
|
|
2582
|
+
skip(skip) {
|
|
2583
|
+
this.options.skip = skip;
|
|
2584
|
+
return this;
|
|
2585
|
+
}
|
|
2586
|
+
take(take) {
|
|
2587
|
+
this.options.take = take;
|
|
2588
|
+
return this;
|
|
2589
|
+
}
|
|
2590
|
+
sessionId(sessionId) {
|
|
2591
|
+
this.options.sessionId = sessionId;
|
|
2592
|
+
return this;
|
|
2593
|
+
}
|
|
2594
|
+
dateFormat(format) {
|
|
2595
|
+
this.options.dateFormat = format;
|
|
2596
|
+
return this;
|
|
2597
|
+
}
|
|
2598
|
+
showRequests(show) {
|
|
2599
|
+
this.options.showRequests = show;
|
|
2600
|
+
return this;
|
|
2601
|
+
}
|
|
2602
|
+
showOptions(show) {
|
|
2603
|
+
this.options.showOptions = show;
|
|
2604
|
+
return this;
|
|
2605
|
+
}
|
|
2606
|
+
showMeta(show) {
|
|
2607
|
+
this.options.showMeta = show;
|
|
2608
|
+
return this;
|
|
2609
|
+
}
|
|
2610
|
+
sort(field, order) {
|
|
2611
|
+
this.options.sort = { field, order };
|
|
2612
|
+
return this;
|
|
2613
|
+
}
|
|
2614
|
+
build() {
|
|
2615
|
+
const hasOptions = Object.keys(this.options).length > 0;
|
|
2616
|
+
return {
|
|
2617
|
+
request: this.request,
|
|
2618
|
+
options: hasOptions ? this.options : undefined,
|
|
2619
|
+
};
|
|
2620
|
+
}
|
|
2621
|
+
}
|
|
2622
|
+
exports.PropertyPermitRequestBuilder = PropertyPermitRequestBuilder;
|