@becollective/utils 2.0.8 → 2.0.10

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.
@@ -1,4 +1,120 @@
1
- declare const _default: {
1
+ export declare const europeanCountryCodes: string[];
2
+ export declare const regionOptions: {
3
+ au: {
4
+ name: string;
5
+ domain: string;
6
+ hostname: string;
7
+ trademark: string;
8
+ twitter: string;
9
+ facebook: string;
10
+ instagram: string;
11
+ linkedin: string;
12
+ privacyPolicyUrl: string;
13
+ termsAndConditionsUrl: string;
14
+ privacyPolicyVersion: number;
15
+ termsAndConditionsVersion: number;
16
+ address: string;
17
+ };
18
+ nz: {
19
+ name: string;
20
+ domain: string;
21
+ hostname: string;
22
+ trademark: string;
23
+ twitter: string;
24
+ facebook: string;
25
+ instagram: string;
26
+ linkedin: string;
27
+ privacyPolicyUrl: string;
28
+ termsAndConditionsUrl: string;
29
+ privacyPolicyVersion: number;
30
+ termsAndConditionsVersion: number;
31
+ address: string;
32
+ };
33
+ uk: {
34
+ name: string;
35
+ domain: string;
36
+ hostname: string;
37
+ trademark: string;
38
+ twitter: string;
39
+ facebook: string;
40
+ instagram: string;
41
+ linkedin: string;
42
+ privacyPolicyUrl: string;
43
+ termsAndConditionsUrl: string;
44
+ privacyPolicyVersion: number;
45
+ termsAndConditionsVersion: number;
46
+ address: string;
47
+ };
48
+ };
49
+ export declare const countryOptions: {
50
+ AU: {
51
+ financialYearEndDate: {
52
+ month: number;
53
+ date: number;
54
+ };
55
+ distanceUnit: {
56
+ long: string;
57
+ short: string;
58
+ };
59
+ regions: {
60
+ long: string;
61
+ short: string;
62
+ }[];
63
+ insuranceTypes: {
64
+ type: string;
65
+ label: string;
66
+ }[];
67
+ };
68
+ NZ: {
69
+ financialYearEndDate: {
70
+ month: number;
71
+ date: number;
72
+ };
73
+ distanceUnit: {
74
+ long: string;
75
+ short: string;
76
+ };
77
+ insuranceTypes: {
78
+ type: string;
79
+ label: string;
80
+ }[];
81
+ };
82
+ GB: {
83
+ financialYearEndDate: {
84
+ month: number;
85
+ date: number;
86
+ };
87
+ distanceUnit: {
88
+ long: string;
89
+ short: string;
90
+ };
91
+ insuranceTypes: {
92
+ type: string;
93
+ label: string;
94
+ }[];
95
+ };
96
+ IE: {
97
+ financialYearEndDate: {
98
+ month: number;
99
+ date: number;
100
+ };
101
+ distanceUnit: {
102
+ long: string;
103
+ short: string;
104
+ };
105
+ insuranceTypes: {
106
+ type: string;
107
+ label: string;
108
+ }[];
109
+ };
110
+ Others: {
111
+ insuranceTypes: {
112
+ type: string;
113
+ label: string;
114
+ }[];
115
+ };
116
+ };
117
+ export declare const locales: {
2
118
  europeanCountryCodes: string[];
3
119
  regionOptions: {
4
120
  au: {
@@ -116,4 +232,4 @@ declare const _default: {
116
232
  };
117
233
  };
118
234
  };
119
- export default _default;
235
+ export default locales;
@@ -3,189 +3,194 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.locales = exports.countryOptions = exports.regionOptions = exports.europeanCountryCodes = void 0;
6
7
  const distancesUnits_1 = __importDefault(require("./distancesUnits"));
7
8
  const insuranceTypes_1 = __importDefault(require("./insuranceTypes"));
8
- exports.default = {
9
- europeanCountryCodes: [
10
- 'AL',
11
- 'AD',
12
- 'AM',
13
- 'AT',
14
- 'BY',
15
- 'BE',
16
- 'BA',
17
- 'BG',
18
- 'CH',
19
- 'CY',
20
- 'CZ',
21
- 'DE',
22
- 'DK',
23
- 'EE',
24
- 'ES',
25
- 'FO',
26
- 'FI',
27
- 'FR',
28
- 'GE',
29
- 'VA',
30
- 'GI',
31
- 'GR',
32
- 'HU',
33
- 'HR',
34
- 'IE',
35
- 'IS',
36
- 'IT',
37
- 'LT',
38
- 'LU',
39
- 'LV',
40
- 'MC',
41
- 'MK',
42
- 'MT',
43
- 'NO',
44
- 'NL',
45
- 'PO',
46
- 'PT',
47
- 'RO',
48
- 'RU',
49
- 'SE',
50
- 'SI',
51
- 'SK',
52
- 'SM',
53
- 'TR',
54
- 'UA',
55
- ],
56
- regionOptions: {
57
- au: {
58
- name: 'Australia',
59
- domain: 'https://app.becollective.com',
60
- hostname: 'app.becollective.com',
61
- trademark: 'Be Collective International Limited',
62
- twitter: 'https://twitter.com/BeCollective_',
63
- facebook: 'https://www.facebook.com/becollectiveintl/',
64
- instagram: 'https://www.instagram.com/becollective_',
65
- linkedin: 'https://www.linkedin.com/company/becollectiveintl',
66
- privacyPolicyUrl: 'https://www.becollective.com/documents/Be-Collective-Global-Privacy-Policy-September-2021.pdf',
67
- termsAndConditionsUrl: 'https://www.becollective.com/documents/Be-Collective-Global-General-Terms-February-2023.pdf',
68
- privacyPolicyVersion: 2,
69
- termsAndConditionsVersion: 6,
70
- address: 'Level 16, 300 Flinders Street, Melbourne, VIC 3000',
71
- },
72
- nz: {
73
- name: 'New Zealand',
74
- domain: 'https://nz.becollective.com',
75
- hostname: 'nz.becollective.com',
76
- trademark: 'Be Collective New Zealand Limited',
77
- twitter: 'https://twitter.com/BeCollective_',
78
- facebook: 'https://www.facebook.com/becollectivenz/',
79
- instagram: 'https://www.instagram.com/becollective_',
80
- linkedin: 'https://www.linkedin.com/company/becollectiveintl',
81
- privacyPolicyUrl: 'https://www.becollective.com/documents/Be-Collective-Global-Privacy-Policy-September-2021.pdf',
82
- termsAndConditionsUrl: 'https://www.becollective.com/documents/Be-Collective-Global-General-Terms-February-2023.pdf',
83
- privacyPolicyVersion: 2,
84
- termsAndConditionsVersion: 6,
85
- address: 'Level 3 Zephyr House, 82 Willis Street, Wellington',
86
- },
87
- // eu: {
88
- // name: 'Europe',
89
- // domain: 'https://eu.becollective.com',
90
- // hostname: 'eu.becollective.com',
91
- // trademark: 'Be Collective Europe Limited',
92
- // twitter: 'https://twitter.com/BeCollective_',
93
- // facebook: 'https://www.facebook.com/Be-Collective-Europe-2168455776525016/',
94
- // instagram: 'https://www.instagram.com/becollective_',
95
- // linkedin: 'https://www.linkedin.com/company/becollectiveintl',
96
- // privacyPolicyUrl: 'https://www.becollective.com/documents/Be-Collective-Europe-Privacy-Notice-December-2020.pdf',
97
- // termsAndConditionsUrl: 'https://www.becollective.com/documents/Be-Collective-Europe-General-Terms-May-2023.pdf',
98
- // privacyPolicyVersion: 2,
99
- // termsAndConditionsVersion: 4,
100
- // address: 'Tintagel House, 92 Albert Embankment, Lambeth, London, SE1 7TY',
101
- // },
102
- uk: {
103
- name: 'United Kingdom',
104
- domain: 'https://uk.becollective.com',
105
- hostname: 'uk.becollective.com',
106
- trademark: 'Be Collective Europe Limited',
107
- twitter: 'https://twitter.com/BeCollective_',
108
- facebook: 'https://www.facebook.com/Be-Collective-Europe-2168455776525016/',
109
- instagram: 'https://www.instagram.com/becollective_',
110
- linkedin: 'https://www.linkedin.com/company/becollectiveintl',
111
- privacyPolicyUrl: 'https://www.becollective.com/documents/Be-Collective-Europe-Privacy-Notice-December-2020.pdf',
112
- termsAndConditionsUrl: 'https://www.becollective.com/documents/Be-Collective-Europe-General-Terms-May-2023.pdf',
113
- privacyPolicyVersion: 2,
114
- termsAndConditionsVersion: 4,
115
- address: 'Tintagel House, 92 Albert Embankment, Lambeth, London, SE1 7TY',
116
- },
9
+ exports.europeanCountryCodes = [
10
+ 'AL',
11
+ 'AD',
12
+ 'AM',
13
+ 'AT',
14
+ 'BY',
15
+ 'BE',
16
+ 'BA',
17
+ 'BG',
18
+ 'CH',
19
+ 'CY',
20
+ 'CZ',
21
+ 'DE',
22
+ 'DK',
23
+ 'EE',
24
+ 'ES',
25
+ 'FO',
26
+ 'FI',
27
+ 'FR',
28
+ 'GE',
29
+ 'VA',
30
+ 'GI',
31
+ 'GR',
32
+ 'HU',
33
+ 'HR',
34
+ 'IE',
35
+ 'IS',
36
+ 'IT',
37
+ 'LT',
38
+ 'LU',
39
+ 'LV',
40
+ 'MC',
41
+ 'MK',
42
+ 'MT',
43
+ 'NO',
44
+ 'NL',
45
+ 'PO',
46
+ 'PT',
47
+ 'RO',
48
+ 'RU',
49
+ 'SE',
50
+ 'SI',
51
+ 'SK',
52
+ 'SM',
53
+ 'TR',
54
+ 'UA',
55
+ ];
56
+ exports.regionOptions = {
57
+ au: {
58
+ name: 'Australia',
59
+ domain: 'https://app.becollective.com',
60
+ hostname: 'app.becollective.com',
61
+ trademark: 'Be Collective International Limited',
62
+ twitter: 'https://twitter.com/BeCollective_',
63
+ facebook: 'https://www.facebook.com/becollectiveintl/',
64
+ instagram: 'https://www.instagram.com/becollective_',
65
+ linkedin: 'https://www.linkedin.com/company/becollectiveintl',
66
+ privacyPolicyUrl: 'https://www.becollective.com/documents/Be-Collective-Global-Privacy-Policy-September-2021.pdf',
67
+ termsAndConditionsUrl: 'https://www.becollective.com/documents/Be-Collective-Global-General-Terms-February-2023.pdf',
68
+ privacyPolicyVersion: 2,
69
+ termsAndConditionsVersion: 6,
70
+ address: 'Level 16, 300 Flinders Street, Melbourne, VIC 3000',
117
71
  },
118
- // Financial years from https://www.cia.gov/library/publications/the-world-factbook/fields/228.html
119
- countryOptions: {
120
- AU: {
121
- financialYearEndDate: {
122
- month: 5,
123
- date: 30,
124
- },
125
- distanceUnit: distancesUnits_1.default.km,
126
- regions: [
127
- {
128
- long: 'Australian Capital Territory',
129
- short: 'ACT',
130
- },
131
- {
132
- long: 'New South Wales',
133
- short: 'NSW',
134
- },
135
- {
136
- long: 'Northern Territory',
137
- short: 'NT',
138
- },
139
- {
140
- long: 'Queensland',
141
- short: 'QLD',
142
- },
143
- {
144
- long: 'South Australia',
145
- short: 'SA',
146
- },
147
- {
148
- long: 'Tasmania',
149
- short: 'TAS',
150
- },
151
- {
152
- long: 'Victoria',
153
- short: 'VIC',
154
- },
155
- {
156
- long: 'Western Australia',
157
- short: 'WA',
158
- },
159
- ],
160
- insuranceTypes: [insuranceTypes_1.default.publicLiabilityAU, insuranceTypes_1.default.volunteerAccidentAU],
72
+ nz: {
73
+ name: 'New Zealand',
74
+ domain: 'https://nz.becollective.com',
75
+ hostname: 'nz.becollective.com',
76
+ trademark: 'Be Collective New Zealand Limited',
77
+ twitter: 'https://twitter.com/BeCollective_',
78
+ facebook: 'https://www.facebook.com/becollectivenz/',
79
+ instagram: 'https://www.instagram.com/becollective_',
80
+ linkedin: 'https://www.linkedin.com/company/becollectiveintl',
81
+ privacyPolicyUrl: 'https://www.becollective.com/documents/Be-Collective-Global-Privacy-Policy-September-2021.pdf',
82
+ termsAndConditionsUrl: 'https://www.becollective.com/documents/Be-Collective-Global-General-Terms-February-2023.pdf',
83
+ privacyPolicyVersion: 2,
84
+ termsAndConditionsVersion: 6,
85
+ address: 'Level 3 Zephyr House, 82 Willis Street, Wellington',
86
+ },
87
+ // eu: {
88
+ // name: 'Europe',
89
+ // domain: 'https://eu.becollective.com',
90
+ // hostname: 'eu.becollective.com',
91
+ // trademark: 'Be Collective Europe Limited',
92
+ // twitter: 'https://twitter.com/BeCollective_',
93
+ // facebook: 'https://www.facebook.com/Be-Collective-Europe-2168455776525016/',
94
+ // instagram: 'https://www.instagram.com/becollective_',
95
+ // linkedin: 'https://www.linkedin.com/company/becollectiveintl',
96
+ // privacyPolicyUrl: 'https://www.becollective.com/documents/Be-Collective-Europe-Privacy-Notice-December-2020.pdf',
97
+ // termsAndConditionsUrl: 'https://www.becollective.com/documents/Be-Collective-Europe-General-Terms-May-2023.pdf',
98
+ // privacyPolicyVersion: 2,
99
+ // termsAndConditionsVersion: 4,
100
+ // address: 'Tintagel House, 92 Albert Embankment, Lambeth, London, SE1 7TY',
101
+ // },
102
+ uk: {
103
+ name: 'United Kingdom',
104
+ domain: 'https://uk.becollective.com',
105
+ hostname: 'uk.becollective.com',
106
+ trademark: 'Be Collective Europe Limited',
107
+ twitter: 'https://twitter.com/BeCollective_',
108
+ facebook: 'https://www.facebook.com/Be-Collective-Europe-2168455776525016/',
109
+ instagram: 'https://www.instagram.com/becollective_',
110
+ linkedin: 'https://www.linkedin.com/company/becollectiveintl',
111
+ privacyPolicyUrl: 'https://www.becollective.com/documents/Be-Collective-Europe-Privacy-Notice-December-2020.pdf',
112
+ termsAndConditionsUrl: 'https://www.becollective.com/documents/Be-Collective-Europe-General-Terms-May-2023.pdf',
113
+ privacyPolicyVersion: 2,
114
+ termsAndConditionsVersion: 4,
115
+ address: 'Tintagel House, 92 Albert Embankment, Lambeth, London, SE1 7TY',
116
+ },
117
+ };
118
+ // Financial years from https://www.cia.gov/library/publications/the-world-factbook/fields/228.html
119
+ exports.countryOptions = {
120
+ AU: {
121
+ financialYearEndDate: {
122
+ month: 5,
123
+ date: 30,
161
124
  },
162
- NZ: {
163
- financialYearEndDate: {
164
- month: 2,
165
- date: 31,
125
+ distanceUnit: distancesUnits_1.default.km,
126
+ regions: [
127
+ {
128
+ long: 'Australian Capital Territory',
129
+ short: 'ACT',
166
130
  },
167
- distanceUnit: distancesUnits_1.default.km,
168
- insuranceTypes: [insuranceTypes_1.default.publicLiabilityNZ, insuranceTypes_1.default.volunteerAccidentNZ],
169
- },
170
- GB: {
171
- financialYearEndDate: {
172
- month: 3,
173
- date: 5,
131
+ {
132
+ long: 'New South Wales',
133
+ short: 'NSW',
174
134
  },
175
- distanceUnit: distancesUnits_1.default.mi,
176
- insuranceTypes: [insuranceTypes_1.default.publicLiabilityGB, insuranceTypes_1.default.volunteerAccidentGB],
177
- },
178
- // Reminder: this is Republic of Ireland. Northern Ireland is within GB.
179
- IE: {
180
- financialYearEndDate: {
181
- month: 11,
182
- date: 31,
135
+ {
136
+ long: 'Northern Territory',
137
+ short: 'NT',
138
+ },
139
+ {
140
+ long: 'Queensland',
141
+ short: 'QLD',
183
142
  },
184
- distanceUnit: distancesUnits_1.default.km,
185
- insuranceTypes: [insuranceTypes_1.default.publicLiabilityOthers, insuranceTypes_1.default.volunteerAccidentOthers],
143
+ {
144
+ long: 'South Australia',
145
+ short: 'SA',
146
+ },
147
+ {
148
+ long: 'Tasmania',
149
+ short: 'TAS',
150
+ },
151
+ {
152
+ long: 'Victoria',
153
+ short: 'VIC',
154
+ },
155
+ {
156
+ long: 'Western Australia',
157
+ short: 'WA',
158
+ },
159
+ ],
160
+ insuranceTypes: [insuranceTypes_1.default.publicLiabilityAU, insuranceTypes_1.default.volunteerAccidentAU],
161
+ },
162
+ NZ: {
163
+ financialYearEndDate: {
164
+ month: 2,
165
+ date: 31,
186
166
  },
187
- Others: {
188
- insuranceTypes: [insuranceTypes_1.default.publicLiabilityOthers, insuranceTypes_1.default.volunteerAccidentOthers],
167
+ distanceUnit: distancesUnits_1.default.km,
168
+ insuranceTypes: [insuranceTypes_1.default.publicLiabilityNZ, insuranceTypes_1.default.volunteerAccidentNZ],
169
+ },
170
+ GB: {
171
+ financialYearEndDate: {
172
+ month: 3,
173
+ date: 5,
174
+ },
175
+ distanceUnit: distancesUnits_1.default.mi,
176
+ insuranceTypes: [insuranceTypes_1.default.publicLiabilityGB, insuranceTypes_1.default.volunteerAccidentGB],
177
+ },
178
+ // Reminder: this is Republic of Ireland. Northern Ireland is within GB.
179
+ IE: {
180
+ financialYearEndDate: {
181
+ month: 11,
182
+ date: 31,
189
183
  },
184
+ distanceUnit: distancesUnits_1.default.km,
185
+ insuranceTypes: [insuranceTypes_1.default.publicLiabilityOthers, insuranceTypes_1.default.volunteerAccidentOthers],
190
186
  },
187
+ Others: {
188
+ insuranceTypes: [insuranceTypes_1.default.publicLiabilityOthers, insuranceTypes_1.default.volunteerAccidentOthers],
189
+ },
190
+ };
191
+ exports.locales = {
192
+ europeanCountryCodes: exports.europeanCountryCodes,
193
+ regionOptions: exports.regionOptions,
194
+ countryOptions: exports.countryOptions,
191
195
  };
196
+ exports.default = exports.locales;
package/lib/forms.d.ts CHANGED
@@ -1 +1,323 @@
1
- export {};
1
+ type ValidateDataNameError = {
2
+ name: string;
3
+ key: string;
4
+ value: any;
5
+ };
6
+ type ValidateDataPropertyError = {
7
+ property: string;
8
+ message: string;
9
+ key: string;
10
+ };
11
+ export declare const validator: {
12
+ validateSchema: (schema: any, uischema: any) => Promise<boolean>;
13
+ validateSchemaPropertiesExist: (properties: any, keys: any, err: any) => (ValidateDataNameError | ValidateDataPropertyError)[] | null;
14
+ /**
15
+ * Check if every field in the form has a unique title
16
+ * @param {object} properties fields properties
17
+ * @param {string} err error name
18
+ */
19
+ validatePropertiesTitleUniqueness: (properties: any, err: any) => (ValidateDataNameError | ValidateDataPropertyError)[] | null;
20
+ /**
21
+ * Creates a new object from the input obj.
22
+ * All entries from the input whose values are empty arrays are missing in the new object
23
+ * @param {Object} data 1-depth obj
24
+ * @returns A new object without empty arrays
25
+ */
26
+ stripEmptyArraysFromData: (data: any) => {};
27
+ validateData: (schema: any, data: any) => Promise<void>;
28
+ getValidatorForType: (type: any) => any;
29
+ getValidatorForTypeData: (type: any) => any;
30
+ uiSchema: {
31
+ type: string;
32
+ required: string[];
33
+ properties: {
34
+ 'ui:title': {
35
+ type: string;
36
+ };
37
+ 'ui:helpertext': {
38
+ type: string;
39
+ };
40
+ 'ui:bc-helpertext': {
41
+ type: string;
42
+ };
43
+ 'ui:bc-required': {
44
+ type: string;
45
+ };
46
+ 'ui:bc-multiSelect': {
47
+ type: string;
48
+ };
49
+ 'ui:widget': {
50
+ type: string;
51
+ enum: string[];
52
+ };
53
+ };
54
+ };
55
+ schemaTypes: {
56
+ string: {
57
+ type: string;
58
+ required: string[];
59
+ properties: {
60
+ title: {
61
+ type: string;
62
+ minLength: number;
63
+ };
64
+ };
65
+ };
66
+ number: {
67
+ type: string;
68
+ required: string[];
69
+ properties: {
70
+ title: {
71
+ type: string;
72
+ minLength: number;
73
+ };
74
+ };
75
+ };
76
+ boolean: {
77
+ type: string;
78
+ required: string[];
79
+ properties: {
80
+ title: {
81
+ type: string;
82
+ minLength: number;
83
+ };
84
+ };
85
+ };
86
+ date: {
87
+ type: string;
88
+ required: string[];
89
+ properties: {
90
+ title: {
91
+ type: string;
92
+ minLength: number;
93
+ };
94
+ type: {
95
+ const: string;
96
+ };
97
+ };
98
+ };
99
+ dateRange: {
100
+ type: string;
101
+ required: string[];
102
+ properties: {
103
+ title: {
104
+ type: string;
105
+ minLength: number;
106
+ };
107
+ type: {
108
+ const: string;
109
+ };
110
+ };
111
+ };
112
+ phone: {
113
+ type: string;
114
+ required: string[];
115
+ properties: {
116
+ title: {
117
+ type: string;
118
+ minLength: number;
119
+ };
120
+ type: {
121
+ const: string;
122
+ };
123
+ };
124
+ };
125
+ skills: {
126
+ type: string;
127
+ required: string[];
128
+ properties: {
129
+ title: {
130
+ type: string;
131
+ minLength: number;
132
+ };
133
+ uniqueItems: {
134
+ type: string;
135
+ };
136
+ items: {
137
+ type: string;
138
+ properties: {
139
+ anyOf: {
140
+ type: string;
141
+ minItems: number;
142
+ items: {
143
+ type: string;
144
+ properties: {
145
+ type: {
146
+ type: string;
147
+ };
148
+ title: {
149
+ type: string;
150
+ };
151
+ enum: {
152
+ type: string;
153
+ minItems: number;
154
+ items: {
155
+ type: string;
156
+ minLength: number;
157
+ };
158
+ };
159
+ };
160
+ };
161
+ };
162
+ };
163
+ };
164
+ };
165
+ };
166
+ qualifications: {
167
+ type: string;
168
+ required: string[];
169
+ properties: {
170
+ title: {
171
+ type: string;
172
+ minLength: number;
173
+ };
174
+ uniqueItems: {
175
+ type: string;
176
+ };
177
+ items: {
178
+ type: string;
179
+ properties: {
180
+ type: {
181
+ const: string;
182
+ };
183
+ enum: {
184
+ type: string;
185
+ minItems: number;
186
+ items: {
187
+ type: string;
188
+ }[];
189
+ };
190
+ };
191
+ };
192
+ };
193
+ };
194
+ array: {
195
+ type: string;
196
+ required: string[];
197
+ properties: {
198
+ title: {
199
+ type: string;
200
+ minLength: number;
201
+ };
202
+ uniqueItems: {
203
+ type: string;
204
+ };
205
+ items: {
206
+ type: string;
207
+ properties: {
208
+ anyOf: {
209
+ type: string;
210
+ minItems: number;
211
+ uniqueItems: boolean;
212
+ items: {
213
+ type: string;
214
+ properties: {
215
+ type: {
216
+ type: string;
217
+ };
218
+ title: {
219
+ type: string;
220
+ };
221
+ enum: {
222
+ type: string;
223
+ minItems: number;
224
+ items: {
225
+ type: string;
226
+ minLength: number;
227
+ };
228
+ };
229
+ };
230
+ };
231
+ };
232
+ };
233
+ };
234
+ };
235
+ };
236
+ heading: {
237
+ type: string;
238
+ required: string[];
239
+ properties: {
240
+ title: {
241
+ type: string;
242
+ minLength: number;
243
+ };
244
+ type: {
245
+ const: string;
246
+ };
247
+ };
248
+ };
249
+ spacer: {
250
+ type: string;
251
+ properties: {
252
+ type: {
253
+ const: string;
254
+ };
255
+ };
256
+ };
257
+ location: {
258
+ type: string;
259
+ required: string[];
260
+ properties: {
261
+ title: {
262
+ type: string;
263
+ minLength: number;
264
+ };
265
+ type: {
266
+ const: string;
267
+ };
268
+ };
269
+ };
270
+ file: {
271
+ type: string;
272
+ required: string[];
273
+ properties: {
274
+ title: {
275
+ type: string;
276
+ minLength: number;
277
+ };
278
+ };
279
+ };
280
+ textParagraph: {
281
+ type: string;
282
+ required: string[];
283
+ properties: {
284
+ text: {
285
+ type: string;
286
+ minLength: number;
287
+ };
288
+ };
289
+ };
290
+ };
291
+ dataTypeIsValid: {
292
+ string: (data: any, schema: any) => any;
293
+ boolean: (data: any) => boolean;
294
+ number: (data: any) => boolean;
295
+ date: (data: any) => boolean;
296
+ dateRange: (data: any) => boolean;
297
+ phone: (data: any) => any;
298
+ skills: (data: any, schema: any) => boolean;
299
+ qualifications: (data: any, schema: any) => boolean;
300
+ array: (data: any, schema: any) => boolean;
301
+ heading: () => boolean;
302
+ spacer: () => boolean;
303
+ location: (data: any) => boolean;
304
+ file: (data: any) => boolean;
305
+ };
306
+ dataTypes: {
307
+ string: (schema: any, data: any) => Promise<void>;
308
+ boolean: (schema: any, data: any) => Promise<void>;
309
+ date: (schema: any, data: any) => Promise<void>;
310
+ dateRange: (schema: any, data: any) => Promise<void>;
311
+ phone: (schema: any, data: any) => Promise<void>;
312
+ skills: (schema: any, data: any) => Promise<void>;
313
+ qualifications: (schema: any, data: any) => Promise<void>;
314
+ array: (schema: any, data: any) => Promise<void>;
315
+ heading: (schema: any, data: any) => Promise<void>;
316
+ spacer: (schema: any, data: any) => Promise<void>;
317
+ location: (schema: any, data: any) => Promise<void>;
318
+ file: (schema: any, data: any) => Promise<void>;
319
+ number: (schema: any, data: any) => Promise<void>;
320
+ textParagraph: (schema: any, data: any) => Promise<void>;
321
+ };
322
+ };
323
+ export default validator;
package/lib/forms.js CHANGED
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.validator = void 0;
6
7
  /* eslint-disable no-prototype-builtins */
7
8
  const ajv_1 = __importDefault(require("ajv"));
8
9
  const ajv = new ajv_1.default({
@@ -60,14 +61,14 @@ const isValidYear = (value) => {
60
61
  };
61
62
  const validateType = async (params) => {
62
63
  const { type, data, schema, error } = params;
63
- if (validator.dataTypeIsValid[type](data, schema)) {
64
+ if (exports.validator.dataTypeIsValid[type](data, schema)) {
64
65
  return;
65
66
  }
66
67
  throw {
67
68
  name: error || `Property is not a ${type}`
68
69
  };
69
70
  };
70
- const validator = {
71
+ exports.validator = {
71
72
  validateSchema: async (schema, uischema) => {
72
73
  if (!schema.hasOwnProperty('properties')) {
73
74
  throw {
@@ -83,19 +84,19 @@ const validator = {
83
84
  let result;
84
85
  const errors = [];
85
86
  const keys = Object.keys(schema.properties);
86
- result = validator.validateSchemaPropertiesExist(schema.required, keys, 'required-item-not-found');
87
+ result = exports.validator.validateSchemaPropertiesExist(schema.required, keys, 'required-item-not-found');
87
88
  if (result) {
88
89
  throw result;
89
90
  }
90
- result = validator.validateSchemaPropertiesExist(uischema['ui:order'], keys, 'order-item-not-found');
91
+ result = exports.validator.validateSchemaPropertiesExist(uischema['ui:order'], keys, 'order-item-not-found');
91
92
  if (result) {
92
93
  throw result;
93
94
  }
94
- result = validator.validateSchemaPropertiesExist(keys, Object.keys(uischema), 'ui-data-schema-mismatch');
95
+ result = exports.validator.validateSchemaPropertiesExist(keys, Object.keys(uischema), 'ui-data-schema-mismatch');
95
96
  if (result) {
96
97
  throw result;
97
98
  }
98
- result = validator.validatePropertiesTitleUniqueness(schema.properties, 'Titles must be unique.');
99
+ result = exports.validator.validatePropertiesTitleUniqueness(schema.properties, 'Titles must be unique.');
99
100
  if (result) {
100
101
  throw result;
101
102
  }
@@ -115,7 +116,7 @@ const validator = {
115
116
  bcRequired: false
116
117
  }
117
118
  */
118
- const f = validator.getValidatorForType(o.bcType || o.type);
119
+ const f = exports.validator.getValidatorForType(o.bcType || o.type);
119
120
  if (o.hasOwnProperty('bcReportable')) {
120
121
  if (!BC_REPORTABLE_FIELDS[o.bcReportable] && !o.bcReportable.startsWith('USER_')) {
121
122
  errors.push({
@@ -155,7 +156,7 @@ const validator = {
155
156
  return;
156
157
  }
157
158
  const data = uischema[o];
158
- const valid = ajv.validate(validator.uiSchema, data);
159
+ const valid = ajv.validate(exports.validator.uiSchema, data);
159
160
  if (valid !== true) {
160
161
  errors.push({ name: 'invalid-uischema-property', object: o });
161
162
  }
@@ -268,7 +269,7 @@ const validator = {
268
269
  // value is the data the user submits for the above property
269
270
  // eg. +61434111222
270
271
  try {
271
- const v = validator.getValidatorForTypeData(property.bcType || property.type);
272
+ const v = exports.validator.getValidatorForTypeData(property.bcType || property.type);
272
273
  await v(property, value);
273
274
  }
274
275
  catch (e) {
@@ -281,10 +282,10 @@ const validator = {
281
282
  return;
282
283
  },
283
284
  getValidatorForType: (type) => {
284
- return validator.schemaTypes[type] || null;
285
+ return exports.validator.schemaTypes[type] || null;
285
286
  },
286
287
  getValidatorForTypeData: (type) => {
287
- const v = validator.dataTypes[type];
288
+ const v = exports.validator.dataTypes[type];
288
289
  if (v) {
289
290
  return v;
290
291
  }
@@ -564,8 +565,8 @@ const validator = {
564
565
  return typeof data === 'string' && new Date(data).toString() !== 'Invalid Date' && isValidYear(data);
565
566
  },
566
567
  dateRange: (data) => {
567
- const fromIsValid = validator.dataTypeIsValid.date(data.from);
568
- const toIsValid = validator.dataTypeIsValid.date(data.to);
568
+ const fromIsValid = exports.validator.dataTypeIsValid.date(data.from);
569
+ const toIsValid = exports.validator.dataTypeIsValid.date(data.to);
569
570
  const toDateIsAFterFromDate = new Date(data.from) <= new Date(data.to);
570
571
  return fromIsValid && toIsValid && toDateIsAFterFromDate;
571
572
  },
@@ -725,4 +726,4 @@ const validator = {
725
726
  textParagraph: (schema, data) => validateType({ type: 'string', data, schema }),
726
727
  },
727
728
  };
728
- module.exports = validator;
729
+ exports.default = exports.validator;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@becollective/utils",
3
- "version": "2.0.8",
3
+ "version": "2.0.10",
4
4
  "description": "Common utilities",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -1,189 +1,197 @@
1
1
  import distanceUnits from './distancesUnits';
2
2
  import insuranceTypes from './insuranceTypes';
3
3
 
4
- export default {
5
- europeanCountryCodes: [
6
- 'AL',
7
- 'AD',
8
- 'AM',
9
- 'AT',
10
- 'BY',
11
- 'BE',
12
- 'BA',
13
- 'BG',
14
- 'CH',
15
- 'CY',
16
- 'CZ',
17
- 'DE',
18
- 'DK',
19
- 'EE',
20
- 'ES',
21
- 'FO',
22
- 'FI',
23
- 'FR',
24
- 'GE',
25
- 'VA',
26
- 'GI',
27
- 'GR',
28
- 'HU',
29
- 'HR',
30
- 'IE',
31
- 'IS',
32
- 'IT',
33
- 'LT',
34
- 'LU',
35
- 'LV',
36
- 'MC',
37
- 'MK',
38
- 'MT',
39
- 'NO',
40
- 'NL',
41
- 'PO',
42
- 'PT',
43
- 'RO',
44
- 'RU',
45
- 'SE',
46
- 'SI',
47
- 'SK',
48
- 'SM',
49
- 'TR',
50
- 'UA',
51
- ],
52
- regionOptions: {
53
- au: {
54
- name: 'Australia',
55
- domain: 'https://app.becollective.com',
56
- hostname: 'app.becollective.com',
57
- trademark: 'Be Collective International Limited',
58
- twitter: 'https://twitter.com/BeCollective_',
59
- facebook: 'https://www.facebook.com/becollectiveintl/',
60
- instagram: 'https://www.instagram.com/becollective_',
61
- linkedin: 'https://www.linkedin.com/company/becollectiveintl',
62
- privacyPolicyUrl: 'https://www.becollective.com/documents/Be-Collective-Global-Privacy-Policy-September-2021.pdf',
63
- termsAndConditionsUrl:
64
- 'https://www.becollective.com/documents/Be-Collective-Global-General-Terms-February-2023.pdf',
65
- privacyPolicyVersion: 2,
66
- termsAndConditionsVersion: 6,
67
- address: 'Level 16, 300 Flinders Street, Melbourne, VIC 3000',
68
- },
69
- nz: {
70
- name: 'New Zealand',
71
- domain: 'https://nz.becollective.com',
72
- hostname: 'nz.becollective.com',
73
- trademark: 'Be Collective New Zealand Limited',
74
- twitter: 'https://twitter.com/BeCollective_',
75
- facebook: 'https://www.facebook.com/becollectivenz/',
76
- instagram: 'https://www.instagram.com/becollective_',
77
- linkedin: 'https://www.linkedin.com/company/becollectiveintl',
78
- privacyPolicyUrl: 'https://www.becollective.com/documents/Be-Collective-Global-Privacy-Policy-September-2021.pdf',
79
- termsAndConditionsUrl:
80
- 'https://www.becollective.com/documents/Be-Collective-Global-General-Terms-February-2023.pdf',
81
- privacyPolicyVersion: 2,
82
- termsAndConditionsVersion: 6,
83
- address: 'Level 3 Zephyr House, 82 Willis Street, Wellington',
84
- },
85
- // eu: {
86
- // name: 'Europe',
87
- // domain: 'https://eu.becollective.com',
88
- // hostname: 'eu.becollective.com',
89
- // trademark: 'Be Collective Europe Limited',
90
- // twitter: 'https://twitter.com/BeCollective_',
91
- // facebook: 'https://www.facebook.com/Be-Collective-Europe-2168455776525016/',
92
- // instagram: 'https://www.instagram.com/becollective_',
93
- // linkedin: 'https://www.linkedin.com/company/becollectiveintl',
94
- // privacyPolicyUrl: 'https://www.becollective.com/documents/Be-Collective-Europe-Privacy-Notice-December-2020.pdf',
95
- // termsAndConditionsUrl: 'https://www.becollective.com/documents/Be-Collective-Europe-General-Terms-May-2023.pdf',
96
- // privacyPolicyVersion: 2,
97
- // termsAndConditionsVersion: 4,
98
- // address: 'Tintagel House, 92 Albert Embankment, Lambeth, London, SE1 7TY',
99
- // },
100
- uk: {
101
- name: 'United Kingdom',
102
- domain: 'https://uk.becollective.com',
103
- hostname: 'uk.becollective.com',
104
- trademark: 'Be Collective Europe Limited',
105
- twitter: 'https://twitter.com/BeCollective_',
106
- facebook: 'https://www.facebook.com/Be-Collective-Europe-2168455776525016/',
107
- instagram: 'https://www.instagram.com/becollective_',
108
- linkedin: 'https://www.linkedin.com/company/becollectiveintl',
109
- privacyPolicyUrl: 'https://www.becollective.com/documents/Be-Collective-Europe-Privacy-Notice-December-2020.pdf',
110
- termsAndConditionsUrl: 'https://www.becollective.com/documents/Be-Collective-Europe-General-Terms-May-2023.pdf',
111
- privacyPolicyVersion: 2,
112
- termsAndConditionsVersion: 4,
113
- address: 'Tintagel House, 92 Albert Embankment, Lambeth, London, SE1 7TY',
114
- },
4
+ export const europeanCountryCodes = [
5
+ 'AL',
6
+ 'AD',
7
+ 'AM',
8
+ 'AT',
9
+ 'BY',
10
+ 'BE',
11
+ 'BA',
12
+ 'BG',
13
+ 'CH',
14
+ 'CY',
15
+ 'CZ',
16
+ 'DE',
17
+ 'DK',
18
+ 'EE',
19
+ 'ES',
20
+ 'FO',
21
+ 'FI',
22
+ 'FR',
23
+ 'GE',
24
+ 'VA',
25
+ 'GI',
26
+ 'GR',
27
+ 'HU',
28
+ 'HR',
29
+ 'IE',
30
+ 'IS',
31
+ 'IT',
32
+ 'LT',
33
+ 'LU',
34
+ 'LV',
35
+ 'MC',
36
+ 'MK',
37
+ 'MT',
38
+ 'NO',
39
+ 'NL',
40
+ 'PO',
41
+ 'PT',
42
+ 'RO',
43
+ 'RU',
44
+ 'SE',
45
+ 'SI',
46
+ 'SK',
47
+ 'SM',
48
+ 'TR',
49
+ 'UA',
50
+ ];
51
+
52
+ export const regionOptions = {
53
+ au: {
54
+ name: 'Australia',
55
+ domain: 'https://app.becollective.com',
56
+ hostname: 'app.becollective.com',
57
+ trademark: 'Be Collective International Limited',
58
+ twitter: 'https://twitter.com/BeCollective_',
59
+ facebook: 'https://www.facebook.com/becollectiveintl/',
60
+ instagram: 'https://www.instagram.com/becollective_',
61
+ linkedin: 'https://www.linkedin.com/company/becollectiveintl',
62
+ privacyPolicyUrl: 'https://www.becollective.com/documents/Be-Collective-Global-Privacy-Policy-September-2021.pdf',
63
+ termsAndConditionsUrl:
64
+ 'https://www.becollective.com/documents/Be-Collective-Global-General-Terms-February-2023.pdf',
65
+ privacyPolicyVersion: 2,
66
+ termsAndConditionsVersion: 6,
67
+ address: 'Level 16, 300 Flinders Street, Melbourne, VIC 3000',
115
68
  },
116
- // Financial years from https://www.cia.gov/library/publications/the-world-factbook/fields/228.html
117
- countryOptions: {
118
- AU: {
119
- financialYearEndDate: {
120
- month: 5,
121
- date: 30,
122
- },
123
- distanceUnit: distanceUnits.km,
124
- regions: [
125
- {
126
- long: 'Australian Capital Territory',
127
- short: 'ACT',
128
- },
129
- {
130
- long: 'New South Wales',
131
- short: 'NSW',
132
- },
133
- {
134
- long: 'Northern Territory',
135
- short: 'NT',
136
- },
137
- {
138
- long: 'Queensland',
139
- short: 'QLD',
140
- },
141
- {
142
- long: 'South Australia',
143
- short: 'SA',
144
- },
145
- {
146
- long: 'Tasmania',
147
- short: 'TAS',
148
- },
149
- {
150
- long: 'Victoria',
151
- short: 'VIC',
152
- },
153
- {
154
- long: 'Western Australia',
155
- short: 'WA',
156
- },
157
- ],
158
- insuranceTypes: [insuranceTypes.publicLiabilityAU, insuranceTypes.volunteerAccidentAU],
69
+ nz: {
70
+ name: 'New Zealand',
71
+ domain: 'https://nz.becollective.com',
72
+ hostname: 'nz.becollective.com',
73
+ trademark: 'Be Collective New Zealand Limited',
74
+ twitter: 'https://twitter.com/BeCollective_',
75
+ facebook: 'https://www.facebook.com/becollectivenz/',
76
+ instagram: 'https://www.instagram.com/becollective_',
77
+ linkedin: 'https://www.linkedin.com/company/becollectiveintl',
78
+ privacyPolicyUrl: 'https://www.becollective.com/documents/Be-Collective-Global-Privacy-Policy-September-2021.pdf',
79
+ termsAndConditionsUrl:
80
+ 'https://www.becollective.com/documents/Be-Collective-Global-General-Terms-February-2023.pdf',
81
+ privacyPolicyVersion: 2,
82
+ termsAndConditionsVersion: 6,
83
+ address: 'Level 3 Zephyr House, 82 Willis Street, Wellington',
84
+ },
85
+ // eu: {
86
+ // name: 'Europe',
87
+ // domain: 'https://eu.becollective.com',
88
+ // hostname: 'eu.becollective.com',
89
+ // trademark: 'Be Collective Europe Limited',
90
+ // twitter: 'https://twitter.com/BeCollective_',
91
+ // facebook: 'https://www.facebook.com/Be-Collective-Europe-2168455776525016/',
92
+ // instagram: 'https://www.instagram.com/becollective_',
93
+ // linkedin: 'https://www.linkedin.com/company/becollectiveintl',
94
+ // privacyPolicyUrl: 'https://www.becollective.com/documents/Be-Collective-Europe-Privacy-Notice-December-2020.pdf',
95
+ // termsAndConditionsUrl: 'https://www.becollective.com/documents/Be-Collective-Europe-General-Terms-May-2023.pdf',
96
+ // privacyPolicyVersion: 2,
97
+ // termsAndConditionsVersion: 4,
98
+ // address: 'Tintagel House, 92 Albert Embankment, Lambeth, London, SE1 7TY',
99
+ // },
100
+ uk: {
101
+ name: 'United Kingdom',
102
+ domain: 'https://uk.becollective.com',
103
+ hostname: 'uk.becollective.com',
104
+ trademark: 'Be Collective Europe Limited',
105
+ twitter: 'https://twitter.com/BeCollective_',
106
+ facebook: 'https://www.facebook.com/Be-Collective-Europe-2168455776525016/',
107
+ instagram: 'https://www.instagram.com/becollective_',
108
+ linkedin: 'https://www.linkedin.com/company/becollectiveintl',
109
+ privacyPolicyUrl: 'https://www.becollective.com/documents/Be-Collective-Europe-Privacy-Notice-December-2020.pdf',
110
+ termsAndConditionsUrl: 'https://www.becollective.com/documents/Be-Collective-Europe-General-Terms-May-2023.pdf',
111
+ privacyPolicyVersion: 2,
112
+ termsAndConditionsVersion: 4,
113
+ address: 'Tintagel House, 92 Albert Embankment, Lambeth, London, SE1 7TY',
114
+ },
115
+ };
116
+
117
+ // Financial years from https://www.cia.gov/library/publications/the-world-factbook/fields/228.html
118
+ export const countryOptions = {
119
+ AU: {
120
+ financialYearEndDate: {
121
+ month: 5,
122
+ date: 30,
159
123
  },
160
- NZ: {
161
- financialYearEndDate: {
162
- month: 2,
163
- date: 31,
124
+ distanceUnit: distanceUnits.km,
125
+ regions: [
126
+ {
127
+ long: 'Australian Capital Territory',
128
+ short: 'ACT',
164
129
  },
165
- distanceUnit: distanceUnits.km,
166
- insuranceTypes: [insuranceTypes.publicLiabilityNZ, insuranceTypes.volunteerAccidentNZ],
167
- },
168
- GB: {
169
- financialYearEndDate: {
170
- month: 3,
171
- date: 5,
130
+ {
131
+ long: 'New South Wales',
132
+ short: 'NSW',
172
133
  },
173
- distanceUnit: distanceUnits.mi,
174
- insuranceTypes: [insuranceTypes.publicLiabilityGB, insuranceTypes.volunteerAccidentGB],
175
- },
176
- // Reminder: this is Republic of Ireland. Northern Ireland is within GB.
177
- IE: {
178
- financialYearEndDate: {
179
- month: 11,
180
- date: 31,
134
+ {
135
+ long: 'Northern Territory',
136
+ short: 'NT',
137
+ },
138
+ {
139
+ long: 'Queensland',
140
+ short: 'QLD',
181
141
  },
182
- distanceUnit: distanceUnits.km,
183
- insuranceTypes: [insuranceTypes.publicLiabilityOthers, insuranceTypes.volunteerAccidentOthers],
142
+ {
143
+ long: 'South Australia',
144
+ short: 'SA',
145
+ },
146
+ {
147
+ long: 'Tasmania',
148
+ short: 'TAS',
149
+ },
150
+ {
151
+ long: 'Victoria',
152
+ short: 'VIC',
153
+ },
154
+ {
155
+ long: 'Western Australia',
156
+ short: 'WA',
157
+ },
158
+ ],
159
+ insuranceTypes: [insuranceTypes.publicLiabilityAU, insuranceTypes.volunteerAccidentAU],
160
+ },
161
+ NZ: {
162
+ financialYearEndDate: {
163
+ month: 2,
164
+ date: 31,
184
165
  },
185
- Others: {
186
- insuranceTypes: [insuranceTypes.publicLiabilityOthers, insuranceTypes.volunteerAccidentOthers],
166
+ distanceUnit: distanceUnits.km,
167
+ insuranceTypes: [insuranceTypes.publicLiabilityNZ, insuranceTypes.volunteerAccidentNZ],
168
+ },
169
+ GB: {
170
+ financialYearEndDate: {
171
+ month: 3,
172
+ date: 5,
187
173
  },
174
+ distanceUnit: distanceUnits.mi,
175
+ insuranceTypes: [insuranceTypes.publicLiabilityGB, insuranceTypes.volunteerAccidentGB],
176
+ },
177
+ // Reminder: this is Republic of Ireland. Northern Ireland is within GB.
178
+ IE: {
179
+ financialYearEndDate: {
180
+ month: 11,
181
+ date: 31,
182
+ },
183
+ distanceUnit: distanceUnits.km,
184
+ insuranceTypes: [insuranceTypes.publicLiabilityOthers, insuranceTypes.volunteerAccidentOthers],
185
+ },
186
+ Others: {
187
+ insuranceTypes: [insuranceTypes.publicLiabilityOthers, insuranceTypes.volunteerAccidentOthers],
188
188
  },
189
189
  };
190
+
191
+ export const locales = {
192
+ europeanCountryCodes,
193
+ regionOptions,
194
+ countryOptions,
195
+ }
196
+
197
+ export default locales;
package/src/forms.ts CHANGED
@@ -81,7 +81,7 @@ const validateType = async (params: { type: string, data: any, schema?: any, err
81
81
  };
82
82
  };
83
83
 
84
- const validator = {
84
+ export const validator = {
85
85
  validateSchema: async (schema, uischema) => {
86
86
  if (!schema.hasOwnProperty('properties')) {
87
87
  throw {
@@ -804,4 +804,4 @@ const validator = {
804
804
  },
805
805
  };
806
806
 
807
- module.exports = validator;
807
+ export default validator;