@bisondesk/commons-sdk 1.0.588 → 1.0.590

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 +1 @@
1
- {"version":3,"file":"picklists.d.ts","sourceRoot":"/","sources":["apis/picklists.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,mBAAmB,EACnB,sBAAsB,EACtB,aAAa,EACb,oBAAoB,EACpB,0BAA0B,EAC3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,eAAO,MAAM,yBAAyB,GACpC,SAAS,oBAAoB,KAC5B,OAAO,CAAC,yBAAyB,CAMnC,CAAC;AAEF,eAAO,MAAM,6BAA6B,GACxC,SAAS,oBAAoB,KAC5B,OAAO,CAAC,mBAAmB,CAM7B,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,KAAK,sBAAsB,EAC3B,WAAW,MAAM,KAChB,OAAO,CAAC,MAAM,EAAE,CAmBlB,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,SAAS,0BAA0B,KAClC,OAAO,CAAC,aAAa,CAiBvB,CAAC;AAEF,eAAO,MAAM,4BAA4B,GACvC,UAAU,oBAAoB,EAAE,EAChC,eAAe,MAAM,EACrB,YAAY,MAAM,KACjB,OAAO,CAAC,yBAAyB,CAyBnC,CAAC"}
1
+ {"version":3,"file":"picklists.d.ts","sourceRoot":"/","sources":["apis/picklists.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,mBAAmB,EACnB,sBAAsB,EACtB,aAAa,EACb,oBAAoB,EACpB,0BAA0B,EAC3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,eAAO,MAAM,yBAAyB,GACpC,SAAS,oBAAoB,KAC5B,OAAO,CAAC,yBAAyB,CAUnC,CAAC;AAEF,eAAO,MAAM,6BAA6B,GACxC,SAAS,oBAAoB,KAC5B,OAAO,CAAC,mBAAmB,CAU7B,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,KAAK,sBAAsB,EAC3B,WAAW,MAAM,KAChB,OAAO,CAAC,MAAM,EAAE,CAmBlB,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,SAAS,0BAA0B,KAClC,OAAO,CAAC,aAAa,CAiBvB,CAAC;AAEF,eAAO,MAAM,4BAA4B,GACvC,UAAU,oBAAoB,EAAE,EAChC,eAAe,MAAM,EACrB,YAAY,MAAM,KACjB,OAAO,CAAC,yBAAyB,CAyBnC,CAAC"}
@@ -1,14 +1,22 @@
1
1
  import fetch from 'node-fetch';
2
+ import { TENANT_ID_ADMIN_HEADER } from '../constants.js';
2
3
  import { XError } from '../errors.js';
3
4
  import { cleanHeaders, fetchJson, getAdminAuth } from '../fetch.js';
4
- import { TENANT_ID_ADMIN_HEADER } from '../constants.js';
5
5
  export const getMultiplePicklistValues = async (request) => {
6
6
  const auth = await getAdminAuth();
7
- return fetchJson(`${process.env.CORE_API_ORIGIN}/api/picklists/bulk/read`, { method: 'POST', headers: { Authorization: auth, 'Content-Type': 'application/json' }, body: JSON.stringify(request) });
7
+ return fetchJson(`${process.env.CORE_API_ORIGIN}/api/picklists/bulk/read`, {
8
+ method: 'POST',
9
+ headers: { Authorization: auth, 'Content-Type': 'application/json' },
10
+ body: JSON.stringify(request),
11
+ });
8
12
  };
9
13
  export const getMultiplePicklistFullValues = async (request) => {
10
14
  const auth = await getAdminAuth();
11
- return fetchJson(`${process.env.CORE_API_ORIGIN}/api/picklists/bulk/read/full`, { method: 'POST', headers: { Authorization: auth, 'Content-Type': 'application/json' }, body: JSON.stringify(request) });
15
+ return fetchJson(`${process.env.CORE_API_ORIGIN}/api/picklists/bulk/read/full`, {
16
+ method: 'POST',
17
+ headers: { Authorization: auth, 'Content-Type': 'application/json' },
18
+ body: JSON.stringify(request),
19
+ });
12
20
  };
13
21
  export const getPicklistOptions = async (req, tenantId) => {
14
22
  const auth = await getAdminAuth();
@@ -1 +1 @@
1
- {"version":3,"file":"picklists.js","sourceRoot":"/","sources":["apis/picklists.ts"],"names":[],"mappings":"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","sourcesContent":["import fetch, { Response } from 'node-fetch';\nimport { XError } from '../errors.js';\nimport { cleanHeaders, fetchJson, getAdminAuth } from '../fetch.js';\nimport {\n AdHocPicklistRequest,\n AdHocPicklistValueDisplay,\n AdHocPicklistValues,\n PicklistOptionsRequest,\n PicklistValue,\n PicklistValueRequest,\n PicklistValueUpdateRequest,\n} from '../picklists.js';\nimport { Option } from '../types.js';\nimport { TENANT_ID_ADMIN_HEADER } from '../constants.js';\n\nexport const getMultiplePicklistValues = async (\n request: AdHocPicklistRequest\n): Promise<AdHocPicklistValueDisplay> => {\n const auth = await getAdminAuth();\n return fetchJson<AdHocPicklistValueDisplay>(\n `${process.env.CORE_API_ORIGIN}/api/picklists/bulk/read`,\n { method: 'POST', headers: { Authorization: auth, 'Content-Type': 'application/json' }, body: JSON.stringify(request) }\n );\n};\n\nexport const getMultiplePicklistFullValues = async (\n request: AdHocPicklistRequest\n): Promise<AdHocPicklistValues> => {\n const auth = await getAdminAuth();\n return fetchJson<AdHocPicklistValues>(\n `${process.env.CORE_API_ORIGIN}/api/picklists/bulk/read/full`,\n { method: 'POST', headers: { Authorization: auth, 'Content-Type': 'application/json' }, body: JSON.stringify(request) }\n );\n};\n\nexport const getPicklistOptions = async (\n req: PicklistOptionsRequest,\n tenantId?: string\n): Promise<Option[]> => {\n const auth = await getAdminAuth();\n\n const response: Response = await fetch(`${process.env.CORE_API_ORIGIN}/api/picklists/options`, {\n method: 'POST',\n headers: cleanHeaders({\n Authorization: auth,\n 'Content-Type': 'application/json',\n [TENANT_ID_ADMIN_HEADER]: tenantId,\n }),\n body: JSON.stringify(req),\n });\n\n if (response.ok) {\n return response.json() as any;\n }\n\n const body = await response.text();\n throw new XError(response.statusText, { body, req });\n};\n\nexport const upsertPicklistValue = async (\n request: PicklistValueUpdateRequest\n): Promise<PicklistValue> => {\n const auth = await getAdminAuth();\n const response: Response = await fetch(`${process.env.CORE_API_ORIGIN}/api/picklists/value`, {\n method: 'POST',\n headers: {\n Authorization: auth,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(request),\n });\n\n if (response.ok) {\n return response.json() as any;\n }\n\n const body = await response.text();\n throw new XError(response.statusText, { body });\n};\n\nexport const getAdhocPicklistDisplayValue = async (\n requests: PicklistValueRequest[],\n preferredLang: string,\n tenantLang: string\n): Promise<AdHocPicklistValueDisplay> => {\n const auth = await getAdminAuth();\n\n const req: AdHocPicklistRequest = {\n preferredLang,\n requests,\n tenantLang,\n };\n\n const response: Response = await fetch(`${process.env.CORE_API_ORIGIN}/api/picklists/bulk/read`, {\n method: 'POST',\n headers: cleanHeaders({\n Authorization: auth,\n 'Content-Type': 'application/json',\n }),\n body: JSON.stringify(req),\n });\n\n if (response.ok) {\n return response.json() as any;\n }\n\n const body = await response.text();\n\n throw new XError(response.statusText, { body, req });\n};\n"]}
1
+ {"version":3,"file":"picklists.js","sourceRoot":"/","sources":["apis/picklists.ts"],"names":[],"mappings":"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","sourcesContent":["import fetch, { Response } from 'node-fetch';\nimport { TENANT_ID_ADMIN_HEADER } from '../constants.js';\nimport { XError } from '../errors.js';\nimport { cleanHeaders, fetchJson, getAdminAuth } from '../fetch.js';\nimport {\n AdHocPicklistRequest,\n AdHocPicklistValueDisplay,\n AdHocPicklistValues,\n PicklistOptionsRequest,\n PicklistValue,\n PicklistValueRequest,\n PicklistValueUpdateRequest,\n} from '../picklists.js';\nimport { Option } from '../types.js';\n\nexport const getMultiplePicklistValues = async (\n request: AdHocPicklistRequest,\n): Promise<AdHocPicklistValueDisplay> => {\n const auth = await getAdminAuth();\n return fetchJson<AdHocPicklistValueDisplay>(\n `${process.env.CORE_API_ORIGIN}/api/picklists/bulk/read`,\n {\n method: 'POST',\n headers: { Authorization: auth, 'Content-Type': 'application/json' },\n body: JSON.stringify(request),\n },\n );\n};\n\nexport const getMultiplePicklistFullValues = async (\n request: AdHocPicklistRequest,\n): Promise<AdHocPicklistValues> => {\n const auth = await getAdminAuth();\n return fetchJson<AdHocPicklistValues>(\n `${process.env.CORE_API_ORIGIN}/api/picklists/bulk/read/full`,\n {\n method: 'POST',\n headers: { Authorization: auth, 'Content-Type': 'application/json' },\n body: JSON.stringify(request),\n },\n );\n};\n\nexport const getPicklistOptions = async (\n req: PicklistOptionsRequest,\n tenantId?: string,\n): Promise<Option[]> => {\n const auth = await getAdminAuth();\n\n const response: Response = await fetch(`${process.env.CORE_API_ORIGIN}/api/picklists/options`, {\n method: 'POST',\n headers: cleanHeaders({\n Authorization: auth,\n 'Content-Type': 'application/json',\n [TENANT_ID_ADMIN_HEADER]: tenantId,\n }),\n body: JSON.stringify(req),\n });\n\n if (response.ok) {\n return response.json() as any;\n }\n\n const body = await response.text();\n throw new XError(response.statusText, { body, req });\n};\n\nexport const upsertPicklistValue = async (\n request: PicklistValueUpdateRequest,\n): Promise<PicklistValue> => {\n const auth = await getAdminAuth();\n const response: Response = await fetch(`${process.env.CORE_API_ORIGIN}/api/picklists/value`, {\n method: 'POST',\n headers: {\n Authorization: auth,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(request),\n });\n\n if (response.ok) {\n return response.json() as any;\n }\n\n const body = await response.text();\n throw new XError(response.statusText, { body });\n};\n\nexport const getAdhocPicklistDisplayValue = async (\n requests: PicklistValueRequest[],\n preferredLang: string,\n tenantLang: string,\n): Promise<AdHocPicklistValueDisplay> => {\n const auth = await getAdminAuth();\n\n const req: AdHocPicklistRequest = {\n preferredLang,\n requests,\n tenantLang,\n };\n\n const response: Response = await fetch(`${process.env.CORE_API_ORIGIN}/api/picklists/bulk/read`, {\n method: 'POST',\n headers: cleanHeaders({\n Authorization: auth,\n 'Content-Type': 'application/json',\n }),\n body: JSON.stringify(req),\n });\n\n if (response.ok) {\n return response.json() as any;\n }\n\n const body = await response.text();\n\n throw new XError(response.statusText, { body, req });\n};\n"]}
@@ -49,7 +49,8 @@ export declare enum TopLevelActions {
49
49
  VehicleCreate = "vehicle:create",
50
50
  TasksAll = "tasks:*",
51
51
  TrackAndTraceDevices = "tt:devices:*",
52
- ManageStocklists = "stocklists:manage"
52
+ ManageStocklists = "stocklists:manage",
53
+ TransportsBrowse = "transports:browse"
53
54
  }
54
55
  export declare const SUPPORTED_LANGUAGES: readonly ["en", "fr", "nl", "es", "de", "pt"];
55
56
  export declare const TENANT_ID_ADMIN_HEADER = "tenant-id";
@@ -81,7 +82,8 @@ export declare enum BusinessEntityIds {
81
82
  TrackAndTraceDevices = "track_and_trace_devices",
82
83
  Interests = "interests",
83
84
  Prospects = "prospects",
84
- Stocklists = "stocklists"
85
+ Stocklists = "stocklists",
86
+ Transports = "transports"
85
87
  }
86
88
  export declare const LEASING_QUOTE_TEMPLATE_GROUP_ID = "leasing_quote_template";
87
89
  export declare const LEASING_QUOTE_PROFORMA_TEMPLATE_GROUP_ID = "leasing_quote_proforma_template";
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"/","sources":["constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"/","sources":["constants.ts"],"names":[],"mappings":"AAGA,oBAAY,QAAQ;IAClB,UAAU,eAAe;IACzB,KAAK,WAAW;IAChB,cAAc,mBAAmB;IACjC,UAAU,gBAAgB;IAC1B,KAAK,UAAU;IACf,UAAU,eAAe;IACzB,iBAAiB,uBAAuB;IACxC,iBAAiB,uBAAuB;IACxC,cAAc,oBAAoB;IAClC,uBAAuB,8BAA8B;IACrD,aAAa,mBAAmB;IAChC,SAAS,cAAc;IACvB,YAAY,kBAAkB;IAC9B,iBAAiB,wBAAwB;IACzC,iBAAiB,wBAAwB;IACzC,qBAAqB,4BAA4B;IACjD,gBAAgB,sBAAsB;IACtC,oBAAoB,4BAA4B;CACjD;AAED,eAAO,MAAM,SAAS,YAKrB,CAAC;AAEF,oBAAY,eAAe;IACzB,iBAAiB,YAAY;IAC7B,sBAAsB,wBAAwB;IAC9C,6BAA6B,8BAA8B;IAC3D,qBAAqB,qBAAqB;IAC1C,6BAA6B,+BAA+B;IAC5D,QAAQ,YAAY;IACpB,aAAa,oBAAoB;IACjC,iBAAiB,wBAAwB;IACzC,oBAAoB,uBAAuB;IAC3C,sBAAsB,sCAAsC;IAC5D,oBAAoB,2BAA2B;IAC/C,kBAAkB,yBAAyB;IAC3C,mBAAmB,0BAA0B;IAC7C,sBAAsB,6BAA6B;IACnD,sBAAsB,6BAA6B;IACnD,wBAAwB,mCAAmC;IAC3D,oBAAoB,2BAA2B;IAC/C,YAAY,kBAAkB;IAC9B,cAAc,oBAAoB;IAClC,YAAY,gBAAgB;IAC5B,YAAY,kBAAkB;IAC9B,sBAAsB,gBAAgB;IACtC,2BAA2B,yBAAyB;IACpD,eAAe,qBAAqB;IACpC,gBAAgB,gCAAgC;IAChD,WAAW,eAAe;IAC1B,aAAa,mBAAmB;IAChC,QAAQ,YAAY;IACpB,oBAAoB,iBAAiB;IACrC,gBAAgB,sBAAsB;IACtC,gBAAgB,sBAAsB;CACvC;AAKD,eAAO,MAAM,mBAAmB,+CAAgD,CAAC;AAKjF,eAAO,MAAM,sBAAsB,cAAc,CAAC;AAClD,eAAO,MAAM,uBAAuB,eAAe,CAAC;AAKpD,eAAO,MAAM,kBAAkB,aAAa,CAAC;AAC7C,eAAO,MAAM,cAAc,WAAW,CAAC;AAKvC,oBAAY,iBAAiB;IAC3B,kBAAkB,wBAAwB;IAC1C,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,mBAAmB,0BAA0B;IAC7C,SAAS,cAAc;IACvB,gBAAgB,sBAAsB;IACtC,uBAAuB,6BAA6B;IACpD,gBAAgB,sBAAsB;IACtC,gBAAgB,sBAAsB;IACtC,uBAAuB,8BAA8B;IACrD,MAAM,WAAW;IACjB,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,YAAY,kBAAkB;IAC9B,KAAK,UAAU;IACf,QAAQ,aAAa;IACrB,gBAAgB,qBAAqB;IACrC,kBAAkB,yBAAyB;IAC3C,OAAO,YAAY;IACnB,cAAc,oBAAoB;IAClC,cAAc,oBAAoB;IAClC,oBAAoB,4BAA4B;IAChD,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,UAAU,eAAe;IACzB,UAAU,eAAe;CAC1B;AAKD,eAAO,MAAM,+BAA+B,2BAA2B,CAAC;AACxE,eAAO,MAAM,wCAAwC,oCAAoC,CAAC;AAC1F,eAAO,MAAM,+CAA+C,2CAClB,CAAC;AAC3C,eAAO,MAAM,6DAA6D,yDAClB,CAAC;AACzD,eAAO,MAAM,+BAA+B,oCAAoC,CAAC;AACjF,eAAO,MAAM,qCAAqC,iCAAiC,CAAC;AACpF,eAAO,MAAM,sCAAsC,kCAAkC,CAAC;AACtF,eAAO,MAAM,uCAAuC,mCAAmC,CAAC;AACxF,eAAO,MAAM,+BAA+B,2BAA2B,CAAC;AACxE,eAAO,MAAM,kCAAkC,8BAA8B,CAAC;AAK9E,eAAO,MAAM,oBAAoB,UA8BhC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAalD,CAAC;AAEF,eAAO,MAAM,mBAAmB,oBAAoB,CAAC;AAErD,eAAO,MAAM,mCAAmC,OAAO,CAAC;AACxD,eAAO,MAAM,4BAA4B,mCAK/B,CAAC"}
package/lib/constants.js CHANGED
@@ -57,6 +57,7 @@ export var TopLevelActions;
57
57
  TopLevelActions["TasksAll"] = "tasks:*";
58
58
  TopLevelActions["TrackAndTraceDevices"] = "tt:devices:*";
59
59
  TopLevelActions["ManageStocklists"] = "stocklists:manage";
60
+ TopLevelActions["TransportsBrowse"] = "transports:browse";
60
61
  })(TopLevelActions || (TopLevelActions = {}));
61
62
  export const SUPPORTED_LANGUAGES = ['en', 'fr', 'nl', 'es', 'de', 'pt'];
62
63
  export const TENANT_ID_ADMIN_HEADER = 'tenant-id';
@@ -90,6 +91,7 @@ export var BusinessEntityIds;
90
91
  BusinessEntityIds["Interests"] = "interests";
91
92
  BusinessEntityIds["Prospects"] = "prospects";
92
93
  BusinessEntityIds["Stocklists"] = "stocklists";
94
+ BusinessEntityIds["Transports"] = "transports";
93
95
  })(BusinessEntityIds || (BusinessEntityIds = {}));
