@bisondesk/website-commons-sdk 1.0.41 → 1.0.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/types/events.d.ts +5 -31
- package/lib/types/events.d.ts.map +1 -1
- package/lib/types/events.js +1 -17
- package/lib/types/events.js.map +1 -1
- package/lib/types/user.d.ts +34 -44
- package/lib/types/user.d.ts.map +1 -1
- package/lib/types/user.js +19 -24
- package/lib/types/user.js.map +1 -1
- package/lib/types/vehicle.d.ts +8 -1
- package/lib/types/vehicle.d.ts.map +1 -1
- package/lib/types/vehicle.js.map +1 -1
- package/package.json +1 -1
- package/src/types/events.ts +15 -21
- package/src/types/user.ts +27 -33
- package/src/types/vehicle.ts +8 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/src/types/events.test.ts +0 -107
package/lib/types/events.d.ts
CHANGED
|
@@ -1,41 +1,15 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
1
|
import { WebsiteVehicle } from './vehicle.js';
|
|
3
|
-
export
|
|
4
|
-
action:
|
|
5
|
-
vehicleId: z.ZodString;
|
|
6
|
-
vehicle: z.ZodOptional<z.ZodUndefined>;
|
|
7
|
-
tenantId: z.ZodString;
|
|
8
|
-
stockNumber: z.ZodString;
|
|
9
|
-
}, "strip", z.ZodTypeAny, {
|
|
10
|
-
action: "delete";
|
|
2
|
+
export type WebsiteEvent = {
|
|
3
|
+
action: 'delete';
|
|
11
4
|
vehicleId: string;
|
|
12
|
-
tenantId: string;
|
|
13
|
-
stockNumber: string;
|
|
14
5
|
vehicle?: undefined;
|
|
15
|
-
}, {
|
|
16
|
-
action: "delete";
|
|
17
|
-
vehicleId: string;
|
|
18
6
|
tenantId: string;
|
|
19
7
|
stockNumber: string;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
action: z.ZodLiteral<"upsert">;
|
|
23
|
-
vehicleId: z.ZodString;
|
|
24
|
-
tenantId: z.ZodString;
|
|
25
|
-
vehicle: z.ZodType<WebsiteVehicle, z.ZodTypeDef, WebsiteVehicle>;
|
|
26
|
-
stockNumber: z.ZodString;
|
|
27
|
-
}, "strip", z.ZodTypeAny, {
|
|
28
|
-
action: "upsert";
|
|
8
|
+
} | {
|
|
9
|
+
action: 'upsert';
|
|
29
10
|
vehicleId: string;
|
|
30
|
-
vehicle: WebsiteVehicle;
|
|
31
11
|
tenantId: string;
|
|
32
|
-
stockNumber: string;
|
|
33
|
-
}, {
|
|
34
|
-
action: "upsert";
|
|
35
|
-
vehicleId: string;
|
|
36
12
|
vehicle: WebsiteVehicle;
|
|
37
|
-
tenantId: string;
|
|
38
13
|
stockNumber: string;
|
|
39
|
-
}
|
|
40
|
-
export type WebsiteEvent = z.infer<typeof WebsiteEvent>;
|
|
14
|
+
};
|
|
41
15
|
//# sourceMappingURL=events.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"/","sources":["types/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"/","sources":["types/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,MAAM,YAAY,GACpB;IACE,MAAM,EAAE,QAAQ,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,GACD;IACE,MAAM,EAAE,QAAQ,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,cAAc,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC"}
|
package/lib/types/events.js
CHANGED
|
@@ -1,18 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export const WebsiteEvent = z.discriminatedUnion('action', [
|
|
3
|
-
z.object({
|
|
4
|
-
action: z.literal('delete'),
|
|
5
|
-
vehicleId: z.string(),
|
|
6
|
-
vehicle: z.undefined().optional(),
|
|
7
|
-
tenantId: z.string(),
|
|
8
|
-
stockNumber: z.string(),
|
|
9
|
-
}),
|
|
10
|
-
z.object({
|
|
11
|
-
action: z.literal('upsert'),
|
|
12
|
-
vehicleId: z.string(),
|
|
13
|
-
tenantId: z.string(),
|
|
14
|
-
vehicle: z.custom((val) => typeof val === 'object' && val !== null),
|
|
15
|
-
stockNumber: z.string(),
|
|
16
|
-
}),
|
|
17
|
-
]);
|
|
1
|
+
export {};
|
|
18
2
|
//# sourceMappingURL=events.js.map
|
package/lib/types/events.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"/","sources":["types/events.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"/","sources":["types/events.ts"],"names":[],"mappings":"","sourcesContent":["import { WebsiteVehicle } from './vehicle.js';\n\nexport type WebsiteEvent =\n | {\n action: 'delete';\n vehicleId: string;\n vehicle?: undefined;\n tenantId: string;\n stockNumber: string;\n }\n | {\n action: 'upsert';\n vehicleId: string;\n tenantId: string;\n vehicle: WebsiteVehicle;\n stockNumber: string;\n };\n"]}
|
package/lib/types/user.d.ts
CHANGED
|
@@ -8,45 +8,11 @@ export declare enum FleetSize {
|
|
|
8
8
|
Medium = "2-5",
|
|
9
9
|
Large = "6+"
|
|
10
10
|
}
|
|
11
|
-
export declare const VatSchema: z.
|
|
11
|
+
export declare const VatSchema: z.ZodString;
|
|
12
12
|
export declare const isValidVatForCountry: ({ vat, country, }: {
|
|
13
13
|
vat: string;
|
|
14
14
|
country: string;
|
|
15
15
|
}) => boolean;
|
|
16
|
-
export declare const CompanySchema: z.ZodObject<{
|
|
17
|
-
country: z.ZodOptional<z.ZodString>;
|
|
18
|
-
city: z.ZodOptional<z.ZodString>;
|
|
19
|
-
name: z.ZodOptional<z.ZodString>;
|
|
20
|
-
vat: z.ZodOptional<z.ZodEffects<z.ZodString, string | undefined, string>>;
|
|
21
|
-
postalCode: z.ZodOptional<z.ZodString>;
|
|
22
|
-
}, "strip", z.ZodTypeAny, {
|
|
23
|
-
country?: string | undefined;
|
|
24
|
-
vat?: string | undefined;
|
|
25
|
-
city?: string | undefined;
|
|
26
|
-
name?: string | undefined;
|
|
27
|
-
postalCode?: string | undefined;
|
|
28
|
-
}, {
|
|
29
|
-
country?: string | undefined;
|
|
30
|
-
vat?: string | undefined;
|
|
31
|
-
city?: string | undefined;
|
|
32
|
-
name?: string | undefined;
|
|
33
|
-
postalCode?: string | undefined;
|
|
34
|
-
}>;
|
|
35
|
-
export declare function refineCompanySchema(schema: z.ZodRawShape): z.ZodEffects<z.ZodObject<z.objectUtil.extendShape<{
|
|
36
|
-
country: z.ZodOptional<z.ZodString>;
|
|
37
|
-
city: z.ZodOptional<z.ZodString>;
|
|
38
|
-
name: z.ZodOptional<z.ZodString>;
|
|
39
|
-
vat: z.ZodOptional<z.ZodEffects<z.ZodString, string | undefined, string>>;
|
|
40
|
-
postalCode: z.ZodOptional<z.ZodString>;
|
|
41
|
-
}, z.ZodRawShape>, "strip", z.ZodTypeAny, {
|
|
42
|
-
[x: string]: any;
|
|
43
|
-
}, {
|
|
44
|
-
[x: string]: any;
|
|
45
|
-
}>, {
|
|
46
|
-
[x: string]: any;
|
|
47
|
-
}, {
|
|
48
|
-
[x: string]: any;
|
|
49
|
-
}>;
|
|
50
16
|
export declare const UserDetails: z.ZodObject<{
|
|
51
17
|
firstName: z.ZodOptional<z.ZodString>;
|
|
52
18
|
lastName: z.ZodOptional<z.ZodString>;
|
|
@@ -55,26 +21,46 @@ export declare const UserDetails: z.ZodObject<{
|
|
|
55
21
|
fleetSize: z.ZodOptional<z.ZodNativeEnum<typeof FleetSize>>;
|
|
56
22
|
trader: z.ZodOptional<z.ZodBoolean>;
|
|
57
23
|
email: z.ZodString;
|
|
58
|
-
company: z.ZodEffects<z.ZodObject<
|
|
24
|
+
company: z.ZodEffects<z.ZodObject<{
|
|
59
25
|
country: z.ZodOptional<z.ZodString>;
|
|
60
26
|
city: z.ZodOptional<z.ZodString>;
|
|
61
27
|
name: z.ZodOptional<z.ZodString>;
|
|
62
|
-
vat: z.ZodOptional<z.
|
|
28
|
+
vat: z.ZodOptional<z.ZodString>;
|
|
63
29
|
postalCode: z.ZodOptional<z.ZodString>;
|
|
64
|
-
},
|
|
65
|
-
|
|
30
|
+
}, "strip", z.ZodTypeAny, {
|
|
31
|
+
country?: string | undefined;
|
|
32
|
+
vat?: string | undefined;
|
|
33
|
+
city?: string | undefined;
|
|
34
|
+
name?: string | undefined;
|
|
35
|
+
postalCode?: string | undefined;
|
|
66
36
|
}, {
|
|
67
|
-
|
|
37
|
+
country?: string | undefined;
|
|
38
|
+
vat?: string | undefined;
|
|
39
|
+
city?: string | undefined;
|
|
40
|
+
name?: string | undefined;
|
|
41
|
+
postalCode?: string | undefined;
|
|
68
42
|
}>, {
|
|
69
|
-
|
|
43
|
+
country?: string | undefined;
|
|
44
|
+
vat?: string | undefined;
|
|
45
|
+
city?: string | undefined;
|
|
46
|
+
name?: string | undefined;
|
|
47
|
+
postalCode?: string | undefined;
|
|
70
48
|
}, {
|
|
71
|
-
|
|
49
|
+
country?: string | undefined;
|
|
50
|
+
vat?: string | undefined;
|
|
51
|
+
city?: string | undefined;
|
|
52
|
+
name?: string | undefined;
|
|
53
|
+
postalCode?: string | undefined;
|
|
72
54
|
}>;
|
|
73
55
|
marketingChannels: z.ZodArray<z.ZodNativeEnum<typeof MarketingChannel>, "many">;
|
|
74
56
|
}, "strip", z.ZodTypeAny, {
|
|
75
57
|
email: string;
|
|
76
58
|
company: {
|
|
77
|
-
|
|
59
|
+
country?: string | undefined;
|
|
60
|
+
vat?: string | undefined;
|
|
61
|
+
city?: string | undefined;
|
|
62
|
+
name?: string | undefined;
|
|
63
|
+
postalCode?: string | undefined;
|
|
78
64
|
};
|
|
79
65
|
marketingChannels: MarketingChannel[];
|
|
80
66
|
phone?: string | undefined;
|
|
@@ -86,7 +72,11 @@ export declare const UserDetails: z.ZodObject<{
|
|
|
86
72
|
}, {
|
|
87
73
|
email: string;
|
|
88
74
|
company: {
|
|
89
|
-
|
|
75
|
+
country?: string | undefined;
|
|
76
|
+
vat?: string | undefined;
|
|
77
|
+
city?: string | undefined;
|
|
78
|
+
name?: string | undefined;
|
|
79
|
+
postalCode?: string | undefined;
|
|
90
80
|
};
|
|
91
81
|
marketingChannels: MarketingChannel[];
|
|
92
82
|
phone?: string | undefined;
|
package/lib/types/user.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.d.ts","sourceRoot":"/","sources":["types/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,oBAAY,SAAS;IACnB,KAAK,MAAM;IACX,MAAM,QAAQ;IACd,KAAK,OAAO;CACb;AAED,eAAO,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"user.d.ts","sourceRoot":"/","sources":["types/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,oBAAY,SAAS;IACnB,KAAK,MAAM;IACX,MAAM,QAAQ;IACd,KAAK,OAAO;CACb;AAED,eAAO,MAAM,SAAS,aAA2B,CAAC;AAiDlD,eAAO,MAAM,oBAAoB,GAAI,mBAGlC;IACD,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB,KAAG,OAMH,CAAC;AAWF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmCtB,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC"}
|
package/lib/types/user.js
CHANGED
|
@@ -6,10 +6,7 @@ export var FleetSize;
|
|
|
6
6
|
FleetSize["Medium"] = "2-5";
|
|
7
7
|
FleetSize["Large"] = "6+";
|
|
8
8
|
})(FleetSize || (FleetSize = {}));
|
|
9
|
-
export const VatSchema = z
|
|
10
|
-
.string()
|
|
11
|
-
.toUpperCase()
|
|
12
|
-
.transform((v) => v || undefined);
|
|
9
|
+
export const VatSchema = z.string().toUpperCase();
|
|
13
10
|
const VAT_PATTERNS = {
|
|
14
11
|
AT: /^AT.+/,
|
|
15
12
|
BE: /^BE.+/,
|
|
@@ -58,15 +55,23 @@ const getVatPrefix = (country) => {
|
|
|
58
55
|
const match = pattern.toString().match(/\^(\w+)/);
|
|
59
56
|
return match ? match[1] : '';
|
|
60
57
|
};
|
|
61
|
-
export const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
58
|
+
export const UserDetails = z.object({
|
|
59
|
+
firstName: z.string().optional(),
|
|
60
|
+
lastName: z.string().optional(),
|
|
61
|
+
phone: z.string().optional(),
|
|
62
|
+
preferredLanguage: z.string().optional(),
|
|
63
|
+
fleetSize: z.nativeEnum(FleetSize).optional(),
|
|
64
|
+
trader: z.boolean().optional(),
|
|
65
|
+
email: z.string().email().toLowerCase(),
|
|
66
|
+
company: z
|
|
67
|
+
.object({
|
|
68
|
+
country: z.string().optional(),
|
|
69
|
+
city: z.string().optional(),
|
|
70
|
+
name: z.string().optional(),
|
|
71
|
+
vat: VatSchema.optional(),
|
|
72
|
+
postalCode: z.string().optional(),
|
|
73
|
+
})
|
|
74
|
+
.superRefine((data, ctx) => {
|
|
70
75
|
if (!data.vat || !data.country) {
|
|
71
76
|
return;
|
|
72
77
|
}
|
|
@@ -78,17 +83,7 @@ export function refineCompanySchema(schema) {
|
|
|
78
83
|
params: { prefix, messageKey: 'vat.invalidFormat' },
|
|
79
84
|
});
|
|
80
85
|
}
|
|
81
|
-
})
|
|
82
|
-
}
|
|
83
|
-
export const UserDetails = z.object({
|
|
84
|
-
firstName: z.string().optional(),
|
|
85
|
-
lastName: z.string().optional(),
|
|
86
|
-
phone: z.string().optional(),
|
|
87
|
-
preferredLanguage: z.string().optional(),
|
|
88
|
-
fleetSize: z.nativeEnum(FleetSize).optional(),
|
|
89
|
-
trader: z.boolean().optional(),
|
|
90
|
-
email: z.string().email().toLowerCase(),
|
|
91
|
-
company: refineCompanySchema({}),
|
|
86
|
+
}),
|
|
92
87
|
marketingChannels: z.array(z.nativeEnum(MarketingChannel)),
|
|
93
88
|
});
|
|
94
89
|
//# sourceMappingURL=user.js.map
|
package/lib/types/user.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.js","sourceRoot":"/","sources":["types/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAM9C,MAAM,CAAN,IAAY,SAIX;AAJD,WAAY,SAAS;IACnB,wBAAW,CAAA;IACX,2BAAc,CAAA;IACd,yBAAY,CAAA;AACd,CAAC,EAJW,SAAS,KAAT,SAAS,QAIpB;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC
|
|
1
|
+
{"version":3,"file":"user.js","sourceRoot":"/","sources":["types/user.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod';\nimport { MarketingChannel } from './index.js';\n\nexport type AuthRequest = {\n userId: string;\n};\n\nexport enum FleetSize {\n Small = '1',\n Medium = '2-5',\n Large = '6+',\n}\n\nexport const VatSchema = z.string().toUpperCase();\n\n/**\n * Light VAT-number validation patterns by country.\n *\n * Countries without an entry accept any VAT number (no validation).\n *\n * Includes EU-27, EEA non-EU (NO, IS), Switzerland (CH), and the UK (GB).\n * Note: Liechtenstein shares the Swiss CHE VAT system and is intentionally\n * excluded — its numbers don't start with \"LI\".\n */\nconst VAT_PATTERNS: Record<string, RegExp> = {\n // EU-27\n AT: /^AT.+/,\n BE: /^BE.+/,\n BG: /^BG.+/,\n CY: /^CY.+/,\n CZ: /^CZ.+/,\n DE: /^DE.+/,\n DK: /^DK.+/,\n EE: /^EE.+/,\n ES: /^ES.+/,\n FI: /^FI.+/,\n FR: /^FR.+/,\n GR: /^EL.+/,\n HR: /^HR.+/,\n HU: /^HU.+/,\n IE: /^IE.+/,\n IT: /^IT.+/,\n LT: /^LT.+/,\n LU: /^LU.+/,\n LV: /^LV.+/,\n MT: /^MT.+/,\n NL: /^NL.+/,\n PL: /^PL.+/,\n PT: /^PT.+/,\n RO: /^RO.+/,\n SE: /^SE.+/,\n SI: /^SI.+/,\n SK: /^SK.+/,\n // EEA non-EU\n NO: /^NO.+/,\n IS: /^IS.+/,\n // Switzerland — 3-letter CHE prefix\n CH: /^CHE.+/,\n // United Kingdom + Northern Ireland (XI prefix post-Brexit)\n GB: /^(GB|XI).+/,\n};\n\nexport const isValidVatForCountry = ({\n vat,\n country,\n}: {\n vat: string;\n country: string;\n}): boolean => {\n const pattern = VAT_PATTERNS[country.toUpperCase()];\n if (!pattern) {\n return true;\n }\n return pattern.test(vat);\n};\n\nconst getVatPrefix = (country: string): string => {\n const pattern = VAT_PATTERNS[country.toUpperCase()];\n if (!pattern) {\n return '';\n }\n const match = pattern.toString().match(/\\^(\\w+)/);\n return match ? match[1] : '';\n};\n\nexport const UserDetails = z.object({\n firstName: z.string().optional(),\n lastName: z.string().optional(),\n phone: z.string().optional(),\n preferredLanguage: z.string().optional(),\n fleetSize: z.nativeEnum(FleetSize).optional(),\n trader: z.boolean().optional(),\n email: z.string().email().toLowerCase(),\n company: z\n .object({\n country: z.string().optional(),\n city: z.string().optional(),\n name: z.string().optional(),\n vat: VatSchema.optional(),\n postalCode: z.string().optional(),\n })\n /* TODO when updating to zod v4, change addIssue options to \n message: 'vat.invalidFormat',\n path: ['vat'],\n */\n .superRefine((data, ctx) => {\n if (!data.vat || !data.country) {\n return;\n }\n if (!isValidVatForCountry({ vat: data.vat, country: data.country })) {\n const prefix = getVatPrefix(data.country);\n\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['vat'],\n params: { prefix, messageKey: 'vat.invalidFormat' },\n });\n }\n }),\n marketingChannels: z.array(z.nativeEnum(MarketingChannel)),\n});\n\nexport type UserDetails = z.infer<typeof UserDetails>;\n"]}
|
package/lib/types/vehicle.d.ts
CHANGED
|
@@ -23,6 +23,14 @@ export type WebsiteVehicle = {
|
|
|
23
23
|
features: string[];
|
|
24
24
|
unlistAt?: string;
|
|
25
25
|
previousPrice?: string;
|
|
26
|
+
localizedPricing?: Array<{
|
|
27
|
+
countryCode: string;
|
|
28
|
+
currency: string;
|
|
29
|
+
price: number;
|
|
30
|
+
previousPrice?: number;
|
|
31
|
+
deliveryLocation?: string;
|
|
32
|
+
leasing?: boolean;
|
|
33
|
+
}>;
|
|
26
34
|
};
|
|
27
35
|
};
|
|
28
36
|
export type VehicleExternalInfo = {
|
|
@@ -99,7 +107,6 @@ export type VehicleExternalInfo = {
|
|
|
99
107
|
axles?: VehicleAxlesInfo;
|
|
100
108
|
emissions?: {
|
|
101
109
|
class?: string;
|
|
102
|
-
subclass?: string;
|
|
103
110
|
};
|
|
104
111
|
engine?: {
|
|
105
112
|
cylinderCount?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vehicle.d.ts","sourceRoot":"/","sources":["types/vehicle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,MAAM,EAAE;QACN,MAAM,EAAE,OAAO,CAAC;QAChB,IAAI,EAAE,OAAO,CAAC;QACd,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;IACF,SAAS,EAAE;QACT,MAAM,EAAE,cAAc,CAAC;QACvB,OAAO,EAAE,cAAc,CAAC;KACzB,CAAC;IACF,oBAAoB,EAAE;QACpB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE;YACP,IAAI,EAAE,MAAM,CAAC;YACb,QAAQ,CAAC,EAAE,aAAa,CAAC;SAC1B,CAAC;QACF,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"vehicle.d.ts","sourceRoot":"/","sources":["types/vehicle.ts"],"names":[],"mappings":"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"}
|
package/lib/types/vehicle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vehicle.js","sourceRoot":"/","sources":["types/vehicle.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vehicle.js","sourceRoot":"/","sources":["types/vehicle.ts"],"names":[],"mappings":"AAqSA,MAAM,CAAN,IAAY,iBAKX;AALD,WAAY,iBAAiB;IAC3B,sCAAiB,CAAA;IACjB,wCAAmB,CAAA;IACnB,kDAA6B,CAAA;IAC7B,kDAA6B,CAAA;AAC/B,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,QAK5B;AAED,MAAM,CAAN,IAAY,eAoBX;AApBD,WAAY,eAAe;IACzB,oCAAiB,CAAA;IACjB,oCAAiB,CAAA;IACjB,8BAAW,CAAA;IACX,oCAAiB,CAAA;IACjB,wCAAqB,CAAA;IACrB,8BAAW,CAAA;IACX,wCAAqB,CAAA;IACrB,6CAA0B,CAAA;IAC1B,2CAAwB,CAAA;IACxB,8BAAW,CAAA;IACX,gCAAa,CAAA;IACb,4CAAyB,CAAA;IACzB,4CAAyB,CAAA;IACzB,kDAA+B,CAAA;IAC/B,kDAA+B,CAAA;IAC/B,sDAAmC,CAAA;IACnC,sDAAmC,CAAA;IACnC,oCAAiB,CAAA;IACjB,kCAAe,CAAA;AACjB,CAAC,EApBW,eAAe,KAAf,eAAe,QAoB1B","sourcesContent":["import { LocationValue } from './locations.js';\n\nexport type WebsiteVehicle = {\n id: string;\n external: VehicleExternalInfo;\n status: {\n listed: boolean;\n sold: boolean;\n upcoming: boolean;\n };\n marketing: {\n titles: MultiLangValue;\n remarks: MultiLangValue;\n };\n customSortableFields: {\n availableSince?: string;\n };\n custom: {\n partnerId: string; // the original tenantId of this vehicle\n origin?: {\n name: string;\n location?: LocationValue;\n };\n features: string[];\n unlistAt?: string;\n previousPrice?: string;\n localizedPricing?: Array<{\n countryCode: string;\n currency: string;\n price: number;\n previousPrice?: number;\n deliveryLocation?: string;\n leasing?: boolean;\n }>;\n };\n};\n\nexport type VehicleExternalInfo = {\n body?: {\n cabin?: {\n type: 'Day' | 'Sleep / Small' | 'Sleep / Medium' | 'Sleep / Large';\n model?: string;\n };\n colour?: string;\n dimensions?: {\n height?: number;\n length?: number;\n width?: number;\n };\n doorCount?: number;\n fifthWheelHeight?: number;\n internalDimensions?: {\n height?: number;\n length?: number;\n width?: number;\n };\n interior?: {\n bedCount?: number;\n seatCount?: number;\n };\n kingpin?: {\n size?: number;\n capacity?: number;\n };\n };\n mainPicture?: AttachmentValue;\n pictures?: AttachmentValue[];\n videos?: AttachmentValue[];\n condition?: {\n damaged?: boolean;\n odometer?: {\n km?: number;\n };\n used?: boolean;\n };\n general: {\n bodystyle?: string;\n category: string;\n color?: {\n mainColorHex?: string;\n };\n make?: string;\n model?: string;\n modelName?: string;\n type?: string;\n typeName?: string;\n tacho?: VehicleTachoTypes;\n };\n history?: {\n advertisingYear?: number;\n constructionYear?: number;\n currentRegistration?: {\n country?: string;\n technicalInspectionEndDate?: string;\n carpassUrl?: string;\n carpassAvailable?: boolean;\n };\n firstRegistration?: string;\n cocPvg?: string;\n };\n identification: {\n licensePlate?: string;\n stockNumber?: string;\n vin?: string;\n buildStockNumber?: string;\n engineNumber?: string;\n };\n powertrain?: {\n axles?: VehicleAxlesInfo;\n emissions?: {\n class?: string;\n };\n engine?: {\n cylinderCount?: number;\n energy?: { type?: VehicleFuelType };\n power?: {\n hp?: number;\n };\n displacement?: number;\n };\n transmission?: {\n gearCount?: number;\n make?: string;\n model?: string;\n type?: 'Automatic' | 'Manual' | 'Semi-Automatic';\n };\n };\n salesConditions: {\n leasing?: boolean;\n expected?: boolean;\n price?: string | undefined;\n currency?: string | undefined;\n marginScheme?: boolean;\n manufacturerWarranty?: {\n remarks?: string;\n available?: boolean;\n };\n };\n superstructure?: VehicleSuperstructure;\n trailers?: {\n cooler?: {\n hasCooler?: boolean;\n make?: string;\n };\n };\n weights?: {\n gvw?: number;\n massEmpty?: number;\n };\n accessories: {\n abs?: boolean;\n adr?: boolean;\n airco?: boolean;\n alloyWheels?: boolean;\n aluminiumFuelTank?: boolean;\n cdPlayer?: boolean;\n centralLocking?: boolean;\n centralLubrication?: boolean;\n cruiseControl?: boolean;\n electricDoorMirrors?: boolean;\n electricWindows?: boolean;\n engineBrake?: boolean;\n forklift?: boolean;\n navigationSystem?: boolean;\n hydraulicTipperKit?: boolean;\n lowDeck?: boolean;\n lowNoise?: boolean;\n parkingHeater?: boolean;\n particleFilter?: boolean;\n powerTakeOff?: boolean;\n refrigerator?: boolean;\n retarderIntarder?: boolean;\n reversingCamera?: boolean;\n roofSpoiler?: boolean;\n sideSkirts?: boolean;\n spareKey?: boolean;\n spareWheel?: boolean;\n speedLimiter?: boolean;\n spoilers?: boolean;\n spotlights?: boolean;\n stabilityControl?: boolean;\n standardAirco?: boolean;\n television?: boolean;\n toolbox?: boolean;\n trailerCoupling?: boolean;\n twinFuelTank?: boolean;\n visor?: boolean;\n xenonLights?: boolean;\n };\n publicLink?: string;\n};\n\nexport type AttachmentValue = {\n contentType: string;\n fileName: string;\n id: string;\n previewSrc?: string;\n size: number;\n uploadedAt: string;\n uploadedBy: string;\n url: string;\n descriptions?: string | MultiLangValue;\n};\n\nexport type MultiLangValue = { key?: string } & { [languageCode: string]: string };\n\nexport type VehicleAxlesInfo = {\n details?: VehicleAxle[];\n configuration?: string;\n count?: number;\n loadCapacity?: number;\n poweredAxlesCount?: number;\n wheelbase?: number;\n suspension?: 'Air' | 'Air/Steel' | 'Steel';\n};\n\nexport type VehicleAxle = {\n make?: string;\n alloyWheels?: boolean;\n brakes?: 'Disc' | 'Drum';\n differentialLock?: boolean;\n liftAxle?: boolean;\n maxLoad?: number;\n nr: number;\n position?: string;\n powered?: boolean;\n reduction?: string;\n steering?: boolean;\n steeringType?: 'fixed' | 'self_steering' | 'hydraulic';\n suspension?: 'Steel' | 'Air' | 'Hydraulic';\n twinWheels?: boolean;\n tyreSize?: string;\n tyreConditionType?: 'mm' | '%';\n tyreConditionMmLeftInside?: number;\n tyreConditionMmLeftOutside?: number;\n tyreConditionMmRightInside?: number;\n tyreConditionMmRightOutside?: number;\n tyreConditionPercLeftInside?: number;\n tyreConditionPercLeftOutside?: number;\n tyreConditionPercRightInside?: number;\n tyreConditionPercRightOutside?: number;\n};\n\ntype VehicleSuperstructure = {\n carCapacity?: number;\n compartmentCount?: number;\n counter?: boolean;\n crane?: {\n make?: string;\n model?: string;\n position?: 'Behind the cabin' | 'Rear';\n present?: boolean;\n year?: number;\n };\n dimensions?: {\n height?: number;\n length?: number;\n width?: number;\n extended?: string; // L1, L2, ...\n heightened?: string; // H1, H2, ...\n };\n baseVehicle?: SuperstructureBaseVehicle;\n extendable?: boolean;\n highPressurePump?: boolean;\n loadingPlatformHeight?: number;\n pump?: boolean;\n slidingRoof?: boolean;\n tailgate?: {\n capacity?: number;\n make?: string;\n model?: string;\n present?: boolean;\n type?: 'slider_lift' | 'cantilever' | 'column_lift';\n };\n tank?: {\n capacity: number; //liters\n volume?: number; //m3\n };\n temperatureControl?: {\n engineType?: 'diesel' | 'electric' | 'diesel+electric' | 'engine';\n make?: string;\n runningHours?: {\n diesel?: number;\n electric?: number;\n };\n };\n tipper?: {\n tipsBack?: boolean;\n tipsLeft?: boolean;\n tipsRight?: boolean;\n };\n};\n\nexport enum VehicleTachoTypes {\n Analog = 'ANALOG',\n Digital = 'DIGITAL',\n SmartTacho1 = 'SMART_TACHO_1',\n SmartTacho2 = 'SMART_TACHO_2',\n}\n\nexport enum VehicleFuelType {\n Petrol = 'PETROL',\n Diesel = 'DIESEL',\n LPG = 'LPG',\n LPG_G3 = 'LPG_G3',\n Electric = 'ELECTRIC',\n CNG = 'CNG',\n Hydrogen = 'HYDROGEN',\n BioEthanol = 'BIO_ETHANOL',\n BioDiesel = 'BIO_DIESEL',\n E85 = 'E85',\n HCNG = 'HCNG',\n LPG_Petrol = 'LPG_PETROL',\n LPG_Diesel = 'LPG_DIESEL',\n LPG_G3_Petrol = 'LPG_G3_PETROL',\n LPG_G3_Diesel = 'LPG_G3_DIESEL',\n Electric_Diesel = 'ELECTRIC_DIESEL',\n Electric_Petrol = 'ELECTRIC_PETROL',\n Hybrid = 'HYBRID',\n Other = 'OTHER',\n}\n\nexport type SuperstructureBaseVehicle = {\n category: string;\n make: string;\n model?: string;\n type?: string;\n axlesConfiguration?: string;\n emissionsClass?: string;\n transmissionType?: 'Automatic' | 'Manual' | 'Semi-Automatic';\n vin?: string;\n currentRegistration?: {\n country?: string;\n };\n suspension?: 'Air' | 'Air/Steel' | 'Steel';\n constructionYear?: number;\n firstRegistration?: string;\n odometerKm?: number;\n powerHp?: number;\n bodystyle?: string;\n accessories: VehicleExternalInfo['accessories'];\n superstructure?: Pick<VehicleSuperstructure, 'crane' | 'tailgate'>;\n};\n"]}
|
package/package.json
CHANGED
package/src/types/events.ts
CHANGED
|
@@ -1,23 +1,17 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
1
|
import { WebsiteVehicle } from './vehicle.js';
|
|
3
2
|
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
stockNumber: z.string(),
|
|
20
|
-
}),
|
|
21
|
-
]);
|
|
22
|
-
|
|
23
|
-
export type WebsiteEvent = z.infer<typeof WebsiteEvent>;
|
|
3
|
+
export type WebsiteEvent =
|
|
4
|
+
| {
|
|
5
|
+
action: 'delete';
|
|
6
|
+
vehicleId: string;
|
|
7
|
+
vehicle?: undefined;
|
|
8
|
+
tenantId: string;
|
|
9
|
+
stockNumber: string;
|
|
10
|
+
}
|
|
11
|
+
| {
|
|
12
|
+
action: 'upsert';
|
|
13
|
+
vehicleId: string;
|
|
14
|
+
tenantId: string;
|
|
15
|
+
vehicle: WebsiteVehicle;
|
|
16
|
+
stockNumber: string;
|
|
17
|
+
};
|
package/src/types/user.ts
CHANGED
|
@@ -11,10 +11,7 @@ export enum FleetSize {
|
|
|
11
11
|
Large = '6+',
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
export const VatSchema = z
|
|
15
|
-
.string()
|
|
16
|
-
.toUpperCase()
|
|
17
|
-
.transform((v) => v || undefined);
|
|
14
|
+
export const VatSchema = z.string().toUpperCase();
|
|
18
15
|
|
|
19
16
|
/**
|
|
20
17
|
* Light VAT-number validation patterns by country.
|
|
@@ -86,34 +83,6 @@ const getVatPrefix = (country: string): string => {
|
|
|
86
83
|
return match ? match[1] : '';
|
|
87
84
|
};
|
|
88
85
|
|
|
89
|
-
export const CompanySchema = z.object({
|
|
90
|
-
country: z.string().optional(),
|
|
91
|
-
city: z.string().optional(),
|
|
92
|
-
name: z.string().optional(),
|
|
93
|
-
vat: VatSchema.optional(),
|
|
94
|
-
postalCode: z.string().optional(),
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
/* TODO when updating to zod v4, change addIssue options to
|
|
98
|
-
message: 'vat.invalidFormat',
|
|
99
|
-
path: ['vat'],
|
|
100
|
-
*/
|
|
101
|
-
export function refineCompanySchema(schema: z.ZodRawShape) {
|
|
102
|
-
return CompanySchema.extend(schema).superRefine((data, ctx) => {
|
|
103
|
-
if (!data.vat || !data.country) {
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
|
-
if (!isValidVatForCountry({ vat: data.vat, country: data.country })) {
|
|
107
|
-
const prefix = getVatPrefix(data.country);
|
|
108
|
-
ctx.addIssue({
|
|
109
|
-
code: z.ZodIssueCode.custom,
|
|
110
|
-
path: ['vat'],
|
|
111
|
-
params: { prefix, messageKey: 'vat.invalidFormat' },
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
|
|
117
86
|
export const UserDetails = z.object({
|
|
118
87
|
firstName: z.string().optional(),
|
|
119
88
|
lastName: z.string().optional(),
|
|
@@ -122,7 +91,32 @@ export const UserDetails = z.object({
|
|
|
122
91
|
fleetSize: z.nativeEnum(FleetSize).optional(),
|
|
123
92
|
trader: z.boolean().optional(),
|
|
124
93
|
email: z.string().email().toLowerCase(),
|
|
125
|
-
company:
|
|
94
|
+
company: z
|
|
95
|
+
.object({
|
|
96
|
+
country: z.string().optional(),
|
|
97
|
+
city: z.string().optional(),
|
|
98
|
+
name: z.string().optional(),
|
|
99
|
+
vat: VatSchema.optional(),
|
|
100
|
+
postalCode: z.string().optional(),
|
|
101
|
+
})
|
|
102
|
+
/* TODO when updating to zod v4, change addIssue options to
|
|
103
|
+
message: 'vat.invalidFormat',
|
|
104
|
+
path: ['vat'],
|
|
105
|
+
*/
|
|
106
|
+
.superRefine((data, ctx) => {
|
|
107
|
+
if (!data.vat || !data.country) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
if (!isValidVatForCountry({ vat: data.vat, country: data.country })) {
|
|
111
|
+
const prefix = getVatPrefix(data.country);
|
|
112
|
+
|
|
113
|
+
ctx.addIssue({
|
|
114
|
+
code: z.ZodIssueCode.custom,
|
|
115
|
+
path: ['vat'],
|
|
116
|
+
params: { prefix, messageKey: 'vat.invalidFormat' },
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}),
|
|
126
120
|
marketingChannels: z.array(z.nativeEnum(MarketingChannel)),
|
|
127
121
|
});
|
|
128
122
|
|
package/src/types/vehicle.ts
CHANGED
|
@@ -24,6 +24,14 @@ export type WebsiteVehicle = {
|
|
|
24
24
|
features: string[];
|
|
25
25
|
unlistAt?: string;
|
|
26
26
|
previousPrice?: string;
|
|
27
|
+
localizedPricing?: Array<{
|
|
28
|
+
countryCode: string;
|
|
29
|
+
currency: string;
|
|
30
|
+
price: number;
|
|
31
|
+
previousPrice?: number;
|
|
32
|
+
deliveryLocation?: string;
|
|
33
|
+
leasing?: boolean;
|
|
34
|
+
}>;
|
|
27
35
|
};
|
|
28
36
|
};
|
|
29
37
|
|
|
@@ -101,7 +109,6 @@ export type VehicleExternalInfo = {
|
|
|
101
109
|
axles?: VehicleAxlesInfo;
|
|
102
110
|
emissions?: {
|
|
103
111
|
class?: string;
|
|
104
|
-
subclass?: string;
|
|
105
112
|
};
|
|
106
113
|
engine?: {
|
|
107
114
|
cylinderCount?: number;
|