@unchainedshop/utils 3.1.13 → 4.0.0-rc.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/ch/priceToString.d.ts +2 -2
- package/lib/ch/priceToString.d.ts.map +1 -1
- package/lib/ch/priceToString.js +2 -2
- package/lib/ch/priceToString.js.map +1 -1
- package/lib/director/BaseDirector.d.ts +1 -1
- package/lib/director/BaseDirector.d.ts.map +1 -1
- package/lib/locale-helpers.d.ts +14 -5
- package/lib/locale-helpers.d.ts.map +1 -1
- package/lib/locale-helpers.js +38 -24
- package/lib/locale-helpers.js.map +1 -1
- package/lib/utils-index.d.ts +4 -4
- package/lib/utils-index.d.ts.map +1 -1
- package/lib/utils-index.js.map +1 -1
- package/package.json +3 -3
- package/src/ch/priceToString.ts +2 -2
- package/src/director/BaseDirector.ts +1 -1
- package/src/locale-helpers.ts +61 -33
- package/src/utils-index.test.ts +1 -2
- package/src/utils-index.ts +4 -5
- package/lib/director/BaseDiscountAdapter.d.ts +0 -3
- package/lib/director/BaseDiscountAdapter.d.ts.map +0 -1
- package/lib/director/BaseDiscountAdapter.js +0 -48
- package/lib/director/BaseDiscountAdapter.js.map +0 -1
- package/lib/director/BaseDiscountDirector.d.ts +0 -3
- package/lib/director/BaseDiscountDirector.d.ts.map +0 -1
- package/lib/director/BaseDiscountDirector.js +0 -50
- package/lib/director/BaseDiscountDirector.js.map +0 -1
- package/lib/director/BasePricingAdapter.d.ts +0 -3
- package/lib/director/BasePricingAdapter.d.ts.map +0 -1
- package/lib/director/BasePricingAdapter.js +0 -25
- package/lib/director/BasePricingAdapter.js.map +0 -1
- package/lib/director/BasePricingDirector.d.ts +0 -3
- package/lib/director/BasePricingDirector.d.ts.map +0 -1
- package/lib/director/BasePricingDirector.js +0 -61
- package/lib/director/BasePricingDirector.js.map +0 -1
- package/lib/director/BasePricingSheet.d.ts +0 -3
- package/lib/director/BasePricingSheet.d.ts.map +0 -1
- package/lib/director/BasePricingSheet.js +0 -54
- package/lib/director/BasePricingSheet.js.map +0 -1
- package/lib/random-value-hex.d.ts +0 -2
- package/lib/random-value-hex.d.ts.map +0 -1
- package/lib/random-value-hex.js +0 -8
- package/lib/random-value-hex.js.map +0 -1
- package/lib/schemas/AddressSchema.d.ts +0 -3
- package/lib/schemas/AddressSchema.d.ts.map +0 -1
- package/lib/schemas/AddressSchema.js +0 -13
- package/lib/schemas/AddressSchema.js.map +0 -1
- package/lib/schemas/ContactSchema.d.ts +0 -3
- package/lib/schemas/ContactSchema.d.ts.map +0 -1
- package/lib/schemas/ContactSchema.js +0 -6
- package/lib/schemas/ContactSchema.js.map +0 -1
- package/lib/schemas/UsersSchema.d.ts +0 -5
- package/lib/schemas/UsersSchema.d.ts.map +0 -1
- package/lib/schemas/UsersSchema.js +0 -52
- package/lib/schemas/UsersSchema.js.map +0 -1
- package/lib/schemas/commonSchemaFields.d.ts +0 -35
- package/lib/schemas/commonSchemaFields.d.ts.map +0 -1
- package/lib/schemas/commonSchemaFields.js +0 -28
- package/lib/schemas/commonSchemaFields.js.map +0 -1
- package/lib/schemas/index.d.ts +0 -43
- package/lib/schemas/index.d.ts.map +0 -1
- package/lib/schemas/index.js +0 -14
- package/lib/schemas/index.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export declare const priceToString: ({ amount,
|
|
1
|
+
export declare const priceToString: ({ amount, currencyCode }: {
|
|
2
2
|
amount: number;
|
|
3
|
-
|
|
3
|
+
currencyCode: string;
|
|
4
4
|
}) => string;
|
|
5
5
|
export default priceToString;
|
|
6
6
|
//# sourceMappingURL=priceToString.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"priceToString.d.ts","sourceRoot":"","sources":["../../src/ch/priceToString.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,GAAI,
|
|
1
|
+
{"version":3,"file":"priceToString.d.ts","sourceRoot":"","sources":["../../src/ch/priceToString.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,GAAI,0BAA0B;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,WAG/F,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
package/lib/ch/priceToString.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export const priceToString = ({ amount,
|
|
1
|
+
export const priceToString = ({ amount, currencyCode }) => {
|
|
2
2
|
const fixedPrice = amount / 100;
|
|
3
|
-
return `${
|
|
3
|
+
return `${currencyCode} ${fixedPrice}`;
|
|
4
4
|
};
|
|
5
5
|
export default priceToString;
|
|
6
6
|
//# sourceMappingURL=priceToString.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"priceToString.js","sourceRoot":"","sources":["../../src/ch/priceToString.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"priceToString.js","sourceRoot":"","sources":["../../src/ch/priceToString.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAAE,MAAM,EAAE,YAAY,EAA4C,EAAE,EAAE;IAClG,MAAM,UAAU,GAAG,MAAM,GAAG,GAAG,CAAC;IAChC,OAAO,GAAG,YAAY,IAAI,UAAU,EAAE,CAAC;AACzC,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -2,7 +2,7 @@ import { IBaseAdapter } from './BaseAdapter.js';
|
|
|
2
2
|
export interface IBaseDirector<Adapter extends IBaseAdapter> {
|
|
3
3
|
getAdapters: (options?: {
|
|
4
4
|
adapterFilter?: (adapter: Adapter) => boolean;
|
|
5
|
-
}) =>
|
|
5
|
+
}) => Adapter[];
|
|
6
6
|
getAdapter: (key: string) => Adapter;
|
|
7
7
|
registerAdapter: (A: Adapter) => void;
|
|
8
8
|
unregisterAdapter: (key: string) => boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseDirector.d.ts","sourceRoot":"","sources":["../../src/director/BaseDirector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,WAAW,aAAa,CAAC,OAAO,SAAS,YAAY;IACzD,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAA;KAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"BaseDirector.d.ts","sourceRoot":"","sources":["../../src/director/BaseDirector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,WAAW,aAAa,CAAC,OAAO,SAAS,YAAY;IACzD,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAA;KAAE,KAAK,OAAO,EAAE,CAAC;IACxF,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACrC,eAAe,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;CAC7C;AAED,eAAO,MAAM,YAAY,GAAI,WAAW,SAAS,YAAY,EAC3D,cAAc,MAAM,EACpB,UAAU;IACR,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,KACA,aAAa,CAAC,WAAW,CAwB3B,CAAC"}
|
package/lib/locale-helpers.d.ts
CHANGED
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
export declare const systemLocale: Intl.Locale;
|
|
2
|
-
export declare const
|
|
3
|
-
export declare const resolveBestCountry: (localeCountry: string, shopCountry: string, countries: Array<{
|
|
2
|
+
export declare const determineFallbackLocale: (countries: {
|
|
4
3
|
isoCode: string;
|
|
5
|
-
}
|
|
6
|
-
export declare const resolveBestCurrency: (localeCurrency: string, currencies: Array<{
|
|
4
|
+
}[], languages: {
|
|
7
5
|
isoCode: string;
|
|
8
|
-
}
|
|
6
|
+
}[]) => Intl.Locale | null;
|
|
7
|
+
export declare const resolveBestSupported: (acceptLanguage: string, acceptCountry: string, { countries, languages, }: {
|
|
8
|
+
countries: {
|
|
9
|
+
isoCode: string;
|
|
10
|
+
}[];
|
|
11
|
+
languages: {
|
|
12
|
+
isoCode: string;
|
|
13
|
+
}[];
|
|
14
|
+
}) => Intl.Locale;
|
|
15
|
+
export declare const resolveBestCurrency: (currencyCode: string | null, currencies: {
|
|
16
|
+
isoCode: string;
|
|
17
|
+
}[]) => string;
|
|
9
18
|
//# sourceMappingURL=locale-helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locale-helpers.d.ts","sourceRoot":"","sources":["../src/locale-helpers.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,YAAY,aAA4D,CAAC;AAEtF,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"locale-helpers.d.ts","sourceRoot":"","sources":["../src/locale-helpers.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,YAAY,aAA4D,CAAC;AAEtF,eAAO,MAAM,uBAAuB,GAClC,WAAW;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,EAChC,WAAW;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,KAC/B,IAAI,CAAC,MAAM,GAAG,IAYhB,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,gBAAgB,MAAM,EACtB,eAAe,MAAM,EACrB,2BAGG;IACD,SAAS,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACjC,SAAS,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAClC,KACA,IAAI,CAAC,MA8BP,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,cAAc,MAAM,GAAG,IAAI,EAAE,YAAY;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,WAajG,CAAC"}
|
package/lib/locale-helpers.js
CHANGED
|
@@ -1,37 +1,51 @@
|
|
|
1
1
|
import { resolveAcceptLanguage } from 'resolve-accept-language';
|
|
2
2
|
const { UNCHAINED_LANG = 'de', UNCHAINED_COUNTRY = 'CH', UNCHAINED_CURRENCY = 'CHF' } = process.env;
|
|
3
3
|
export const systemLocale = new Intl.Locale(`${UNCHAINED_LANG}-${UNCHAINED_COUNTRY}`);
|
|
4
|
-
export const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
export const determineFallbackLocale = (countries, languages) => {
|
|
5
|
+
try {
|
|
6
|
+
const country = countries.find((country) => country.isoCode === systemLocale.region)?.isoCode ||
|
|
7
|
+
countries[0]?.isoCode;
|
|
8
|
+
const language = languages.find((language) => language.isoCode === systemLocale.language)?.isoCode ||
|
|
9
|
+
languages[0]?.isoCode;
|
|
10
|
+
return new Intl.Locale(`${language}-${country}`);
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
9
15
|
};
|
|
10
|
-
export const
|
|
11
|
-
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
16
|
+
export const resolveBestSupported = (acceptLanguage, acceptCountry, { countries = [], languages = [], }) => {
|
|
17
|
+
const supportedLocales = languages.reduce((accumulator, language) => {
|
|
18
|
+
const added = countries
|
|
19
|
+
.filter((country) => {
|
|
20
|
+
if (acceptCountry) {
|
|
21
|
+
return country.isoCode === acceptCountry;
|
|
15
22
|
}
|
|
16
|
-
return
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
return
|
|
20
|
-
}
|
|
23
|
+
return true;
|
|
24
|
+
})
|
|
25
|
+
.map((country) => {
|
|
26
|
+
return `${language.isoCode}-${country.isoCode}`;
|
|
27
|
+
});
|
|
28
|
+
return accumulator.concat(added);
|
|
29
|
+
}, []);
|
|
30
|
+
const fallbackLocale = determineFallbackLocale(countries, languages);
|
|
31
|
+
try {
|
|
32
|
+
const { match } = resolveAcceptLanguage(acceptLanguage || '', supportedLocales, fallbackLocale?.baseName, {
|
|
33
|
+
returnMatchType: true,
|
|
34
|
+
});
|
|
35
|
+
return new Intl.Locale(match);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return fallbackLocale;
|
|
21
39
|
}
|
|
22
|
-
return localeCountry || systemLocale.region;
|
|
23
40
|
};
|
|
24
|
-
export const resolveBestCurrency = (
|
|
25
|
-
if (
|
|
26
|
-
const resolvedCurrency = currencies.find((currency) => currency.isoCode ===
|
|
41
|
+
export const resolveBestCurrency = (currencyCode, currencies) => {
|
|
42
|
+
if (currencyCode) {
|
|
43
|
+
const resolvedCurrency = currencies.find((currency) => currency.isoCode.toUpperCase() === currencyCode.toUpperCase());
|
|
27
44
|
if (resolvedCurrency) {
|
|
28
45
|
return resolvedCurrency.isoCode;
|
|
29
46
|
}
|
|
30
47
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
return fallbackCurrency.isoCode;
|
|
34
|
-
}
|
|
35
|
-
return currencies?.[0]?.isoCode || UNCHAINED_CURRENCY;
|
|
48
|
+
return (currencies.find((currency) => currency.isoCode === UNCHAINED_CURRENCY)?.isoCode ||
|
|
49
|
+
currencies[0]?.isoCode);
|
|
36
50
|
};
|
|
37
51
|
//# sourceMappingURL=locale-helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locale-helpers.js","sourceRoot":"","sources":["../src/locale-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,MAAM,EAAE,cAAc,GAAG,IAAI,EAAE,iBAAiB,GAAG,IAAI,EAAE,kBAAkB,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAEpG,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,cAAc,IAAI,iBAAiB,EAAE,CAAC,CAAC;AAEtF,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"locale-helpers.js","sourceRoot":"","sources":["../src/locale-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,MAAM,EAAE,cAAc,GAAG,IAAI,EAAE,iBAAiB,GAAG,IAAI,EAAE,kBAAkB,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAEpG,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,cAAc,IAAI,iBAAiB,EAAE,CAAC,CAAC;AAEtF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,SAAgC,EAChC,SAAgC,EACZ,EAAE;IACtB,IAAI,CAAC;QACH,MAAM,OAAO,GACX,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,KAAK,YAAY,CAAC,MAAM,CAAC,EAAE,OAAO;YAC7E,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;QACxB,MAAM,QAAQ,GACZ,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,KAAK,YAAY,CAAC,QAAQ,CAAC,EAAE,OAAO;YACjF,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;QACxB,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,QAAQ,IAAI,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,cAAsB,EACtB,aAAqB,EACrB,EACE,SAAS,GAAG,EAAE,EACd,SAAS,GAAG,EAAE,GAIf,EACY,EAAE;IACf,MAAM,gBAAgB,GAAa,SAAS,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,EAAE;QAC5E,MAAM,KAAK,GAAG,SAAS;aACpB,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;YAClB,IAAI,aAAa,EAAE,CAAC;gBAClB,OAAO,OAAO,CAAC,OAAO,KAAK,aAAa,CAAC;YAC3C,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YACf,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAClD,CAAC,CAAC,CAAC;QACL,OAAO,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,cAAc,GAAG,uBAAuB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAErE,IAAI,CAAC;QACH,MAAM,EAAE,KAAK,EAAE,GAAG,qBAAqB,CACrC,cAAc,IAAI,EAAE,EACpB,gBAAgB,EAChB,cAAc,EAAE,QAAQ,EACxB;YACE,eAAe,EAAE,IAAI;SACtB,CACF,CAAC;QACF,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,cAAc,CAAC;IACxB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,YAA2B,EAAE,UAAiC,EAAE,EAAE;IACpG,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,gBAAgB,GAAG,UAAU,CAAC,IAAI,CACtC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,YAAY,CAAC,WAAW,EAAE,CAC5E,CAAC;QACF,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAO,gBAAgB,CAAC,OAAO,CAAC;QAClC,CAAC;IACH,CAAC;IACD,OAAO,CACL,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,KAAK,kBAAkB,CAAC,EAAE,OAAO;QAC/E,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,CACvB,CAAC;AACJ,CAAC,CAAC"}
|
package/lib/utils-index.d.ts
CHANGED
|
@@ -12,13 +12,13 @@ export declare enum SortDirection {
|
|
|
12
12
|
ASC = "ASC",
|
|
13
13
|
DESC = "DESC"
|
|
14
14
|
}
|
|
15
|
-
export
|
|
15
|
+
export interface SortOption {
|
|
16
16
|
key: string;
|
|
17
17
|
value: SortDirection;
|
|
18
|
-
}
|
|
18
|
+
}
|
|
19
19
|
export interface Price {
|
|
20
20
|
amount: number;
|
|
21
|
-
|
|
21
|
+
currencyCode: string;
|
|
22
22
|
}
|
|
23
23
|
export interface PricingCalculation {
|
|
24
24
|
category: string;
|
|
@@ -27,7 +27,7 @@ export interface PricingCalculation {
|
|
|
27
27
|
meta?: any;
|
|
28
28
|
}
|
|
29
29
|
export type NodeOrTree<T> = string | Tree<T>;
|
|
30
|
-
export type Tree<T> =
|
|
30
|
+
export type Tree<T> = NodeOrTree<T>[];
|
|
31
31
|
export interface DateFilterInput {
|
|
32
32
|
start?: string;
|
|
33
33
|
end?: string;
|
package/lib/utils-index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils-index.d.ts","sourceRoot":"","sources":["../src/utils-index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,eAAe,CAAC;AAEpC,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAC7F,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,WAAW,CAAC;AAE5C,oBAAY,aAAa;IACvB,GAAG,QAAQ;IACX,IAAI,SAAS;CACd;AAED,MAAM,
|
|
1
|
+
{"version":3,"file":"utils-index.d.ts","sourceRoot":"","sources":["../src/utils-index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,eAAe,CAAC;AAEpC,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAC7F,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,WAAW,CAAC;AAE5C,oBAAY,aAAa;IACvB,GAAG,QAAQ;IACX,IAAI,SAAS;CACd;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,aAAa,CAAC;CACtB;AAED,MAAM,WAAW,KAAK;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ;AAED,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAE7C,MAAM,MAAM,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;AAEtC,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC"}
|
package/lib/utils-index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils-index.js","sourceRoot":"","sources":["../src/utils-index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,eAAe,CAAC;AAEpC,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAC7F,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,WAAW,CAAC;AAE5C,MAAM,CAAN,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,4BAAW,CAAA;IACX,8BAAa,CAAA;AACf,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB;
|
|
1
|
+
{"version":3,"file":"utils-index.js","sourceRoot":"","sources":["../src/utils-index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,eAAe,CAAC;AAEpC,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAC7F,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,WAAW,CAAC;AAE5C,MAAM,CAAN,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,4BAAW,CAAA;IACX,8BAAa,CAAA;AACf,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB;AA4BD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unchainedshop/utils",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0-rc.10",
|
|
4
4
|
"main": "lib/utils-index.js",
|
|
5
5
|
"types": "lib/utils-index.d.ts",
|
|
6
6
|
"type": "module",
|
|
@@ -27,12 +27,12 @@
|
|
|
27
27
|
},
|
|
28
28
|
"homepage": "https://github.com/unchainedshop/unchained#readme",
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@unchainedshop/logger": "^
|
|
30
|
+
"@unchainedshop/logger": "^4.0.0-rc.4",
|
|
31
31
|
"hashids": "^2.3.0",
|
|
32
32
|
"resolve-accept-language": "^3.1.11"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@types/node": "^24.0.
|
|
35
|
+
"@types/node": "^24.0.13",
|
|
36
36
|
"typescript": "^5.8.3"
|
|
37
37
|
}
|
|
38
38
|
}
|
package/src/ch/priceToString.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export const priceToString = ({ amount,
|
|
1
|
+
export const priceToString = ({ amount, currencyCode }: { amount: number; currencyCode: string }) => {
|
|
2
2
|
const fixedPrice = amount / 100;
|
|
3
|
-
return `${
|
|
3
|
+
return `${currencyCode} ${fixedPrice}`;
|
|
4
4
|
};
|
|
5
5
|
|
|
6
6
|
export default priceToString;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { IBaseAdapter } from './BaseAdapter.js';
|
|
2
2
|
|
|
3
3
|
export interface IBaseDirector<Adapter extends IBaseAdapter> {
|
|
4
|
-
getAdapters: (options?: { adapterFilter?: (adapter: Adapter) => boolean }) =>
|
|
4
|
+
getAdapters: (options?: { adapterFilter?: (adapter: Adapter) => boolean }) => Adapter[];
|
|
5
5
|
getAdapter: (key: string) => Adapter;
|
|
6
6
|
registerAdapter: (A: Adapter) => void;
|
|
7
7
|
unregisterAdapter: (key: string) => boolean;
|
package/src/locale-helpers.ts
CHANGED
|
@@ -4,48 +4,76 @@ const { UNCHAINED_LANG = 'de', UNCHAINED_COUNTRY = 'CH', UNCHAINED_CURRENCY = 'C
|
|
|
4
4
|
|
|
5
5
|
export const systemLocale = new Intl.Locale(`${UNCHAINED_LANG}-${UNCHAINED_COUNTRY}`);
|
|
6
6
|
|
|
7
|
+
export const determineFallbackLocale = (
|
|
8
|
+
countries: { isoCode: string }[],
|
|
9
|
+
languages: { isoCode: string }[],
|
|
10
|
+
): Intl.Locale | null => {
|
|
11
|
+
try {
|
|
12
|
+
const country =
|
|
13
|
+
countries.find((country) => country.isoCode === systemLocale.region)?.isoCode ||
|
|
14
|
+
countries[0]?.isoCode;
|
|
15
|
+
const language =
|
|
16
|
+
languages.find((language) => language.isoCode === systemLocale.language)?.isoCode ||
|
|
17
|
+
languages[0]?.isoCode;
|
|
18
|
+
return new Intl.Locale(`${language}-${country}`);
|
|
19
|
+
} catch {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
|
|
7
24
|
export const resolveBestSupported = (
|
|
8
25
|
acceptLanguage: string,
|
|
9
|
-
|
|
10
|
-
|
|
26
|
+
acceptCountry: string,
|
|
27
|
+
{
|
|
28
|
+
countries = [],
|
|
29
|
+
languages = [],
|
|
30
|
+
}: {
|
|
31
|
+
countries: { isoCode: string }[];
|
|
32
|
+
languages: { isoCode: string }[];
|
|
33
|
+
},
|
|
11
34
|
): Intl.Locale => {
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
35
|
+
const supportedLocales: string[] = languages.reduce((accumulator, language) => {
|
|
36
|
+
const added = countries
|
|
37
|
+
.filter((country) => {
|
|
38
|
+
if (acceptCountry) {
|
|
39
|
+
return country.isoCode === acceptCountry;
|
|
40
|
+
}
|
|
41
|
+
return true;
|
|
42
|
+
})
|
|
43
|
+
.map((country) => {
|
|
44
|
+
return `${language.isoCode}-${country.isoCode}`;
|
|
45
|
+
});
|
|
46
|
+
return accumulator.concat(added);
|
|
47
|
+
}, []);
|
|
17
48
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
49
|
+
const fallbackLocale = determineFallbackLocale(countries, languages);
|
|
50
|
+
|
|
51
|
+
try {
|
|
52
|
+
const { match } = resolveAcceptLanguage(
|
|
53
|
+
acceptLanguage || '',
|
|
54
|
+
supportedLocales,
|
|
55
|
+
fallbackLocale?.baseName,
|
|
56
|
+
{
|
|
57
|
+
returnMatchType: true,
|
|
58
|
+
},
|
|
59
|
+
);
|
|
60
|
+
return new Intl.Locale(match);
|
|
61
|
+
} catch {
|
|
62
|
+
return fallbackLocale;
|
|
33
63
|
}
|
|
34
|
-
return localeCountry || systemLocale.region;
|
|
35
64
|
};
|
|
36
65
|
|
|
37
|
-
export const resolveBestCurrency = (
|
|
38
|
-
if (
|
|
39
|
-
const resolvedCurrency = currencies.find(
|
|
66
|
+
export const resolveBestCurrency = (currencyCode: string | null, currencies: { isoCode: string }[]) => {
|
|
67
|
+
if (currencyCode) {
|
|
68
|
+
const resolvedCurrency = currencies.find(
|
|
69
|
+
(currency) => currency.isoCode.toUpperCase() === currencyCode.toUpperCase(),
|
|
70
|
+
);
|
|
40
71
|
if (resolvedCurrency) {
|
|
41
72
|
return resolvedCurrency.isoCode;
|
|
42
73
|
}
|
|
43
74
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
return currencies?.[0]?.isoCode || UNCHAINED_CURRENCY;
|
|
75
|
+
return (
|
|
76
|
+
currencies.find((currency) => currency.isoCode === UNCHAINED_CURRENCY)?.isoCode ||
|
|
77
|
+
currencies[0]?.isoCode
|
|
78
|
+
);
|
|
51
79
|
};
|
package/src/utils-index.test.ts
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { describe, it } from 'node:test';
|
|
2
2
|
import assert from 'node:assert';
|
|
3
|
-
import {
|
|
3
|
+
import { resolveBestSupported, slugify, systemLocale } from './utils-index.js';
|
|
4
4
|
import generateHashId from './generate-random-hash.js';
|
|
5
5
|
|
|
6
6
|
describe('Utils', () => {
|
|
7
7
|
it('Locale', () => {
|
|
8
8
|
assert.ok(systemLocale);
|
|
9
|
-
assert.equal(typeof resolveBestCountry, 'function');
|
|
10
9
|
assert.equal(typeof resolveBestSupported, 'function');
|
|
11
10
|
});
|
|
12
11
|
|
package/src/utils-index.ts
CHANGED
|
@@ -15,15 +15,14 @@ export enum SortDirection {
|
|
|
15
15
|
DESC = 'DESC',
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
export
|
|
18
|
+
export interface SortOption {
|
|
19
19
|
key: string;
|
|
20
20
|
value: SortDirection;
|
|
21
|
-
}
|
|
21
|
+
}
|
|
22
22
|
|
|
23
23
|
export interface Price {
|
|
24
|
-
// TODO: currency instead of currencyCode? really?
|
|
25
24
|
amount: number;
|
|
26
|
-
|
|
25
|
+
currencyCode: string;
|
|
27
26
|
}
|
|
28
27
|
|
|
29
28
|
export interface PricingCalculation {
|
|
@@ -35,7 +34,7 @@ export interface PricingCalculation {
|
|
|
35
34
|
|
|
36
35
|
export type NodeOrTree<T> = string | Tree<T>;
|
|
37
36
|
|
|
38
|
-
export type Tree<T> =
|
|
37
|
+
export type Tree<T> = NodeOrTree<T>[];
|
|
39
38
|
|
|
40
39
|
export interface DateFilterInput {
|
|
41
40
|
start?: string;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BaseDiscountAdapter.d.ts","sourceRoot":"","sources":["../../src/director/BaseDiscountAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEpE,eAAO,MAAM,mBAAmB,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,SAAS,CAqD5F,CAAC"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { log, LogLevel } from '@unchainedshop/logger';
|
|
2
|
-
export const BaseDiscountAdapter = {
|
|
3
|
-
orderIndex: 0,
|
|
4
|
-
isManualAdditionAllowed: async () => {
|
|
5
|
-
return false;
|
|
6
|
-
},
|
|
7
|
-
// return true if a discount is allowed to get removed manually by a user
|
|
8
|
-
isManualRemovalAllowed: async () => {
|
|
9
|
-
return false;
|
|
10
|
-
},
|
|
11
|
-
actions: async () => ({
|
|
12
|
-
// return true if a discount is valid to be part of the order
|
|
13
|
-
// without input of a user. that could be a time based global discount
|
|
14
|
-
// like a 10% discount day
|
|
15
|
-
// if you return false, this discount will
|
|
16
|
-
// get removed from the order before any price calculation
|
|
17
|
-
// takes place.
|
|
18
|
-
// eslint-disable-next-line
|
|
19
|
-
isValidForSystemTriggering: async () => {
|
|
20
|
-
return false;
|
|
21
|
-
},
|
|
22
|
-
// return an arbitrary JSON serializable object with reservation data
|
|
23
|
-
// this method is called when a discount is added through a manual code and let's
|
|
24
|
-
// you manually deduct expendable discounts (coupon balances for ex.) before checkout
|
|
25
|
-
reserve: async () => {
|
|
26
|
-
return {};
|
|
27
|
-
},
|
|
28
|
-
// return void, allows you to free up any reservations in backend systems
|
|
29
|
-
release: async () => {
|
|
30
|
-
return null;
|
|
31
|
-
},
|
|
32
|
-
// return true if a discount is valid to be part of the order.
|
|
33
|
-
// if you return false, this discount will
|
|
34
|
-
// get removed from the order before any price calculation
|
|
35
|
-
// takes place.
|
|
36
|
-
isValidForCodeTriggering: async () => {
|
|
37
|
-
return false;
|
|
38
|
-
},
|
|
39
|
-
// returns the appropriate discount context for a calculation adapter
|
|
40
|
-
discountForPricingAdapterKey() {
|
|
41
|
-
return null;
|
|
42
|
-
},
|
|
43
|
-
}),
|
|
44
|
-
log(message, { level = LogLevel.Debug, ...options } = {}) {
|
|
45
|
-
return log(message, { level, ...options });
|
|
46
|
-
},
|
|
47
|
-
};
|
|
48
|
-
//# sourceMappingURL=BaseDiscountAdapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BaseDiscountAdapter.js","sourceRoot":"","sources":["../../src/director/BaseDiscountAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAItD,MAAM,CAAC,MAAM,mBAAmB,GAAiE;IAC/F,UAAU,EAAE,CAAC;IAEb,uBAAuB,EAAE,KAAK,IAAI,EAAE;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,yEAAyE;IACzE,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QACpB,6DAA6D;QAC7D,sEAAsE;QACtE,0BAA0B;QAC1B,0CAA0C;QAC1C,0DAA0D;QAC1D,eAAe;QACf,2BAA2B;QAC3B,0BAA0B,EAAE,KAAK,IAAI,EAAE;YACrC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,qEAAqE;QACrE,iFAAiF;QACjF,qFAAqF;QACrF,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,yEAAyE;QACzE,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,8DAA8D;QAC9D,0CAA0C;QAC1C,0DAA0D;QAC1D,eAAe;QACf,wBAAwB,EAAE,KAAK,IAAI,EAAE;YACnC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,qEAAqE;QACrE,4BAA4B;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC;IAEF,GAAG,CAAC,OAAe,EAAE,EAAE,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE;QAC9D,OAAO,GAAG,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAC7C,CAAC;CACF,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BaseDiscountDirector.d.ts","sourceRoot":"","sources":["../../src/director/BaseDiscountDirector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAIvF,eAAO,MAAM,oBAAoB,GAAI,yBAAyB,gBAC9C,MAAM,KACnB,iBAAiB,CAAC,yBAAyB,CAyD7C,CAAC"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { log } from '@unchainedshop/logger';
|
|
2
|
-
import { BaseDirector } from './BaseDirector.js';
|
|
3
|
-
export const BaseDiscountDirector = (directorName) => {
|
|
4
|
-
const baseDirector = BaseDirector(directorName, {
|
|
5
|
-
adapterSortKey: 'orderIndex',
|
|
6
|
-
});
|
|
7
|
-
return {
|
|
8
|
-
...baseDirector,
|
|
9
|
-
actions: async (discountContext, unchainedAPI) => {
|
|
10
|
-
const context = { ...discountContext, ...unchainedAPI };
|
|
11
|
-
return {
|
|
12
|
-
resolveDiscountKeyFromStaticCode: async (options) => {
|
|
13
|
-
if (!context.order)
|
|
14
|
-
return null;
|
|
15
|
-
log(`DiscountDirector -> Find user discount for static code ${options?.code}`);
|
|
16
|
-
const discounts = await Promise.all(baseDirector
|
|
17
|
-
.getAdapters()
|
|
18
|
-
.filter((Adapter) => Adapter.isManualAdditionAllowed(options?.code))
|
|
19
|
-
.map(async (Adapter) => {
|
|
20
|
-
const adapter = await Adapter.actions({ context });
|
|
21
|
-
return {
|
|
22
|
-
key: Adapter.key,
|
|
23
|
-
isValid: await adapter.isValidForCodeTriggering(options),
|
|
24
|
-
};
|
|
25
|
-
}));
|
|
26
|
-
return discounts.find(({ isValid }) => isValid === true)?.key;
|
|
27
|
-
},
|
|
28
|
-
async findSystemDiscounts() {
|
|
29
|
-
if (!context.order)
|
|
30
|
-
return [];
|
|
31
|
-
const discounts = await Promise.all(baseDirector.getAdapters().map(async (Adapter) => {
|
|
32
|
-
const adapter = await Adapter.actions({ context });
|
|
33
|
-
return {
|
|
34
|
-
key: Adapter.key,
|
|
35
|
-
isValid: await adapter.isValidForSystemTriggering(),
|
|
36
|
-
};
|
|
37
|
-
}));
|
|
38
|
-
const validDiscounts = discounts
|
|
39
|
-
.filter(({ isValid }) => isValid === true)
|
|
40
|
-
.map(({ key }) => key);
|
|
41
|
-
if (validDiscounts.length > 0) {
|
|
42
|
-
log(`DiscountDirector -> Found ${validDiscounts.length} system discounts`);
|
|
43
|
-
}
|
|
44
|
-
return validDiscounts;
|
|
45
|
-
},
|
|
46
|
-
};
|
|
47
|
-
},
|
|
48
|
-
};
|
|
49
|
-
};
|
|
50
|
-
//# sourceMappingURL=BaseDiscountDirector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BaseDiscountDirector.js","sourceRoot":"","sources":["../../src/director/BaseDiscountDirector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,YAAoB,EAC0B,EAAE;IAChD,MAAM,YAAY,GAAG,YAAY,CAA8C,YAAY,EAAE;QAC3F,cAAc,EAAE,YAAY;KAC7B,CAAC,CAAC;IAEH,OAAO;QACL,GAAG,YAAY;QAEf,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,EAAE;YAC/C,MAAM,OAAO,GAAG,EAAE,GAAG,eAAe,EAAE,GAAG,YAAY,EAAE,CAAC;YAExD,OAAO;gBACL,gCAAgC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;oBAClD,IAAI,CAAC,OAAO,CAAC,KAAK;wBAAE,OAAO,IAAI,CAAC;oBAEhC,GAAG,CAAC,0DAA0D,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;oBAE/E,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CACjC,YAAY;yBACT,WAAW,EAAE;yBACb,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;yBACnE,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;wBACrB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;wBACnD,OAAO;4BACL,GAAG,EAAE,OAAO,CAAC,GAAG;4BAChB,OAAO,EAAE,MAAM,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC;yBACzD,CAAC;oBACJ,CAAC,CAAC,CACL,CAAC;oBAEF,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,EAAE,GAAG,CAAC;gBAChE,CAAC;gBAED,KAAK,CAAC,mBAAmB;oBACvB,IAAI,CAAC,OAAO,CAAC,KAAK;wBAAE,OAAO,EAAE,CAAC;oBAC9B,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CACjC,YAAY,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;wBAC/C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;wBACnD,OAAO;4BACL,GAAG,EAAE,OAAO,CAAC,GAAG;4BAChB,OAAO,EAAE,MAAM,OAAO,CAAC,0BAA0B,EAAE;yBACpD,CAAC;oBACJ,CAAC,CAAC,CACH,CAAC;oBAEF,MAAM,cAAc,GAAG,SAAS;yBAC7B,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC;yBACzC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;oBAEzB,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC9B,GAAG,CAAC,6BAA6B,cAAc,CAAC,MAAM,mBAAmB,CAAC,CAAC;oBAC7E,CAAC;oBACD,OAAO,cAAc,CAAC;gBACxB,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { BasePricingAdapterContext, IPricingSheet, IPricingAdapter, PricingCalculation } from '@unchainedshop/types/pricing.js';
|
|
2
|
-
export declare const BasePricingAdapter: <Context extends BasePricingAdapterContext, Calculation extends PricingCalculation>() => IPricingAdapter<Context, Calculation, IPricingSheet<Calculation>>;
|
|
3
|
-
//# sourceMappingURL=BasePricingAdapter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BasePricingAdapter.d.ts","sourceRoot":"","sources":["../../src/director/BasePricingAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,aAAa,EACb,eAAe,EACf,kBAAkB,EAEnB,MAAM,iCAAiC,CAAC;AAGzC,eAAO,MAAM,kBAAkB,GAC7B,OAAO,SAAS,yBAAyB,EACzC,WAAW,SAAS,kBAAkB,OACnC,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,WAAW,CAAC,CA4BnE,CAAC"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { log, LogLevel } from '@unchainedshop/logger';
|
|
2
|
-
export const BasePricingAdapter = () => ({
|
|
3
|
-
key: '',
|
|
4
|
-
label: '',
|
|
5
|
-
version: '',
|
|
6
|
-
orderIndex: 0,
|
|
7
|
-
isActivatedFor: () => {
|
|
8
|
-
return false;
|
|
9
|
-
},
|
|
10
|
-
actions: (params) => {
|
|
11
|
-
const calculation = [];
|
|
12
|
-
const actions = {
|
|
13
|
-
calculate: async () => {
|
|
14
|
-
return [];
|
|
15
|
-
},
|
|
16
|
-
getCalculation: () => calculation,
|
|
17
|
-
getContext: () => params.context,
|
|
18
|
-
};
|
|
19
|
-
return actions;
|
|
20
|
-
},
|
|
21
|
-
log(message, { level = LogLevel.Debug, ...options } = {}) {
|
|
22
|
-
return log(message, { level, ...options });
|
|
23
|
-
},
|
|
24
|
-
});
|
|
25
|
-
//# sourceMappingURL=BasePricingAdapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BasePricingAdapter.js","sourceRoot":"","sources":["../../src/director/BasePricingAdapter.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAGqC,EAAE,CAAC,CAAC;IACzE,GAAG,EAAE,EAAE;IACP,KAAK,EAAE,EAAE;IACT,OAAO,EAAE,EAAE;IACX,UAAU,EAAE,CAAC;IAEb,cAAc,EAAE,GAAG,EAAE;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;QAClB,MAAM,WAAW,GAAG,EAAE,CAAC;QACvB,MAAM,OAAO,GAAiD;YAC5D,SAAS,EAAE,KAAK,IAAI,EAAE;gBACpB,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,cAAc,EAAE,GAAG,EAAE,CAAC,WAAW;YACjC,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO;SACjC,CAAC;QAEF,OAAO,OAEN,CAAC;IACJ,CAAC;IAED,GAAG,CAAC,OAAe,EAAE,EAAE,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE;QAC9D,OAAO,GAAG,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAC7C,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { BasePricingAdapterContext, BasePricingContext, IPricingDirector, IPricingAdapter, IPricingSheet, PricingCalculation } from '@unchainedshop/types/pricing.js';
|
|
2
|
-
export declare const BasePricingDirector: <DirectorContext extends BasePricingContext, AdapterContext extends BasePricingAdapterContext, Calculation extends PricingCalculation, PricingAdapter extends IPricingAdapter<AdapterContext, Calculation, IPricingSheet<Calculation>>>(directorName: string) => IPricingDirector<DirectorContext, Calculation, AdapterContext, IPricingSheet<Calculation>, PricingAdapter>;
|
|
3
|
-
//# sourceMappingURL=BasePricingDirector.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BasePricingDirector.d.ts","sourceRoot":"","sources":["../../src/director/BasePricingDirector.ts"],"names":[],"mappings":"AACA,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,kBAAkB,EAEnB,MAAM,iCAAiC,CAAC;AAIzC,eAAO,MAAM,mBAAmB,GAC9B,eAAe,SAAS,kBAAkB,EAC1C,cAAc,SAAS,yBAAyB,EAChD,WAAW,SAAS,kBAAkB,EACtC,cAAc,SAAS,eAAe,CAAC,cAAc,EAAE,WAAW,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,gBAEjF,MAAM,KACnB,gBAAgB,CACjB,eAAe,EACf,WAAW,EACX,cAAc,EACd,aAAa,CAAC,WAAW,CAAC,EAC1B,cAAc,CAgFf,CAAC"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { log, LogLevel } from '@unchainedshop/logger';
|
|
2
|
-
import { BaseDirector } from './BaseDirector.js';
|
|
3
|
-
export const BasePricingDirector = (directorName) => {
|
|
4
|
-
const baseDirector = BaseDirector(directorName, {
|
|
5
|
-
adapterSortKey: 'orderIndex',
|
|
6
|
-
});
|
|
7
|
-
const director = {
|
|
8
|
-
...baseDirector,
|
|
9
|
-
buildPricingContext: async () => {
|
|
10
|
-
return {};
|
|
11
|
-
},
|
|
12
|
-
actions: async (pricingContext, unchainedAPI, buildPricingContext) => {
|
|
13
|
-
const context = await buildPricingContext(pricingContext, unchainedAPI);
|
|
14
|
-
let calculation = [];
|
|
15
|
-
const actions = {
|
|
16
|
-
async calculate() {
|
|
17
|
-
const Adapters = baseDirector.getAdapters({
|
|
18
|
-
adapterFilter: (Adapter) => {
|
|
19
|
-
return Adapter.isActivatedFor(context);
|
|
20
|
-
},
|
|
21
|
-
});
|
|
22
|
-
calculation = await Adapters.reduce(async (previousPromise, Adapter) => {
|
|
23
|
-
const resolvedCalculation = await previousPromise;
|
|
24
|
-
if (!resolvedCalculation)
|
|
25
|
-
return null;
|
|
26
|
-
const discounts = await Promise.all(context.discounts.map(async (discount) => ({
|
|
27
|
-
discountId: discount._id,
|
|
28
|
-
configuration: await context.modules.orders.discounts.configurationForPricingAdapterKey(discount, Adapter.key, this.calculationSheet(), context),
|
|
29
|
-
})));
|
|
30
|
-
try {
|
|
31
|
-
const adapter = Adapter.actions({
|
|
32
|
-
context,
|
|
33
|
-
calculationSheet: this.calculationSheet(),
|
|
34
|
-
discounts: discounts.filter(({ configuration }) => configuration !== null),
|
|
35
|
-
});
|
|
36
|
-
const nextCalculationResult = await adapter.calculate();
|
|
37
|
-
if (!nextCalculationResult)
|
|
38
|
-
return null;
|
|
39
|
-
calculation = resolvedCalculation.concat(nextCalculationResult);
|
|
40
|
-
return calculation;
|
|
41
|
-
}
|
|
42
|
-
catch (error) {
|
|
43
|
-
log(error, { level: LogLevel.Error });
|
|
44
|
-
}
|
|
45
|
-
return resolvedCalculation;
|
|
46
|
-
}, Promise.resolve([]));
|
|
47
|
-
return calculation;
|
|
48
|
-
},
|
|
49
|
-
getCalculation() {
|
|
50
|
-
return calculation;
|
|
51
|
-
},
|
|
52
|
-
getContext() {
|
|
53
|
-
return context;
|
|
54
|
-
},
|
|
55
|
-
};
|
|
56
|
-
return actions;
|
|
57
|
-
},
|
|
58
|
-
};
|
|
59
|
-
return director;
|
|
60
|
-
};
|
|
61
|
-
//# sourceMappingURL=BasePricingDirector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BasePricingDirector.js","sourceRoot":"","sources":["../../src/director/BasePricingDirector.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAMjC,YAAoB,EAOpB,EAAE;IACF,MAAM,YAAY,GAAG,YAAY,CAAiB,YAAY,EAAE;QAC9D,cAAc,EAAE,YAAY;KAC7B,CAAC,CAAC;IAEH,MAAM,QAAQ,GAMV;QACF,GAAG,YAAY;QACf,mBAAmB,EAAE,KAAK,IAAI,EAAE;YAC9B,OAAO,EAAoB,CAAC;QAC9B,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,mBAAmB,EAAE,EAAE;YACnE,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;YAExE,IAAI,WAAW,GAAuB,EAAE,CAAC;YAEzC,MAAM,OAAO,GAAwD;gBACnE,KAAK,CAAC,SAAS;oBACb,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC;wBACxC,aAAa,EAAE,CAAC,OAAO,EAAE,EAAE;4BACzB,OAAO,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;wBACzC,CAAC;qBACF,CAAC,CAAC;oBAEH,WAAW,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,EAAE;wBACrE,MAAM,mBAAmB,GAAG,MAAM,eAAe,CAAC;wBAClD,IAAI,CAAC,mBAAmB;4BAAE,OAAO,IAAI,CAAC;wBAEtC,MAAM,SAAS,GAAyB,MAAM,OAAO,CAAC,GAAG,CACvD,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;4BACzC,UAAU,EAAE,QAAQ,CAAC,GAAG;4BACxB,aAAa,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,iCAAiC,CACrF,QAAQ,EACR,OAAO,CAAC,GAAG,EACX,IAAI,CAAC,gBAAgB,EAAE,EACvB,OAAO,CACR;yBACF,CAAC,CAAC,CACJ,CAAC;wBAEF,IAAI,CAAC;4BACH,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;gCAC9B,OAAO;gCACP,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE;gCACzC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,aAAa,KAAK,IAAI,CAAC;6BAC3E,CAAC,CAAC;4BAEH,MAAM,qBAAqB,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC;4BACxD,IAAI,CAAC,qBAAqB;gCAAE,OAAO,IAAI,CAAC;4BACxC,WAAW,GAAG,mBAAmB,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;4BAChE,OAAO,WAAW,CAAC;wBACrB,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;wBACxC,CAAC;wBACD,OAAO,mBAAmB,CAAC;oBAC7B,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;oBAExB,OAAO,WAAW,CAAC;gBACrB,CAAC;gBACD,cAAc;oBACZ,OAAO,WAAW,CAAC;gBACrB,CAAC;gBACD,UAAU;oBACR,OAAO,OAAO,CAAC;gBACjB,CAAC;aACF,CAAC;YAEF,OAAO,OAEN,CAAC;QACJ,CAAC;KACF,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { PricingCalculation, IBasePricingSheet, PricingSheetParams } from '@unchainedshop/types/pricing.js';
|
|
2
|
-
export declare const BasePricingSheet: <Calculation extends PricingCalculation>(params: PricingSheetParams<Calculation>) => IBasePricingSheet<Calculation>;
|
|
3
|
-
//# sourceMappingURL=BasePricingSheet.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BasePricingSheet.d.ts","sourceRoot":"","sources":["../../src/director/BasePricingSheet.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,iCAAiC,CAAC;AAEzC,eAAO,MAAM,gBAAgB,GAAI,WAAW,SAAS,kBAAkB,UAC7D,kBAAkB,CAAC,WAAW,CAAC,KACtC,iBAAiB,CAAC,WAAW,CAwE/B,CAAC"}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
export const BasePricingSheet = (params) => {
|
|
2
|
-
const pricingSheet = {
|
|
3
|
-
calculation: params.calculation || [],
|
|
4
|
-
currency: params.currency,
|
|
5
|
-
quantity: params.quantity,
|
|
6
|
-
getRawPricingSheet() {
|
|
7
|
-
return this.calculation;
|
|
8
|
-
},
|
|
9
|
-
isValid() {
|
|
10
|
-
return this.calculation.length > 0;
|
|
11
|
-
},
|
|
12
|
-
sum(filter) {
|
|
13
|
-
return this.filterBy(filter)
|
|
14
|
-
.filter(Boolean)
|
|
15
|
-
.reduce((sum, calculationRow) => sum + calculationRow.amount, 0);
|
|
16
|
-
},
|
|
17
|
-
taxSum() {
|
|
18
|
-
return 0;
|
|
19
|
-
},
|
|
20
|
-
gross() {
|
|
21
|
-
// Sum contains taxes, thus it's gross when just suming everything
|
|
22
|
-
return this.sum();
|
|
23
|
-
},
|
|
24
|
-
net() {
|
|
25
|
-
// Remove all taxes from gross to get net
|
|
26
|
-
return this.sum() - this.taxSum();
|
|
27
|
-
},
|
|
28
|
-
total({ category, useNetPrice, discountId } = { useNetPrice: false }) {
|
|
29
|
-
const amount = this.sum({ category, discountId });
|
|
30
|
-
const taxAmountForCategory = this.taxSum({ baseCategory: category, discountId });
|
|
31
|
-
// Sum does not contain taxes when filtering by category, it's net in that case and gross if there is no category
|
|
32
|
-
const netAmount = !category ? amount - taxAmountForCategory : amount;
|
|
33
|
-
return {
|
|
34
|
-
amount: Math.round(useNetPrice ? netAmount : netAmount + taxAmountForCategory),
|
|
35
|
-
currency: this.currency,
|
|
36
|
-
};
|
|
37
|
-
},
|
|
38
|
-
filterBy(filter) {
|
|
39
|
-
const filteredCalculation = Object.keys(filter || {}).reduce((oldCalculation, filterKey) => oldCalculation.filter((row) => !!row && (filter[filterKey] === undefined || row[filterKey] === filter[filterKey])), this.calculation);
|
|
40
|
-
return filteredCalculation;
|
|
41
|
-
},
|
|
42
|
-
resetCalculation(calculationSheet) {
|
|
43
|
-
calculationSheet.filterBy().forEach(({ amount, ...row }) => {
|
|
44
|
-
this.calculation.push({
|
|
45
|
-
...row,
|
|
46
|
-
amount: amount * -1,
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
return this.calculation;
|
|
50
|
-
},
|
|
51
|
-
};
|
|
52
|
-
return pricingSheet;
|
|
53
|
-
};
|
|
54
|
-
//# sourceMappingURL=BasePricingSheet.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BasePricingSheet.js","sourceRoot":"","sources":["../../src/director/BasePricingSheet.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,MAAuC,EACP,EAAE;IAClC,MAAM,YAAY,GAAmC;QACnD,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;QACrC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QAEzB,kBAAkB;YAChB,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;QAED,OAAO;YACL,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QACrC,CAAC;QAED,GAAG,CAAC,MAAM;YACR,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;iBACzB,MAAM,CAAC,OAAO,CAAC;iBACf,MAAM,CAAC,CAAC,GAAW,EAAE,cAA2B,EAAE,EAAE,CAAC,GAAG,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC1F,CAAC;QAED,MAAM;YACJ,OAAO,CAAC,CAAC;QACX,CAAC;QAED,KAAK;YACH,kEAAkE;YAClE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;QACpB,CAAC;QAED,GAAG;YACD,yCAAyC;YACzC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACpC,CAAC;QAED,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE;YAClE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;YAClD,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;YAEjF,iHAAiH;YACjH,MAAM,SAAS,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,GAAG,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC;YAErE,OAAO;gBACL,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,GAAG,oBAAoB,CAAC;gBAC9E,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC;QACJ,CAAC;QAED,QAAQ,CAAC,MAAM;YACb,MAAM,mBAAmB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CAC1D,CAAC,cAAc,EAAE,SAAS,EAAE,EAAE,CAC5B,cAAc,CAAC,MAAM,CACnB,CAAC,GAAgB,EAAE,EAAE,CACnB,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC,CACrF,EACH,IAAI,CAAC,WAAW,CACjB,CAAC;YAEF,OAAO,mBAAmB,CAAC;QAC7B,CAAC;QAED,gBAAgB,CAAC,gBAAgB;YAC/B,gBAAgB,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG,EAAe,EAAE,EAAE;gBACtE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;oBACpB,GAAG,GAAG;oBACN,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC;iBACL,CAAC,CAAC;YACpB,CAAC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;KACF,CAAC;IAEF,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"random-value-hex.d.ts","sourceRoot":"","sources":["../src/random-value-hex.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK1D"}
|
package/lib/random-value-hex.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import crypto from 'crypto';
|
|
2
|
-
export default function randomValueHex(len) {
|
|
3
|
-
return crypto
|
|
4
|
-
.randomBytes(Math.ceil(len / 2))
|
|
5
|
-
.toString('hex') // convert to hexadecimal format
|
|
6
|
-
.slice(0, len); // return required number of characters
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=random-value-hex.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"random-value-hex.js","sourceRoot":"","sources":["../src/random-value-hex.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,GAAW;IAChD,OAAO,MAAM;SACV,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;SAC/B,QAAQ,CAAC,KAAK,CAAC,CAAC,gCAAgC;SAChD,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,uCAAuC;AAC3D,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AddressSchema.d.ts","sourceRoot":"","sources":["../../src/schemas/AddressSchema.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,cAAc,CAAC;AAExC,eAAO,MAAM,aAAa,cAazB,CAAC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import SimpleSchema from 'simpl-schema';
|
|
2
|
-
export const AddressSchema = new SimpleSchema({
|
|
3
|
-
firstName: String,
|
|
4
|
-
lastName: String,
|
|
5
|
-
company: String,
|
|
6
|
-
addressLine: String,
|
|
7
|
-
addressLine2: String,
|
|
8
|
-
city: String,
|
|
9
|
-
postalCode: String,
|
|
10
|
-
regionCode: String,
|
|
11
|
-
countryCode: String,
|
|
12
|
-
}, { requiredByDefault: false });
|
|
13
|
-
//# sourceMappingURL=AddressSchema.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AddressSchema.js","sourceRoot":"","sources":["../../src/schemas/AddressSchema.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,cAAc,CAAC;AAExC,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,YAAY,CAC3C;IACE,SAAS,EAAE,MAAM;IACjB,QAAQ,EAAE,MAAM;IAChB,OAAO,EAAE,MAAM;IACf,WAAW,EAAE,MAAM;IACnB,YAAY,EAAE,MAAM;IACpB,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,MAAM;IAClB,UAAU,EAAE,MAAM;IAClB,WAAW,EAAE,MAAM;CACpB,EACD,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAC7B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ContactSchema.d.ts","sourceRoot":"","sources":["../../src/schemas/ContactSchema.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,cAAc,CAAC;AAExC,eAAO,MAAM,aAAa,cAMzB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ContactSchema.js","sourceRoot":"","sources":["../../src/schemas/ContactSchema.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,cAAc,CAAC;AAExC,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,YAAY,CAC3C;IACE,SAAS,EAAE,MAAM;IACjB,YAAY,EAAE,MAAM;CACrB,EACD,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAC7B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"UsersSchema.d.ts","sourceRoot":"","sources":["../../src/schemas/UsersSchema.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,cAAc,CAAC;AAexC,eAAO,MAAM,eAAe,cAU3B,CAAC;AAEF,eAAO,MAAM,iBAAiB,cAM7B,CAAC;AAEF,eAAO,MAAM,UAAU,cA+BtB,CAAC"}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import SimpleSchema from 'simpl-schema';
|
|
2
|
-
import { AddressSchema } from './AddressSchema.js';
|
|
3
|
-
import { timestampFields } from './commonSchemaFields.js';
|
|
4
|
-
const ProfileSchema = new SimpleSchema({
|
|
5
|
-
displayName: String,
|
|
6
|
-
birthday: Date,
|
|
7
|
-
phoneMobile: String,
|
|
8
|
-
gender: String,
|
|
9
|
-
address: AddressSchema,
|
|
10
|
-
}, { requiredByDefault: false });
|
|
11
|
-
export const LastLoginSchema = new SimpleSchema({
|
|
12
|
-
timestamp: Date,
|
|
13
|
-
locale: String,
|
|
14
|
-
countryCode: String,
|
|
15
|
-
remoteAddress: String,
|
|
16
|
-
remotePort: String,
|
|
17
|
-
userAgent: String,
|
|
18
|
-
}, { requiredByDefault: false });
|
|
19
|
-
export const LastContactSchema = new SimpleSchema({
|
|
20
|
-
telNumber: String,
|
|
21
|
-
emailAddress: String,
|
|
22
|
-
}, { requiredByDefault: false });
|
|
23
|
-
export const UserSchema = new SimpleSchema({
|
|
24
|
-
emails: Array,
|
|
25
|
-
'emails.$': Object,
|
|
26
|
-
'emails.$.address': String,
|
|
27
|
-
'emails.$.verified': Boolean,
|
|
28
|
-
username: String,
|
|
29
|
-
lastLogin: LastLoginSchema,
|
|
30
|
-
profile: ProfileSchema,
|
|
31
|
-
lastBillingAddress: AddressSchema,
|
|
32
|
-
lastContact: LastContactSchema,
|
|
33
|
-
guest: Boolean,
|
|
34
|
-
initialPassword: Boolean,
|
|
35
|
-
tags: Array,
|
|
36
|
-
'tags.$': String,
|
|
37
|
-
avatarId: String,
|
|
38
|
-
meta: {
|
|
39
|
-
type: Object,
|
|
40
|
-
optional: true,
|
|
41
|
-
blackbox: true,
|
|
42
|
-
},
|
|
43
|
-
services: {
|
|
44
|
-
type: Object,
|
|
45
|
-
optional: true,
|
|
46
|
-
blackbox: true,
|
|
47
|
-
},
|
|
48
|
-
roles: Array,
|
|
49
|
-
'roles.$': String,
|
|
50
|
-
...timestampFields,
|
|
51
|
-
}, { requiredByDefault: false });
|
|
52
|
-
//# sourceMappingURL=UsersSchema.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"UsersSchema.js","sourceRoot":"","sources":["../../src/schemas/UsersSchema.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,MAAM,aAAa,GAAG,IAAI,YAAY,CACpC;IACE,WAAW,EAAE,MAAM;IACnB,QAAQ,EAAE,IAAI;IACd,WAAW,EAAE,MAAM;IACnB,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,aAAa;CACvB,EACD,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAC7B,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,YAAY,CAC7C;IACE,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,MAAM;IACd,WAAW,EAAE,MAAM;IACnB,aAAa,EAAE,MAAM;IACrB,UAAU,EAAE,MAAM;IAClB,SAAS,EAAE,MAAM;CAClB,EACD,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAC7B,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,YAAY,CAC/C;IACE,SAAS,EAAE,MAAM;IACjB,YAAY,EAAE,MAAM;CACrB,EACD,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAC7B,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,YAAY,CACxC;IACE,MAAM,EAAE,KAAK;IACb,UAAU,EAAE,MAAM;IAClB,kBAAkB,EAAE,MAAM;IAC1B,mBAAmB,EAAE,OAAO;IAC5B,QAAQ,EAAE,MAAM;IAChB,SAAS,EAAE,eAAe;IAC1B,OAAO,EAAE,aAAa;IACtB,kBAAkB,EAAE,aAAa;IACjC,WAAW,EAAE,iBAAiB;IAC9B,KAAK,EAAE,OAAO;IACd,eAAe,EAAE,OAAO;IACxB,IAAI,EAAE,KAAK;IACX,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,MAAM;IAChB,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;KACf;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;KACf;IACD,KAAK,EAAE,KAAK;IACZ,SAAS,EAAE,MAAM;IACjB,GAAG,eAAe;CACnB,EACD,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAC7B,CAAC"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
export declare const contextFields: {
|
|
2
|
-
context: {
|
|
3
|
-
type: ObjectConstructor;
|
|
4
|
-
blackbox: boolean;
|
|
5
|
-
required: boolean;
|
|
6
|
-
};
|
|
7
|
-
};
|
|
8
|
-
export declare const logFields: {
|
|
9
|
-
log: ArrayConstructor;
|
|
10
|
-
'log.$': {
|
|
11
|
-
type: ObjectConstructor;
|
|
12
|
-
};
|
|
13
|
-
'log.$.date': {
|
|
14
|
-
type: DateConstructor;
|
|
15
|
-
};
|
|
16
|
-
'log.$.status': {
|
|
17
|
-
type: StringConstructor;
|
|
18
|
-
};
|
|
19
|
-
'log.$.info': {
|
|
20
|
-
type: StringConstructor;
|
|
21
|
-
};
|
|
22
|
-
};
|
|
23
|
-
export declare const timestampFields: {
|
|
24
|
-
created: {
|
|
25
|
-
type: DateConstructor;
|
|
26
|
-
required: boolean;
|
|
27
|
-
};
|
|
28
|
-
updated: {
|
|
29
|
-
type: DateConstructor;
|
|
30
|
-
};
|
|
31
|
-
deleted: {
|
|
32
|
-
type: DateConstructor;
|
|
33
|
-
};
|
|
34
|
-
};
|
|
35
|
-
//# sourceMappingURL=commonSchemaFields.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"commonSchemaFields.d.ts","sourceRoot":"","sources":["../../src/schemas/commonSchemaFields.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa;;;;;;CAMzB,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;CAcrB,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;CAI3B,CAAC"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
export const contextFields = {
|
|
2
|
-
context: {
|
|
3
|
-
type: Object,
|
|
4
|
-
blackbox: true,
|
|
5
|
-
required: false,
|
|
6
|
-
},
|
|
7
|
-
};
|
|
8
|
-
export const logFields = {
|
|
9
|
-
log: Array,
|
|
10
|
-
'log.$': {
|
|
11
|
-
type: Object,
|
|
12
|
-
},
|
|
13
|
-
'log.$.date': {
|
|
14
|
-
type: Date,
|
|
15
|
-
},
|
|
16
|
-
'log.$.status': {
|
|
17
|
-
type: String,
|
|
18
|
-
},
|
|
19
|
-
'log.$.info': {
|
|
20
|
-
type: String,
|
|
21
|
-
},
|
|
22
|
-
};
|
|
23
|
-
export const timestampFields = {
|
|
24
|
-
created: { type: Date, required: true },
|
|
25
|
-
updated: { type: Date },
|
|
26
|
-
deleted: { type: Date },
|
|
27
|
-
};
|
|
28
|
-
//# sourceMappingURL=commonSchemaFields.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"commonSchemaFields.js","sourceRoot":"","sources":["../../src/schemas/commonSchemaFields.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,OAAO,EAAE;QACP,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,KAAK;KAChB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,GAAG,EAAE,KAAK;IACV,OAAO,EAAE;QACP,IAAI,EAAE,MAAM;KACb;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,IAAI;KACX;IACD,cAAc,EAAE;QACd,IAAI,EAAE,MAAM;KACb;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,MAAM;KACb;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IACvC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;IACvB,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;CACxB,CAAC"}
|
package/lib/schemas/index.d.ts
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import SimpleSchema from 'simpl-schema';
|
|
2
|
-
declare const Schemas: {
|
|
3
|
-
timestampFields: {
|
|
4
|
-
created: {
|
|
5
|
-
type: DateConstructor;
|
|
6
|
-
required: boolean;
|
|
7
|
-
};
|
|
8
|
-
updated: {
|
|
9
|
-
type: DateConstructor;
|
|
10
|
-
};
|
|
11
|
-
deleted: {
|
|
12
|
-
type: DateConstructor;
|
|
13
|
-
};
|
|
14
|
-
};
|
|
15
|
-
contextFields: {
|
|
16
|
-
context: {
|
|
17
|
-
type: ObjectConstructor;
|
|
18
|
-
blackbox: boolean;
|
|
19
|
-
required: boolean;
|
|
20
|
-
};
|
|
21
|
-
};
|
|
22
|
-
logFields: {
|
|
23
|
-
log: ArrayConstructor;
|
|
24
|
-
'log.$': {
|
|
25
|
-
type: ObjectConstructor;
|
|
26
|
-
};
|
|
27
|
-
'log.$.date': {
|
|
28
|
-
type: DateConstructor;
|
|
29
|
-
};
|
|
30
|
-
'log.$.status': {
|
|
31
|
-
type: StringConstructor;
|
|
32
|
-
};
|
|
33
|
-
'log.$.info': {
|
|
34
|
-
type: StringConstructor;
|
|
35
|
-
};
|
|
36
|
-
};
|
|
37
|
-
Address: SimpleSchema;
|
|
38
|
-
Contact: SimpleSchema;
|
|
39
|
-
User: SimpleSchema;
|
|
40
|
-
};
|
|
41
|
-
export { Schemas };
|
|
42
|
-
export type { SimpleSchema };
|
|
43
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,cAAc,CAAC;AAMxC,QAAA,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOZ,CAAC;AAEF,OAAO,EAAE,OAAO,EAAE,CAAC;AAEnB,YAAY,EAAE,YAAY,EAAE,CAAC"}
|
package/lib/schemas/index.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { timestampFields, contextFields, logFields } from './commonSchemaFields.js';
|
|
2
|
-
import { AddressSchema } from './AddressSchema.js';
|
|
3
|
-
import { ContactSchema } from './ContactSchema.js';
|
|
4
|
-
import { UserSchema } from './UsersSchema.js';
|
|
5
|
-
const Schemas = {
|
|
6
|
-
timestampFields,
|
|
7
|
-
contextFields,
|
|
8
|
-
logFields,
|
|
9
|
-
Address: AddressSchema,
|
|
10
|
-
Contact: ContactSchema,
|
|
11
|
-
User: UserSchema,
|
|
12
|
-
};
|
|
13
|
-
export { Schemas };
|
|
14
|
-
//# sourceMappingURL=index.js.map
|
package/lib/schemas/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,OAAO,GAAG;IACd,eAAe;IACf,aAAa;IACb,SAAS;IACT,OAAO,EAAE,aAAa;IACtB,OAAO,EAAE,aAAa;IACtB,IAAI,EAAE,UAAU;CACjB,CAAC;AAEF,OAAO,EAAE,OAAO,EAAE,CAAC"}
|