94
96
  export const LEASING_QUOTE_TEMPLATE_GROUP_ID = 'leasing_quote_template';
95
97
  export const LEASING_QUOTE_PROFORMA_TEMPLATE_GROUP_ID = 'leasing_quote_proforma_template';
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"/","sources":["constants.ts"],"names":[],"mappings":"AAGA,MAAM,CAAN,IAAY,QAmBX;AAnBD,WAAY,QAAQ;IAClB,qCAAyB,CAAA;IACzB,4BAAgB,CAAA;IAChB,6CAAiC,CAAA;IACjC,sCAA0B,CAAA;IAC1B,2BAAe,CAAA;IACf,qCAAyB,CAAA;IACzB,oDAAwC,CAAA;IACxC,oDAAwC,CAAA;IACxC,8CAAkC,CAAA;IAClC,iEAAqD,CAAA;IACrD,4CAAgC,CAAA;IAChC,mCAAuB,CAAA;IACvB,0CAA8B,CAAA;IAC9B,qDAAyC,CAAA;IACzC,qDAAyC,CAAA;IACzC,6DAAiD,CAAA;IACjD,kDAAsC,CAAA;IACtC,4DAAgD,CAAA;AAClD,CAAC,EAnBW,QAAQ,KAAR,QAAQ,QAmBnB;AAED,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,QAAQ,CAAC,KAAK;IACd,QAAQ,CAAC,KAAK;IACd,QAAQ,CAAC,cAAc;IACvB,QAAQ,CAAC,gBAAgB;CAC1B,CAAC;AAEF,MAAM,CAAN,IAAY,eA+BX;AA/BD,WAAY,eAAe;IACzB,gDAA6B,CAAA;IAC7B,iEAA8C,CAAA;IAC9C,8EAA2D,CAAA;IAC3D,6DAA0C,CAAA;IAC1C,+EAA4D,CAAA;IAC5D,uCAAoB,CAAA;IACpB,oDAAiC,CAAA;IACjC,4DAAyC,CAAA;IACzC,8DAA2C,CAAA;IAC3C,+EAA4D,CAAA;IAC5D,kEAA+C,CAAA;IAC/C,8DAA2C,CAAA;IAC3C,gEAA6C,CAAA;IAC7C,sEAAmD,CAAA;IACnD,sEAAmD,CAAA;IACnD,8EAA2D,CAAA;IAC3D,kEAA+C,CAAA;IAC/C,iDAA8B,CAAA;IAC9B,qDAAkC,CAAA;IAClC,+CAA4B,CAAA;IAC5B,iDAA8B,CAAA;IAC9B,yDAAsC,CAAA;IACtC,uEAAoD,CAAA;IACpD,uDAAoC,CAAA;IACpC,mEAAgD,CAAA;IAChD,6CAA0B,CAAA;IAC1B,mDAAgC,CAAA;IAChC,uCAAoB,CAAA;IACpB,wDAAqC,CAAA;IACrC,yDAAsC,CAAA;AACxC,CAAC,EA/BW,eAAe,KAAf,eAAe,QA+B1B;AAKD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC;AAKjF,MAAM,CAAC,MAAM,sBAAsB,GAAG,WAAW,CAAC;AAClD,MAAM,CAAC,MAAM,uBAAuB,GAAG,YAAY,CAAC;AAKpD,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAAC;AAC7C,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC;AAKvC,MAAM,CAAN,IAAY,iBA0BX;AA1BD,WAAY,iBAAiB;IAC3B,+DAA0C,CAAA;IAC1C,0CAAqB,CAAA;IACrB,sCAAiB,CAAA;IACjB,kEAA6C,CAAA;IAC7C,4CAAuB,CAAA;IACvB,2DAAsC,CAAA;IACtC,yEAAoD,CAAA;IACpD,2DAAsC,CAAA;IACtC,2DAAsC,CAAA;IACtC,0EAAqD,CAAA;IACrD,sCAAiB,CAAA;IACjB,oDAA+B,CAAA;IAC/B,oDAA+B,CAAA;IAC/B,mDAA8B,CAAA;IAC9B,oCAAe,CAAA;IACf,0CAAqB,CAAA;IACrB,0DAAqC,CAAA;IACrC,gEAA2C,CAAA;IAC3C,wCAAmB,CAAA;IACnB,uDAAkC,CAAA;IAClC,uDAAkC,CAAA;IAClC,qEAAgD,CAAA;IAChD,4CAAuB,CAAA;IACvB,4CAAuB,CAAA;IACvB,8CAAyB,CAAA;AAC3B,CAAC,EA1BW,iBAAiB,KAAjB,iBAAiB,QA0B5B;AAKD,MAAM,CAAC,MAAM,+BAA+B,GAAG,wBAAwB,CAAC;AACxE,MAAM,CAAC,MAAM,wCAAwC,GAAG,iCAAiC,CAAC;AAC1F,MAAM,CAAC,MAAM,+CAA+C,GAC1D,wCAAwC,CAAC;AAC3C,MAAM,CAAC,MAAM,6DAA6D,GACxE,sDAAsD,CAAC;AACzD,MAAM,CAAC,MAAM,+BAA+B,GAAG,iCAAiC,CAAC;AACjF,MAAM,CAAC,MAAM,qCAAqC,GAAG,8BAA8B,CAAC;AACpF,MAAM,CAAC,MAAM,sCAAsC,GAAG,+BAA+B,CAAC;AACtF,MAAM,CAAC,MAAM,uCAAuC,GAAG,gCAAgC,CAAC;AACxF,MAAM,CAAC,MAAM,+BAA+B,GAAG,wBAAwB,CAAC;AACxE,MAAM,CAAC,MAAM,kCAAkC,GAAG,2BAA2B,CAAC;AAK9E,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;CACL,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAA0B;IACrD,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;CACL,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAErD,MAAM,CAAC,MAAM,mCAAmC,GAAG,IAAI,CAAC;AACxD,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,mCAAmC;IACnC,IAAI;IACJ,IAAI;IACJ,IAAI;CACI,CAAC","sourcesContent":["//\n// STATIC ROLES\n//\nexport enum AppRoles {\n Accountant = 'accountant',\n Admin = 'admins',\n Administrative = 'administrative',\n AppManager = 'app_manager',\n Board = 'board',\n Commercial = 'commercial',\n InboundCommercial = 'inbound_commercial',\n LeasingCommercial = 'leasing_commercial',\n GeneralManager = 'general_manager',\n GeneralManagerAssistant = 'general_manager_assistant',\n ParkLogistics = 'park_logistics',\n Purchaser = 'purchaser',\n SalesManager = 'sales_manager',\n SalesPriceManager = 'sales_price_manager',\n SalesStockManager = 'sales_stock_manager',\n SalesMarketingManager = 'sales_marketing_manager',\n SeniorAccountant = 'senior_accountant',\n TrackAndTraceManager = 'track_and_trace_manager',\n}\n\nexport const TOP_ROLES = [\n AppRoles.Admin,\n AppRoles.Board,\n AppRoles.GeneralManager,\n AppRoles.SeniorAccountant,\n];\n\nexport enum TopLevelActions {\n AdministrationAll = 'admin:*',\n DocumentsFinanceBrowse = 'docs:finance:browse',\n DocumentsFinanceIssueProforma = 'docs:finance:new:proforma',\n DocumentsFinanceIssue = 'docs:finance:new',\n DocumentsAdministrativeBrowse = 'docs:administrative:browse',\n LeadsAll = 'leads:*',\n CrmOrgsBrowse = 'crm:orgs:browse',\n CrmContactsBrowse = 'crm:contacts:browse',\n BrowseDocumentDrafts = 'docs:drafts:browse',\n BrowsePurchasePayments = 'vehicles:purchase-payments:browse',\n BrowsePendingRemarks = 'remarks:pending:browse',\n LeasingDebtorsView = 'leasing:debtors:view',\n LeasingOverduesView = 'leasing:overdues:view',\n LeasingContractsExport = 'leasing:contracts:export',\n LeasingContractsBrowse = 'leasing:contracts:browse',\n LeasingContractsRsExport = 'leasing:contracts:rs:export-rs', // rs stands for rental solutions\n LeasingDebtorsExport = 'leasing:debtors:export',\n MarketBrowse = 'market:browse',\n MarketInsights = 'insights:market',\n MarketingAll = 'marketing:*',\n OffersBrowse = 'offers:browse',\n OpportunitiesBrowseAll = 'opps:browse',\n OpportunitiesBrowseAssigned = 'opps:browse:assigned',\n VehicleInsights = 'insights:vehicle',\n SaveBankAccounts = 'settings:bank-accounts:save',\n SettingsAll = 'settings:*',\n VehicleCreate = 'vehicle:create',\n TasksAll = 'tasks:*',\n TrackAndTraceDevices = 'tt:devices:*',\n ManageStocklists = 'stocklists:manage',\n}\n\n//\n// I18N\n//\nexport const SUPPORTED_LANGUAGES = ['en', 'fr', 'nl', 'es', 'de', 'pt'] as const;\n\n//\n// Headers\n//\nexport const TENANT_ID_ADMIN_HEADER = 'tenant-id';\nexport const SERVICE_ID_ADMIN_HEADER = 'service-id';\n\n//\n// AUTH\n//\nexport const NO_TENANT_ID_VALUE = 'notenant';\nexport const SYSTEM_USER_ID = 'system';\n\n//\n// Business Entity IDs\n//\nexport enum BusinessEntityIds {\n BecrisDeclarations = 'becris_declarations',\n Contacts = 'contacts',\n Emails = 'emails',\n ExternalVehicleSale = 'external_vehicle_sale',\n Documents = 'documents',\n FinanceDocuments = 'finance_documents',\n AdministrativeDocuments = 'administrative_documents',\n InternetVehicles = 'internet-vehicles',\n LeasingContracts = 'leasing_contracts',\n LeasingUploadAutomation = 'leasing_upload_automation',\n Offers = 'offers',\n Opportunities = 'opportunities',\n Organizations = 'organizations',\n PdfTemplates = 'pdf_templates',\n Users = 'users',\n Vehicles = 'vehicles',\n VehiclesPurchase = 'vehicle_purchase',\n VehiclesPriceLists = 'vehicles_price_lists',\n Debtors = 'debtors',\n DebtorsDossier = 'debtor-dossiers',\n DocumentDrafts = 'document_drafts',\n TrackAndTraceDevices = 'track_and_trace_devices',\n Interests = 'interests',\n Prospects = 'prospects',\n Stocklists = 'stocklists',\n}\n\n//\n// PDF Templates IDs\n//\nexport const LEASING_QUOTE_TEMPLATE_GROUP_ID = 'leasing_quote_template';\nexport const LEASING_QUOTE_PROFORMA_TEMPLATE_GROUP_ID = 'leasing_quote_proforma_template';\nexport const LEASING_CONTRACT_AMORTIZATION_TEMPLATE_GROUP_ID =\n 'leasing_contract_amortization_template';\nexport const LEASING_CONTRACT_AMORTIZATION_TEMPLATE_PRINT_VERSION_GROUP_ID =\n 'leasing_contract_amortization_print_version_template';\nexport const LEASING_QUOTE_LOCATION_TEMPLATE = 'leasing_quote_location_template';\nexport const LEASING_CONTRACT_TC_TEMPLATE_GROUP_ID = 'leasing_contract_tc_template';\nexport const SALES_QUOTE_PROFORMA_TEMPLATE_GROUP_ID = 'sales_quote_proforma_template';\nexport const SALES_QUOTE_AGREEMENT_TEMPLATE_GROUP_ID = 'sales_quote_agreement_template';\nexport const SALES_INVOICE_TEMPLATE_GROUP_ID = 'sales_invoice_template';\nexport const VEHICLES_STICKER_TEMPLATE_GROUP_ID = 'vehicles_sticker_template';\n\n//\n// VAT Prefixes for EU Countries and Great Britain & Northern Ireland\n//\nexport const EU_VAT_COUNTRY_CODES = [\n 'at',\n 'be',\n 'bg',\n 'hr',\n 'cy',\n 'cz',\n 'dk',\n 'ee',\n 'fi',\n 'fr',\n 'de',\n 'gr', // greece has EL prefix but the country code is GR\n 'el',\n 'hu',\n 'ie',\n 'it',\n 'lv',\n 'lt',\n 'lu',\n 'mt',\n 'nl',\n 'pl',\n 'pt',\n 'ro',\n 'sk',\n 'si',\n 'es',\n 'se',\n 'xi', // Northern Ireland\n];\n\nexport const HEXON_LANG_CODES: [string, ...string[]] = [\n 'en',\n 'nl',\n 'de',\n 'fr',\n 'es',\n 'pt',\n 'it',\n 'pl',\n 'ru',\n 'ro',\n 'el',\n 'bg',\n];\n\nexport const DEFAULT_SLB_PARTNER = 'To be announced';\n\nexport const SHARE_DOC_TEMPLATE_DEFAULT_LANGUAGE = 'en';\nexport const SHARE_DOC_TEMPLATE_LANGUAGES = [\n SHARE_DOC_TEMPLATE_DEFAULT_LANGUAGE,\n 'fr',\n 'nl',\n 'ro',\n] as const;\n"]}
1
+ {"version":3,"file":"constants.js","sourceRoot":"/","sources":["constants.ts"],"names":[],"mappings":"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","sourcesContent":["//\n// STATIC ROLES\n//\nexport enum AppRoles {\n Accountant = 'accountant',\n Admin = 'admins',\n Administrative = 'administrative',\n AppManager = 'app_manager',\n Board = 'board',\n Commercial = 'commercial',\n InboundCommercial = 'inbound_commercial',\n LeasingCommercial = 'leasing_commercial',\n GeneralManager = 'general_manager',\n GeneralManagerAssistant = 'general_manager_assistant',\n ParkLogistics = 'park_logistics',\n Purchaser = 'purchaser',\n SalesManager = 'sales_manager',\n SalesPriceManager = 'sales_price_manager',\n SalesStockManager = 'sales_stock_manager',\n SalesMarketingManager = 'sales_marketing_manager',\n SeniorAccountant = 'senior_accountant',\n TrackAndTraceManager = 'track_and_trace_manager',\n}\n\nexport const TOP_ROLES = [\n AppRoles.Admin,\n AppRoles.Board,\n AppRoles.GeneralManager,\n AppRoles.SeniorAccountant,\n];\n\nexport enum TopLevelActions {\n AdministrationAll = 'admin:*',\n DocumentsFinanceBrowse = 'docs:finance:browse',\n DocumentsFinanceIssueProforma = 'docs:finance:new:proforma',\n DocumentsFinanceIssue = 'docs:finance:new',\n DocumentsAdministrativeBrowse = 'docs:administrative:browse',\n LeadsAll = 'leads:*',\n CrmOrgsBrowse = 'crm:orgs:browse',\n CrmContactsBrowse = 'crm:contacts:browse',\n BrowseDocumentDrafts = 'docs:drafts:browse',\n BrowsePurchasePayments = 'vehicles:purchase-payments:browse',\n BrowsePendingRemarks = 'remarks:pending:browse',\n LeasingDebtorsView = 'leasing:debtors:view',\n LeasingOverduesView = 'leasing:overdues:view',\n LeasingContractsExport = 'leasing:contracts:export',\n LeasingContractsBrowse = 'leasing:contracts:browse',\n LeasingContractsRsExport = 'leasing:contracts:rs:export-rs', // rs stands for rental solutions\n LeasingDebtorsExport = 'leasing:debtors:export',\n MarketBrowse = 'market:browse',\n MarketInsights = 'insights:market',\n MarketingAll = 'marketing:*',\n OffersBrowse = 'offers:browse',\n OpportunitiesBrowseAll = 'opps:browse',\n OpportunitiesBrowseAssigned = 'opps:browse:assigned',\n VehicleInsights = 'insights:vehicle',\n SaveBankAccounts = 'settings:bank-accounts:save',\n SettingsAll = 'settings:*',\n VehicleCreate = 'vehicle:create',\n TasksAll = 'tasks:*',\n TrackAndTraceDevices = 'tt:devices:*',\n ManageStocklists = 'stocklists:manage',\n TransportsBrowse = 'transports:browse',\n}\n\n//\n// I18N\n//\nexport const SUPPORTED_LANGUAGES = ['en', 'fr', 'nl', 'es', 'de', 'pt'] as const;\n\n//\n// Headers\n//\nexport const TENANT_ID_ADMIN_HEADER = 'tenant-id';\nexport const SERVICE_ID_ADMIN_HEADER = 'service-id';\n\n//\n// AUTH\n//\nexport const NO_TENANT_ID_VALUE = 'notenant';\nexport const SYSTEM_USER_ID = 'system';\n\n//\n// Business Entity IDs\n//\nexport enum BusinessEntityIds {\n BecrisDeclarations = 'becris_declarations',\n Contacts = 'contacts',\n Emails = 'emails',\n ExternalVehicleSale = 'external_vehicle_sale',\n Documents = 'documents',\n FinanceDocuments = 'finance_documents',\n AdministrativeDocuments = 'administrative_documents',\n InternetVehicles = 'internet-vehicles',\n LeasingContracts = 'leasing_contracts',\n LeasingUploadAutomation = 'leasing_upload_automation',\n Offers = 'offers',\n Opportunities = 'opportunities',\n Organizations = 'organizations',\n PdfTemplates = 'pdf_templates',\n Users = 'users',\n Vehicles = 'vehicles',\n VehiclesPurchase = 'vehicle_purchase',\n VehiclesPriceLists = 'vehicles_price_lists',\n Debtors = 'debtors',\n DebtorsDossier = 'debtor-dossiers',\n DocumentDrafts = 'document_drafts',\n TrackAndTraceDevices = 'track_and_trace_devices',\n Interests = 'interests',\n Prospects = 'prospects',\n Stocklists = 'stocklists',\n Transports = 'transports',\n}\n\n//\n// PDF Templates IDs\n//\nexport const LEASING_QUOTE_TEMPLATE_GROUP_ID = 'leasing_quote_template';\nexport const LEASING_QUOTE_PROFORMA_TEMPLATE_GROUP_ID = 'leasing_quote_proforma_template';\nexport const LEASING_CONTRACT_AMORTIZATION_TEMPLATE_GROUP_ID =\n 'leasing_contract_amortization_template';\nexport const LEASING_CONTRACT_AMORTIZATION_TEMPLATE_PRINT_VERSION_GROUP_ID =\n 'leasing_contract_amortization_print_version_template';\nexport const LEASING_QUOTE_LOCATION_TEMPLATE = 'leasing_quote_location_template';\nexport const LEASING_CONTRACT_TC_TEMPLATE_GROUP_ID = 'leasing_contract_tc_template';\nexport const SALES_QUOTE_PROFORMA_TEMPLATE_GROUP_ID = 'sales_quote_proforma_template';\nexport const SALES_QUOTE_AGREEMENT_TEMPLATE_GROUP_ID = 'sales_quote_agreement_template';\nexport const SALES_INVOICE_TEMPLATE_GROUP_ID = 'sales_invoice_template';\nexport const VEHICLES_STICKER_TEMPLATE_GROUP_ID = 'vehicles_sticker_template';\n\n//\n// VAT Prefixes for EU Countries and Great Britain & Northern Ireland\n//\nexport const EU_VAT_COUNTRY_CODES = [\n 'at',\n 'be',\n 'bg',\n 'hr',\n 'cy',\n 'cz',\n 'dk',\n 'ee',\n 'fi',\n 'fr',\n 'de',\n 'gr', // greece has EL prefix but the country code is GR\n 'el',\n 'hu',\n 'ie',\n 'it',\n 'lv',\n 'lt',\n 'lu',\n 'mt',\n 'nl',\n 'pl',\n 'pt',\n 'ro',\n 'sk',\n 'si',\n 'es',\n 'se',\n 'xi', // Northern Ireland\n];\n\nexport const HEXON_LANG_CODES: [string, ...string[]] = [\n 'en',\n 'nl',\n 'de',\n 'fr',\n 'es',\n 'pt',\n 'it',\n 'pl',\n 'ru',\n 'ro',\n 'el',\n 'bg',\n];\n\nexport const DEFAULT_SLB_PARTNER = 'To be announced';\n\nexport const SHARE_DOC_TEMPLATE_DEFAULT_LANGUAGE = 'en';\nexport const SHARE_DOC_TEMPLATE_LANGUAGES = [\n SHARE_DOC_TEMPLATE_DEFAULT_LANGUAGE,\n 'fr',\n 'nl',\n 'ro',\n] as const;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"date-utils.js","sourceRoot":"/","sources":["date-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAW,EAAE,SAAe,EAAW,EAAE,CACrE,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;AAEpC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAW,EAAE,SAAe,EAAW,EAAE,CACtE,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;AAEpC,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAW,EAAE,cAAoB,EAAE,YAAkB,EAAW,EAAE,CAC1F,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC,IAAI,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AAExE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,QAAgC,IAAI,IAAI,EAAE,EAAE,EAAE,CACtE,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAEhC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,OAA+B,EAC/B,QAAgB,EAChB,SAAiB,EACjB,EAAE;IACF,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IAGnC,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IAGxF,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;IAGjE,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,cAAc,CAAC,CAAC;IAGjE,OAAO,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AACvC,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAAa,IAAI,IAAI,EAAE,EAAU,EAAE;IACrE,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,GAAG,IAAI,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AACxD,CAAC,CAAC","sourcesContent":["import { compareAsc, format, getISOWeek, isBefore } from 'date-fns';\n\nexport const isSameOrAfter = (value: Date, reference: Date): boolean =>\n compareAsc(value, reference) >= 0;\n\nexport const isSameOrBefore = (value: Date, reference: Date): boolean =>\n compareAsc(value, reference) <= 0;\n\nexport const isBetween = (value: Date, startInclusive: Date, endExclusive: Date): boolean =>\n isSameOrAfter(value, startInclusive) && isBefore(value, endExclusive);\n\nexport const isoString = (value: number | string | Date = new Date()) =>\n new Date(value).toISOString();\n\nexport const formatInTimeZone = (\n rawDate: number | string | Date,\n timezone: string,\n formatStr: string\n) => {\n const baseDate = new Date(rawDate);\n\n // Convert date to the target timezone\n const offsetDate = new Date(baseDate.toLocaleString(undefined, { timeZone: timezone }));\n\n // Calculate the timezone difference in milliseconds\n const timezoneOffset = baseDate.getTime() - offsetDate.getTime();\n\n // Apply the offset to get the correct date in the target timezone\n const targetDate = new Date(baseDate.getTime() - timezoneOffset);\n\n // Format the date\n return format(targetDate, formatStr);\n};\n\n// Function to format date as YYYY-WWW\nexport const formatDateToISOWeek = (date: Date = new Date()): string => {\n const year = date.getFullYear();\n const week = getISOWeek(date);\n return `${year}-W${week.toString().padStart(2, '0')}`;\n};\n"]}
1
+ {"version":3,"file":"date-utils.js","sourceRoot":"/","sources":["date-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAW,EAAE,SAAe,EAAW,EAAE,CACrE,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;AAEpC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAW,EAAE,SAAe,EAAW,EAAE,CACtE,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;AAEpC,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAW,EAAE,cAAoB,EAAE,YAAkB,EAAW,EAAE,CAC1F,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC,IAAI,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AAExE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,QAAgC,IAAI,IAAI,EAAE,EAAE,EAAE,CACtE,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAEhC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,OAA+B,EAC/B,QAAgB,EAChB,SAAiB,EACjB,EAAE;IACF,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IAGnC,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IAGxF,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;IAGjE,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,cAAc,CAAC,CAAC;IAGjE,OAAO,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AACvC,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAAa,IAAI,IAAI,EAAE,EAAU,EAAE;IACrE,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,GAAG,IAAI,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AACxD,CAAC,CAAC","sourcesContent":["import { compareAsc, format, getISOWeek, isBefore } from 'date-fns';\n\nexport const isSameOrAfter = (value: Date, reference: Date): boolean =>\n compareAsc(value, reference) >= 0;\n\nexport const isSameOrBefore = (value: Date, reference: Date): boolean =>\n compareAsc(value, reference) <= 0;\n\nexport const isBetween = (value: Date, startInclusive: Date, endExclusive: Date): boolean =>\n isSameOrAfter(value, startInclusive) && isBefore(value, endExclusive);\n\nexport const isoString = (value: number | string | Date = new Date()) =>\n new Date(value).toISOString();\n\nexport const formatInTimeZone = (\n rawDate: number | string | Date,\n timezone: string,\n formatStr: string,\n) => {\n const baseDate = new Date(rawDate);\n\n // Convert date to the target timezone\n const offsetDate = new Date(baseDate.toLocaleString(undefined, { timeZone: timezone }));\n\n // Calculate the timezone difference in milliseconds\n const timezoneOffset = baseDate.getTime() - offsetDate.getTime();\n\n // Apply the offset to get the correct date in the target timezone\n const targetDate = new Date(baseDate.getTime() - timezoneOffset);\n\n // Format the date\n return format(targetDate, formatStr);\n};\n\n// Function to format date as YYYY-WWW\nexport const formatDateToISOWeek = (date: Date = new Date()): string => {\n const year = date.getFullYear();\n const week = getISOWeek(date);\n return `${year}-W${week.toString().padStart(2, '0')}`;\n};\n"]}
package/lib/errors.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"/","sources":["errors.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,MAAO,SAAQ,KAAK;IAC/B,QAAQ,CAAM;IACd,IAAI,CAAW;IAEf,YAAY,OAAgB,EAAE,QAAc,EAAE,IAAc;QAC1D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,QAAQ,CAAM;IAEd,YAAY,GAAU,EAAE,QAAc;QACpC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAChD,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,MAAM;IACvC,YAAY,OAAgB,EAAE,QAAc;QAC1C,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAOD,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9C,gBAAgB,CAAsC;IACtD,YAAY,GAAG,IAAI,CAAC;IACpB,QAAQ,CAAM;IAEd,YAAY,OAAgB,EAAE,MAA4B,EAAE,QAAc;QACxE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,IAAI,CAAC,gBAAgB,GAAG;gBACtB,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CACxB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAA2B,EAAwB,EAAE,CAAC,CAAC;oBAC3E,OAAO;oBACP,IAAI;oBACJ,IAAI,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;iBACzC,CAAC,CACH;aACF,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF","sourcesContent":["import Joi from 'joi';\n\nexport class XError extends Error {\n errorCtx: any;\n bail?: boolean;\n\n constructor(message?: string, errorCtx?: any, bail?: boolean) {\n super(message);\n this.name = 'XError';\n this.errorCtx = errorCtx;\n this.bail = bail;\n }\n}\n\nexport class WrappedError extends Error {\n errorCtx: any;\n\n constructor(err: Error, errorCtx?: any) {\n super(err.message);\n this.name = err.name;\n this.stack = err.stack;\n this.errorCtx = errorCtx;\n }\n}\n\nexport class AsyncStopError extends Error {\n constructor(message?: string) {\n super(message);\n this.name = 'AsyncStopError';\n }\n}\n\nexport class ForbiddenError extends Error {\n constructor(message?: string) {\n super(message);\n this.name = 'ForbiddenError';\n }\n}\n\nexport class EntryAlreadyExistsError extends Error {\n constructor(message?: string) {\n super(message);\n this.name = 'EntryAlreadyExistsError';\n }\n}\n\nexport class NotFoundError extends XError {\n constructor(message?: string, errorCtx?: any) {\n super(message, errorCtx);\n this.name = 'NotFoundError';\n }\n}\n\ntype FieldValidationError = {\n message: string;\n path: Array<string | number>;\n type: string;\n};\nexport class InvalidArgumentsError extends Error {\n validationErrors?: { errors: FieldValidationError[] };\n isValidation = true;\n errorCtx: any;\n\n constructor(message?: string, errors?: Joi.ValidationError, errorCtx?: any) {\n super(message);\n this.name = 'InvalidArgumentsError';\n this.errorCtx = errorCtx;\n\n if (errors != null) {\n this.validationErrors = {\n errors: errors.details.map(\n ({ path, type, message }: Joi.ValidationErrorItem): FieldValidationError => ({\n message,\n path,\n type: type === 'custom' ? message : type,\n })\n ),\n };\n }\n }\n}\n\nexport class UnauthorizedError extends Error {\n constructor(message?: string) {\n super(message);\n this.name = 'UnauthorizedError';\n }\n}\n"]}
1
+ {"version":3,"file":"errors.js","sourceRoot":"/","sources":["errors.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,MAAO,SAAQ,KAAK;IAC/B,QAAQ,CAAM;IACd,IAAI,CAAW;IAEf,YAAY,OAAgB,EAAE,QAAc,EAAE,IAAc;QAC1D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,QAAQ,CAAM;IAEd,YAAY,GAAU,EAAE,QAAc;QACpC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAChD,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,MAAM;IACvC,YAAY,OAAgB,EAAE,QAAc;QAC1C,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAOD,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9C,gBAAgB,CAAsC;IACtD,YAAY,GAAG,IAAI,CAAC;IACpB,QAAQ,CAAM;IAEd,YAAY,OAAgB,EAAE,MAA4B,EAAE,QAAc;QACxE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,IAAI,CAAC,gBAAgB,GAAG;gBACtB,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CACxB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAA2B,EAAwB,EAAE,CAAC,CAAC;oBAC3E,OAAO;oBACP,IAAI;oBACJ,IAAI,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;iBACzC,CAAC,CACH;aACF,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF","sourcesContent":["import Joi from 'joi';\n\nexport class XError extends Error {\n errorCtx: any;\n bail?: boolean;\n\n constructor(message?: string, errorCtx?: any, bail?: boolean) {\n super(message);\n this.name = 'XError';\n this.errorCtx = errorCtx;\n this.bail = bail;\n }\n}\n\nexport class WrappedError extends Error {\n errorCtx: any;\n\n constructor(err: Error, errorCtx?: any) {\n super(err.message);\n this.name = err.name;\n this.stack = err.stack;\n this.errorCtx = errorCtx;\n }\n}\n\nexport class AsyncStopError extends Error {\n constructor(message?: string) {\n super(message);\n this.name = 'AsyncStopError';\n }\n}\n\nexport class ForbiddenError extends Error {\n constructor(message?: string) {\n super(message);\n this.name = 'ForbiddenError';\n }\n}\n\nexport class EntryAlreadyExistsError extends Error {\n constructor(message?: string) {\n super(message);\n this.name = 'EntryAlreadyExistsError';\n }\n}\n\nexport class NotFoundError extends XError {\n constructor(message?: string, errorCtx?: any) {\n super(message, errorCtx);\n this.name = 'NotFoundError';\n }\n}\n\ntype FieldValidationError = {\n message: string;\n path: Array<string | number>;\n type: string;\n};\nexport class InvalidArgumentsError extends Error {\n validationErrors?: { errors: FieldValidationError[] };\n isValidation = true;\n errorCtx: any;\n\n constructor(message?: string, errors?: Joi.ValidationError, errorCtx?: any) {\n super(message);\n this.name = 'InvalidArgumentsError';\n this.errorCtx = errorCtx;\n\n if (errors != null) {\n this.validationErrors = {\n errors: errors.details.map(\n ({ path, type, message }: Joi.ValidationErrorItem): FieldValidationError => ({\n message,\n path,\n type: type === 'custom' ? message : type,\n }),\n ),\n };\n }\n }\n}\n\nexport class UnauthorizedError extends Error {\n constructor(message?: string) {\n super(message);\n this.name = 'UnauthorizedError';\n }\n}\n"]}
package/lib/fetch.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import type { HeadersInit, RequestInfo, RequestInit } from 'node-fetch';
2
1
  import type { URL } from 'node:url';
2
+ import type { HeadersInit, RequestInfo, RequestInit } from 'node-fetch';
3
3
  export declare function fetchJson<T>(url: URL | RequestInfo, init?: RequestInit, opts?: {
4
4
  denyEmptyResponse?: true;
5
5
  }): Promise<T>;
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.d.ts","sourceRoot":"/","sources":["fetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAIpC,wBAAgB,SAAS,CAAC,CAAC,EACzB,GAAG,EAAE,GAAG,GAAG,WAAW,EACtB,IAAI,CAAC,EAAE,WAAW,EAClB,IAAI,CAAC,EAAE;IAAE,iBAAiB,CAAC,EAAE,IAAI,CAAA;CAAE,GAClC,OAAO,CAAC,CAAC,CAAC,CAAC;AAEd,wBAAgB,SAAS,CAAC,CAAC,EACzB,GAAG,EAAE,GAAG,GAAG,WAAW,EACtB,IAAI,CAAC,EAAE,WAAW,EAClB,IAAI,CAAC,EAAE;IAAE,iBAAiB,EAAE,KAAK,CAAA;CAAE,GAClC,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;AAqC1B,eAAO,MAAM,YAAY,QAAa,OAAO,CAAC,MAAM,CAMnD,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,SAAS;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,KAAG,MAOxE,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,SAAS;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CAAE,KAAG,WACF,CAAC"}
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"/","sources":["fetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAIxE,wBAAgB,SAAS,CAAC,CAAC,EACzB,GAAG,EAAE,GAAG,GAAG,WAAW,EACtB,IAAI,CAAC,EAAE,WAAW,EAClB,IAAI,CAAC,EAAE;IAAE,iBAAiB,CAAC,EAAE,IAAI,CAAA;CAAE,GAClC,OAAO,CAAC,CAAC,CAAC,CAAC;AAEd,wBAAgB,SAAS,CAAC,CAAC,EACzB,GAAG,EAAE,GAAG,GAAG,WAAW,EACtB,IAAI,CAAC,EAAE,WAAW,EAClB,IAAI,CAAC,EAAE;IAAE,iBAAiB,EAAE,KAAK,CAAA;CAAE,GAClC,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;AAqC1B,eAAO,MAAM,YAAY,QAAa,OAAO,CAAC,MAAM,CAMnD,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,SAAS;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,KAAG,MAOxE,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,SAAS;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CAAE,KAAG,WACF,CAAC"}
package/lib/fetch.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.js","sourceRoot":"/","sources":["fetch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAc5D,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,GAAsB,EACtB,IAAkB,EAClB,IAAsC;IAGtC,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAEnD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,IAAW,CAAC,CAAC;IAE/C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE;YACpC,MAAM,EAAE,IAAI,EAAE,MAAM;YACpB,GAAG;YACH,IAAI,EAAE,IAAI,EAAE,IAAI;YAChB,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,QAAQ,CAAC,MAAM;SACxB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,iBAAiB,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACxD,OAAO,SAAS,CAAC;IACnB,CAAC;SAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,iBAAiB,EAAE,CAAC;QAC9D,MAAM,IAAI,MAAM,CAAC,qCAAqC,EAAE;YACtD,MAAM,EAAE,IAAI,EAAE,MAAM;YACpB,GAAG;YACH,IAAI,EAAE,IAAI,EAAE,IAAI;YAChB,MAAM,EAAE,QAAQ,CAAC,MAAM;SACxB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,EAAgB,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,IAAqB,EAAE;IACtD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QAC3B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,YAAY,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;AAC7C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAAoC,EAAU,EAAE;IAChF,MAAM,QAAQ,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACjD,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9C,MAAM,IAAI,qBAAqB,CAAC,6BAA6B,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAA8C,EAAe,EAAE,CAC1F,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAyB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC","sourcesContent":["import type { HeadersInit, RequestInfo, RequestInit } from 'node-fetch';\nimport type { URL } from 'node:url';\nimport { TENANT_ID_ADMIN_HEADER } from './constants.js';\nimport { InvalidArgumentsError, XError } from './errors.js';\n\nexport function fetchJson<T>(\n url: URL | RequestInfo,\n init?: RequestInit,\n opts?: { denyEmptyResponse?: true }\n): Promise<T>;\n\nexport function fetchJson<T>(\n url: URL | RequestInfo,\n init?: RequestInit,\n opts?: { denyEmptyResponse: false }\n): Promise<T | undefined>;\n\nexport async function fetchJson<T>(\n url: URL | RequestInfo,\n init?: RequestInit,\n opts?: { denyEmptyResponse?: boolean }\n): Promise<T | undefined> {\n // sometimes the origin ends with a slash and when we append the path it gets a double slash\n url = url.toString().replace(/([^:]\\/)\\/+/g, '$1');\n\n const response = await fetch(url, init as any);\n\n if (!response.ok) {\n const body = await response.text();\n throw new XError(response.statusText, {\n method: init?.method,\n url,\n body: init?.body,\n response: body,\n status: response.status,\n });\n }\n\n if (!opts?.denyEmptyResponse && response.status === 204) {\n return undefined;\n } else if (response.status === 204 && opts?.denyEmptyResponse) {\n throw new XError('No content returned from the server', {\n method: init?.method,\n url,\n body: init?.body,\n status: response.status,\n });\n }\n\n return response.json() as Promise<T>;\n}\n\nexport const getAdminAuth = async (): Promise<string> => {\n if (!process.env.ADMIN_KEY) {\n return '';\n }\n\n return `AdminKey ${process.env.ADMIN_KEY}`;\n};\n\nexport const getTenantIdHeader = (headers: { [name: string]: unknown }): string => {\n const tenantId = headers[TENANT_ID_ADMIN_HEADER];\n if (!tenantId || typeof tenantId !== 'string') {\n throw new InvalidArgumentsError('Missing or invalid tenantId');\n }\n\n return tenantId;\n};\n\nexport const cleanHeaders = (headers: { [key: string]: string | undefined }): HeadersInit =>\n Object.entries(headers).filter((h): h is [string, string] => h[1] != null);\n"]}
1
+ {"version":3,"file":"fetch.js","sourceRoot":"/","sources":["fetch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAc5D,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,GAAsB,EACtB,IAAkB,EAClB,IAAsC;IAGtC,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAEnD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,IAAW,CAAC,CAAC;IAE/C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE;YACpC,MAAM,EAAE,IAAI,EAAE,MAAM;YACpB,GAAG;YACH,IAAI,EAAE,IAAI,EAAE,IAAI;YAChB,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,QAAQ,CAAC,MAAM;SACxB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,iBAAiB,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACxD,OAAO,SAAS,CAAC;IACnB,CAAC;SAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,iBAAiB,EAAE,CAAC;QAC9D,MAAM,IAAI,MAAM,CAAC,qCAAqC,EAAE;YACtD,MAAM,EAAE,IAAI,EAAE,MAAM;YACpB,GAAG;YACH,IAAI,EAAE,IAAI,EAAE,IAAI;YAChB,MAAM,EAAE,QAAQ,CAAC,MAAM;SACxB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,EAAgB,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,IAAqB,EAAE;IACtD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QAC3B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,YAAY,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;AAC7C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAAoC,EAAU,EAAE;IAChF,MAAM,QAAQ,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACjD,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9C,MAAM,IAAI,qBAAqB,CAAC,6BAA6B,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAA8C,EAAe,EAAE,CAC1F,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAyB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC","sourcesContent":["import type { URL } from 'node:url';\nimport type { HeadersInit, RequestInfo, RequestInit } from 'node-fetch';\nimport { TENANT_ID_ADMIN_HEADER } from './constants.js';\nimport { InvalidArgumentsError, XError } from './errors.js';\n\nexport function fetchJson<T>(\n url: URL | RequestInfo,\n init?: RequestInit,\n opts?: { denyEmptyResponse?: true },\n): Promise<T>;\n\nexport function fetchJson<T>(\n url: URL | RequestInfo,\n init?: RequestInit,\n opts?: { denyEmptyResponse: false },\n): Promise<T | undefined>;\n\nexport async function fetchJson<T>(\n url: URL | RequestInfo,\n init?: RequestInit,\n opts?: { denyEmptyResponse?: boolean },\n): Promise<T | undefined> {\n // sometimes the origin ends with a slash and when we append the path it gets a double slash\n url = url.toString().replace(/([^:]\\/)\\/+/g, '$1');\n\n const response = await fetch(url, init as any);\n\n if (!response.ok) {\n const body = await response.text();\n throw new XError(response.statusText, {\n method: init?.method,\n url,\n body: init?.body,\n response: body,\n status: response.status,\n });\n }\n\n if (!opts?.denyEmptyResponse && response.status === 204) {\n return undefined;\n } else if (response.status === 204 && opts?.denyEmptyResponse) {\n throw new XError('No content returned from the server', {\n method: init?.method,\n url,\n body: init?.body,\n status: response.status,\n });\n }\n\n return response.json() as Promise<T>;\n}\n\nexport const getAdminAuth = async (): Promise<string> => {\n if (!process.env.ADMIN_KEY) {\n return '';\n }\n\n return `AdminKey ${process.env.ADMIN_KEY}`;\n};\n\nexport const getTenantIdHeader = (headers: { [name: string]: unknown }): string => {\n const tenantId = headers[TENANT_ID_ADMIN_HEADER];\n if (!tenantId || typeof tenantId !== 'string') {\n throw new InvalidArgumentsError('Missing or invalid tenantId');\n }\n\n return tenantId;\n};\n\nexport const cleanHeaders = (headers: { [key: string]: string | undefined }): HeadersInit =>\n Object.entries(headers).filter((h): h is [string, string] => h[1] != null);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"formatting.js","sourceRoot":"/","sources":["formatting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAEvC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,IAA4C,EAC5C,EACE,SAAS,GAAG,iBAAiB,EAC7B,MAAM,GAAG,OAAO,MAC4C,EAAE,EAChE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAEzC,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,MAAc,EACd,MAAM,GAAG,OAAO,EAChB,gBAAgB,GAAG,KAAK,EACxB,UAAoC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAC/C,EAAE;IACV,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvD,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;QACnC,qBAAqB,EAAE,QAAQ,CAAC,aAAa;QAC7C,qBAAqB,EAAE,QAAQ,CAAC,aAAa;QAC7C,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,IAAI;QACjB,GAAG,OAAO;KACX,CAAC;SACC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SAC7B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,SAAS,IAAI,CAAC,CAAC,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAC9F,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC,CAAC","sourcesContent":["import { getCurrencySettings } from './money.js';\n\nexport const DEFAULT_SEPARATOR = ' • ';\n\nexport const joinWithSeparator = (\n text: (string | number | undefined | null)[],\n {\n separator = DEFAULT_SEPARATOR,\n filter = Boolean,\n }: { separator?: string; filter?: (value: any) => boolean } = {}\n) => text.filter(filter).join(separator);\n\nexport const formatCurrency = (\n amount: string,\n locale = 'de-DE',\n showCurrencySign = false,\n options: Intl.NumberFormatOptions = { currency: 'EUR' }\n): string => {\n const settings = getCurrencySettings(options.currency);\n return new Intl.NumberFormat(locale, {\n minimumFractionDigits: settings.decimalPlaces,\n maximumFractionDigits: settings.decimalPlaces,\n style: 'currency',\n useGrouping: true,\n ...options,\n })\n .formatToParts(Number(amount))\n .map((p) => (showCurrencySign || (p.type != 'literal' && p.type != 'currency') ? p.value : ''))\n .join('');\n};\n"]}
1
+ {"version":3,"file":"formatting.js","sourceRoot":"/","sources":["formatting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAEvC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,IAA4C,EAC5C,EACE,SAAS,GAAG,iBAAiB,EAC7B,MAAM,GAAG,OAAO,MAC4C,EAAE,EAChE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAEzC,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,MAAc,EACd,MAAM,GAAG,OAAO,EAChB,gBAAgB,GAAG,KAAK,EACxB,UAAoC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAC/C,EAAE;IACV,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvD,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;QACnC,qBAAqB,EAAE,QAAQ,CAAC,aAAa;QAC7C,qBAAqB,EAAE,QAAQ,CAAC,aAAa;QAC7C,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,IAAI;QACjB,GAAG,OAAO;KACX,CAAC;SACC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SAC7B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,SAAS,IAAI,CAAC,CAAC,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAC9F,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC,CAAC","sourcesContent":["import { getCurrencySettings } from './money.js';\n\nexport const DEFAULT_SEPARATOR = ' • ';\n\nexport const joinWithSeparator = (\n text: (string | number | undefined | null)[],\n {\n separator = DEFAULT_SEPARATOR,\n filter = Boolean,\n }: { separator?: string; filter?: (value: any) => boolean } = {},\n) => text.filter(filter).join(separator);\n\nexport const formatCurrency = (\n amount: string,\n locale = 'de-DE',\n showCurrencySign = false,\n options: Intl.NumberFormatOptions = { currency: 'EUR' },\n): string => {\n const settings = getCurrencySettings(options.currency);\n return new Intl.NumberFormat(locale, {\n minimumFractionDigits: settings.decimalPlaces,\n maximumFractionDigits: settings.decimalPlaces,\n style: 'currency',\n useGrouping: true,\n ...options,\n })\n .formatToParts(Number(amount))\n .map((p) => (showCurrencySign || (p.type != 'literal' && p.type != 'currency') ? p.value : ''))\n .join('');\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"leasing.js","sourceRoot":"/","sources":["leasing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAWrC,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,GAAW,EAAE,EAAE;IACxD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAC9B,EAAE,KAAK,EAAE,WAAW,EAA0C,EAC9D,UAAoC;IAOpC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC;IAE7C,MAAM,eAAe,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;IAE9C,MAAM,QAAQ,GAAG,cAAc,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAEzD,MAAM,WAAW,GAAG,eAAe,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC;IAE9F,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;IACtE,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;IAExE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AACtD,CAAC;AAED,MAAM,cAAc,GAAG,CAAC,WAAmB,EAAE,UAAoC,EAAU,EAAE;IAC3F,MAAM,EAAE,yBAAyB,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC;IAE3E,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE7C,MAAM,UAAU,GAAG,WAAW,GAAG,WAAW,CAAC;IAC7C,MAAM,UAAU,GAAG,CAAC,yBAAyB,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;IAEjE,OAAO,KAAK,CAAC,UAAU,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;AACrD,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,EACvB,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,eAAe,GAMhB,EAAU,EAAE;IACX,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IAC5E,MAAM,gBAAgB,GAAG,0BAA0B,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAE5E,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;IACzD,WAAW,GAAG,CAAC,kBAAkB,GAAG,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE/E,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,gBAAgB,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,YAAoB,EAAU,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC;AAG/E,MAAM,0BAA0B,GAAG,CAAC,YAAoB,EAAE,QAAgB,EAAU,EAAE,CACpF,CAAC,QAAQ,GAAG,YAAY,CAAC,GAAG,EAAE,CAAC;AAEjC,MAAM,qBAAqB,GAAG,CAAC,eAAuB,EAAE,QAAgB,EAAU,EAAE,CAClF,eAAe,GAAG,QAAQ,CAAC","sourcesContent":["import { Decimal } from 'decimal.js';\n\nexport type WebsiteLeasingConditions = {\n interestRate: number;\n deposit: number;\n residual: number;\n maxDuration: number;\n minDuration: number;\n maxVehicleAgeAtEndOfLease: number;\n};\n\nconst clamp = (min: number, value: number, max: number) => {\n return Math.min(Math.max(value, min), max);\n};\n\nexport function getLeasingAmount(\n { price, vehicleYear }: { price: number; vehicleYear: number },\n conditions: WebsiteLeasingConditions\n): {\n installment: number;\n duration: number;\n advance: string;\n residual: string;\n} {\n const { deposit, interestRate } = conditions;\n\n const financingAmount = price * (1 - deposit);\n\n const duration = maxLeasePeriod(vehicleYear, conditions);\n\n const installment = getInstallement({ duration, interestRate, residual: 0, financingAmount });\n\n const advance = new Decimal(price).mul(conditions.deposit).toString();\n const residual = new Decimal(price).mul(conditions.residual).toString();\n\n return { installment, duration, advance, residual };\n}\n\nconst maxLeasePeriod = (vehicleYear: number, conditions: WebsiteLeasingConditions): number => {\n const { maxVehicleAgeAtEndOfLease, minDuration, maxDuration } = conditions;\n\n const currentYear = new Date().getFullYear();\n\n const vehicleAge = currentYear - vehicleYear;\n const leaseLimit = (maxVehicleAgeAtEndOfLease - vehicleAge) * 12;\n\n return clamp(leaseLimit, minDuration, maxDuration);\n};\n\nconst getInstallement = ({\n duration,\n interestRate,\n residual,\n financingAmount,\n}: {\n duration: number;\n interestRate: number;\n residual: number;\n financingAmount: number;\n}): number => {\n const amortizationAmount = getAmortizationAmount(financingAmount, residual);\n const residualInterest = getResidualMonthlyInterest(interestRate, residual);\n\n let installment = 0;\n const interestRateMonth = getMonthlyInterest(interestRate);\n const irmPow = Math.pow(interestRateMonth + 1, duration);\n installment = (amortizationAmount * interestRateMonth * irmPow) / (irmPow - 1);\n\n return Math.round(installment + residualInterest);\n};\n\nconst getMonthlyInterest = (interestRate: number): number => interestRate / 12;\n\n// since the interest rate is per year, no need to consider the duration in this calculation\nconst getResidualMonthlyInterest = (interestRate: number, residual: number): number =>\n (residual * interestRate) / 12;\n\nconst getAmortizationAmount = (financingAmount: number, residual: number): number =>\n financingAmount - residual;\n"]}
1
+ {"version":3,"file":"leasing.js","sourceRoot":"/","sources":["leasing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAWrC,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,GAAW,EAAE,EAAE;IACxD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAC9B,EAAE,KAAK,EAAE,WAAW,EAA0C,EAC9D,UAAoC;IAOpC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC;IAE7C,MAAM,eAAe,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;IAE9C,MAAM,QAAQ,GAAG,cAAc,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAEzD,MAAM,WAAW,GAAG,eAAe,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC;IAE9F,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;IACtE,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;IAExE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AACtD,CAAC;AAED,MAAM,cAAc,GAAG,CAAC,WAAmB,EAAE,UAAoC,EAAU,EAAE;IAC3F,MAAM,EAAE,yBAAyB,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC;IAE3E,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE7C,MAAM,UAAU,GAAG,WAAW,GAAG,WAAW,CAAC;IAC7C,MAAM,UAAU,GAAG,CAAC,yBAAyB,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;IAEjE,OAAO,KAAK,CAAC,UAAU,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;AACrD,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,EACvB,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,eAAe,GAMhB,EAAU,EAAE;IACX,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IAC5E,MAAM,gBAAgB,GAAG,0BAA0B,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAE5E,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;IACzD,WAAW,GAAG,CAAC,kBAAkB,GAAG,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE/E,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,gBAAgB,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,YAAoB,EAAU,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC;AAG/E,MAAM,0BAA0B,GAAG,CAAC,YAAoB,EAAE,QAAgB,EAAU,EAAE,CACpF,CAAC,QAAQ,GAAG,YAAY,CAAC,GAAG,EAAE,CAAC;AAEjC,MAAM,qBAAqB,GAAG,CAAC,eAAuB,EAAE,QAAgB,EAAU,EAAE,CAClF,eAAe,GAAG,QAAQ,CAAC","sourcesContent":["import { Decimal } from 'decimal.js';\n\nexport type WebsiteLeasingConditions = {\n interestRate: number;\n deposit: number;\n residual: number;\n maxDuration: number;\n minDuration: number;\n maxVehicleAgeAtEndOfLease: number;\n};\n\nconst clamp = (min: number, value: number, max: number) => {\n return Math.min(Math.max(value, min), max);\n};\n\nexport function getLeasingAmount(\n { price, vehicleYear }: { price: number; vehicleYear: number },\n conditions: WebsiteLeasingConditions,\n): {\n installment: number;\n duration: number;\n advance: string;\n residual: string;\n} {\n const { deposit, interestRate } = conditions;\n\n const financingAmount = price * (1 - deposit);\n\n const duration = maxLeasePeriod(vehicleYear, conditions);\n\n const installment = getInstallement({ duration, interestRate, residual: 0, financingAmount });\n\n const advance = new Decimal(price).mul(conditions.deposit).toString();\n const residual = new Decimal(price).mul(conditions.residual).toString();\n\n return { installment, duration, advance, residual };\n}\n\nconst maxLeasePeriod = (vehicleYear: number, conditions: WebsiteLeasingConditions): number => {\n const { maxVehicleAgeAtEndOfLease, minDuration, maxDuration } = conditions;\n\n const currentYear = new Date().getFullYear();\n\n const vehicleAge = currentYear - vehicleYear;\n const leaseLimit = (maxVehicleAgeAtEndOfLease - vehicleAge) * 12;\n\n return clamp(leaseLimit, minDuration, maxDuration);\n};\n\nconst getInstallement = ({\n duration,\n interestRate,\n residual,\n financingAmount,\n}: {\n duration: number;\n interestRate: number;\n residual: number;\n financingAmount: number;\n}): number => {\n const amortizationAmount = getAmortizationAmount(financingAmount, residual);\n const residualInterest = getResidualMonthlyInterest(interestRate, residual);\n\n let installment = 0;\n const interestRateMonth = getMonthlyInterest(interestRate);\n const irmPow = Math.pow(interestRateMonth + 1, duration);\n installment = (amortizationAmount * interestRateMonth * irmPow) / (irmPow - 1);\n\n return Math.round(installment + residualInterest);\n};\n\nconst getMonthlyInterest = (interestRate: number): number => interestRate / 12;\n\n// since the interest rate is per year, no need to consider the duration in this calculation\nconst getResidualMonthlyInterest = (interestRate: number, residual: number): number =>\n (residual * interestRate) / 12;\n\nconst getAmortizationAmount = (financingAmount: number, residual: number): number =>\n financingAmount - residual;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"location-utils.js","sourceRoot":"/","sources":["location-utils.ts"],"names":[],"mappings":"AAEA,MAAM,uBAAuB,GAAG;IAC9B,EAAE,EAAE,IAAI;IACR,EAAE,EAAE,IAAI;IACR,EAAE,EAAE,IAAI;IACR,EAAE,EAAE,IAAI;IACR,EAAE,EAAE,IAAI;IACR,EAAE,EAAE,IAAI;CACT,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,OAAe,EAAU,EAAE;IACxD,OAAO,uBAAuB,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;AACjF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,OAAsB,EACtB,SAAiB,MAAM,EACH,EAAE;IACtB,MAAM,WAAW,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC;SACpE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;SAClB,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,aAAa,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,MAAM,CACpF,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CACX,CAAC;IAEF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,OAAsB,EACtB,SAAiB,MAAM,EACH,EAAE;IACtB,MAAM,cAAc,GAAG;QACrB,GAAG,OAAO;QACV,OAAO,EAAE,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAAC;KAChD,CAAC;IAEF,OAAO,cAAc,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AAChD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mCAAmC,GAAG,CACjD,QAAuB,EACH,EAAE;IACtB,MAAM,YAAY,GAAG,IAAI,CAAC;IAC1B,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAEvD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC","sourcesContent":["import { LocationValue } from './types.js';\n\nconst COUNTRY_TO_CUSTOMS_CODE = {\n RS: 'XS', // Serbia\n MC: 'FR', // Monaco\n SM: 'IT', // San Marino\n AD: 'ES', // Andorra\n GL: 'DK', // Greenland\n FO: 'DK', // Faroe Islands\n};\n\nconst getCountryCustomsCode = (country: string): string => {\n return COUNTRY_TO_CUSTOMS_CODE[country.toUpperCase()] ?? country.toUpperCase();\n};\n\nexport const getAddressText = (\n address: LocationValue,\n joinBy: string = '<br>'\n): string | undefined => {\n const regionLines = [address.postalCode, address.city, address.country]\n .filter((n) => !!n)\n .join(', ');\n\n const filteredParts = [address.addressLine1, address.addressLine2, regionLines].filter(\n (n) => !!n\n );\n\n if (filteredParts.length === 0) {\n return undefined;\n }\n return filteredParts.join(joinBy);\n};\n\nexport const getCustomsAdressText = (\n address: LocationValue,\n joinBy: string = '<br>'\n): string | undefined => {\n const customsAddress = {\n ...address,\n country: getCountryCustomsCode(address.country),\n };\n\n return getAddressText(customsAddress, joinBy);\n};\n\nexport const getFormatedAddressFromLocationValue = (\n location: LocationValue\n): string | undefined => {\n const PARTS_JOINER = ', ';\n const address = getAddressText(location, PARTS_JOINER);\n\n return address;\n};\n"]}
1
+ {"version":3,"file":"location-utils.js","sourceRoot":"/","sources":["location-utils.ts"],"names":[],"mappings":"AAEA,MAAM,uBAAuB,GAAG;IAC9B,EAAE,EAAE,IAAI;IACR,EAAE,EAAE,IAAI;IACR,EAAE,EAAE,IAAI;IACR,EAAE,EAAE,IAAI;IACR,EAAE,EAAE,IAAI;IACR,EAAE,EAAE,IAAI;CACT,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,OAAe,EAAU,EAAE;IACxD,OAAO,uBAAuB,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;AACjF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,OAAsB,EACtB,SAAiB,MAAM,EACH,EAAE;IACtB,MAAM,WAAW,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC;SACpE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;SAClB,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,aAAa,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,MAAM,CACpF,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CACX,CAAC;IAEF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,OAAsB,EACtB,SAAiB,MAAM,EACH,EAAE;IACtB,MAAM,cAAc,GAAG;QACrB,GAAG,OAAO;QACV,OAAO,EAAE,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAAC;KAChD,CAAC;IAEF,OAAO,cAAc,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AAChD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mCAAmC,GAAG,CACjD,QAAuB,EACH,EAAE;IACtB,MAAM,YAAY,GAAG,IAAI,CAAC;IAC1B,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAEvD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC","sourcesContent":["import { LocationValue } from './types.js';\n\nconst COUNTRY_TO_CUSTOMS_CODE = {\n RS: 'XS', // Serbia\n MC: 'FR', // Monaco\n SM: 'IT', // San Marino\n AD: 'ES', // Andorra\n GL: 'DK', // Greenland\n FO: 'DK', // Faroe Islands\n};\n\nconst getCountryCustomsCode = (country: string): string => {\n return COUNTRY_TO_CUSTOMS_CODE[country.toUpperCase()] ?? country.toUpperCase();\n};\n\nexport const getAddressText = (\n address: LocationValue,\n joinBy: string = '<br>',\n): string | undefined => {\n const regionLines = [address.postalCode, address.city, address.country]\n .filter((n) => !!n)\n .join(', ');\n\n const filteredParts = [address.addressLine1, address.addressLine2, regionLines].filter(\n (n) => !!n,\n );\n\n if (filteredParts.length === 0) {\n return undefined;\n }\n return filteredParts.join(joinBy);\n};\n\nexport const getCustomsAdressText = (\n address: LocationValue,\n joinBy: string = '<br>',\n): string | undefined => {\n const customsAddress = {\n ...address,\n country: getCountryCustomsCode(address.country),\n };\n\n return getAddressText(customsAddress, joinBy);\n};\n\nexport const getFormatedAddressFromLocationValue = (\n location: LocationValue,\n): string | undefined => {\n const PARTS_JOINER = ', ';\n const address = getAddressText(location, PARTS_JOINER);\n\n return address;\n};\n"]}
package/lib/money.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"money.js","sourceRoot":"/","sources":["money.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,YAAY,GAAG;IACnB,aAAa,EAAE,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC,eAAe;IACvC,cAAc,EAAE,KAAK;CACtB,CAAC;AAEF,MAAM,YAAY,GAAG;IACnB,aAAa,EAAE,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC,eAAe;IACvC,cAAc,EAAE,KAAK;CACtB,CAAC;AAEF,MAAM,YAAY,GAAG;IACnB,aAAa,EAAE,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC,eAAe;IACvC,cAAc,EAAE,KAAK;CACtB,CAAC;AASF,MAAM,gBAAgB,GAAqC;IACzD,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,YAAY;CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,WAAmB,KAAK,EAAoB,EAAE;IAChF,OAAO,gBAAgB,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC;AACpD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,WAAmB,KAAK,EAAE,KAAuB,EAAW,EAAE;IACvF,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC/C,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;AAC7F,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,WAAmB,KAAK,EACxB,OAAyB,EACzB,OAAyB,EACzB,SAAS,GAAG,GAAG,EACN,EAAE,CACX,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC;KAC1B,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;KACpC,GAAG,EAAE;KACL,iBAAiB,CAAC,SAAS,CAAC,CAAC","sourcesContent":["import { Decimal } from 'decimal.js';\n\nconst CFA_SETTINGS = {\n decimalPlaces: 0,\n roundingMethod: Decimal.ROUND_HALF_EVEN,\n currencySymbol: 'CFA',\n};\n\nconst EUR_SETTINGS = {\n decimalPlaces: 2,\n roundingMethod: Decimal.ROUND_HALF_EVEN,\n currencySymbol: 'EUR',\n};\n\nconst USD_SETTINGS = {\n decimalPlaces: 2,\n roundingMethod: Decimal.ROUND_HALF_EVEN,\n currencySymbol: 'USD',\n};\n\ntype CurrencySettings = {\n decimalPlaces: number;\n roundingMethod: typeof Decimal.ROUND_HALF_EVEN;\n thousandSeparator?: string;\n currencySymbol?: string;\n};\n\nconst currencySettings: Record<string, CurrencySettings> = {\n XOF: CFA_SETTINGS,\n CFA: CFA_SETTINGS,\n EUR: EUR_SETTINGS,\n USD: USD_SETTINGS,\n};\n\nexport const getCurrencySettings = (currency: string = 'EUR'): CurrencySettings => {\n return currencySettings[currency] || EUR_SETTINGS;\n};\n\nexport const roundMoney = (currency: string = 'EUR', value: Decimal | string): Decimal => {\n const settings = getCurrencySettings(currency);\n return new Decimal(value).toDecimalPlaces(settings.decimalPlaces, settings.roundingMethod);\n};\n\n// We tolerate a 10 cent rounding difference\nexport const isAmountWithinToleranceSame = (\n currency: string = 'EUR',\n amount1: Decimal | string,\n amount2: Decimal | string,\n tolerance = 0.1\n): boolean =>\n roundMoney(currency, amount1)\n .minus(roundMoney(currency, amount2))\n .abs()\n .lessThanOrEqualTo(tolerance);\n"]}
1
+ {"version":3,"file":"money.js","sourceRoot":"/","sources":["money.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,YAAY,GAAG;IACnB,aAAa,EAAE,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC,eAAe;IACvC,cAAc,EAAE,KAAK;CACtB,CAAC;AAEF,MAAM,YAAY,GAAG;IACnB,aAAa,EAAE,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC,eAAe;IACvC,cAAc,EAAE,KAAK;CACtB,CAAC;AAEF,MAAM,YAAY,GAAG;IACnB,aAAa,EAAE,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC,eAAe;IACvC,cAAc,EAAE,KAAK;CACtB,CAAC;AASF,MAAM,gBAAgB,GAAqC;IACzD,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,YAAY;CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,WAAmB,KAAK,EAAoB,EAAE;IAChF,OAAO,gBAAgB,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC;AACpD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,WAAmB,KAAK,EAAE,KAAuB,EAAW,EAAE;IACvF,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC/C,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;AAC7F,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,WAAmB,KAAK,EACxB,OAAyB,EACzB,OAAyB,EACzB,SAAS,GAAG,GAAG,EACN,EAAE,CACX,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC;KAC1B,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;KACpC,GAAG,EAAE;KACL,iBAAiB,CAAC,SAAS,CAAC,CAAC","sourcesContent":["import { Decimal } from 'decimal.js';\n\nconst CFA_SETTINGS = {\n decimalPlaces: 0,\n roundingMethod: Decimal.ROUND_HALF_EVEN,\n currencySymbol: 'CFA',\n};\n\nconst EUR_SETTINGS = {\n decimalPlaces: 2,\n roundingMethod: Decimal.ROUND_HALF_EVEN,\n currencySymbol: 'EUR',\n};\n\nconst USD_SETTINGS = {\n decimalPlaces: 2,\n roundingMethod: Decimal.ROUND_HALF_EVEN,\n currencySymbol: 'USD',\n};\n\ntype CurrencySettings = {\n decimalPlaces: number;\n roundingMethod: typeof Decimal.ROUND_HALF_EVEN;\n thousandSeparator?: string;\n currencySymbol?: string;\n};\n\nconst currencySettings: Record<string, CurrencySettings> = {\n XOF: CFA_SETTINGS,\n CFA: CFA_SETTINGS,\n EUR: EUR_SETTINGS,\n USD: USD_SETTINGS,\n};\n\nexport const getCurrencySettings = (currency: string = 'EUR'): CurrencySettings => {\n return currencySettings[currency] || EUR_SETTINGS;\n};\n\nexport const roundMoney = (currency: string = 'EUR', value: Decimal | string): Decimal => {\n const settings = getCurrencySettings(currency);\n return new Decimal(value).toDecimalPlaces(settings.decimalPlaces, settings.roundingMethod);\n};\n\n// We tolerate a 10 cent rounding difference\nexport const isAmountWithinToleranceSame = (\n currency: string = 'EUR',\n amount1: Decimal | string,\n amount2: Decimal | string,\n tolerance = 0.1,\n): boolean =>\n roundMoney(currency, amount1)\n .minus(roundMoney(currency, amount2))\n .abs()\n .lessThanOrEqualTo(tolerance);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"/","sources":["storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;IACjC,OAAO,CAAC,EAAE;QACR,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;KACxB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,EAAE,SAAS,GAAG,YAAY,GAAG,OAAO,CAAC;IAC3C,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,oBAAY,eAAe;IACzB,KAAK,UAAU;IACf,EAAE,OAAO;CACV;AAED,KAAK,oBAAoB,GAAG;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,oBAAoB,GAAG;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,oBAAoB,GAAG;IAEnD,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,QAAQ,SAAS,eAAe,IAC3D,QAAQ,SAAS,eAAe,CAAC,KAAK,GAClC,kBAAkB,GAClB,QAAQ,SAAS,eAAe,CAAC,EAAE,GACnC,eAAe,GACf,EAAE,CAAC;AAET,MAAM,MAAM,cAAc,GAAG;IAC3B,gBAAgB,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACxC,gBAAgB,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACrF,aAAa,CACX,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,gBAAgB,CAAC,eAAe,CAAC,GACzC,OAAO,CAAC,UAAU,CAAC,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;KACrC,GAAG,IAAI,eAAe,GAAG,cAAc;CACzC,CAAC;AAEF,oBAAY,qBAAqB;IAC/B,GAAG,QAAQ;IACX,IAAI,SAAS;CACd;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,CAAC,EAAE,qBAAqB,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,qBAAqB,CAAC;CACnC,CAAC"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"/","sources":["storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;IACjC,OAAO,CAAC,EAAE;QACR,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;KACxB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,EAAE,SAAS,GAAG,YAAY,GAAG,OAAO,CAAC;IAC3C,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,oBAAY,eAAe;IACzB,KAAK,UAAU;IACf,EAAE,OAAO;CACV;AAED,KAAK,oBAAoB,GAAG;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,oBAAoB,GAAG;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,oBAAoB,GAAG;IAEnD,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,QAAQ,SAAS,eAAe,IAC3D,QAAQ,SAAS,eAAe,CAAC,KAAK,GAClC,kBAAkB,GAClB,QAAQ,SAAS,eAAe,CAAC,EAAE,GACjC,eAAe,GACf,EAAE,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG;IAC3B,gBAAgB,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACxC,gBAAgB,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACrF,aAAa,CACX,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,gBAAgB,CAAC,eAAe,CAAC,GACzC,OAAO,CAAC,UAAU,CAAC,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;KACrC,GAAG,IAAI,eAAe,GAAG,cAAc;CACzC,CAAC;AAEF,oBAAY,qBAAqB;IAC/B,GAAG,QAAQ;IACX,IAAI,SAAS;CACd;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,CAAC,EAAE,qBAAqB,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,qBAAqB,CAAC;CACnC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"/","sources":["storage.ts"],"names":[],"mappings":"AAyBA,MAAM,CAAN,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,kCAAe,CAAA;IACf,4BAAS,CAAA;AACX,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B;AAuCD,MAAM,CAAN,IAAY,qBAGX;AAHD,WAAY,qBAAqB;IAC/B,oCAAW,CAAA;IACX,sCAAa,CAAA;AACf,CAAC,EAHW,qBAAqB,KAArB,qBAAqB,QAGhC","sourcesContent":["import type Joi from 'joi';\nimport { Requester } from './types.js';\n\nexport type UploadInfo = {\n id: string;\n uploadUrl: string;\n downloadPath: string;\n method: 'POST' | 'PATCH' | 'PUT';\n headers?: {\n [name: string]: string;\n };\n};\n\nexport type VideoDownloadInfo = {\n url: string;\n quality: string;\n size: number;\n};\n\nexport type VideoInfo = {\n status: 'SUCCESS' | 'PROCESSING' | 'ERROR';\n downloads: VideoDownloadInfo[];\n id: string;\n};\n\nexport enum UploadProviders {\n Vimeo = 'vimeo',\n S3 = 's3',\n}\n\ntype BaseUploadUrlRequest = {\n contentType: string;\n};\n\nexport type VimeoUploadRequest = BaseUploadUrlRequest & {\n size: number;\n name: string;\n listed?: boolean; // will the video be listed in our public Vimeo library'\n};\n\nexport type S3UploadRequest = BaseUploadUrlRequest & {\n // is the file supposed to be shared by all tenants that need it, or will each tenant have its copy\n shared: boolean;\n fileName: string;\n businessEntityId: string;\n};\n\nexport type UploadUrlRequest<Provider extends UploadProviders> =\n Provider extends UploadProviders.Vimeo\n ? VimeoUploadRequest\n : Provider extends UploadProviders.S3\n ? S3UploadRequest\n : {};\n\nexport type UploadProvider = {\n validationSchema: Joi.ObjectSchema<any>;\n getVideoListInfo: (requester: Requester, videoIds: string[]) => Promise<VideoInfo[]>;\n getUploadInfo(\n requester: Requester,\n request: UploadUrlRequest<UploadProviders>\n ): Promise<UploadInfo>;\n};\n\nexport type UploadProvidersDefinition = {\n [key in UploadProviders]: UploadProvider;\n};\n\nexport enum MediaExportResolution {\n Low = 'low',\n High = 'high',\n}\n\nexport type MediaExportRequest = {\n urls: string[];\n resolution?: MediaExportResolution;\n};\n\nexport type MediaExportEvent = {\n s3Keys: string[];\n outputId: string;\n tenantId: string;\n entityId: string;\n resolution: MediaExportResolution;\n};\n"]}
1
+ {"version":3,"file":"storage.js","sourceRoot":"/","sources":["storage.ts"],"names":[],"mappings":"AAyBA,MAAM,CAAN,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,kCAAe,CAAA;IACf,4BAAS,CAAA;AACX,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B;AAuCD,MAAM,CAAN,IAAY,qBAGX;AAHD,WAAY,qBAAqB;IAC/B,oCAAW,CAAA;IACX,sCAAa,CAAA;AACf,CAAC,EAHW,qBAAqB,KAArB,qBAAqB,QAGhC","sourcesContent":["import type Joi from 'joi';\nimport { Requester } from './types.js';\n\nexport type UploadInfo = {\n id: string;\n uploadUrl: string;\n downloadPath: string;\n method: 'POST' | 'PATCH' | 'PUT';\n headers?: {\n [name: string]: string;\n };\n};\n\nexport type VideoDownloadInfo = {\n url: string;\n quality: string;\n size: number;\n};\n\nexport type VideoInfo = {\n status: 'SUCCESS' | 'PROCESSING' | 'ERROR';\n downloads: VideoDownloadInfo[];\n id: string;\n};\n\nexport enum UploadProviders {\n Vimeo = 'vimeo',\n S3 = 's3',\n}\n\ntype BaseUploadUrlRequest = {\n contentType: string;\n};\n\nexport type VimeoUploadRequest = BaseUploadUrlRequest & {\n size: number;\n name: string;\n listed?: boolean; // will the video be listed in our public Vimeo library'\n};\n\nexport type S3UploadRequest = BaseUploadUrlRequest & {\n // is the file supposed to be shared by all tenants that need it, or will each tenant have its copy\n shared: boolean;\n fileName: string;\n businessEntityId: string;\n};\n\nexport type UploadUrlRequest<Provider extends UploadProviders> =\n Provider extends UploadProviders.Vimeo\n ? VimeoUploadRequest\n : Provider extends UploadProviders.S3\n ? S3UploadRequest\n : {};\n\nexport type UploadProvider = {\n validationSchema: Joi.ObjectSchema<any>;\n getVideoListInfo: (requester: Requester, videoIds: string[]) => Promise<VideoInfo[]>;\n getUploadInfo(\n requester: Requester,\n request: UploadUrlRequest<UploadProviders>,\n ): Promise<UploadInfo>;\n};\n\nexport type UploadProvidersDefinition = {\n [key in UploadProviders]: UploadProvider;\n};\n\nexport enum MediaExportResolution {\n Low = 'low',\n High = 'high',\n}\n\nexport type MediaExportRequest = {\n urls: string[];\n resolution?: MediaExportResolution;\n};\n\nexport type MediaExportEvent = {\n s3Keys: string[];\n outputId: string;\n tenantId: string;\n entityId: string;\n resolution: MediaExportResolution;\n};\n"]}
package/package.json CHANGED
@@ -1,19 +1,17 @@
1
1
  {
2
2
  "name": "@bisondesk/commons-sdk",
3
- "version": "1.0.588",
3
+ "version": "1.0.590",
4
4
  "type": "module",
5
- "scripts": {
6
- "build": "npx tsc --build tsconfig.json",
7
- "clean": "rm -rf lib *.tsbuildinfo",
8
- "unittest": "echo \"No test specified\"",
9
- "integrationtest": "echo \"No test specified\""
10
- },
11
5
  "dependencies": {
12
6
  "@date-fns/utc": "1.1.1",
13
7
  "date-fns": "3.2.0",
8
+ "decimal.js": "10.4.3",
14
9
  "joi": "17.13.3",
15
10
  "nanoid": "5.1.6"
16
11
  },
12
+ "peerDependencies": {
13
+ "node-fetch": "3.3.2"
14
+ },
17
15
  "devDependencies": {
18
16
  "@types/date-fns": "2.6.0",
19
17
  "typescript": "5.9.3"
@@ -27,5 +25,11 @@
27
25
  },
28
26
  "exports": {
29
27
  "./*": "./lib/*.js"
28
+ },
29
+ "scripts": {
30
+ "build": "npx tsc --build tsconfig.json",
31
+ "clean": "rm -rf lib *.tsbuildinfo",
32
+ "unittest": "echo \"No test specified\"",
33
+ "integrationtest": "echo \"No test specified\""
30
34
  }
31
- }
35
+ }
@@ -1,4 +1,5 @@
1
1
  import fetch, { Response } from 'node-fetch';
2
+ import { TENANT_ID_ADMIN_HEADER } from '../constants.js';
2
3
  import { XError } from '../errors.js';
3
4
  import { cleanHeaders, fetchJson, getAdminAuth } from '../fetch.js';
4
5
  import {
@@ -11,31 +12,38 @@ import {
11
12
  PicklistValueUpdateRequest,
12
13
  } from '../picklists.js';
13
14
  import { Option } from '../types.js';
14
- import { TENANT_ID_ADMIN_HEADER } from '../constants.js';
15
15
 
16
16
  export const getMultiplePicklistValues = async (
17
- request: AdHocPicklistRequest
17
+ request: AdHocPicklistRequest,
18
18
  ): Promise<AdHocPicklistValueDisplay> => {
19
19
  const auth = await getAdminAuth();
20
20
  return fetchJson<AdHocPicklistValueDisplay>(
21
21
  `${process.env.CORE_API_ORIGIN}/api/picklists/bulk/read`,
22
- { method: 'POST', headers: { Authorization: auth, 'Content-Type': 'application/json' }, body: JSON.stringify(request) }
22
+ {
23
+ method: 'POST',
24
+ headers: { Authorization: auth, 'Content-Type': 'application/json' },
25
+ body: JSON.stringify(request),
26
+ },
23
27
  );
24
28
  };
25
29
 
26
30
  export const getMultiplePicklistFullValues = async (
27
- request: AdHocPicklistRequest
31
+ request: AdHocPicklistRequest,
28
32
  ): Promise<AdHocPicklistValues> => {
29
33
  const auth = await getAdminAuth();
30
34
  return fetchJson<AdHocPicklistValues>(
31
35
  `${process.env.CORE_API_ORIGIN}/api/picklists/bulk/read/full`,
32
- { method: 'POST', headers: { Authorization: auth, 'Content-Type': 'application/json' }, body: JSON.stringify(request) }
36
+ {
37
+ method: 'POST',
38
+ headers: { Authorization: auth, 'Content-Type': 'application/json' },
39
+ body: JSON.stringify(request),
40
+ },
33
41
  );
34
42
  };
35
43
 
36
44
  export const getPicklistOptions = async (
37
45
  req: PicklistOptionsRequest,
38
- tenantId?: string
46
+ tenantId?: string,
39
47
  ): Promise<Option[]> => {
40
48
  const auth = await getAdminAuth();
41
49
 
@@ -58,7 +66,7 @@ export const getPicklistOptions = async (
58
66
  };
59
67
 
60
68
  export const upsertPicklistValue = async (
61
- request: PicklistValueUpdateRequest
69
+ request: PicklistValueUpdateRequest,
62
70
  ): Promise<PicklistValue> => {
63
71
  const auth = await getAdminAuth();
64
72
  const response: Response = await fetch(`${process.env.CORE_API_ORIGIN}/api/picklists/value`, {
@@ -81,7 +89,7 @@ export const upsertPicklistValue = async (
81
89
  export const getAdhocPicklistDisplayValue = async (
82
90
  requests: PicklistValueRequest[],
83
91
  preferredLang: string,
84
- tenantLang: string
92
+ tenantLang: string,
85
93
  ): Promise<AdHocPicklistValueDisplay> => {
86
94
  const auth = await getAdminAuth();
87
95
 
package/src/constants.ts CHANGED
@@ -60,6 +60,7 @@ export enum TopLevelActions {
60
60
  TasksAll = 'tasks:*',
61
61
  TrackAndTraceDevices = 'tt:devices:*',
62
62
  ManageStocklists = 'stocklists:manage',
63
+ TransportsBrowse = 'transports:browse',
63
64
  }
64
65
 
65
66
  //
@@ -108,6 +109,7 @@ export enum BusinessEntityIds {
108
109
  Interests = 'interests',
109
110
  Prospects = 'prospects',
110
111
  Stocklists = 'stocklists',
112
+ Transports = 'transports',
111
113
  }
112
114
 
113
115
  //
package/src/date-utils.ts CHANGED
@@ -15,7 +15,7 @@ export const isoString = (value: number | string | Date = new Date()) =>
15
15
  export const formatInTimeZone = (
16
16
  rawDate: number | string | Date,
17
17
  timezone: string,
18
- formatStr: string
18
+ formatStr: string,
19
19
  ) => {
20
20
  const baseDate = new Date(rawDate);
21
21
 
package/src/errors.ts CHANGED
@@ -73,7 +73,7 @@ export class InvalidArgumentsError extends Error {
73
73
  message,
74
74
  path,
75
75
  type: type === 'custom' ? message : type,
76
- })
76
+ }),
77
77
  ),
78
78
  };
79
79
  }
package/src/fetch.ts CHANGED
@@ -1,24 +1,24 @@
1
- import type { HeadersInit, RequestInfo, RequestInit } from 'node-fetch';
2
1
  import type { URL } from 'node:url';
2
+ import type { HeadersInit, RequestInfo, RequestInit } from 'node-fetch';
3
3
  import { TENANT_ID_ADMIN_HEADER } from './constants.js';
4
4
  import { InvalidArgumentsError, XError } from './errors.js';
5
5
 
6
6
  export function fetchJson<T>(
7
7
  url: URL | RequestInfo,
8
8
  init?: RequestInit,
9
- opts?: { denyEmptyResponse?: true }
9
+ opts?: { denyEmptyResponse?: true },
10
10
  ): Promise<T>;
11
11
 
12
12
  export function fetchJson<T>(
13
13
  url: URL | RequestInfo,
14
14
  init?: RequestInit,
15
- opts?: { denyEmptyResponse: false }
15
+ opts?: { denyEmptyResponse: false },
16
16
  ): Promise<T | undefined>;
17
17
 
18
18
  export async function fetchJson<T>(
19
19
  url: URL | RequestInfo,
20
20
  init?: RequestInit,
21
- opts?: { denyEmptyResponse?: boolean }
21
+ opts?: { denyEmptyResponse?: boolean },
22
22
  ): Promise<T | undefined> {
23
23
  // sometimes the origin ends with a slash and when we append the path it gets a double slash
24
24
  url = url.toString().replace(/([^:]\/)\/+/g, '$1');
package/src/formatting.ts CHANGED
@@ -7,14 +7,14 @@ export const joinWithSeparator = (
7
7
  {
8
8
  separator = DEFAULT_SEPARATOR,
9
9
  filter = Boolean,
10
- }: { separator?: string; filter?: (value: any) => boolean } = {}
10
+ }: { separator?: string; filter?: (value: any) => boolean } = {},
11
11
  ) => text.filter(filter).join(separator);
12
12
 
13
13
  export const formatCurrency = (
14
14
  amount: string,
15
15
  locale = 'de-DE',
16
16
  showCurrencySign = false,
17
- options: Intl.NumberFormatOptions = { currency: 'EUR' }
17
+ options: Intl.NumberFormatOptions = { currency: 'EUR' },
18
18
  ): string => {
19
19
  const settings = getCurrencySettings(options.currency);
20
20
  return new Intl.NumberFormat(locale, {
package/src/leasing.ts CHANGED
@@ -15,7 +15,7 @@ const clamp = (min: number, value: number, max: number) => {
15
15
 
16
16
  export function getLeasingAmount(
17
17
  { price, vehicleYear }: { price: number; vehicleYear: number },
18
- conditions: WebsiteLeasingConditions
18
+ conditions: WebsiteLeasingConditions,
19
19
  ): {
20
20
  installment: number;
21
21
  duration: number;
@@ -15,14 +15,14 @@ const getCountryCustomsCode = (country: string): string => {
15
15
 
16
16
  export const getAddressText = (
17
17
  address: LocationValue,
18
- joinBy: string = '<br>'
18
+ joinBy: string = '<br>',
19
19
  ): string | undefined => {
20
20
  const regionLines = [address.postalCode, address.city, address.country]
21
21
  .filter((n) => !!n)
22
22
  .join(', ');
23
23
 
24
24
  const filteredParts = [address.addressLine1, address.addressLine2, regionLines].filter(
25
- (n) => !!n
25
+ (n) => !!n,
26
26
  );
27
27
 
28
28
  if (filteredParts.length === 0) {
@@ -33,7 +33,7 @@ export const getAddressText = (
33
33
 
34
34
  export const getCustomsAdressText = (
35
35
  address: LocationValue,
36
- joinBy: string = '<br>'
36
+ joinBy: string = '<br>',
37
37
  ): string | undefined => {
38
38
  const customsAddress = {
39
39
  ...address,
@@ -44,7 +44,7 @@ export const getCustomsAdressText = (
44
44
  };
45
45
 
46
46
  export const getFormatedAddressFromLocationValue = (
47
- location: LocationValue
47
+ location: LocationValue,
48
48
  ): string | undefined => {
49
49
  const PARTS_JOINER = ', ';
50
50
  const address = getAddressText(location, PARTS_JOINER);
package/src/money.ts CHANGED
@@ -46,7 +46,7 @@ export const isAmountWithinToleranceSame = (
46
46
  currency: string = 'EUR',
47
47
  amount1: Decimal | string,
48
48
  amount2: Decimal | string,
49
- tolerance = 0.1
49
+ tolerance = 0.1,
50
50
  ): boolean =>
51
51
  roundMoney(currency, amount1)
52
52
  .minus(roundMoney(currency, amount2))