@bisondesk/website-commons-sdk 1.0.1

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.
@@ -0,0 +1,3 @@
1
+ export declare const SUPPORTED_LANGUAGES: readonly ["en", "es", "fr", "nl", "pl", "ro"];
2
+ export declare const TENANT_ID_HEADER = "tenant-id";
3
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"/","sources":["constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,+CAAgD,CAAC;AAKjF,eAAO,MAAM,gBAAgB,cAAc,CAAC"}
@@ -0,0 +1,3 @@
1
+ export const SUPPORTED_LANGUAGES = ['en', 'es', 'fr', 'nl', 'pl', 'ro'];
2
+ export const TENANT_ID_HEADER = 'tenant-id';
3
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"/","sources":["constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC;AAKjF,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC","sourcesContent":["export const SUPPORTED_LANGUAGES = ['en', 'es', 'fr', 'nl', 'pl', 'ro'] as const;\n\n//\n// Headers\n//\nexport const TENANT_ID_HEADER = 'tenant-id';\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=definitions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definitions.d.ts","sourceRoot":"/","sources":["definitions.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=definitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definitions.js","sourceRoot":"/","sources":["definitions.ts"],"names":[],"mappings":"","sourcesContent":[""]}
@@ -0,0 +1,39 @@
1
+ import { SUPPORTED_LANGUAGES } from '../constants.js';
2
+ import { FieldTypes } from './fields.js';
3
+ import { Aggregation } from './search.js';
4
+ export type EsDefinitionField = {
5
+ esMapping: unknown;
6
+ sortKey?: string;
7
+ };
8
+ export type EsDefinition = {
9
+ name: string;
10
+ nestedEsPaths: string[];
11
+ fields: {
12
+ [fieldId: string]: EsDefinitionField;
13
+ };
14
+ };
15
+ export type EsFullTextSearchDefinition = ((lang: string) => string)[];
16
+ export type EsAggregationsDefinition = Aggregation[];
17
+ export type PublicSearchDefinition = {
18
+ aggs: Aggregation[];
19
+ };
20
+ export type SearchField = {
21
+ id: string;
22
+ titles: {
23
+ [lang: string]: string;
24
+ } & ({
25
+ [local in (typeof SUPPORTED_LANGUAGES)[number]]: string;
26
+ } | {
27
+ key: string;
28
+ });
29
+ } & FieldTypeInfo;
30
+ export type FieldTypeInfo = {
31
+ type: FieldTypes.checkbox;
32
+ } | {
33
+ type: FieldTypes.boolean;
34
+ } | {
35
+ type: FieldTypes.chip;
36
+ } | {
37
+ type: FieldTypes.singleselect;
38
+ };
39
+ //# sourceMappingURL=definitions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definitions.d.ts","sourceRoot":"/","sources":["types/definitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE;QACN,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAAC;KACtC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,EAAE,CAAC;AAEtE,MAAM,MAAM,wBAAwB,GAAG,WAAW,EAAE,CAAC;AAErD,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,WAAW,EAAE,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,CACjC;SAAG,KAAK,IAAI,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM;KAAE,GAC3D;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAClB,CAAC;CACH,GAAG,aAAa,CAAC;AAElB,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,UAAU,CAAC,OAAO,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,UAAU,CAAC,IAAI,CAAA;CAAE,GACzB;IAAE,IAAI,EAAE,UAAU,CAAC,YAAY,CAAA;CAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=definitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definitions.js","sourceRoot":"/","sources":["types/definitions.ts"],"names":[],"mappings":"","sourcesContent":["import { SUPPORTED_LANGUAGES } from '../constants.js';\nimport { FieldTypes } from './fields.js';\nimport { Aggregation } from './search.js';\n\nexport type EsDefinitionField = {\n esMapping: unknown;\n sortKey?: string;\n};\n\nexport type EsDefinition = {\n name: string;\n nestedEsPaths: string[];\n fields: {\n [fieldId: string]: EsDefinitionField;\n };\n};\n\nexport type EsFullTextSearchDefinition = ((lang: string) => string)[];\n\nexport type EsAggregationsDefinition = Aggregation[];\n\nexport type PublicSearchDefinition = {\n aggs: Aggregation[];\n};\n\nexport type SearchField = {\n id: string;\n titles: { [lang: string]: string } & (\n | { [local in (typeof SUPPORTED_LANGUAGES)[number]]: string }\n | { key: string }\n );\n} & FieldTypeInfo;\n\nexport type FieldTypeInfo =\n | { type: FieldTypes.checkbox }\n | { type: FieldTypes.boolean }\n | { type: FieldTypes.chip }\n | { type: FieldTypes.singleselect };\n"]}
@@ -0,0 +1,22 @@
1
+ export declare enum FieldTypes {
2
+ singleselect = "singleselect",
3
+ checkbox = "checkbox",
4
+ chip = "chip",
5
+ boolean = "boolean"
6
+ }
7
+ type BaseMeta = {};
8
+ type NumberUnit = 'acre' | 'bit' | 'byte' | 'celsius' | 'centimeter' | 'day' | 'degree' | 'fahrenheit' | 'fluid-ounce' | 'foot' | 'gallon' | 'gigabit' | 'gigabyte' | 'gram' | 'hectare' | 'hour' | 'inch' | 'kilobit' | 'kilobyte' | 'kilogram' | 'kilometer' | 'liter' | 'megabit' | 'megabyte' | 'meter' | 'mile' | 'mile-scandinavian' | 'milliliter' | 'millimeter' | 'millisecond' | 'minute' | 'month' | 'ounce' | 'percent' | 'petabyte' | 'pound' | 'second' | 'stone' | 'terabit' | 'terabyte' | 'week' | 'yard' | 'year';
9
+ type BaseNumberMeta = {
10
+ minimumFractionDigits?: number;
11
+ maximumFractionDigits?: number;
12
+ useGrouping?: boolean;
13
+ } & ({
14
+ style: 'unit';
15
+ unit: NumberUnit;
16
+ } | {
17
+ style?: 'currency' | 'decimal' | 'percent';
18
+ unit?: NumberUnit;
19
+ });
20
+ export type NumberMeta = BaseMeta & BaseNumberMeta;
21
+ export {};
22
+ //# sourceMappingURL=fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.d.ts","sourceRoot":"/","sources":["types/fields.ts"],"names":[],"mappings":"AAAA,oBAAY,UAAU;IACpB,YAAY,iBAAiB;IAC7B,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,OAAO,YAAY;CACpB;AAKD,KAAK,QAAQ,GAAG,EAAE,CAAC;AAEnB,KAAK,UAAU,GACX,MAAM,GACN,KAAK,GACL,MAAM,GACN,SAAS,GACT,YAAY,GACZ,KAAK,GACL,QAAQ,GACR,YAAY,GACZ,aAAa,GACb,MAAM,GACN,QAAQ,GACR,SAAS,GACT,UAAU,GACV,MAAM,GACN,SAAS,GACT,MAAM,GACN,MAAM,GACN,SAAS,GACT,UAAU,GACV,UAAU,GACV,WAAW,GACX,OAAO,GACP,SAAS,GACT,UAAU,GACV,OAAO,GACP,MAAM,GACN,mBAAmB,GACnB,YAAY,GACZ,YAAY,GACZ,aAAa,GACb,QAAQ,GACR,OAAO,GACP,OAAO,GACP,SAAS,GACT,UAAU,GACV,OAAO,GACP,QAAQ,GACR,OAAO,GACP,SAAS,GACT,UAAU,GACV,MAAM,GACN,MAAM,GACN,MAAM,CAAC;AAEX,KAAK,cAAc,GAAG;IACpB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,GAAG,CACA;IACE,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,CAAC;CAClB,GACD;IACE,KAAK,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;IAC3C,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB,CACJ,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,cAAc,CAAC"}
@@ -0,0 +1,8 @@
1
+ export var FieldTypes;
2
+ (function (FieldTypes) {
3
+ FieldTypes["singleselect"] = "singleselect";
4
+ FieldTypes["checkbox"] = "checkbox";
5
+ FieldTypes["chip"] = "chip";
6
+ FieldTypes["boolean"] = "boolean";
7
+ })(FieldTypes || (FieldTypes = {}));
8
+ //# sourceMappingURL=fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.js","sourceRoot":"/","sources":["types/fields.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,UAKX;AALD,WAAY,UAAU;IACpB,2CAA6B,CAAA;IAC7B,mCAAqB,CAAA;IACrB,2BAAa,CAAA;IACb,iCAAmB,CAAA;AACrB,CAAC,EALW,UAAU,KAAV,UAAU,QAKrB","sourcesContent":["export enum FieldTypes {\n singleselect = 'singleselect',\n checkbox = 'checkbox',\n chip = 'chip',\n boolean = 'boolean',\n}\n\n//\n// Field metas\n//\ntype BaseMeta = {};\n\ntype NumberUnit =\n | 'acre'\n | 'bit'\n | 'byte'\n | 'celsius'\n | 'centimeter'\n | 'day'\n | 'degree'\n | 'fahrenheit'\n | 'fluid-ounce'\n | 'foot'\n | 'gallon'\n | 'gigabit'\n | 'gigabyte'\n | 'gram'\n | 'hectare'\n | 'hour'\n | 'inch'\n | 'kilobit'\n | 'kilobyte'\n | 'kilogram'\n | 'kilometer'\n | 'liter'\n | 'megabit'\n | 'megabyte'\n | 'meter'\n | 'mile'\n | 'mile-scandinavian'\n | 'milliliter'\n | 'millimeter'\n | 'millisecond'\n | 'minute'\n | 'month'\n | 'ounce'\n | 'percent'\n | 'petabyte'\n | 'pound'\n | 'second'\n | 'stone'\n | 'terabit'\n | 'terabyte'\n | 'week'\n | 'yard'\n | 'year';\n\ntype BaseNumberMeta = {\n minimumFractionDigits?: number;\n maximumFractionDigits?: number;\n useGrouping?: boolean;\n} & (\n | {\n style: 'unit';\n unit: NumberUnit;\n }\n | {\n style?: 'currency' | 'decimal' | 'percent';\n unit?: NumberUnit;\n }\n);\n\nexport type NumberMeta = BaseMeta & BaseNumberMeta;\n"]}
@@ -0,0 +1,39 @@
1
+ export type EmailRequest = {
2
+ subject: string;
3
+ references?: string[] | string;
4
+ destinations: EmailDestination[];
5
+ source: EmailAddress;
6
+ replyTo?: EmailAddress;
7
+ inReplyTo?: string;
8
+ body: {
9
+ text?: string;
10
+ html: string;
11
+ } | {
12
+ html?: string;
13
+ text: string;
14
+ };
15
+ };
16
+ export type EmailDestination = EmailAddress & {
17
+ addressType: 'TO' | 'CC' | 'BCC';
18
+ };
19
+ export type EmailAddress = {
20
+ name?: string;
21
+ email: string;
22
+ };
23
+ export type EmailMessage = {
24
+ id: string;
25
+ sentAt: string;
26
+ subject: string;
27
+ source: EmailAddress;
28
+ replyTo?: EmailAddress;
29
+ destinations: EmailDestination[];
30
+ };
31
+ export type ContactForm = {
32
+ content: string;
33
+ email: string;
34
+ name?: string;
35
+ phone: string;
36
+ reference: string;
37
+ type: string;
38
+ };
39
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"/","sources":["types/messages.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAC/B,YAAY,EAAE,gBAAgB,EAAE,CAAC;IACjC,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EACA;QACE,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,GACD;QACE,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACP,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG;IAC5C,WAAW,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,YAAY,EAAE,gBAAgB,EAAE,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"/","sources":["types/messages.ts"],"names":[],"mappings":"","sourcesContent":["export type EmailRequest = {\n subject: string;\n references?: string[] | string;\n destinations: EmailDestination[];\n source: EmailAddress;\n replyTo?: EmailAddress;\n inReplyTo?: string;\n body:\n | {\n text?: string;\n html: string;\n }\n | {\n html?: string;\n text: string;\n };\n};\n\nexport type EmailDestination = EmailAddress & {\n addressType: 'TO' | 'CC' | 'BCC';\n};\n\nexport type EmailAddress = {\n name?: string;\n email: string;\n};\n\nexport type EmailMessage = {\n id: string;\n sentAt: string;\n subject: string;\n source: EmailAddress;\n replyTo?: EmailAddress;\n destinations: EmailDestination[];\n};\n\nexport type ContactForm = {\n content: string;\n email: string;\n name?: string;\n phone: string;\n reference: string;\n type: string;\n};\n"]}
@@ -0,0 +1,136 @@
1
+ import { FieldTypes, NumberMeta } from './fields.js';
2
+ export declare enum ConditionType {
3
+ and = "AND",
4
+ or = "OR"
5
+ }
6
+ export declare enum ElasticsearchOperator {
7
+ empty = "EMPTY",
8
+ notEmpty = "NOT_EMPTY",
9
+ is = "IS",
10
+ isNot = "IS_NOT",
11
+ greaterThanOrEqual = "GTE",
12
+ greaterThan = "GT",
13
+ lessThanEqual = "LTE",
14
+ lessThan = "LT",
15
+ between = "BETWEEN",
16
+ contains = "CONTAINS",
17
+ notContains = "NOT_CONTAINS",
18
+ startsWith = "STARTS_WITH",
19
+ endsWith = "ENDS_WITH"
20
+ }
21
+ export type Filter<OP = ElasticsearchOperator> = {
22
+ data: string;
23
+ fieldId: string;
24
+ operator: OP;
25
+ };
26
+ export type ComplexFilter<OP = ElasticsearchOperator> = {
27
+ condition: ConditionType;
28
+ filters: Array<Filter<OP> | ComplexFilter<OP>>;
29
+ };
30
+ export type SearchResponse<T = any> = {
31
+ took: number;
32
+ timed_out: boolean;
33
+ _scroll_id?: string;
34
+ _shards: unknown;
35
+ hits: {
36
+ total: {
37
+ value: number;
38
+ relation: 'eq' | 'gte';
39
+ };
40
+ max_score: number;
41
+ hits: Array<{
42
+ _index: string;
43
+ _type: string;
44
+ _id: string;
45
+ _score: number;
46
+ _source?: T;
47
+ _version?: number;
48
+ _explanation?: unknown;
49
+ fields?: any;
50
+ highlight?: any;
51
+ inner_hits?: any;
52
+ matched_queries?: string[];
53
+ sort?: Array<string | number>;
54
+ }>;
55
+ };
56
+ aggregations?: {
57
+ [aggName: string]: object;
58
+ };
59
+ };
60
+ export type PaginatedList<T> = {
61
+ results: T[];
62
+ totalCount: number;
63
+ };
64
+ export declare enum SortOrder {
65
+ asc = "asc",
66
+ desc = "desc"
67
+ }
68
+ export type SortFilter = {
69
+ fieldId: string;
70
+ order: SortOrder;
71
+ };
72
+ export type SearchRequest = {
73
+ fullText?: string;
74
+ limit: number;
75
+ offset?: number;
76
+ query?: ComplexFilter<ElasticsearchOperator>;
77
+ sortBy?: SortFilter[];
78
+ };
79
+ export type LeasingSimulationRequest = {
80
+ deposit: number;
81
+ residual: number;
82
+ durationInMonths: number;
83
+ vehicleId: string;
84
+ };
85
+ export type LeasingSimulationResponse = {
86
+ monthly: string;
87
+ };
88
+ export type AggFilterOperator = ElasticsearchOperator.is | ElasticsearchOperator.greaterThan | ElasticsearchOperator.lessThan | ElasticsearchOperator.greaterThanOrEqual | ElasticsearchOperator.lessThanEqual;
89
+ export declare enum AggregationType {
90
+ term = "TERM",
91
+ range = "RANGE"
92
+ }
93
+ export type TermAggregation = {
94
+ field: string;
95
+ type: AggregationType.term;
96
+ fieldType: FieldTypes;
97
+ orderBy?: 'count' | 'field';
98
+ };
99
+ export type Range = {
100
+ start: number;
101
+ end?: number;
102
+ } | {
103
+ start?: number;
104
+ end: number;
105
+ } | {
106
+ start: number;
107
+ end: number;
108
+ };
109
+ export type RangeAggregation = {
110
+ field: string;
111
+ type: AggregationType.range;
112
+ ranges: Range[];
113
+ format?: NumberMeta;
114
+ };
115
+ export type Aggregation = TermAggregation | RangeAggregation;
116
+ export type AggregationSpecs = {
117
+ aggregations: Aggregation[];
118
+ };
119
+ export type AggregationRequest = {
120
+ fullText?: string;
121
+ filters: Filter<AggFilterOperator>[];
122
+ };
123
+ export type AggregationResult = {
124
+ value: string;
125
+ count: number;
126
+ from?: number;
127
+ to?: number;
128
+ };
129
+ export type AggregationResultSet = {
130
+ [field: string]: AggregationResult[];
131
+ };
132
+ export type EsDefinitionField = {
133
+ esMapping: unknown;
134
+ sortKey?: string;
135
+ };
136
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"/","sources":["types/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ export var ConditionType;
2
+ (function (ConditionType) {
3
+ ConditionType["and"] = "AND";
4
+ ConditionType["or"] = "OR";
5
+ })(ConditionType || (ConditionType = {}));
6
+ export var ElasticsearchOperator;
7
+ (function (ElasticsearchOperator) {
8
+ ElasticsearchOperator["empty"] = "EMPTY";
9
+ ElasticsearchOperator["notEmpty"] = "NOT_EMPTY";
10
+ ElasticsearchOperator["is"] = "IS";
11
+ ElasticsearchOperator["isNot"] = "IS_NOT";
12
+ ElasticsearchOperator["greaterThanOrEqual"] = "GTE";
13
+ ElasticsearchOperator["greaterThan"] = "GT";
14
+ ElasticsearchOperator["lessThanEqual"] = "LTE";
15
+ ElasticsearchOperator["lessThan"] = "LT";
16
+ ElasticsearchOperator["between"] = "BETWEEN";
17
+ ElasticsearchOperator["contains"] = "CONTAINS";
18
+ ElasticsearchOperator["notContains"] = "NOT_CONTAINS";
19
+ ElasticsearchOperator["startsWith"] = "STARTS_WITH";
20
+ ElasticsearchOperator["endsWith"] = "ENDS_WITH";
21
+ })(ElasticsearchOperator || (ElasticsearchOperator = {}));
22
+ export var SortOrder;
23
+ (function (SortOrder) {
24
+ SortOrder["asc"] = "asc";
25
+ SortOrder["desc"] = "desc";
26
+ })(SortOrder || (SortOrder = {}));
27
+ export var AggregationType;
28
+ (function (AggregationType) {
29
+ AggregationType["term"] = "TERM";
30
+ AggregationType["range"] = "RANGE";
31
+ })(AggregationType || (AggregationType = {}));
32
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"/","sources":["types/search.ts"],"names":[],"mappings":"AAMA,MAAM,CAAN,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,4BAAW,CAAA;IACX,0BAAS,CAAA;AACX,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB;AAED,MAAM,CAAN,IAAY,qBAiBX;AAjBD,WAAY,qBAAqB;IAE/B,wCAAe,CAAA;IACf,+CAAsB,CAAA;IACtB,kCAAS,CAAA;IACT,yCAAgB,CAAA;IAEhB,mDAA0B,CAAA;IAC1B,2CAAkB,CAAA;IAClB,8CAAqB,CAAA;IACrB,wCAAe,CAAA;IACf,4CAAmB,CAAA;IAEnB,8CAAqB,CAAA;IACrB,qDAA4B,CAAA;IAC5B,mDAA0B,CAAA;IAC1B,+CAAsB,CAAA;AACxB,CAAC,EAjBW,qBAAqB,KAArB,qBAAqB,QAiBhC;AAmDD,MAAM,CAAN,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,wBAAW,CAAA;IACX,0BAAa,CAAA;AACf,CAAC,EAHW,SAAS,KAAT,SAAS,QAGpB;AAyCD,MAAM,CAAN,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,gCAAa,CAAA;IACb,kCAAe,CAAA;AACjB,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B","sourcesContent":["///////////////////////////////////////////////////////\n// Generic stuff\n///////////////////////////////////////////////////////\n\nimport { FieldTypes, NumberMeta } from './fields.js';\n\nexport enum ConditionType {\n and = 'AND',\n or = 'OR',\n}\n\nexport enum ElasticsearchOperator {\n // all properties\n empty = 'EMPTY',\n notEmpty = 'NOT_EMPTY',\n is = 'IS',\n isNot = 'IS_NOT',\n // number, date properties\n greaterThanOrEqual = 'GTE',\n greaterThan = 'GT',\n lessThanEqual = 'LTE',\n lessThan = 'LT',\n between = 'BETWEEN',\n // string properties\n contains = 'CONTAINS',\n notContains = 'NOT_CONTAINS',\n startsWith = 'STARTS_WITH',\n endsWith = 'ENDS_WITH',\n}\n\nexport type Filter<OP = ElasticsearchOperator> = {\n data: string;\n fieldId: string;\n operator: OP;\n};\n\nexport type ComplexFilter<OP = ElasticsearchOperator> = {\n condition: ConditionType;\n filters: Array<Filter<OP> | ComplexFilter<OP>>;\n};\n\nexport type SearchResponse<T = any> = {\n took: number;\n timed_out: boolean;\n _scroll_id?: string;\n _shards: unknown;\n hits: {\n total: {\n value: number;\n relation: 'eq' | 'gte';\n };\n max_score: number;\n hits: Array<{\n _index: string;\n _type: string;\n _id: string;\n _score: number;\n _source?: T;\n _version?: number;\n _explanation?: unknown;\n fields?: any;\n highlight?: any;\n inner_hits?: any;\n matched_queries?: string[];\n sort?: Array<string | number>;\n }>;\n };\n aggregations?: { [aggName: string]: object };\n};\n\n///////////////////////////////////////////////////////\n// Search\n///////////////////////////////////////////////////////\n\nexport type PaginatedList<T> = {\n results: T[];\n totalCount: number;\n};\n\nexport enum SortOrder {\n asc = 'asc',\n desc = 'desc',\n}\n\nexport type SortFilter = {\n fieldId: string;\n order: SortOrder;\n};\n\nexport type SearchRequest = {\n fullText?: string;\n limit: number;\n offset?: number;\n query?: ComplexFilter<ElasticsearchOperator>;\n sortBy?: SortFilter[];\n};\n\n///////////////////////////////////////////////////////\n// Simulations\n///////////////////////////////////////////////////////\n\nexport type LeasingSimulationRequest = {\n deposit: number;\n residual: number;\n durationInMonths: number;\n vehicleId: string;\n};\n\nexport type LeasingSimulationResponse = {\n monthly: string;\n};\n\n///////////////////////////////////////////////////////\n// Aggregations\n///////////////////////////////////////////////////////\n\nexport type AggFilterOperator =\n | ElasticsearchOperator.is\n | ElasticsearchOperator.greaterThan\n | ElasticsearchOperator.lessThan\n | ElasticsearchOperator.greaterThanOrEqual\n | ElasticsearchOperator.lessThanEqual;\n\nexport enum AggregationType {\n term = 'TERM',\n range = 'RANGE',\n}\n\nexport type TermAggregation = {\n field: string;\n type: AggregationType.term;\n fieldType: FieldTypes;\n orderBy?: 'count' | 'field';\n};\n\nexport type Range =\n | {\n start: number;\n end?: number;\n }\n | {\n start?: number;\n end: number;\n }\n | {\n start: number;\n end: number;\n };\n\nexport type RangeAggregation = {\n field: string;\n type: AggregationType.range;\n ranges: Range[];\n format?: NumberMeta;\n};\n\nexport type Aggregation = TermAggregation | RangeAggregation;\n\nexport type AggregationSpecs = {\n aggregations: Aggregation[];\n};\n\nexport type AggregationRequest = {\n fullText?: string;\n filters: Filter<AggFilterOperator>[];\n};\n\nexport type AggregationResult = {\n value: string;\n count: number;\n from?: number;\n to?: number;\n};\n\nexport type AggregationResultSet = {\n [field: string]: AggregationResult[];\n};\n\nexport type EsDefinitionField = {\n esMapping: unknown;\n sortKey?: string;\n};\n"]}
@@ -0,0 +1,288 @@
1
+ export type WebsiteVehicle = {
2
+ id: string;
3
+ external: VehicleExternalInfo;
4
+ };
5
+ export type VehicleExternalInfo = {
6
+ body?: {
7
+ cabin?: {
8
+ type: 'Day' | 'Sleep / Small' | 'Sleep / Medium' | 'Sleep / Large';
9
+ model?: string;
10
+ };
11
+ colour?: string;
12
+ dimensions?: {
13
+ height?: number;
14
+ length?: number;
15
+ width?: number;
16
+ };
17
+ doorCount?: number;
18
+ interior?: {
19
+ bedCount?: number;
20
+ seatCount?: number;
21
+ };
22
+ };
23
+ mainPicture?: AttachmentValue;
24
+ pictures?: AttachmentValue[];
25
+ videos?: AttachmentValue[];
26
+ condition?: {
27
+ damaged?: boolean;
28
+ odometer?: {
29
+ km?: number;
30
+ };
31
+ used?: boolean;
32
+ };
33
+ general: {
34
+ bodystyle?: string;
35
+ category: string;
36
+ make?: string;
37
+ model?: string;
38
+ modelName?: string;
39
+ type?: string;
40
+ typeName?: string;
41
+ tacho?: VehicleTachoTypes;
42
+ };
43
+ history?: {
44
+ advertisingYear?: number;
45
+ constructionYear?: number;
46
+ currentRegistration?: {
47
+ country?: string;
48
+ technicalInspectionEndDate?: string;
49
+ carpassUrl?: string;
50
+ carpassAvailable?: boolean;
51
+ };
52
+ firstRegistration?: string;
53
+ cocPvg?: string;
54
+ };
55
+ identification: {
56
+ licensePlate?: string;
57
+ stockNumber?: string;
58
+ vin?: string;
59
+ buildStockNumber?: string;
60
+ engineNumber?: string;
61
+ };
62
+ powertrain?: {
63
+ axles?: VehicleAxlesInfo;
64
+ emissions?: {
65
+ class?: string;
66
+ };
67
+ engine?: {
68
+ cylinderCount?: number;
69
+ energy?: {
70
+ type?: VehicleFuelType;
71
+ };
72
+ power?: {
73
+ hp?: number;
74
+ };
75
+ displacement?: number;
76
+ };
77
+ transmission?: {
78
+ gearCount?: number;
79
+ make?: string;
80
+ model?: string;
81
+ type?: 'Automatic' | 'Manual' | 'Semi-Automatic';
82
+ };
83
+ };
84
+ salesConditions: {
85
+ leasing?: boolean;
86
+ expected?: boolean;
87
+ price?: string | undefined;
88
+ currency?: string | undefined;
89
+ marginScheme?: boolean;
90
+ manufacturerWarranty?: {
91
+ remarks?: string;
92
+ available?: boolean;
93
+ };
94
+ };
95
+ superstructure?: VehicleSuperstructure;
96
+ weights?: {
97
+ gvw?: number;
98
+ massEmpty?: number;
99
+ };
100
+ accessories: {
101
+ abs?: boolean;
102
+ adr?: boolean;
103
+ airco?: boolean;
104
+ alloyWheels?: boolean;
105
+ aluminiumFuelTank?: boolean;
106
+ cdPlayer?: boolean;
107
+ centralLocking?: boolean;
108
+ centralLubrication?: boolean;
109
+ cruiseControl?: boolean;
110
+ electricDoorMirrors?: boolean;
111
+ electricWindows?: boolean;
112
+ engineBrake?: boolean;
113
+ forklift?: boolean;
114
+ navigationSystem?: boolean;
115
+ hydraulicTipperKit?: boolean;
116
+ lowDeck?: boolean;
117
+ lowNoise?: boolean;
118
+ parkingHeater?: boolean;
119
+ particleFilter?: boolean;
120
+ powerTakeOff?: boolean;
121
+ refrigerator?: boolean;
122
+ retarderIntarder?: boolean;
123
+ reversingCamera?: boolean;
124
+ roofSpoiler?: boolean;
125
+ sideSkirts?: boolean;
126
+ spareKey?: boolean;
127
+ spareWheel?: boolean;
128
+ speedLimiter?: boolean;
129
+ spoilers?: boolean;
130
+ spotlights?: boolean;
131
+ stabilityControl?: boolean;
132
+ standardAirco?: boolean;
133
+ television?: boolean;
134
+ toolbox?: boolean;
135
+ trailerCoupling?: boolean;
136
+ twinFuelTank?: boolean;
137
+ visor?: boolean;
138
+ xenonLights?: boolean;
139
+ };
140
+ publicLink?: string;
141
+ };
142
+ export type AttachmentValue = {
143
+ contentType: string;
144
+ fileName: string;
145
+ id: string;
146
+ previewSrc?: string;
147
+ size: number;
148
+ uploadedAt: string;
149
+ uploadedBy: string;
150
+ url: string;
151
+ descriptions?: string | MultiLangValue;
152
+ };
153
+ export type MultiLangValue = {
154
+ key?: string;
155
+ } & {
156
+ [languageCode: string]: string;
157
+ };
158
+ export type VehicleAxlesInfo = {
159
+ details: VehicleAxle[];
160
+ configuration?: string;
161
+ count?: number;
162
+ poweredAxlesCount?: number;
163
+ wheelbase?: number;
164
+ suspension?: 'Air' | 'Air/Steel' | 'Steel';
165
+ };
166
+ export type VehicleAxle = {
167
+ make?: string;
168
+ alloyWheels?: boolean;
169
+ brakes?: 'Disc' | 'Drum';
170
+ differentialLock?: boolean;
171
+ liftAxle?: boolean;
172
+ maxLoad?: number;
173
+ nr: number;
174
+ position?: string;
175
+ powered?: boolean;
176
+ reduction?: string;
177
+ steering?: boolean;
178
+ suspension?: 'Steel' | 'Air' | 'Hydraulic';
179
+ twinWheels?: boolean;
180
+ tyreSize?: string;
181
+ tyreConditionType?: 'mm' | '%';
182
+ tyreConditionMmLeftInside?: number;
183
+ tyreConditionMmLeftOutside?: number;
184
+ tyreConditionMmRightInside?: number;
185
+ tyreConditionMmRightOutside?: number;
186
+ tyreConditionPercLeftInside?: number;
187
+ tyreConditionPercLeftOutside?: number;
188
+ tyreConditionPercRightInside?: number;
189
+ tyreConditionPercRightOutside?: number;
190
+ };
191
+ type VehicleSuperstructure = {
192
+ carCapacity?: number;
193
+ compartmentCount?: number;
194
+ counter?: boolean;
195
+ crane?: {
196
+ make?: string;
197
+ model?: string;
198
+ position?: 'Behind the cabin' | 'Rear';
199
+ present?: boolean;
200
+ year?: number;
201
+ };
202
+ dimensions?: {
203
+ height?: number;
204
+ length?: number;
205
+ width?: number;
206
+ extended?: string;
207
+ heightened?: string;
208
+ };
209
+ baseVehicle?: SuperstructureBaseVehicle;
210
+ extendable?: boolean;
211
+ highPressurePump?: boolean;
212
+ loadingPlatformHeight?: number;
213
+ pump?: boolean;
214
+ slidingRoof?: boolean;
215
+ tailgate?: {
216
+ capacity?: number;
217
+ make?: string;
218
+ model?: string;
219
+ present?: boolean;
220
+ type?: 'slider_lift' | 'cantilever' | 'column_lift';
221
+ };
222
+ tank?: {
223
+ capacity: number;
224
+ };
225
+ temperatureControl?: {
226
+ engineType?: 'diesel' | 'electric' | 'diesel+electric' | 'engine';
227
+ make?: string;
228
+ runningHours?: {
229
+ diesel?: number;
230
+ electric?: number;
231
+ };
232
+ };
233
+ tipper?: {
234
+ tipsBack?: boolean;
235
+ tipsLeft?: boolean;
236
+ tipsRight?: boolean;
237
+ };
238
+ };
239
+ export declare enum VehicleTachoTypes {
240
+ Analog = "ANALOG",
241
+ Digital = "DIGITAL",
242
+ SmartTacho1 = "SMART_TACHO_1",
243
+ SmartTacho2 = "SMART_TACHO_2"
244
+ }
245
+ export declare enum VehicleFuelType {
246
+ Petrol = "PETROL",
247
+ Diesel = "DIESEL",
248
+ LPG = "LPG",
249
+ LPG_G3 = "LPG_G3",
250
+ Electric = "ELECTRIC",
251
+ CNG = "CNG",
252
+ Hydrogen = "HYDROGEN",
253
+ BioEthanol = "BIO_ETHANOL",
254
+ BioDiesel = "BIO_DIESEL",
255
+ E85 = "E85",
256
+ HCNG = "HCNG",
257
+ LPG_Petrol = "LPG_PETROL",
258
+ LPG_Diesel = "LPG_DIESEL",
259
+ LPG_G3_Petrol = "LPG_G3_PETROL",
260
+ LPG_G3_Diesel = "LPG_G3_DIESEL",
261
+ Electric_Diesel = "ELECTRIC_DIESEL",
262
+ Electric_Petrol = "ELECTRIC_PETROL",
263
+ Hybrid = "HYBRID",
264
+ Other = "OTHER"
265
+ }
266
+ export type SuperstructureBaseVehicle = {
267
+ category: string;
268
+ make: string;
269
+ model?: string;
270
+ type?: string;
271
+ axlesConfiguration?: string;
272
+ emissionsClass?: string;
273
+ transmissionType?: 'Automatic' | 'Manual' | 'Semi-Automatic';
274
+ vin?: string;
275
+ currentRegistration?: {
276
+ country?: string;
277
+ };
278
+ suspension?: 'Air' | 'Air/Steel' | 'Steel';
279
+ constructionYear?: number;
280
+ firstRegistration?: string;
281
+ odometerKm?: number;
282
+ powerHp?: number;
283
+ bodystyle?: string;
284
+ accessories: VehicleExternalInfo['accessories'];
285
+ superstructure?: Pick<VehicleSuperstructure, 'crane' | 'tailgate'>;
286
+ };
287
+ export {};
288
+ //# sourceMappingURL=vehicle.d.ts.map