@servicetitan/acquisition-functions 0.9.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -28,6 +28,7 @@ describe('property-assessorlastsaledate-converter', () => {
28
28
  (0, globals_1.expect)(result?.hvacheatingdetail.length).toBe(0);
29
29
  (0, globals_1.expect)(result?.propertyusestandardized.length).toBe(0);
30
30
  (0, globals_1.expect)(result?.utilitieswatersource.length).toBe(0);
31
+ (0, globals_1.expect)(result?.utilitiessewageusage.length).toBe(0);
31
32
  });
32
33
  (0, globals_1.test)('should return metadata', async () => {
33
34
  (0, globals_1.expect)(metadata.errors).toBe(0);
@@ -72,6 +73,7 @@ describe('property-assessorlastsaledate-converter', () => {
72
73
  },
73
74
  ],
74
75
  utilitieswatersource: [],
76
+ utilitiessewageusage: [],
75
77
  flooringmaterialprimary: [],
76
78
  });
77
79
  });
@@ -21,6 +21,10 @@ export declare const calculateFilterCount: (properties: Property[], filtersToIgn
21
21
  name: string;
22
22
  count: number;
23
23
  }[];
24
+ utilitiessewageusageCounts: {
25
+ name: string;
26
+ count: number;
27
+ }[];
24
28
  flooringmaterialprimaryCounts: {
25
29
  name: string;
26
30
  count: number;
@@ -9,6 +9,7 @@ const calculateFilterCount = (properties, filtersToIgnore) => {
9
9
  hvaccoolingdetail: {},
10
10
  hvacheatingdetail: {},
11
11
  utilitieswatersource: {},
12
+ utilitiessewageusage: {},
12
13
  flooringmaterialprimary: {},
13
14
  };
14
15
  const { isValidFilterName } = (0, utils_1.FilterNameValidator)(filtersToIgnore, utils_1.UNKNOWN);
@@ -20,6 +21,7 @@ const calculateFilterCount = (properties, filtersToIgnore) => {
20
21
  hvaccoolingdetail: (0, utils_1.capitalizeFirstLetter)(p.hvaccoolingdetail),
21
22
  hvacheatingdetail: (0, utils_1.capitalizeFirstLetter)(p.hvacheatingdetail),
22
23
  utilitieswatersource: (0, utils_1.capitalizeFirstLetter)(p.utilitieswatersource),
24
+ utilitiessewageusage: (0, utils_1.capitalizeFirstLetter)(p.utilitiessewageusage),
23
25
  flooringmaterialprimary: (0, utils_1.capitalizeFirstLetter)(p.flooringmaterialprimary),
24
26
  }))
25
27
  .forEach(p => {
@@ -48,6 +50,11 @@ const calculateFilterCount = (properties, filtersToIgnore) => {
48
50
  filterCount.utilitieswatersource[p.utilitieswatersource] || 0;
49
51
  filterCount.utilitieswatersource[p.utilitieswatersource] += 1;
50
52
  }
53
+ if (isValidFilterName(p.utilitiessewageusage.toLowerCase())) {
54
+ filterCount.utilitiessewageusage[p.utilitiessewageusage] =
55
+ filterCount.utilitiessewageusage[p.utilitiessewageusage] || 0;
56
+ filterCount.utilitiessewageusage[p.utilitiessewageusage] += 1;
57
+ }
51
58
  if (isValidFilterName(p.flooringmaterialprimary.toLowerCase())) {
52
59
  filterCount.flooringmaterialprimary[p.flooringmaterialprimary] =
53
60
  filterCount.flooringmaterialprimary[p.flooringmaterialprimary] || 0;
@@ -82,12 +89,17 @@ const calculateFilterCount = (properties, filtersToIgnore) => {
82
89
  name,
83
90
  count: filterCount.utilitieswatersource[name],
84
91
  }));
92
+ const utilitiessewageusageCounts = Object.keys(filterCount.utilitiessewageusage).map(name => ({
93
+ name,
94
+ count: filterCount.utilitiessewageusage[name],
95
+ }));
85
96
  return {
86
97
  propertyusegroupCounts,
87
98
  propertyusestandardizedCounts,
88
99
  hvaccoolingdetailCounts,
89
100
  hvacheatingdetailCounts,
90
101
  utilitieswatersourceCounts,
102
+ utilitiessewageusageCounts,
91
103
  flooringmaterialprimaryCounts,
92
104
  };
93
105
  };
@@ -12,7 +12,7 @@ function getFilterFetcherProcessor(db) {
12
12
  const collection = await getFiltersCollection();
13
13
  return collection.deleteOne({ zipcode: zip });
14
14
  };
15
- const addZipFilters = async ({ zip, propertyusegroupCounts, propertyusestandardizedCounts, hvaccoolingdetailCounts, hvacheatingdetailCounts, utilitieswatersourceCounts, flooringmaterialprimaryCounts, }) => {
15
+ const addZipFilters = async ({ zip, propertyusegroupCounts, propertyusestandardizedCounts, hvaccoolingdetailCounts, hvacheatingdetailCounts, utilitieswatersourceCounts, utilitiessewageusageCounts, flooringmaterialprimaryCounts, }) => {
16
16
  const collection = await getFiltersCollection();
17
17
  return collection.insertOne({
18
18
  zipcode: zip,
@@ -21,6 +21,7 @@ function getFilterFetcherProcessor(db) {
21
21
  hvaccoolingdetail: hvaccoolingdetailCounts,
22
22
  hvacheatingdetail: hvacheatingdetailCounts,
23
23
  utilitieswatersource: utilitieswatersourceCounts,
24
+ utilitiessewageusage: utilitiessewageusageCounts,
24
25
  flooringmaterialprimary: flooringmaterialprimaryCounts,
25
26
  });
26
27
  };
@@ -35,6 +36,7 @@ function getFilterFetcherProcessor(db) {
35
36
  hvaccoolingdetail: 1,
36
37
  hvacheatingdetail: 1,
37
38
  utilitieswatersource: 1,
39
+ utilitiessewageusage: 1,
38
40
  flooringmaterialprimary: 1,
39
41
  _id: 0, // eslint-disable-line
40
42
  },
package/dist/types.d.ts CHANGED
@@ -239,5 +239,6 @@ export declare type Filter = WithId<{
239
239
  hvaccoolingdetail: Group[];
240
240
  hvacheatingdetail: Group[];
241
241
  utilitieswatersource: Group[];
242
+ utilitiessewageusage: Group[];
242
243
  flooringmaterialprimary: Group[];
243
244
  }>;
@@ -1,20 +1,7 @@
1
1
  import { Property } from '../types';
2
2
  export declare const SEPARATOR_CHARACTER = "___";
3
3
  export declare const UNKNOWN = "unknown";
4
- export declare const isNotFullProperty: (property: Property) => boolean;
5
4
  export declare const isEmptyField: (field: string) => boolean;
6
- export declare const extractUniqueFilterNames: (properties: Property[]) => {
7
- propertyUseObjects: {
8
- name: string;
9
- typeName: string;
10
- }[];
11
- propertyTypeNames: string[];
12
- hvacCoolingSystemNames: string[];
13
- hvacHeatingSystemNames: string[];
14
- waterSourceNames: string[];
15
- flooringMaterialsNames: string[];
16
- };
17
- export declare const convertObjectToArray: <T extends Record<string, unknown>>(obj: T) => T[keyof T][];
18
5
  export declare const convertToZipString: (zipNumber: number) => string;
19
6
  export declare const convertStringToDate: (props: Property[], propName: keyof Property) => {
20
7
  attomid: number;
@@ -1,69 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.capitalizeFirstLetter = exports.FilterNameValidator = exports.convertStringToDate = exports.convertToZipString = exports.convertObjectToArray = exports.extractUniqueFilterNames = exports.isEmptyField = exports.isNotFullProperty = exports.UNKNOWN = exports.SEPARATOR_CHARACTER = void 0;
3
+ exports.capitalizeFirstLetter = exports.FilterNameValidator = exports.convertStringToDate = exports.convertToZipString = exports.isEmptyField = exports.UNKNOWN = exports.SEPARATOR_CHARACTER = void 0;
4
4
  exports.SEPARATOR_CHARACTER = '___';
5
5
  exports.UNKNOWN = 'unknown';
6
- const isNotFullProperty = (property) => {
7
- if (!property.hvaccoolingdetail) {
8
- return true;
9
- }
10
- return ((0, exports.isEmptyField)(property.hvaccoolingdetail) ||
11
- (0, exports.isEmptyField)(property.hvacheatingdetail) ||
12
- (0, exports.isEmptyField)(property.utilitieswatersource) ||
13
- (0, exports.isEmptyField)(property.propertyusegroup) ||
14
- (0, exports.isEmptyField)(property.propertyusestandardized) ||
15
- (0, exports.isEmptyField)(property.flooringmaterialprimary));
16
- };
17
- exports.isNotFullProperty = isNotFullProperty;
18
6
  const isEmptyField = (field) => {
19
7
  return field.toLowerCase() === exports.UNKNOWN;
20
8
  };
21
9
  exports.isEmptyField = isEmptyField;
22
- const extractUniqueFilterNames = (properties) => {
23
- const hvaccoolingdetail = new Set();
24
- const hvacheatingdetail = new Set();
25
- const utilitieswatersource = new Set();
26
- const propertyusegroup = new Set();
27
- const propertyusestandardized = new Set();
28
- const flooringmaterialprimary = new Set();
29
- properties.forEach(property => {
30
- hvaccoolingdetail.add(property.hvaccoolingdetail);
31
- hvacheatingdetail.add(property.hvacheatingdetail);
32
- propertyusegroup.add(property.propertyusegroup);
33
- utilitieswatersource.add(property.utilitieswatersource);
34
- propertyusestandardized.add(property.propertyusestandardized + exports.SEPARATOR_CHARACTER + property.propertyusegroup);
35
- flooringmaterialprimary.add(property.flooringmaterialprimary);
36
- });
37
- const propertyUseObjects = Array.from(propertyusestandardized).map(filter => {
38
- const split = filter.split(exports.SEPARATOR_CHARACTER);
39
- return {
40
- name: split[0],
41
- typeName: split[1],
42
- };
43
- });
44
- const hvacCoolingSystemNames = Array.from(hvaccoolingdetail);
45
- const hvacHeatingSystemNames = Array.from(hvacheatingdetail);
46
- const propertyTypeNames = Array.from(propertyusegroup);
47
- const waterSourceNames = Array.from(utilitieswatersource);
48
- const flooringMaterialsNames = Array.from(flooringmaterialprimary);
49
- return {
50
- propertyUseObjects,
51
- propertyTypeNames,
52
- hvacCoolingSystemNames,
53
- hvacHeatingSystemNames,
54
- waterSourceNames,
55
- flooringMaterialsNames,
56
- };
57
- };
58
- exports.extractUniqueFilterNames = extractUniqueFilterNames;
59
- const convertObjectToArray = (obj) => {
60
- const array = [];
61
- for (const key in obj) {
62
- array.push(obj[key]);
63
- }
64
- return array;
65
- };
66
- exports.convertObjectToArray = convertObjectToArray;
67
10
  const ZIP_STRING_LENGTH = 5;
68
11
  const convertToZipString = (zipNumber) => {
69
12
  const zipString = zipNumber + '';
@@ -88,6 +31,9 @@ function FilterNameValidator(filtersToIgnore, unknownCharacter) {
88
31
  }
89
32
  exports.FilterNameValidator = FilterNameValidator;
90
33
  function capitalizeFirstLetter(val) {
34
+ if (!val) {
35
+ return val;
36
+ }
91
37
  return val[0].toUpperCase() + val.slice(1).toLowerCase();
92
38
  }
93
39
  exports.capitalizeFirstLetter = capitalizeFirstLetter;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@servicetitan/acquisition-functions",
3
- "version": "0.9.0",
3
+ "version": "0.10.0",
4
4
  "description": "",
5
5
  "main": "./dist/index.js",
6
6
  "typings": "./dist/index.d.ts",
@@ -28,5 +28,5 @@
28
28
  "cli": {
29
29
  "webpack": false
30
30
  },
31
- "gitHead": "4f315c3713bf16cc8fbc9b45af70206ba5b4a550"
31
+ "gitHead": "5e7083d61a148b1b76b265f7d85caf476c3e8b26"
32
32
  }