@wix/bex-core 2.158.0 → 2.159.0
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/dist/cjs/hooks/useAmbassadorCollection.js +48 -18
- package/dist/cjs/hooks/useAmbassadorCollection.js.map +1 -1
- package/dist/cjs/model/wixPatternsEssentials.js.map +1 -1
- package/dist/cjs/services/DataExtensionService/dataExtensionService.js +6 -3
- package/dist/cjs/services/DataExtensionService/dataExtensionService.js.map +1 -1
- package/dist/cjs/services/tagsService/createTagErrors.js.map +1 -1
- package/dist/cjs/services/tagsService/tagsService.js +10 -4
- package/dist/cjs/services/tagsService/tagsService.js.map +1 -1
- package/dist/cjs/state/AppsState.js +4 -2
- package/dist/cjs/state/AppsState.js.map +1 -1
- package/dist/cjs/state/BulkSelectState.js +12 -4
- package/dist/cjs/state/BulkSelectState.js.map +1 -1
- package/dist/cjs/state/CollectionOptimisticActions.js +1 -1
- package/dist/cjs/state/CollectionOptimisticActions.js.map +1 -1
- package/dist/cjs/state/ExportState/createExportAsyncJobErrors.js.map +1 -1
- package/dist/cjs/state/ExportState/getExportAsyncJobErrors.js.map +1 -1
- package/dist/cjs/state/SelectMapState.js +6 -2
- package/dist/cjs/state/SelectMapState.js.map +1 -1
- package/dist/cjs/state/TagsState/TagsManagementState.js +18 -1
- package/dist/cjs/state/TagsState/TagsManagementState.js.map +1 -1
- package/dist/esm/hooks/useAmbassadorCollection.js +24 -14
- package/dist/esm/hooks/useAmbassadorCollection.js.map +1 -1
- package/dist/esm/services/DataExtensionService/dataExtensionService.js +3 -3
- package/dist/esm/services/DataExtensionService/dataExtensionService.js.map +1 -1
- package/dist/esm/services/tagsService/createTagErrors.js.map +1 -1
- package/dist/esm/services/tagsService/tagsService.js +4 -4
- package/dist/esm/services/tagsService/tagsService.js.map +1 -1
- package/dist/esm/state/AppsState.js +2 -2
- package/dist/esm/state/AppsState.js.map +1 -1
- package/dist/esm/state/BulkSelectState.js +13 -5
- package/dist/esm/state/BulkSelectState.js.map +1 -1
- package/dist/esm/state/CollectionOptimisticActions.js +1 -1
- package/dist/esm/state/CollectionOptimisticActions.js.map +1 -1
- package/dist/esm/state/ExportState/createExportAsyncJobErrors.js.map +1 -1
- package/dist/esm/state/ExportState/getExportAsyncJobErrors.js.map +1 -1
- package/dist/esm/state/SelectMapState.js +7 -3
- package/dist/esm/state/SelectMapState.js.map +1 -1
- package/dist/esm/state/TagsState/TagsManagementState.js +17 -1
- package/dist/esm/state/TagsState/TagsManagementState.js.map +1 -1
- package/dist/types/hooks/useAmbassadorCollection.d.ts.map +1 -1
- package/dist/types/model/wixPatternsEssentials.d.ts +1 -0
- package/dist/types/model/wixPatternsEssentials.d.ts.map +1 -1
- package/dist/types/services/DataExtensionService/dataExtensionService.d.ts.map +1 -1
- package/dist/types/services/fetchTranslationsPreBundled.d.ts +1 -1
- package/dist/types/services/fetchTranslationsPreBundled.d.ts.map +1 -1
- package/dist/types/services/tagsService/createTagErrors.d.ts +2 -2
- package/dist/types/services/tagsService/createTagErrors.d.ts.map +1 -1
- package/dist/types/services/tagsService/tagsService.d.ts +3 -3
- package/dist/types/services/tagsService/tagsService.d.ts.map +1 -1
- package/dist/types/state/AppsState.d.ts.map +1 -1
- package/dist/types/state/BulkSelectState.d.ts.map +1 -1
- package/dist/types/state/ExportState/createExportAsyncJobErrors.d.ts +2 -2
- package/dist/types/state/ExportState/createExportAsyncJobErrors.d.ts.map +1 -1
- package/dist/types/state/ExportState/getExportAsyncJobErrors.d.ts +2 -2
- package/dist/types/state/ExportState/getExportAsyncJobErrors.d.ts.map +1 -1
- package/dist/types/state/SelectMapState.d.ts.map +1 -1
- package/dist/types/state/TagsState/TagsManagementState.d.ts +3 -1
- package/dist/types/state/TagsState/TagsManagementState.d.ts.map +1 -1
- package/dist/types/state/WixPatternsContainer.d.ts +3 -3
- package/dist/types/state/WixPatternsContainer.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -10,34 +10,52 @@ var _useCollection = require("./useCollection");
|
|
|
10
10
|
var _react = require("react");
|
|
11
11
|
// TODO: should be exposed by Ambassador
|
|
12
12
|
|
|
13
|
-
async function fetchData(
|
|
13
|
+
async function fetchData({
|
|
14
|
+
config,
|
|
15
|
+
wixPatternsQuery,
|
|
16
|
+
httpClient,
|
|
17
|
+
errorHandler
|
|
18
|
+
}) {
|
|
14
19
|
const {
|
|
15
20
|
ambassador
|
|
16
21
|
} = config;
|
|
17
22
|
const transformPlatformizedQuery = config.transformPlatformizedQuery || _identity.default;
|
|
18
23
|
const platformizedQuery = defaultPlatformizedQuery(wixPatternsQuery);
|
|
19
24
|
const query = await transformPlatformizedQuery(platformizedQuery, wixPatternsQuery);
|
|
20
|
-
return httpClient.request(ambassador.queryEntities({
|
|
25
|
+
return errorHandler == null ? void 0 : errorHandler.withErrorHandler(() => httpClient.request(ambassador.queryEntities({
|
|
21
26
|
query
|
|
22
|
-
}))
|
|
27
|
+
})), {
|
|
28
|
+
errorCodesMap: {}
|
|
29
|
+
});
|
|
23
30
|
}
|
|
24
|
-
function getOffsetConfig(
|
|
31
|
+
function getOffsetConfig({
|
|
32
|
+
config,
|
|
33
|
+
httpClient,
|
|
34
|
+
errorHandler
|
|
35
|
+
}) {
|
|
25
36
|
return {
|
|
26
37
|
queryName: config.ambassador.fqdn,
|
|
27
38
|
...config,
|
|
28
39
|
paginationMode: 'offset',
|
|
29
40
|
fetchData: async query => {
|
|
30
|
-
const {
|
|
31
|
-
|
|
32
|
-
|
|
41
|
+
const response = await fetchData({
|
|
42
|
+
config,
|
|
43
|
+
wixPatternsQuery: query,
|
|
44
|
+
httpClient,
|
|
45
|
+
errorHandler
|
|
46
|
+
});
|
|
33
47
|
return {
|
|
34
|
-
items: data.entities,
|
|
35
|
-
total: data.metadata.total
|
|
48
|
+
items: (response == null ? void 0 : response.data.entities) ?? [],
|
|
49
|
+
total: (response == null ? void 0 : response.data.metadata.total) ?? 0
|
|
36
50
|
};
|
|
37
51
|
}
|
|
38
52
|
};
|
|
39
53
|
}
|
|
40
|
-
function getCursorConfig(
|
|
54
|
+
function getCursorConfig({
|
|
55
|
+
config,
|
|
56
|
+
httpClient,
|
|
57
|
+
errorHandler
|
|
58
|
+
}) {
|
|
41
59
|
const {
|
|
42
60
|
ambassador
|
|
43
61
|
} = config;
|
|
@@ -46,13 +64,16 @@ function getCursorConfig(config, httpClient) {
|
|
|
46
64
|
...config,
|
|
47
65
|
paginationMode: 'cursor',
|
|
48
66
|
fetchData: async query => {
|
|
49
|
-
const {
|
|
50
|
-
|
|
51
|
-
|
|
67
|
+
const response = await fetchData({
|
|
68
|
+
config,
|
|
69
|
+
wixPatternsQuery: query,
|
|
70
|
+
httpClient,
|
|
71
|
+
errorHandler
|
|
72
|
+
});
|
|
52
73
|
return {
|
|
53
|
-
items: data.entities,
|
|
54
|
-
cursor: data.metadata.cursors.next,
|
|
55
|
-
total: data.metadata.total
|
|
74
|
+
items: (response == null ? void 0 : response.data.entities) ?? [],
|
|
75
|
+
cursor: response == null ? void 0 : response.data.metadata.cursors.next,
|
|
76
|
+
total: (response == null ? void 0 : response.data.metadata.total) ?? 0
|
|
56
77
|
};
|
|
57
78
|
}
|
|
58
79
|
};
|
|
@@ -60,10 +81,19 @@ function getCursorConfig(config, httpClient) {
|
|
|
60
81
|
function useCreateAmbassadorCollection() {
|
|
61
82
|
const createCollection = (0, _useCollection.useCreateCollection)();
|
|
62
83
|
const {
|
|
63
|
-
httpClient
|
|
84
|
+
httpClient,
|
|
85
|
+
errorHandler
|
|
64
86
|
} = (0, _providers.useWixPatternsContainer)();
|
|
65
87
|
return config => {
|
|
66
|
-
const collectionConfig = config.ambassador.queryEntities.paginationMode === 'offset' ? getOffsetConfig(
|
|
88
|
+
const collectionConfig = config.ambassador.queryEntities.paginationMode === 'offset' ? getOffsetConfig({
|
|
89
|
+
config,
|
|
90
|
+
httpClient,
|
|
91
|
+
errorHandler
|
|
92
|
+
}) : getCursorConfig({
|
|
93
|
+
config,
|
|
94
|
+
httpClient,
|
|
95
|
+
errorHandler
|
|
96
|
+
});
|
|
67
97
|
return createCollection(collectionConfig);
|
|
68
98
|
};
|
|
69
99
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_identity","_interopRequireDefault","require","_providers","_useCollection","_react","fetchData","config","wixPatternsQuery","httpClient","ambassador","transformPlatformizedQuery","identity","platformizedQuery","defaultPlatformizedQuery","query","request","queryEntities","getOffsetConfig","queryName","fqdn","paginationMode","
|
|
1
|
+
{"version":3,"names":["_identity","_interopRequireDefault","require","_providers","_useCollection","_react","fetchData","config","wixPatternsQuery","httpClient","errorHandler","ambassador","transformPlatformizedQuery","identity","platformizedQuery","defaultPlatformizedQuery","query","withErrorHandler","request","queryEntities","errorCodesMap","getOffsetConfig","queryName","fqdn","paginationMode","response","items","data","entities","total","metadata","getCursorConfig","cursor","cursors","next","useCreateAmbassadorCollection","createCollection","useCreateCollection","useWixPatternsContainer","collectionConfig","useAmbassadorCollection","createAmbassadorCollection","collection","useState","_wixPatternsQuery$sor","filter","sort","map","fieldName","order","toUpperCase","cursorPaging","limit"],"sources":["../../../src/hooks/useAmbassadorCollection.ts"],"sourcesContent":["import identity from 'lodash/identity';\nimport type { AutoCrudHttp } from '@wix/auto-crud';\nimport type { FiltersMap, OptionalFiltersMap } from '../model';\nimport type { CollectionState } from '../state';\nimport type { CollectionConfigWithConditionals } from './collectionConfigPartials';\nimport type { CursorQuery, OffsetQuery } from '.';\nimport { useWixPatternsContainer } from '../providers';\nimport { useCreateCollection } from './useCollection';\nimport { useState } from 'react';\nimport { WixPatternsContainerParams } from '../state';\n\nexport type TransformPlatformizedQuery = (\n platformizedQuery: PlatformizedQuery,\n wixPatternsQuery: CursorQuery,\n) => PlatformizedQuery | Promise<PlatformizedQuery>;\n\nexport type AmbassadorCollectionConfig<\n T,\n F extends FiltersMap = OptionalFiltersMap,\n> = Omit<\n CollectionConfigWithConditionals<T, F>,\n 'fetchData' | 'paginationMode' | 'queryName'\n> &\n AmbassadorCollectionConfigI<T>;\n\nexport interface AmbassadorCollectionConfigI<T> {\n /**\n * CRUD subpackage of a metro Ambassador package.\n */\n ambassador: Required<Pick<AutoCrudHttp<T>, 'queryEntities' | 'fqdn'>>;\n /**\n * A function to transform the cairo query to a PlatformizedQuery object (which will be used to fetch data from the server):\n * - `platformizedQuery`: PlatformizedQuery\n * - `wixPatternsQuery`: CursorQuery\n * The function should return a PlatformizedQuery instance or a promise of PlatformizedQuery\n */\n transformPlatformizedQuery?: TransformPlatformizedQuery;\n /**\n * The query name used for cache purposes. This should be a unique value per API endpoint.\n * @default ambassador.fqdn\n */\n queryName?: string;\n}\n\ntype PlatformizedFilter = {\n [filter: string]: any;\n};\n\ntype PlatformizedSorting = {\n fieldName: string;\n order: 'ASC' | 'DESC';\n};\n\ntype PlatformizedCursorPaging = {\n limit: number;\n cursor?: string | null;\n};\n\n// TODO: should be exposed by Ambassador\ntype PlatformizedQuery = {\n filter?: PlatformizedFilter;\n sort?: PlatformizedSorting[];\n cursorPaging?: PlatformizedCursorPaging;\n};\n\nexport type AmbassadorCollectionFactory = <\n T,\n F extends FiltersMap = OptionalFiltersMap,\n>(\n config: AmbassadorCollectionConfig<T, F>,\n) => CollectionState<T, F>;\n\nasync function fetchData<T, F extends FiltersMap = OptionalFiltersMap>({\n config,\n wixPatternsQuery,\n httpClient,\n errorHandler,\n}: {\n config: AmbassadorCollectionConfig<T, F>;\n wixPatternsQuery: CursorQuery<Partial<F>> | OffsetQuery<Partial<F>>;\n httpClient: WixPatternsContainerParams['httpClient'];\n errorHandler: WixPatternsContainerParams['errorHandler'];\n}) {\n const { ambassador } = config;\n const transformPlatformizedQuery =\n config.transformPlatformizedQuery || identity;\n const platformizedQuery = defaultPlatformizedQuery(wixPatternsQuery);\n const query = await transformPlatformizedQuery(\n platformizedQuery,\n wixPatternsQuery,\n );\n return errorHandler?.withErrorHandler(\n () => httpClient.request(ambassador.queryEntities({ query })),\n { errorCodesMap: {} },\n );\n}\n\nfunction getOffsetConfig<T, F extends FiltersMap = OptionalFiltersMap>({\n config,\n httpClient,\n errorHandler,\n}: {\n config: AmbassadorCollectionConfig<T, F>;\n httpClient: WixPatternsContainerParams['httpClient'];\n errorHandler: WixPatternsContainerParams['errorHandler'];\n}): CollectionConfigWithConditionals<T, F> {\n return {\n queryName: config.ambassador.fqdn,\n ...config,\n paginationMode: 'offset',\n fetchData: async (query: OffsetQuery<Partial<F>>) => {\n const response = await fetchData({\n config,\n wixPatternsQuery: query,\n httpClient,\n errorHandler,\n });\n return {\n items: response?.data.entities ?? [],\n total: response?.data.metadata.total ?? 0,\n };\n },\n };\n}\n\nfunction getCursorConfig<T, F extends FiltersMap = OptionalFiltersMap>({\n config,\n httpClient,\n errorHandler,\n}: {\n config: AmbassadorCollectionConfig<T, F>;\n httpClient: WixPatternsContainerParams['httpClient'];\n errorHandler: WixPatternsContainerParams['errorHandler'];\n}): CollectionConfigWithConditionals<T, F> {\n const { ambassador } = config;\n\n return {\n queryName: ambassador.fqdn,\n ...config,\n paginationMode: 'cursor',\n fetchData: async (query: CursorQuery<Partial<F>>) => {\n const response = await fetchData({\n config,\n wixPatternsQuery: query,\n httpClient,\n errorHandler,\n });\n return {\n items: response?.data.entities ?? [],\n cursor: response?.data.metadata.cursors.next,\n total: response?.data.metadata.total ?? 0,\n };\n },\n };\n}\n\nexport function useCreateAmbassadorCollection(): AmbassadorCollectionFactory {\n const createCollection = useCreateCollection();\n const { httpClient, errorHandler } = useWixPatternsContainer();\n\n return <T, F extends FiltersMap = OptionalFiltersMap>(\n config: AmbassadorCollectionConfig<T, F>,\n ) => {\n const collectionConfig: CollectionConfigWithConditionals<T, F> =\n config.ambassador.queryEntities.paginationMode === 'offset'\n ? getOffsetConfig({ config, httpClient, errorHandler })\n : getCursorConfig({ config, httpClient, errorHandler });\n\n return createCollection(collectionConfig);\n };\n}\n\nexport function useAmbassadorCollection<\n T,\n F extends FiltersMap = OptionalFiltersMap,\n>(config: AmbassadorCollectionConfig<T, F>): CollectionState<T, F> {\n const createAmbassadorCollection = useCreateAmbassadorCollection();\n\n const [collection] = useState(() => createAmbassadorCollection<T, F>(config));\n\n return collection;\n}\n\nfunction defaultPlatformizedQuery(\n wixPatternsQuery: CursorQuery,\n): PlatformizedQuery {\n return {\n filter: {},\n sort: wixPatternsQuery.sort?.map((sort) => ({\n fieldName: sort.fieldName,\n order: sort.order.toUpperCase() as 'ASC' | 'DESC',\n })),\n cursorPaging: {\n cursor: wixPatternsQuery.cursor,\n limit: wixPatternsQuery.limit,\n },\n };\n}\n"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,sBAAA,CAAAC,OAAA;AAMA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAkDA;;AAcA,eAAeI,SAASA,CAA+C;EACrEC,MAAM;EACNC,gBAAgB;EAChBC,UAAU;EACVC;AAMF,CAAC,EAAE;EACD,MAAM;IAAEC;EAAW,CAAC,GAAGJ,MAAM;EAC7B,MAAMK,0BAA0B,GAC9BL,MAAM,CAACK,0BAA0B,IAAIC,iBAAQ;EAC/C,MAAMC,iBAAiB,GAAGC,wBAAwB,CAACP,gBAAgB,CAAC;EACpE,MAAMQ,KAAK,GAAG,MAAMJ,0BAA0B,CAC5CE,iBAAiB,EACjBN,gBACF,CAAC;EACD,OAAOE,YAAY,oBAAZA,YAAY,CAAEO,gBAAgB,CACnC,MAAMR,UAAU,CAACS,OAAO,CAACP,UAAU,CAACQ,aAAa,CAAC;IAAEH;EAAM,CAAC,CAAC,CAAC,EAC7D;IAAEI,aAAa,EAAE,CAAC;EAAE,CACtB,CAAC;AACH;AAEA,SAASC,eAAeA,CAA+C;EACrEd,MAAM;EACNE,UAAU;EACVC;AAKF,CAAC,EAA0C;EACzC,OAAO;IACLY,SAAS,EAAEf,MAAM,CAACI,UAAU,CAACY,IAAI;IACjC,GAAGhB,MAAM;IACTiB,cAAc,EAAE,QAAQ;IACxBlB,SAAS,EAAE,MAAOU,KAA8B,IAAK;MACnD,MAAMS,QAAQ,GAAG,MAAMnB,SAAS,CAAC;QAC/BC,MAAM;QACNC,gBAAgB,EAAEQ,KAAK;QACvBP,UAAU;QACVC;MACF,CAAC,CAAC;MACF,OAAO;QACLgB,KAAK,EAAE,CAAAD,QAAQ,oBAARA,QAAQ,CAAEE,IAAI,CAACC,QAAQ,KAAI,EAAE;QACpCC,KAAK,EAAE,CAAAJ,QAAQ,oBAARA,QAAQ,CAAEE,IAAI,CAACG,QAAQ,CAACD,KAAK,KAAI;MAC1C,CAAC;IACH;EACF,CAAC;AACH;AAEA,SAASE,eAAeA,CAA+C;EACrExB,MAAM;EACNE,UAAU;EACVC;AAKF,CAAC,EAA0C;EACzC,MAAM;IAAEC;EAAW,CAAC,GAAGJ,MAAM;EAE7B,OAAO;IACLe,SAAS,EAAEX,UAAU,CAACY,IAAI;IAC1B,GAAGhB,MAAM;IACTiB,cAAc,EAAE,QAAQ;IACxBlB,SAAS,EAAE,MAAOU,KAA8B,IAAK;MACnD,MAAMS,QAAQ,GAAG,MAAMnB,SAAS,CAAC;QAC/BC,MAAM;QACNC,gBAAgB,EAAEQ,KAAK;QACvBP,UAAU;QACVC;MACF,CAAC,CAAC;MACF,OAAO;QACLgB,KAAK,EAAE,CAAAD,QAAQ,oBAARA,QAAQ,CAAEE,IAAI,CAACC,QAAQ,KAAI,EAAE;QACpCI,MAAM,EAAEP,QAAQ,oBAARA,QAAQ,CAAEE,IAAI,CAACG,QAAQ,CAACG,OAAO,CAACC,IAAI;QAC5CL,KAAK,EAAE,CAAAJ,QAAQ,oBAARA,QAAQ,CAAEE,IAAI,CAACG,QAAQ,CAACD,KAAK,KAAI;MAC1C,CAAC;IACH;EACF,CAAC;AACH;AAEO,SAASM,6BAA6BA,CAAA,EAAgC;EAC3E,MAAMC,gBAAgB,GAAG,IAAAC,kCAAmB,EAAC,CAAC;EAC9C,MAAM;IAAE5B,UAAU;IAAEC;EAAa,CAAC,GAAG,IAAA4B,kCAAuB,EAAC,CAAC;EAE9D,OACE/B,MAAwC,IACrC;IACH,MAAMgC,gBAAwD,GAC5DhC,MAAM,CAACI,UAAU,CAACQ,aAAa,CAACK,cAAc,KAAK,QAAQ,GACvDH,eAAe,CAAC;MAAEd,MAAM;MAAEE,UAAU;MAAEC;IAAa,CAAC,CAAC,GACrDqB,eAAe,CAAC;MAAExB,MAAM;MAAEE,UAAU;MAAEC;IAAa,CAAC,CAAC;IAE3D,OAAO0B,gBAAgB,CAACG,gBAAgB,CAAC;EAC3C,CAAC;AACH;AAEO,SAASC,uBAAuBA,CAGrCjC,MAAwC,EAAyB;EACjE,MAAMkC,0BAA0B,GAAGN,6BAA6B,CAAC,CAAC;EAElE,MAAM,CAACO,UAAU,CAAC,GAAG,IAAAC,eAAQ,EAAC,MAAMF,0BAA0B,CAAOlC,MAAM,CAAC,CAAC;EAE7E,OAAOmC,UAAU;AACnB;AAEA,SAAS3B,wBAAwBA,CAC/BP,gBAA6B,EACV;EAAA,IAAAoC,qBAAA;EACnB,OAAO;IACLC,MAAM,EAAE,CAAC,CAAC;IACVC,IAAI,GAAAF,qBAAA,GAAEpC,gBAAgB,CAACsC,IAAI,qBAArBF,qBAAA,CAAuBG,GAAG,CAAED,IAAI,KAAM;MAC1CE,SAAS,EAAEF,IAAI,CAACE,SAAS;MACzBC,KAAK,EAAEH,IAAI,CAACG,KAAK,CAACC,WAAW,CAAC;IAChC,CAAC,CAAC,CAAC;IACHC,YAAY,EAAE;MACZnB,MAAM,EAAExB,gBAAgB,CAACwB,MAAM;MAC/BoB,KAAK,EAAE5C,gBAAgB,CAAC4C;IAC1B;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["../../../src/model/wixPatternsEssentials.ts"],"sourcesContent":["import type { Essentials, EssentialsOptions } from '@wix/fe-essentials/core';\nimport type { LogParams, ReportProps } from '@wix/fe-essentials/bi';\nimport type { ErrorHandler } from '@wix/fe-essentials/error-handler';\nimport type { Trans, useTranslation } from '@wix/fe-essentials/react';\nimport type { ShowToast } from './toast';\nimport type {\n Environment,\n EnvironmentBi,\n ErrorMonitor,\n Experiments,\n MonitorLogger,\n OnlineManager,\n} from '../services';\nimport type { History } from 'history';\nimport type { QueryCache } from 'react-query/core';\nimport type { FunctionComponent } from 'react';\nimport type { DataCapsule } from './dataCapsule';\nimport { HttpClient } from './httpClient';\n\nexport type OnSidePanelOpen = (listener: () => void) => {\n remove(): void;\n};\n\nexport type CloseSidePanel = () => unknown;\n\nexport interface BiLogger {\n report(reportProps: ReportProps): Promise<any>;\n}\n\nexport interface CairoBILoggerFactory {\n updateDefaults(params: LogParams): this;\n logger(): BiLogger;\n}\n\nexport type PageLocation = {\n pageId: string;\n pathname: string;\n search?: string;\n hash?: string;\n};\n\nexport type OnNavigationPause = () => { resume(): void };\nexport type OnNavigationCallback = (pause: OnNavigationPause) => void;\nexport type OnNavigation = (callback: OnNavigationCallback) => {\n remove(): void;\n};\n\nexport type NavigateToObject = {\n pageId: string;\n relativeUrl?: string;\n appState?: string;\n referrer?: string;\n};\nexport type NavigateOptions = { state?: any };\nexport type NavigateToFunc = (to: NavigateToObject) => void;\n\nexport type BeforeUnloadResponse = {\n remove: () => void;\n};\nexport type OnBeforeUnload = (\n callback: (event: Event) => void,\n) => BeforeUnloadResponse;\n\nexport interface HostContainerExtension {\n appId?: string;\n componentId: string;\n title?: string;\n menuItem?: {\n IconComponent?: FunctionComponent;\n structuredAction: (params?: Record<string, any>) => unknown;\n };\n Extension?: React.ComponentType;\n}\nexport type GetExtensions = () =>\n | HostContainerExtension[]\n | Promise<HostContainerExtension[]>;\ninterface HostContainer {\n getExtensions: GetExtensions;\n}\n\nexport type GetHostContainer = (hostContainerId: string) => HostContainer;\n\ntype CreateEssentials = (options: EssentialsOptions) => {\n i18n: Essentials['i18n'];\n dataCapsule: Essentials['dataCapsule'];\n biLoggerFactory?: () => CairoBILoggerFactory;\n errorMonitor: ErrorMonitor;\n fedopsLogger?: MonitorLogger;\n experiments?: Experiments;\n};\nexport type CreateComponentSettings = (container: {\n httpClient: HttpClient;\n queryCache: QueryCache;\n environment: Environment;\n createEssentials: CreateEssentials;\n}) => (options: { namespace: string }) => DataCapsule;\n\nexport interface PatternsErrorHandler {\n withErrorHandler: ErrorHandler['withErrorHandler'];\n getResolvedError?: ErrorHandler['getResolvedError'];\n showError?: ErrorHandler['showError'];\n}\n\nexport interface WixPatternsEssentials {\n httpClient: HttpClient;\n /** A `ErrorMonitor` instance `@wix/fe-essentials/error-monitor` */\n errorMonitor: ErrorMonitor;\n /** A `Experiments` instance `@wix/fe-essentials/experiments` */\n experiments: Experiments;\n errorHandler?: PatternsErrorHandler;\n biLogger?: BiLogger | null;\n /**\n * A function that returns the shape `{ i18n }` - should be compatible with `{createEssentials} from '@wix/fe-essentials'` */\n createEssentials: CreateEssentials;\n /** A `DataCapsule` to store component-level settings such as `Views` */\n createComponentSettings?: CreateComponentSettings;\n /** The user's environment\n * - `language` - preferable language for the user\n * - `artifactId` - App level identifier, usually the artifact ID\n * - `componentId` - Component/page level identifier (Optional)\n * - `componentName` - Readable component/page name (Optional)\n */\n environment: Pick<Environment, 'language'> &\n Partial<Omit<Environment, 'language'>> & { uiLibVersion?: string };\n environmentBI: EnvironmentBi;\n /** `useTranslation` hook from `react-i18next` or `@wix/fe-essentials/react` */\n useTranslation: typeof useTranslation;\n /** `Trans` component from `react-i18next` or `@wix/fe-essentials/react */\n Trans: typeof Trans;\n user: {\n permissions: string[];\n };\n /** `useExperiments` hook from `@wix/yoshi-flow-bm` or `@wix/fe-essentials/react` */\n useExperiments: () => {\n ready: boolean;\n experiments: {\n enabled: (key: string) => boolean;\n };\n };\n usePageLocation?: () => PageLocation;\n /** A function that shows a global toast. For BM usage, it should be `showToast` from `business-manager-api` */\n showToast?: ShowToast;\n /** A function to perform a navigation to a given pageId */\n navigateTo?: NavigateToFunc;\n useAppLoaded?: () => void;\n onSidePanelOpen?: OnSidePanelOpen;\n closeSidePanel?: CloseSidePanel;\n /** Custom [history](https://github.com/remix-run/history/tree/v5.3.0/packages/history) instance to sync custom consumer navigations with Cairo navigations */\n history?: History;\n /** An optional query cache instance for controlling the cache from other modules */\n queryCache?: QueryCache;\n /** A function that interrupts a navigation to another app inside wix platforms */\n onNavigation?: OnNavigation;\n getHostContainer?: GetHostContainer;\n onlineManager?: OnlineManager;\n /**\n * Deals with dirty state by setting up a listener that triggers a confirmation dialog when a user attempts to leave a page. The event listener is removed upon component unmount.\n * @param callback - called on navigation with an event object. Use event.preventDefault() within the callback to display the dialog.\n * @returns { remove: () => void } - object that includes a remove method. You can use this method to remove the listener whenever necessary.\n */\n onBeforeUnload?: OnBeforeUnload;\n}\n\nexport interface WixPatternsEssentialsOverrides\n extends Omit<Partial<WixPatternsEssentials>, 'environment'> {\n environment: Partial<WixPatternsEssentials['environment']>;\n}\n\nexport type ContextType = 'ACCOUNT' | 'SITE';\n"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["../../../src/model/wixPatternsEssentials.ts"],"sourcesContent":["import type { Essentials, EssentialsOptions } from '@wix/fe-essentials/core';\nimport type { LogParams, ReportProps } from '@wix/fe-essentials/bi';\nimport type { ErrorHandler } from '@wix/fe-essentials/error-handler';\nimport type { Trans, useTranslation } from '@wix/fe-essentials/react';\nimport type { ShowToast } from './toast';\nimport type {\n Environment,\n EnvironmentBi,\n ErrorMonitor,\n Experiments,\n MonitorLogger,\n OnlineManager,\n} from '../services';\nimport type { History } from 'history';\nimport type { QueryCache } from 'react-query/core';\nimport type { FunctionComponent } from 'react';\nimport type { DataCapsule } from './dataCapsule';\nimport { HttpClient } from './httpClient';\n\nexport type OnSidePanelOpen = (listener: () => void) => {\n remove(): void;\n};\n\nexport type CloseSidePanel = () => unknown;\n\nexport interface BiLogger {\n report(reportProps: ReportProps): Promise<any>;\n}\n\nexport interface CairoBILoggerFactory {\n updateDefaults(params: LogParams): this;\n logger(): BiLogger;\n}\n\nexport type PageLocation = {\n pageId: string;\n pathname: string;\n search?: string;\n hash?: string;\n};\n\nexport type OnNavigationPause = () => { resume(): void };\nexport type OnNavigationCallback = (pause: OnNavigationPause) => void;\nexport type OnNavigation = (callback: OnNavigationCallback) => {\n remove(): void;\n};\n\nexport type NavigateToObject = {\n pageId: string;\n relativeUrl?: string;\n appState?: string;\n referrer?: string;\n};\nexport type NavigateOptions = { state?: any };\nexport type NavigateToFunc = (to: NavigateToObject) => void;\n\nexport type BeforeUnloadResponse = {\n remove: () => void;\n};\nexport type OnBeforeUnload = (\n callback: (event: Event) => void,\n) => BeforeUnloadResponse;\n\nexport interface HostContainerExtension {\n appId?: string;\n componentId: string;\n title?: string;\n menuItem?: {\n IconComponent?: FunctionComponent;\n structuredAction: (params?: Record<string, any>) => unknown;\n };\n Extension?: React.ComponentType;\n}\nexport type GetExtensions = () =>\n | HostContainerExtension[]\n | Promise<HostContainerExtension[]>;\ninterface HostContainer {\n getExtensions: GetExtensions;\n}\n\nexport type GetHostContainer = (hostContainerId: string) => HostContainer;\n\ntype CreateEssentials = (options: EssentialsOptions) => {\n i18n: Essentials['i18n'];\n dataCapsule: Essentials['dataCapsule'];\n biLoggerFactory?: () => CairoBILoggerFactory;\n errorMonitor: ErrorMonitor;\n fedopsLogger?: MonitorLogger;\n experiments?: Experiments;\n};\nexport type CreateComponentSettings = (container: {\n httpClient: HttpClient;\n queryCache: QueryCache;\n environment: Environment;\n createEssentials: CreateEssentials;\n}) => (options: { namespace: string }) => DataCapsule;\n\nexport interface PatternsErrorHandler {\n withErrorHandler: ErrorHandler['withErrorHandler'];\n getResolvedError?: ErrorHandler['getResolvedError'];\n showError?: ErrorHandler['showError'];\n reportRetryAttempt?: ErrorHandler['reportRetryAttempt'];\n}\n\nexport interface WixPatternsEssentials {\n httpClient: HttpClient;\n /** A `ErrorMonitor` instance `@wix/fe-essentials/error-monitor` */\n errorMonitor: ErrorMonitor;\n /** A `Experiments` instance `@wix/fe-essentials/experiments` */\n experiments: Experiments;\n errorHandler?: PatternsErrorHandler;\n biLogger?: BiLogger | null;\n /**\n * A function that returns the shape `{ i18n }` - should be compatible with `{createEssentials} from '@wix/fe-essentials'` */\n createEssentials: CreateEssentials;\n /** A `DataCapsule` to store component-level settings such as `Views` */\n createComponentSettings?: CreateComponentSettings;\n /** The user's environment\n * - `language` - preferable language for the user\n * - `artifactId` - App level identifier, usually the artifact ID\n * - `componentId` - Component/page level identifier (Optional)\n * - `componentName` - Readable component/page name (Optional)\n */\n environment: Pick<Environment, 'language'> &\n Partial<Omit<Environment, 'language'>> & { uiLibVersion?: string };\n environmentBI: EnvironmentBi;\n /** `useTranslation` hook from `react-i18next` or `@wix/fe-essentials/react` */\n useTranslation: typeof useTranslation;\n /** `Trans` component from `react-i18next` or `@wix/fe-essentials/react */\n Trans: typeof Trans;\n user: {\n permissions: string[];\n };\n /** `useExperiments` hook from `@wix/yoshi-flow-bm` or `@wix/fe-essentials/react` */\n useExperiments: () => {\n ready: boolean;\n experiments: {\n enabled: (key: string) => boolean;\n };\n };\n usePageLocation?: () => PageLocation;\n /** A function that shows a global toast. For BM usage, it should be `showToast` from `business-manager-api` */\n showToast?: ShowToast;\n /** A function to perform a navigation to a given pageId */\n navigateTo?: NavigateToFunc;\n useAppLoaded?: () => void;\n onSidePanelOpen?: OnSidePanelOpen;\n closeSidePanel?: CloseSidePanel;\n /** Custom [history](https://github.com/remix-run/history/tree/v5.3.0/packages/history) instance to sync custom consumer navigations with Cairo navigations */\n history?: History;\n /** An optional query cache instance for controlling the cache from other modules */\n queryCache?: QueryCache;\n /** A function that interrupts a navigation to another app inside wix platforms */\n onNavigation?: OnNavigation;\n getHostContainer?: GetHostContainer;\n onlineManager?: OnlineManager;\n /**\n * Deals with dirty state by setting up a listener that triggers a confirmation dialog when a user attempts to leave a page. The event listener is removed upon component unmount.\n * @param callback - called on navigation with an event object. Use event.preventDefault() within the callback to display the dialog.\n * @returns { remove: () => void } - object that includes a remove method. You can use this method to remove the listener whenever necessary.\n */\n onBeforeUnload?: OnBeforeUnload;\n}\n\nexport interface WixPatternsEssentialsOverrides\n extends Omit<Partial<WixPatternsEssentials>, 'environment'> {\n environment: Partial<WixPatternsEssentials['environment']>;\n}\n\nexport type ContextType = 'ACCOUNT' | 'SITE';\n"],"mappings":"","ignoreList":[]}
|
|
@@ -207,13 +207,16 @@ class DataExtensionSchemaService {
|
|
|
207
207
|
}
|
|
208
208
|
async fetchSchemas(fqdn) {
|
|
209
209
|
const {
|
|
210
|
-
httpClient
|
|
210
|
+
httpClient,
|
|
211
|
+
errorHandler
|
|
211
212
|
} = this;
|
|
212
|
-
const res = await httpClient.request((0, _http.listDataExtensionSchemas)({
|
|
213
|
+
const res = await errorHandler.withErrorHandler(() => httpClient.request((0, _http.listDataExtensionSchemas)({
|
|
213
214
|
fqdn,
|
|
214
215
|
namespaces: [],
|
|
215
216
|
fields: [_types.RequestedField.ARCHIVED]
|
|
216
|
-
}))
|
|
217
|
+
})), {
|
|
218
|
+
errorCodesMap: {}
|
|
219
|
+
});
|
|
217
220
|
return res.data;
|
|
218
221
|
}
|
|
219
222
|
async _createDataExtensionSchema(schema) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_types","require","_http","_updateDataExtensionSchemaErrors","_createDataExtensionSchemaErrors","DataExtensionSchemaService","toSchemaType","type","format","maxLength","items","Error","toCustomType","field","hasOwnProperty","_field$items","toCustomField","schema","key","_schema$jsonSchema","property","jsonSchema","properties","title","id","constructor","params","_defineProperty2","default","httpClient","translate","errorHandler","addCustomField","_params$schema","_params$schema2","_params$schema3","userFieldsNamespace","form","name","readApps","readUsers","writeApps","writeUsers","containsPii","fqdn","permissions","read","write","filterable","namespace","enabled","_updateDataExtensionSchema","_createDataExtensionSchema","archiveCustomField","_params$schema4","_params$schema5","fetchSchemas","res","request","listDataExtensionSchemas","namespaces","fields","RequestedField","ARCHIVED","data","withErrorHandler","createDataExtensionSchema","dataExtensionSchema","errorCodesMap","createDataExtensionSchemaErrors","then","updateDataExtensionSchema","updateDataExtensionSchemaErrors","exports"],"sources":["../../../../src/services/DataExtensionService/dataExtensionService.ts"],"sourcesContent":["import {\n DataExtensionSchema,\n RequestedField,\n} from '@wix/bex-utils/@wix/ambassador-data-extensions-v1-data-extension-schema/types';\nimport {\n createDataExtensionSchema,\n listDataExtensionSchemas,\n updateDataExtensionSchema,\n} from '@wix/bex-utils/@wix/ambassador-data-extensions-v1-data-extension-schema/http';\nimport { CustomFieldForm, WixPatternsContainer } from '../../state';\nimport { PatternsErrorHandler, WixPatternsEssentials } from '../../model';\nimport { updateDataExtensionSchemaErrors } from './updateDataExtensionSchemaErrors';\nimport { createDataExtensionSchemaErrors } from './createDataExtensionSchemaErrors';\n\nexport interface DataExtensionSchemaServiceParams {\n readonly httpClient: WixPatternsEssentials['httpClient'];\n readonly translate: WixPatternsContainer['translate'];\n readonly errorHandler: PatternsErrorHandler;\n}\n\n// server types\nexport type DataExtensionType =\n | 'string'\n | 'number'\n | 'integer'\n | 'boolean'\n | 'array'\n | 'object';\n\nexport type DataExtensionPermission =\n | 'apps'\n | 'owning-app'\n | 'users'\n | 'users-of-users';\n\ninterface DataExtensionFieldItems\n extends Partial<Omit<DataExtensionField, 'type' | 'maxLength'>> {\n type: Omit<DataExtensionType, 'array'>;\n maxLength: number;\n}\nexport interface DataExtensionField {\n id: string;\n type?: DataExtensionType;\n format?: 'date-time' | 'date' | 'single-line' | 'uri' | string;\n title?: string;\n maxLength?: number;\n enum?: string[];\n 'x-wix-archived'?: boolean;\n 'x-wix-filterable'?: boolean;\n 'x-wix-created-date': string;\n 'x-wix-object-type'?: string;\n 'x-wix-permissions': {\n read: DataExtensionPermission[];\n write: DataExtensionPermission[];\n };\n properties?: Record<string, any>;\n items?: DataExtensionFieldItems;\n 'x-wix-pii'?: { enabled: boolean };\n}\n\n// client types\nexport type CustomFieldType =\n | 'shortText'\n | 'longText'\n | 'url'\n | 'date'\n | 'dateTime'\n | 'integer'\n | 'decimal'\n | 'checkbox'\n | 'dropdown'\n | 'files'\n | 'multiSelect';\n\nexport type CustomFieldOrigin =\n | 'Custom columns panel'\n | 'Custom fields panel'\n | 'Custom fields widget'\n | 'external';\n\nexport interface ExtendedFieldsDataMap {\n [key: string]: any;\n}\n\nexport interface ExtendedFields {\n _type?: 'ExtendedFields';\n /**\n * Data Extensions extended fields\n * Key: Namespace\n * Value: extended fields data in Struct format\n */\n namespaces?: {\n _user_fields?: ExtendedFieldsDataMap | undefined;\n [key: string]: ExtendedFieldsDataMap | undefined;\n };\n}\n\nexport type CustomFieldOwner = 'user' | 'app';\n\nexport interface CustomField {\n id: string;\n type: CustomFieldType;\n label?: string;\n maxLength?: number;\n options?: string[];\n editable: boolean;\n filterable?: boolean;\n owner: CustomFieldOwner;\n properties?: Record<string, string>;\n namespace: string;\n permissions?: {\n read?: DataExtensionPermission[];\n write?: DataExtensionPermission[];\n };\n}\n\nexport interface AddFieldParams {\n schema?: DataExtensionSchema;\n fqdn: string;\n form: CustomFieldForm;\n filterable?: boolean;\n}\n\nexport interface ArchiveFieldParams {\n schema?: DataExtensionSchema;\n fqdn: string;\n id: string;\n}\n\nexport class DataExtensionSchemaService {\n readonly httpClient: WixPatternsEssentials['httpClient'];\n readonly translate: WixPatternsContainer['translate'];\n readonly errorHandler;\n\n readonly userFieldsNamespace = '_user_fields';\n\n static toSchemaType(type?: CustomFieldType) {\n switch (type) {\n case 'shortText':\n return {\n type: 'string',\n format: 'single-line',\n maxLength: 120,\n };\n case 'longText':\n return {\n type: 'string',\n maxLength: 200,\n };\n case 'url':\n return {\n type: 'string',\n format: 'uri',\n maxLength: 256,\n };\n case 'date':\n return {\n type: 'string',\n format: 'date',\n };\n case 'dateTime':\n return {\n type: 'string',\n format: 'date-time',\n };\n case 'integer':\n return {\n type: 'integer',\n };\n case 'decimal':\n return {\n type: 'number',\n };\n case 'checkbox':\n return {\n type: 'boolean',\n };\n case 'dropdown':\n return {\n type: 'array',\n items: {\n type: 'string',\n },\n };\n default:\n throw new Error(`Unexpected type: ${type}`);\n }\n }\n\n static toCustomType(field: DataExtensionField): CustomFieldType | undefined {\n switch (field.type) {\n case 'string':\n if (field.hasOwnProperty('enum')) {\n return 'dropdown';\n }\n switch (field.format) {\n case 'date-time':\n return 'dateTime';\n case 'uri':\n return 'url';\n case 'date':\n return 'date';\n case 'single-line':\n return 'shortText';\n default:\n return 'longText';\n }\n case 'number':\n return 'decimal';\n case 'integer':\n return 'integer';\n case 'boolean':\n return 'checkbox';\n case 'array': {\n if (field.items?.['x-wix-object-type'] === 'FILE/V1') {\n return 'files';\n }\n return 'multiSelect';\n }\n case 'object': {\n if (field['x-wix-object-type'] === 'FILE/V1') {\n return 'files';\n }\n return 'dropdown';\n }\n default:\n return;\n }\n }\n\n static toCustomField(\n schema: DataExtensionSchema,\n key: string,\n ): DataExtensionField | undefined {\n const property: DataExtensionField = schema.jsonSchema?.properties?.[key];\n\n if (!property || typeof property !== 'object') {\n return;\n }\n\n if (\n typeof property.title !== 'string' ||\n typeof property.type !== 'string' ||\n typeof property['x-wix-permissions'] !== 'object'\n ) {\n return;\n }\n\n return { ...property, id: key };\n }\n\n constructor(params: DataExtensionSchemaServiceParams) {\n this.httpClient = params.httpClient;\n this.translate = params.translate;\n this.errorHandler = params.errorHandler;\n }\n addCustomField(params: AddFieldParams) {\n const { userFieldsNamespace } = this;\n const {\n form: {\n key,\n name,\n readApps,\n readUsers,\n writeApps,\n writeUsers,\n containsPii,\n },\n fqdn,\n } = params;\n const type = DataExtensionSchemaService.toSchemaType(params.form.type);\n\n const permissions = {\n read: [\n 'users',\n ...(readUsers ? ['users-of-users'] : []),\n ...(readApps ? ['apps'] : []),\n ],\n write: [\n 'users',\n ...(writeUsers ? ['users-of-users'] : []),\n ...(writeApps ? ['apps'] : []),\n ],\n };\n\n const filterable = params.filterable ? { 'x-wix-filterable': true } : {};\n\n const schema: DataExtensionSchema = {\n fqdn,\n namespace: userFieldsNamespace,\n ...params.schema,\n jsonSchema: {\n properties: {\n ...params.schema?.jsonSchema?.properties,\n [key]: {\n ...params.schema?.jsonSchema?.properties[key],\n title: name,\n ...(containsPii ? { 'x-wix-pii': { enabled: true } } : {}),\n ...type,\n 'x-wix-permissions': permissions,\n ...filterable,\n },\n },\n },\n };\n\n return params.schema?.id\n ? this._updateDataExtensionSchema(schema)\n : this._createDataExtensionSchema(schema);\n }\n\n archiveCustomField(params: ArchiveFieldParams) {\n const { userFieldsNamespace } = this;\n const { id, fqdn } = params;\n\n const schema: DataExtensionSchema = {\n fqdn,\n namespace: userFieldsNamespace,\n ...params.schema,\n jsonSchema: {\n properties: {\n ...params.schema?.jsonSchema?.properties,\n [id]: {\n ...params.schema?.jsonSchema?.properties[id],\n 'x-wix-archived': true,\n },\n },\n },\n };\n return this._updateDataExtensionSchema(schema);\n }\n\n async fetchSchemas(fqdn: string) {\n const { httpClient } = this;\n\n const res = await httpClient.request(\n listDataExtensionSchemas({\n fqdn,\n namespaces: [],\n fields: [RequestedField.ARCHIVED],\n }),\n );\n\n return res.data;\n }\n\n private async _createDataExtensionSchema(schema: DataExtensionSchema) {\n const { httpClient, errorHandler } = this;\n\n return errorHandler\n .withErrorHandler(\n () =>\n httpClient.request(\n createDataExtensionSchema({ dataExtensionSchema: schema }),\n ),\n {\n errorCodesMap: createDataExtensionSchemaErrors({\n translate: this.translate,\n }),\n },\n )\n .then((res) => res.data);\n }\n\n private async _updateDataExtensionSchema(schema: DataExtensionSchema) {\n const { httpClient, errorHandler } = this;\n return errorHandler\n .withErrorHandler(\n () =>\n httpClient.request(\n updateDataExtensionSchema({ dataExtensionSchema: schema }),\n ),\n {\n errorCodesMap: updateDataExtensionSchemaErrors({\n translate: this.translate,\n }),\n },\n )\n .then((res) => res.data);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_types","require","_http","_updateDataExtensionSchemaErrors","_createDataExtensionSchemaErrors","DataExtensionSchemaService","toSchemaType","type","format","maxLength","items","Error","toCustomType","field","hasOwnProperty","_field$items","toCustomField","schema","key","_schema$jsonSchema","property","jsonSchema","properties","title","id","constructor","params","_defineProperty2","default","httpClient","translate","errorHandler","addCustomField","_params$schema","_params$schema2","_params$schema3","userFieldsNamespace","form","name","readApps","readUsers","writeApps","writeUsers","containsPii","fqdn","permissions","read","write","filterable","namespace","enabled","_updateDataExtensionSchema","_createDataExtensionSchema","archiveCustomField","_params$schema4","_params$schema5","fetchSchemas","res","withErrorHandler","request","listDataExtensionSchemas","namespaces","fields","RequestedField","ARCHIVED","errorCodesMap","data","createDataExtensionSchema","dataExtensionSchema","createDataExtensionSchemaErrors","then","updateDataExtensionSchema","updateDataExtensionSchemaErrors","exports"],"sources":["../../../../src/services/DataExtensionService/dataExtensionService.ts"],"sourcesContent":["import {\n DataExtensionSchema,\n RequestedField,\n} from '@wix/bex-utils/@wix/ambassador-data-extensions-v1-data-extension-schema/types';\nimport {\n createDataExtensionSchema,\n listDataExtensionSchemas,\n updateDataExtensionSchema,\n} from '@wix/bex-utils/@wix/ambassador-data-extensions-v1-data-extension-schema/http';\nimport { CustomFieldForm, WixPatternsContainer } from '../../state';\nimport { PatternsErrorHandler, WixPatternsEssentials } from '../../model';\nimport { updateDataExtensionSchemaErrors } from './updateDataExtensionSchemaErrors';\nimport { createDataExtensionSchemaErrors } from './createDataExtensionSchemaErrors';\n\nexport interface DataExtensionSchemaServiceParams {\n readonly httpClient: WixPatternsEssentials['httpClient'];\n readonly translate: WixPatternsContainer['translate'];\n readonly errorHandler: PatternsErrorHandler;\n}\n\n// server types\nexport type DataExtensionType =\n | 'string'\n | 'number'\n | 'integer'\n | 'boolean'\n | 'array'\n | 'object';\n\nexport type DataExtensionPermission =\n | 'apps'\n | 'owning-app'\n | 'users'\n | 'users-of-users';\n\ninterface DataExtensionFieldItems\n extends Partial<Omit<DataExtensionField, 'type' | 'maxLength'>> {\n type: Omit<DataExtensionType, 'array'>;\n maxLength: number;\n}\nexport interface DataExtensionField {\n id: string;\n type?: DataExtensionType;\n format?: 'date-time' | 'date' | 'single-line' | 'uri' | string;\n title?: string;\n maxLength?: number;\n enum?: string[];\n 'x-wix-archived'?: boolean;\n 'x-wix-filterable'?: boolean;\n 'x-wix-created-date': string;\n 'x-wix-object-type'?: string;\n 'x-wix-permissions': {\n read: DataExtensionPermission[];\n write: DataExtensionPermission[];\n };\n properties?: Record<string, any>;\n items?: DataExtensionFieldItems;\n 'x-wix-pii'?: { enabled: boolean };\n}\n\n// client types\nexport type CustomFieldType =\n | 'shortText'\n | 'longText'\n | 'url'\n | 'date'\n | 'dateTime'\n | 'integer'\n | 'decimal'\n | 'checkbox'\n | 'dropdown'\n | 'files'\n | 'multiSelect';\n\nexport type CustomFieldOrigin =\n | 'Custom columns panel'\n | 'Custom fields panel'\n | 'Custom fields widget'\n | 'external';\n\nexport interface ExtendedFieldsDataMap {\n [key: string]: any;\n}\n\nexport interface ExtendedFields {\n _type?: 'ExtendedFields';\n /**\n * Data Extensions extended fields\n * Key: Namespace\n * Value: extended fields data in Struct format\n */\n namespaces?: {\n _user_fields?: ExtendedFieldsDataMap | undefined;\n [key: string]: ExtendedFieldsDataMap | undefined;\n };\n}\n\nexport type CustomFieldOwner = 'user' | 'app';\n\nexport interface CustomField {\n id: string;\n type: CustomFieldType;\n label?: string;\n maxLength?: number;\n options?: string[];\n editable: boolean;\n filterable?: boolean;\n owner: CustomFieldOwner;\n properties?: Record<string, string>;\n namespace: string;\n permissions?: {\n read?: DataExtensionPermission[];\n write?: DataExtensionPermission[];\n };\n}\n\nexport interface AddFieldParams {\n schema?: DataExtensionSchema;\n fqdn: string;\n form: CustomFieldForm;\n filterable?: boolean;\n}\n\nexport interface ArchiveFieldParams {\n schema?: DataExtensionSchema;\n fqdn: string;\n id: string;\n}\n\nexport class DataExtensionSchemaService {\n readonly httpClient: WixPatternsEssentials['httpClient'];\n readonly translate: WixPatternsContainer['translate'];\n readonly errorHandler;\n\n readonly userFieldsNamespace = '_user_fields';\n\n static toSchemaType(type?: CustomFieldType) {\n switch (type) {\n case 'shortText':\n return {\n type: 'string',\n format: 'single-line',\n maxLength: 120,\n };\n case 'longText':\n return {\n type: 'string',\n maxLength: 200,\n };\n case 'url':\n return {\n type: 'string',\n format: 'uri',\n maxLength: 256,\n };\n case 'date':\n return {\n type: 'string',\n format: 'date',\n };\n case 'dateTime':\n return {\n type: 'string',\n format: 'date-time',\n };\n case 'integer':\n return {\n type: 'integer',\n };\n case 'decimal':\n return {\n type: 'number',\n };\n case 'checkbox':\n return {\n type: 'boolean',\n };\n case 'dropdown':\n return {\n type: 'array',\n items: {\n type: 'string',\n },\n };\n default:\n throw new Error(`Unexpected type: ${type}`);\n }\n }\n\n static toCustomType(field: DataExtensionField): CustomFieldType | undefined {\n switch (field.type) {\n case 'string':\n if (field.hasOwnProperty('enum')) {\n return 'dropdown';\n }\n switch (field.format) {\n case 'date-time':\n return 'dateTime';\n case 'uri':\n return 'url';\n case 'date':\n return 'date';\n case 'single-line':\n return 'shortText';\n default:\n return 'longText';\n }\n case 'number':\n return 'decimal';\n case 'integer':\n return 'integer';\n case 'boolean':\n return 'checkbox';\n case 'array': {\n if (field.items?.['x-wix-object-type'] === 'FILE/V1') {\n return 'files';\n }\n return 'multiSelect';\n }\n case 'object': {\n if (field['x-wix-object-type'] === 'FILE/V1') {\n return 'files';\n }\n return 'dropdown';\n }\n default:\n return;\n }\n }\n\n static toCustomField(\n schema: DataExtensionSchema,\n key: string,\n ): DataExtensionField | undefined {\n const property: DataExtensionField = schema.jsonSchema?.properties?.[key];\n\n if (!property || typeof property !== 'object') {\n return;\n }\n\n if (\n typeof property.title !== 'string' ||\n typeof property.type !== 'string' ||\n typeof property['x-wix-permissions'] !== 'object'\n ) {\n return;\n }\n\n return { ...property, id: key };\n }\n\n constructor(params: DataExtensionSchemaServiceParams) {\n this.httpClient = params.httpClient;\n this.translate = params.translate;\n this.errorHandler = params.errorHandler;\n }\n addCustomField(params: AddFieldParams) {\n const { userFieldsNamespace } = this;\n const {\n form: {\n key,\n name,\n readApps,\n readUsers,\n writeApps,\n writeUsers,\n containsPii,\n },\n fqdn,\n } = params;\n const type = DataExtensionSchemaService.toSchemaType(params.form.type);\n\n const permissions = {\n read: [\n 'users',\n ...(readUsers ? ['users-of-users'] : []),\n ...(readApps ? ['apps'] : []),\n ],\n write: [\n 'users',\n ...(writeUsers ? ['users-of-users'] : []),\n ...(writeApps ? ['apps'] : []),\n ],\n };\n\n const filterable = params.filterable ? { 'x-wix-filterable': true } : {};\n\n const schema: DataExtensionSchema = {\n fqdn,\n namespace: userFieldsNamespace,\n ...params.schema,\n jsonSchema: {\n properties: {\n ...params.schema?.jsonSchema?.properties,\n [key]: {\n ...params.schema?.jsonSchema?.properties[key],\n title: name,\n ...(containsPii ? { 'x-wix-pii': { enabled: true } } : {}),\n ...type,\n 'x-wix-permissions': permissions,\n ...filterable,\n },\n },\n },\n };\n\n return params.schema?.id\n ? this._updateDataExtensionSchema(schema)\n : this._createDataExtensionSchema(schema);\n }\n\n archiveCustomField(params: ArchiveFieldParams) {\n const { userFieldsNamespace } = this;\n const { id, fqdn } = params;\n\n const schema: DataExtensionSchema = {\n fqdn,\n namespace: userFieldsNamespace,\n ...params.schema,\n jsonSchema: {\n properties: {\n ...params.schema?.jsonSchema?.properties,\n [id]: {\n ...params.schema?.jsonSchema?.properties[id],\n 'x-wix-archived': true,\n },\n },\n },\n };\n return this._updateDataExtensionSchema(schema);\n }\n\n async fetchSchemas(fqdn: string) {\n const { httpClient, errorHandler } = this;\n\n const res = await errorHandler.withErrorHandler(\n () =>\n httpClient.request(\n listDataExtensionSchemas({\n fqdn,\n namespaces: [],\n fields: [RequestedField.ARCHIVED],\n }),\n ),\n { errorCodesMap: {} },\n );\n\n return res.data;\n }\n\n private async _createDataExtensionSchema(schema: DataExtensionSchema) {\n const { httpClient, errorHandler } = this;\n\n return errorHandler\n .withErrorHandler(\n () =>\n httpClient.request(\n createDataExtensionSchema({ dataExtensionSchema: schema }),\n ),\n {\n errorCodesMap: createDataExtensionSchemaErrors({\n translate: this.translate,\n }),\n },\n )\n .then((res) => res.data);\n }\n\n private async _updateDataExtensionSchema(schema: DataExtensionSchema) {\n const { httpClient, errorHandler } = this;\n return errorHandler\n .withErrorHandler(\n () =>\n httpClient.request(\n updateDataExtensionSchema({ dataExtensionSchema: schema }),\n ),\n {\n errorCodesMap: updateDataExtensionSchemaErrors({\n translate: this.translate,\n }),\n },\n )\n .then((res) => res.data);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createTagErrors","translate","t","visualType","retryFn","applicationError","FQDN_NOT_FOUND","message","action","text","onClick","TAG_NAME_ALREADY_EXISTS","TAGS_REACHED_LIMIT","getTagsReachedLimitErrorMessage","CREATE_ID_EXHAUSTED_RETRY_ATTEMPTS","EXPOSURE_NOT_SUPPORTED","exports"],"sources":["../../../../src/services/tagsService/createTagErrors.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"names":["createTagErrors","translate","t","visualType","retryFn","applicationError","FQDN_NOT_FOUND","message","action","text","onClick","TAG_NAME_ALREADY_EXISTS","TAGS_REACHED_LIMIT","getTagsReachedLimitErrorMessage","CREATE_ID_EXHAUSTED_RETRY_ATTEMPTS","EXPOSURE_NOT_SUPPORTED","exports"],"sources":["../../../../src/services/tagsService/createTagErrors.ts"],"sourcesContent":["import { ErrorCodesMapRequiredApplicationError } from '@wix/fe-essentials/error-handler';\nimport { CreateTagApplicationErrors } from '@wix/bex-utils/@wix/ambassador-os-tags-v1-tag/types';\nimport { TagErrorVisualType } from '../../util';\nimport { Translate } from '..';\n\nexport const createTagErrors = ({\n translate: t,\n visualType = 'toast',\n retryFn,\n}: {\n translate: Translate;\n visualType?: TagErrorVisualType;\n retryFn?: () => void;\n}): ErrorCodesMapRequiredApplicationError<CreateTagApplicationErrors> => {\n return {\n applicationError: {\n FQDN_NOT_FOUND: () => ({\n message:\n visualType === 'toast'\n ? t('cairo.tags.fqdn-not-found.error')\n : t('cairo.tags.fqdn-not-found.manageTagsModal.error'),\n action: {\n text: t('cairo.error.contactSupport.cta'),\n onClick: () => {\n // TODO: contact support\n },\n },\n }),\n TAG_NAME_ALREADY_EXISTS: () => ({\n message: t('cairo.tags.manageTags.modal.list.input.validation.exists'),\n }),\n TAGS_REACHED_LIMIT: () => ({\n message: getTagsReachedLimitErrorMessage({\n visualType,\n translate: t,\n }),\n }),\n CREATE_ID_EXHAUSTED_RETRY_ATTEMPTS: () => ({\n message:\n visualType === 'toast'\n ? t('cairo.tags.collectionPage.toast.create.error')\n : t('cairo.tags.manageTags.modal.toast.create.error'),\n action: {\n text: t('cairo.error.tryAgain.cta'),\n onClick: retryFn,\n },\n }),\n EXPOSURE_NOT_SUPPORTED: false,\n },\n };\n};\n\nexport const getTagsReachedLimitErrorMessage = ({\n visualType,\n translate: t,\n}: {\n visualType: TagErrorVisualType;\n translate: Translate;\n}): string =>\n visualType === 'toast'\n ? t('cairo.tags.popover.creationLimitReached.error')\n : t('cairo.tags.creationLimitReached.error');\n"],"mappings":";;;;AAKO,MAAMA,eAAe,GAAGA,CAAC;EAC9BC,SAAS,EAAEC,CAAC;EACZC,UAAU,GAAG,OAAO;EACpBC;AAKF,CAAC,KAAwE;EACvE,OAAO;IACLC,gBAAgB,EAAE;MAChBC,cAAc,EAAEA,CAAA,MAAO;QACrBC,OAAO,EACLJ,UAAU,KAAK,OAAO,GAClBD,CAAC,CAAC,iCAAiC,CAAC,GACpCA,CAAC,CAAC,iDAAiD,CAAC;QAC1DM,MAAM,EAAE;UACNC,IAAI,EAAEP,CAAC,CAAC,gCAAgC,CAAC;UACzCQ,OAAO,EAAEA,CAAA,KAAM;YACb;UAAA;QAEJ;MACF,CAAC,CAAC;MACFC,uBAAuB,EAAEA,CAAA,MAAO;QAC9BJ,OAAO,EAAEL,CAAC,CAAC,0DAA0D;MACvE,CAAC,CAAC;MACFU,kBAAkB,EAAEA,CAAA,MAAO;QACzBL,OAAO,EAAEM,+BAA+B,CAAC;UACvCV,UAAU;UACVF,SAAS,EAAEC;QACb,CAAC;MACH,CAAC,CAAC;MACFY,kCAAkC,EAAEA,CAAA,MAAO;QACzCP,OAAO,EACLJ,UAAU,KAAK,OAAO,GAClBD,CAAC,CAAC,8CAA8C,CAAC,GACjDA,CAAC,CAAC,gDAAgD,CAAC;QACzDM,MAAM,EAAE;UACNC,IAAI,EAAEP,CAAC,CAAC,0BAA0B,CAAC;UACnCQ,OAAO,EAAEN;QACX;MACF,CAAC,CAAC;MACFW,sBAAsB,EAAE;IAC1B;EACF,CAAC;AACH,CAAC;AAACC,OAAA,CAAAhB,eAAA,GAAAA,eAAA;AAEK,MAAMa,+BAA+B,GAAGA,CAAC;EAC9CV,UAAU;EACVF,SAAS,EAAEC;AAIb,CAAC,KACCC,UAAU,KAAK,OAAO,GAClBD,CAAC,CAAC,+CAA+C,CAAC,GAClDA,CAAC,CAAC,uCAAuC,CAAC;AAACc,OAAA,CAAAH,+BAAA,GAAAA,+BAAA","ignoreList":[]}
|
|
@@ -18,13 +18,15 @@ class TagsService {
|
|
|
18
18
|
getContextFunction(accountFn, siteFn) {
|
|
19
19
|
return this.container.contextType === 'ACCOUNT' ? accountFn : siteFn;
|
|
20
20
|
}
|
|
21
|
-
async listTags(request) {
|
|
21
|
+
async listTags(request, errorCodesMap) {
|
|
22
22
|
const fn = this.getContextFunction(_http.listTagsForAccount, _http.listTags);
|
|
23
23
|
const {
|
|
24
24
|
data: {
|
|
25
25
|
tags = []
|
|
26
26
|
}
|
|
27
|
-
} = await this.httpClient.request(fn(request))
|
|
27
|
+
} = await this.container.errorHandler.withErrorHandler(() => this.httpClient.request(fn(request)), {
|
|
28
|
+
errorCodesMap
|
|
29
|
+
});
|
|
28
30
|
return tags.filter(({
|
|
29
31
|
id,
|
|
30
32
|
name
|
|
@@ -58,12 +60,16 @@ class TagsService {
|
|
|
58
60
|
data: {
|
|
59
61
|
tag
|
|
60
62
|
}
|
|
61
|
-
} = await this.httpClient.request(fn(request))
|
|
63
|
+
} = await this.container.errorHandler.withErrorHandler(() => this.httpClient.request(fn(request)), {
|
|
64
|
+
errorCodesMap: {}
|
|
65
|
+
});
|
|
62
66
|
return tag;
|
|
63
67
|
}
|
|
64
68
|
async deleteTag(request) {
|
|
65
69
|
const fn = this.getContextFunction(_http.deleteTagForAccount, _http.deleteTag);
|
|
66
|
-
return this.httpClient.request(fn(request))
|
|
70
|
+
return this.container.errorHandler.withErrorHandler(() => this.httpClient.request(fn(request)), {
|
|
71
|
+
errorCodesMap: {}
|
|
72
|
+
});
|
|
67
73
|
}
|
|
68
74
|
}
|
|
69
75
|
exports.TagsService = TagsService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_http","require","TagsService","constructor","container","_defineProperty2","default","httpClient","getContextFunction","accountFn","siteFn","contextType","listTags","request","fn","listTagsForAccount","data","tags","
|
|
1
|
+
{"version":3,"names":["_http","require","TagsService","constructor","container","_defineProperty2","default","httpClient","getContextFunction","accountFn","siteFn","contextType","listTags","request","errorCodesMap","fn","listTagsForAccount","data","tags","errorHandler","withErrorHandler","filter","id","name","createTag","tag","createTagForAccount","updateTag","updateTagForAccount","deleteTag","deleteTagForAccount","exports"],"sources":["../../../../src/services/tagsService/tagsService.ts"],"sourcesContent":["import {\n listTags,\n listTagsForAccount,\n createTag,\n createTagForAccount,\n updateTag,\n updateTagForAccount,\n deleteTag,\n deleteTagForAccount,\n} from '@wix/bex-utils/@wix/ambassador-os-tags-v1-tag/http';\nimport {\n CreateTagApplicationErrors,\n CreateTagRequest,\n DeleteTagRequest,\n DeleteTagResponse,\n ListTagsRequest,\n Tag,\n UpdateTagRequest,\n} from '@wix/bex-utils/@wix/ambassador-os-tags-v1-tag/types';\nimport { WixPatternsContainer } from '../../state';\nimport {\n ErrorCodesMap,\n ErrorCodesMapRequiredApplicationError,\n} from '@wix/fe-essentials/error-handler';\n\nexport interface TagsServiceParams {\n readonly container: WixPatternsContainer;\n}\n\nexport class TagsService {\n private readonly container: WixPatternsContainer;\n\n constructor({ container }: TagsServiceParams) {\n this.container = container;\n }\n\n private get httpClient() {\n return this.container.httpClient;\n }\n\n private getContextFunction<T, U>(accountFn: T, siteFn: U): T | U {\n return this.container.contextType === 'ACCOUNT' ? accountFn : siteFn;\n }\n\n async listTags(\n request: ListTagsRequest,\n errorCodesMap: ErrorCodesMap,\n ): Promise<Tag[]> {\n const fn = this.getContextFunction(listTagsForAccount, listTags);\n const {\n data: { tags = [] },\n } = await this.container.errorHandler.withErrorHandler(\n () => this.httpClient.request(fn(request)),\n { errorCodesMap },\n );\n return tags.filter(({ id, name }) => id && name);\n }\n\n async createTag(\n request: CreateTagRequest,\n errorCodesMap: ErrorCodesMapRequiredApplicationError<CreateTagApplicationErrors>,\n ): Promise<Tag> {\n // We cannot use getContextFunction because createTagForAccount and createTag have different return signatures due to error handling\n if (this.container.contextType === 'SITE') {\n const {\n data: { tag },\n } = await this.container.errorHandler.withErrorHandler(\n () => this.httpClient.request(createTag(request)),\n { errorCodesMap },\n );\n return tag!;\n } else {\n const {\n data: { tag },\n } = await this.container.errorHandler.withErrorHandler(\n () => this.httpClient.request(createTagForAccount(request)),\n { errorCodesMap },\n );\n return tag!;\n }\n }\n\n async updateTag(request: UpdateTagRequest): Promise<Tag> {\n const fn = this.getContextFunction(updateTagForAccount, updateTag);\n const {\n data: { tag },\n } = await this.container.errorHandler.withErrorHandler(\n () => this.httpClient.request(fn(request)),\n { errorCodesMap: {} },\n );\n return tag!;\n }\n\n async deleteTag(request: DeleteTagRequest): Promise<DeleteTagResponse> {\n const fn = this.getContextFunction(deleteTagForAccount, deleteTag);\n return this.container.errorHandler.withErrorHandler(\n () => this.httpClient.request(fn(request)),\n { errorCodesMap: {} },\n );\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AA6BO,MAAMC,WAAW,CAAC;EAGvBC,WAAWA,CAAC;IAAEC;EAA6B,CAAC,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA;IAC5C,IAAI,CAACF,SAAS,GAAGA,SAAS;EAC5B;EAEA,IAAYG,UAAUA,CAAA,EAAG;IACvB,OAAO,IAAI,CAACH,SAAS,CAACG,UAAU;EAClC;EAEQC,kBAAkBA,CAAOC,SAAY,EAAEC,MAAS,EAAS;IAC/D,OAAO,IAAI,CAACN,SAAS,CAACO,WAAW,KAAK,SAAS,GAAGF,SAAS,GAAGC,MAAM;EACtE;EAEA,MAAME,QAAQA,CACZC,OAAwB,EACxBC,aAA4B,EACZ;IAChB,MAAMC,EAAE,GAAG,IAAI,CAACP,kBAAkB,CAACQ,wBAAkB,EAAEJ,cAAQ,CAAC;IAChE,MAAM;MACJK,IAAI,EAAE;QAAEC,IAAI,GAAG;MAAG;IACpB,CAAC,GAAG,MAAM,IAAI,CAACd,SAAS,CAACe,YAAY,CAACC,gBAAgB,CACpD,MAAM,IAAI,CAACb,UAAU,CAACM,OAAO,CAACE,EAAE,CAACF,OAAO,CAAC,CAAC,EAC1C;MAAEC;IAAc,CAClB,CAAC;IACD,OAAOI,IAAI,CAACG,MAAM,CAAC,CAAC;MAAEC,EAAE;MAAEC;IAAK,CAAC,KAAKD,EAAE,IAAIC,IAAI,CAAC;EAClD;EAEA,MAAMC,SAASA,CACbX,OAAyB,EACzBC,aAAgF,EAClE;IACd;IACA,IAAI,IAAI,CAACV,SAAS,CAACO,WAAW,KAAK,MAAM,EAAE;MACzC,MAAM;QACJM,IAAI,EAAE;UAAEQ;QAAI;MACd,CAAC,GAAG,MAAM,IAAI,CAACrB,SAAS,CAACe,YAAY,CAACC,gBAAgB,CACpD,MAAM,IAAI,CAACb,UAAU,CAACM,OAAO,CAAC,IAAAW,eAAS,EAACX,OAAO,CAAC,CAAC,EACjD;QAAEC;MAAc,CAClB,CAAC;MACD,OAAOW,GAAG;IACZ,CAAC,MAAM;MACL,MAAM;QACJR,IAAI,EAAE;UAAEQ;QAAI;MACd,CAAC,GAAG,MAAM,IAAI,CAACrB,SAAS,CAACe,YAAY,CAACC,gBAAgB,CACpD,MAAM,IAAI,CAACb,UAAU,CAACM,OAAO,CAAC,IAAAa,yBAAmB,EAACb,OAAO,CAAC,CAAC,EAC3D;QAAEC;MAAc,CAClB,CAAC;MACD,OAAOW,GAAG;IACZ;EACF;EAEA,MAAME,SAASA,CAACd,OAAyB,EAAgB;IACvD,MAAME,EAAE,GAAG,IAAI,CAACP,kBAAkB,CAACoB,yBAAmB,EAAED,eAAS,CAAC;IAClE,MAAM;MACJV,IAAI,EAAE;QAAEQ;MAAI;IACd,CAAC,GAAG,MAAM,IAAI,CAACrB,SAAS,CAACe,YAAY,CAACC,gBAAgB,CACpD,MAAM,IAAI,CAACb,UAAU,CAACM,OAAO,CAACE,EAAE,CAACF,OAAO,CAAC,CAAC,EAC1C;MAAEC,aAAa,EAAE,CAAC;IAAE,CACtB,CAAC;IACD,OAAOW,GAAG;EACZ;EAEA,MAAMI,SAASA,CAAChB,OAAyB,EAA8B;IACrE,MAAME,EAAE,GAAG,IAAI,CAACP,kBAAkB,CAACsB,yBAAmB,EAAED,eAAS,CAAC;IAClE,OAAO,IAAI,CAACzB,SAAS,CAACe,YAAY,CAACC,gBAAgB,CACjD,MAAM,IAAI,CAACb,UAAU,CAACM,OAAO,CAACE,EAAE,CAACF,OAAO,CAAC,CAAC,EAC1C;MAAEC,aAAa,EAAE,CAAC;IAAE,CACtB,CAAC;EACH;AACF;AAACiB,OAAA,CAAA7B,WAAA,GAAAA,WAAA","ignoreList":[]}
|
|
@@ -72,7 +72,7 @@ class AppsState {
|
|
|
72
72
|
const batchRequests = [];
|
|
73
73
|
for (let i = 0; i < numBatches; i++) {
|
|
74
74
|
const batchAppIds = appIds.slice(i * batchSize, (i + 1) * batchSize);
|
|
75
|
-
const request = this.container.httpClient.request((0, _http.queryMarketListing)({
|
|
75
|
+
const request = this.container.errorHandler.withErrorHandler(() => this.container.httpClient.request((0, _http.queryMarketListing)({
|
|
76
76
|
query: {
|
|
77
77
|
filter: {
|
|
78
78
|
appId: batchAppIds,
|
|
@@ -80,7 +80,9 @@ class AppsState {
|
|
|
80
80
|
status: 'APPROVED'
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
|
-
}))
|
|
83
|
+
})), {
|
|
84
|
+
errorCodesMap: {}
|
|
85
|
+
});
|
|
84
86
|
batchRequests.push(request);
|
|
85
87
|
}
|
|
86
88
|
return batchRequests;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_TaskState","require","_mobx","_http","AppsState","constructor","params","_defineProperty2","default","TaskState","container","dataExtension","makeObservable","apps","observable","ref","appNames","computed","init","initTask","runOnce","status","promise","appIds","appSchemas","map","schema","appDefId","filter","Boolean","_fetchApps","length","appRequests","_getAppsRequests","responses","Promise","allSettled","allApps","_aggregateAppsFromResponses","runInAction","sort","_sortByEnglishFirst","reduce","_extractAppNames","a","b","languageCode","acc","app","_app$basicInfo","appId","basicInfo","name","batchSize","numBatches","Math","ceil","batchRequests","i","batchAppIds","slice","request","httpClient","queryMarketListing","query","environment","language","push","forEach","response","data","marketListing","value","exports"],"sources":["../../../src/state/AppsState.ts"],"sourcesContent":["import { TaskState } from './TaskState';\nimport { computed, makeObservable, observable, runInAction } from 'mobx';\nimport { WixPatternsContainer } from './WixPatternsContainer';\nimport { queryMarketListing } from '@wix/bex-utils/@wix/ambassador-devcenter-app-market-listing-v1-market-listing/http';\nimport {\n MarketListing,\n QueryMarketListingResponse,\n} from '@wix/bex-utils/@wix/ambassador-devcenter-app-market-listing-v1-market-listing/types';\nimport { DataExtensionState } from './DataExtensionState';\n\nexport interface AppsStateParams {\n container: WixPatternsContainer;\n dataExtension: DataExtensionState;\n}\n\nexport class AppsState {\n readonly initTask = new TaskState();\n readonly container: WixPatternsContainer;\n readonly dataExtension;\n\n apps: MarketListing[] = [];\n\n constructor(params: Readonly<AppsStateParams>) {\n this.container = params.container;\n this.dataExtension = params.dataExtension;\n\n makeObservable(this, {\n apps: observable.ref,\n appNames: computed,\n });\n }\n\n init() {\n const { initTask, dataExtension } = this;\n\n initTask.runOnce(async () => {\n await dataExtension.initTask.status.promise;\n const appIds = (dataExtension.appSchemas || [])\n .map((schema) => schema.appDefId)\n .filter(Boolean) as string[];\n\n await this._fetchApps(appIds);\n });\n\n return () => {};\n }\n\n async _fetchApps(appIds: string[]) {\n if (!appIds.length) {\n return;\n }\n\n const appRequests = this._getAppsRequests(appIds);\n\n // Don't care if one of the requests fails, we want to have as many apps as possible\n const responses = await Promise.allSettled(appRequests);\n const allApps = this._aggregateAppsFromResponses(responses);\n runInAction(() => {\n this.apps = allApps;\n });\n }\n\n get appNames(): Record<string, string> {\n // Prioritize English, allowing other languages to override it.\n return this.apps\n .sort(this._sortByEnglishFirst)\n .reduce(this._extractAppNames, {});\n }\n\n private _sortByEnglishFirst(a: MarketListing, b: MarketListing): number {\n if (a.languageCode === 'en' && b.languageCode !== 'en') {\n return -1;\n } else if (a.languageCode !== 'en' && b.languageCode === 'en') {\n return 1;\n } else {\n return 0;\n }\n }\n\n private _extractAppNames(\n acc: Record<string, string>,\n app: MarketListing,\n ): Record<string, string> {\n if (app.appId && app.basicInfo?.name) {\n acc[app.appId] = app.basicInfo.name;\n }\n return acc;\n }\n\n private _getAppsRequests(appIds: string[]) {\n // Call the API with batches of 50, since the limit is 100, and we get two languages per app (the requested one + english)\n const batchSize = 50;\n const numBatches = Math.ceil(appIds.length / batchSize);\n\n const batchRequests = [];\n\n for (let i = 0; i < numBatches; i++) {\n const batchAppIds = appIds.slice(i * batchSize, (i + 1) * batchSize);\n const request = this.container.httpClient.request(\n
|
|
1
|
+
{"version":3,"names":["_TaskState","require","_mobx","_http","AppsState","constructor","params","_defineProperty2","default","TaskState","container","dataExtension","makeObservable","apps","observable","ref","appNames","computed","init","initTask","runOnce","status","promise","appIds","appSchemas","map","schema","appDefId","filter","Boolean","_fetchApps","length","appRequests","_getAppsRequests","responses","Promise","allSettled","allApps","_aggregateAppsFromResponses","runInAction","sort","_sortByEnglishFirst","reduce","_extractAppNames","a","b","languageCode","acc","app","_app$basicInfo","appId","basicInfo","name","batchSize","numBatches","Math","ceil","batchRequests","i","batchAppIds","slice","request","errorHandler","withErrorHandler","httpClient","queryMarketListing","query","environment","language","errorCodesMap","push","forEach","response","data","marketListing","value","exports"],"sources":["../../../src/state/AppsState.ts"],"sourcesContent":["import { TaskState } from './TaskState';\nimport { computed, makeObservable, observable, runInAction } from 'mobx';\nimport { WixPatternsContainer } from './WixPatternsContainer';\nimport { queryMarketListing } from '@wix/bex-utils/@wix/ambassador-devcenter-app-market-listing-v1-market-listing/http';\nimport {\n MarketListing,\n QueryMarketListingResponse,\n} from '@wix/bex-utils/@wix/ambassador-devcenter-app-market-listing-v1-market-listing/types';\nimport { DataExtensionState } from './DataExtensionState';\n\nexport interface AppsStateParams {\n container: WixPatternsContainer;\n dataExtension: DataExtensionState;\n}\n\nexport class AppsState {\n readonly initTask = new TaskState();\n readonly container: WixPatternsContainer;\n readonly dataExtension;\n\n apps: MarketListing[] = [];\n\n constructor(params: Readonly<AppsStateParams>) {\n this.container = params.container;\n this.dataExtension = params.dataExtension;\n\n makeObservable(this, {\n apps: observable.ref,\n appNames: computed,\n });\n }\n\n init() {\n const { initTask, dataExtension } = this;\n\n initTask.runOnce(async () => {\n await dataExtension.initTask.status.promise;\n const appIds = (dataExtension.appSchemas || [])\n .map((schema) => schema.appDefId)\n .filter(Boolean) as string[];\n\n await this._fetchApps(appIds);\n });\n\n return () => {};\n }\n\n async _fetchApps(appIds: string[]) {\n if (!appIds.length) {\n return;\n }\n\n const appRequests = this._getAppsRequests(appIds);\n\n // Don't care if one of the requests fails, we want to have as many apps as possible\n const responses = await Promise.allSettled(appRequests);\n const allApps = this._aggregateAppsFromResponses(responses);\n runInAction(() => {\n this.apps = allApps;\n });\n }\n\n get appNames(): Record<string, string> {\n // Prioritize English, allowing other languages to override it.\n return this.apps\n .sort(this._sortByEnglishFirst)\n .reduce(this._extractAppNames, {});\n }\n\n private _sortByEnglishFirst(a: MarketListing, b: MarketListing): number {\n if (a.languageCode === 'en' && b.languageCode !== 'en') {\n return -1;\n } else if (a.languageCode !== 'en' && b.languageCode === 'en') {\n return 1;\n } else {\n return 0;\n }\n }\n\n private _extractAppNames(\n acc: Record<string, string>,\n app: MarketListing,\n ): Record<string, string> {\n if (app.appId && app.basicInfo?.name) {\n acc[app.appId] = app.basicInfo.name;\n }\n return acc;\n }\n\n private _getAppsRequests(appIds: string[]) {\n // Call the API with batches of 50, since the limit is 100, and we get two languages per app (the requested one + english)\n const batchSize = 50;\n const numBatches = Math.ceil(appIds.length / batchSize);\n\n const batchRequests = [];\n\n for (let i = 0; i < numBatches; i++) {\n const batchAppIds = appIds.slice(i * batchSize, (i + 1) * batchSize);\n const request = this.container.errorHandler.withErrorHandler(\n () =>\n this.container.httpClient.request(\n queryMarketListing({\n query: {\n filter: {\n appId: batchAppIds,\n languageCode: [this.container.environment.language, 'en'],\n status: 'APPROVED',\n },\n },\n }),\n ),\n { errorCodesMap: {} },\n );\n batchRequests.push(request);\n }\n\n return batchRequests;\n }\n\n private _aggregateAppsFromResponses(\n responses: PromiseSettledResult<{\n data: QueryMarketListingResponse;\n status: number;\n statusText: string;\n headers: Record<string, string>;\n }>[],\n ) {\n const allApps: MarketListing[] = [];\n\n responses.forEach((response) => {\n if (response.status === 'fulfilled') {\n const {\n data: { marketListing: apps },\n } = response.value;\n if (apps) {\n allApps.push(...apps);\n }\n }\n });\n\n return allApps;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -143,7 +143,9 @@ class BulkSelectState {
|
|
|
143
143
|
const {
|
|
144
144
|
select
|
|
145
145
|
} = this;
|
|
146
|
-
|
|
146
|
+
(0, _mobx.runInAction)(() => {
|
|
147
|
+
select.defaultStatus = select.defaultStatus.start();
|
|
148
|
+
});
|
|
147
149
|
select.startAll();
|
|
148
150
|
}
|
|
149
151
|
selectOneItem(item) {
|
|
@@ -153,7 +155,9 @@ class BulkSelectState {
|
|
|
153
155
|
} = this;
|
|
154
156
|
select.set(item);
|
|
155
157
|
if (!useNewSelectAllLogic) {
|
|
156
|
-
|
|
158
|
+
(0, _mobx.runInAction)(() => {
|
|
159
|
+
select.defaultStatus = select.defaultStatus.start();
|
|
160
|
+
});
|
|
157
161
|
}
|
|
158
162
|
}
|
|
159
163
|
selectOne(key) {
|
|
@@ -175,7 +179,9 @@ class BulkSelectState {
|
|
|
175
179
|
} = this;
|
|
176
180
|
select.delete(keyedItem);
|
|
177
181
|
if (!useNewSelectAllLogic) {
|
|
178
|
-
|
|
182
|
+
(0, _mobx.runInAction)(() => {
|
|
183
|
+
select.defaultStatus = select.defaultStatus.start();
|
|
184
|
+
});
|
|
179
185
|
}
|
|
180
186
|
}
|
|
181
187
|
deselectOne(key) {
|
|
@@ -195,7 +201,9 @@ class BulkSelectState {
|
|
|
195
201
|
const {
|
|
196
202
|
select
|
|
197
203
|
} = this;
|
|
198
|
-
|
|
204
|
+
(0, _mobx.runInAction)(() => {
|
|
205
|
+
select.defaultStatus = select.defaultStatus.start();
|
|
206
|
+
});
|
|
199
207
|
select.clear();
|
|
200
208
|
}
|
|
201
209
|
init() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_SelectState","require","_mobx","_snapshot","_util","_events","BulkSelectState","allSelected","select","defaultStatus","isChecked","hasUnchecked","uncheckedValues","length","constructor","params","_defineProperty2","default","EventEmitter","events","emit","action","isEmptyEnabledItems","deselectAll","selectAll","collection","scrollToTop","disableAutoSelectAllCount","useNewSelectAllLogic","SelectState","keyGetter","item","key","totalSnapshot","Snapshot","expression","effect","result","total","makeObservable","computed","observable","ref","selectOne","selectOneItem","deselectOne","deselectOneItem","resetToDefaults","bound","selectedIds","uncheckedIds","selectedValues","selectedKeyedItems","uncheckedInCurrentCollection","selectedCountOrTotal","checkedSet","indeterminateSet","getCollectionItem","_keyedItemsMap","get","selectedKeys","toArray","filter","status","map","value","selectedCount","allSelectedItemsFetched","items","Set","isIndeterminate","final","keyedItems","finalizeMany","start","startAll","set","keyedItem","delete","clear","init","disposers","addEventListener","emitter","forceUpdate","reaction","syncValues","e","forEach","disposer","id","isEmpty","itemKey","has","toggle","exports"],"sources":["../../../src/state/BulkSelectState.ts"],"sourcesContent":["import { SelectState } from './SelectState';\nimport { action, computed, makeObservable, observable, reaction } from 'mobx';\nimport { CollectionState } from './CollectionState';\nimport { Snapshot } from './snapshot';\nimport { addEventListener, TypedEmitter } from '../util';\nimport { EventEmitter } from 'events';\nimport { KeyedItem } from '../model';\n\nexport interface BulkSelectKeyedItem<T> {\n item: T;\n key: string;\n}\n\nexport interface BulkSelectStateParams<T> {\n collection: CollectionState<T, any>;\n disableAutoSelectAllCount?: boolean;\n maxSelection?: number;\n scrollToTop: () => unknown;\n useNewSelectAllLogic?: boolean;\n}\n\nexport class BulkSelectState<T> {\n readonly select: SelectState<BulkSelectKeyedItem<T>>;\n readonly events = new EventEmitter() as TypedEmitter<{\n openModal: () => unknown;\n closeModal: () => unknown;\n }>;\n readonly collection;\n readonly scrollToTop;\n useNewSelectAllLogic;\n disableAutoSelectAllCount?: boolean;\n totalSnapshot;\n\n get allSelected() {\n return this.select.defaultStatus.isChecked;\n }\n\n get hasUnchecked() {\n return !!this.uncheckedValues.length;\n }\n\n constructor(params: Readonly<BulkSelectStateParams<T>>) {\n this.collection = params.collection;\n this.scrollToTop = params.scrollToTop;\n this.disableAutoSelectAllCount = params.disableAutoSelectAllCount;\n this.useNewSelectAllLogic = params.useNewSelectAllLogic;\n\n this.select = new SelectState<BulkSelectKeyedItem<T>>({\n keyGetter: (item) => item.key,\n });\n\n this.totalSnapshot = new Snapshot({\n expression: () => this.allSelected,\n effect: () => this.collection.result.total,\n });\n\n makeObservable(this, {\n allSelected: computed,\n disableAutoSelectAllCount: observable.ref,\n selectAll: action,\n selectOne: action,\n selectOneItem: action,\n deselectOne: action,\n deselectOneItem: action,\n resetToDefaults: action.bound,\n hasUnchecked: computed,\n selectedIds: computed,\n uncheckedIds: computed,\n selectedValues: computed,\n selectedKeyedItems: computed,\n uncheckedValues: computed,\n uncheckedInCurrentCollection: computed,\n selectedCountOrTotal: computed,\n checkedSet: computed,\n indeterminateSet: computed,\n });\n }\n\n getCollectionItem(key: string) {\n return this.collection.result._keyedItemsMap.get(key);\n }\n\n get selectedIds() {\n return this.select.selectedKeys;\n }\n\n get uncheckedIds() {\n return this.select.toArray\n .filter(({ status }) => !status.isChecked)\n .map(({ value }) => value.key);\n }\n\n get selectedCount(): number {\n return this.select.selectedCount;\n }\n\n get allSelectedItemsFetched() {\n return this.selectedCountOrTotal <= this.collection.result.items.length;\n }\n\n get selectedValues() {\n return this.select.selectedValues.map(({ item }) => item);\n }\n\n get checkedSet() {\n return new Set(\n this.select.toArray\n .filter(({ status }) => status.isChecked)\n .map(({ value }) => value.key),\n );\n }\n\n get indeterminateSet() {\n return new Set(\n this.select.toArray\n .filter(({ status }) => status.isIndeterminate)\n .map(({ value }) => value.key),\n );\n }\n\n get uncheckedValues() {\n return this.select.toArray\n .filter(({ status }) => !status.isChecked)\n .map(({ value }) => value.item);\n }\n\n isChecked(key: string) {\n const { select } = this;\n return select.isChecked(key);\n }\n\n selectAll() {\n const { select, collection } = this;\n select.defaultStatus = select.defaultStatus.final();\n const {\n result: { keyedItems },\n } = collection;\n select.finalizeMany(keyedItems);\n }\n\n deselectAll() {\n const { select } = this;\n select.defaultStatus = select.defaultStatus.start();\n select.startAll();\n }\n\n selectOneItem(item: BulkSelectKeyedItem<T>) {\n const { select, useNewSelectAllLogic } = this;\n\n select.set(item);\n\n if (!useNewSelectAllLogic) {\n select.defaultStatus = select.defaultStatus.start();\n }\n }\n\n selectOne(key: string) {\n const { collection } = this;\n const { result } = collection;\n const keyedItem = result.get(key);\n if (keyedItem) {\n this.selectOneItem(keyedItem);\n }\n }\n\n deselectOneItem(keyedItem: BulkSelectKeyedItem<T>) {\n const { select, useNewSelectAllLogic } = this;\n\n select.delete(keyedItem);\n\n if (!useNewSelectAllLogic) {\n select.defaultStatus = select.defaultStatus.start();\n }\n }\n\n deselectOne(key: string) {\n const { collection } = this;\n const { result } = collection;\n const keyedItem = result.get(key);\n\n if (keyedItem == null) {\n return;\n }\n\n this.deselectOneItem(keyedItem);\n }\n\n openModal = () => {\n this.events.emit('openModal');\n };\n\n closeModal = () => {\n this.events.emit('closeModal');\n };\n\n resetToDefaults() {\n const { select } = this;\n select.defaultStatus = select.defaultStatus.start();\n select.clear();\n }\n\n init() {\n const disposers = [\n this.totalSnapshot.init(),\n addEventListener(this.collection.emitter, 'ready', () => {\n this.totalSnapshot.forceUpdate();\n }),\n reaction(\n () => this.collection.result.keyedItems,\n (keyedItems) => {\n const {\n select,\n allSelected,\n disableAutoSelectAllCount,\n collection: {\n result: { _keyedItemsMap },\n },\n } = this;\n if (allSelected && !disableAutoSelectAllCount) {\n select.syncValues(keyedItems);\n } else {\n select.syncValues(\n select.selectedKeys\n .map(\n (key) =>\n _keyedItemsMap.get(key) as\n | BulkSelectKeyedItem<T>\n | null\n | undefined,\n )\n .filter((e): e is BulkSelectKeyedItem<T> => e != null),\n );\n }\n },\n ),\n ];\n\n return () => {\n disposers.forEach((disposer) => disposer());\n };\n }\n\n get selectedKeyedItems() {\n return this.selectedIds\n .map((id) => this.collection.result.get(id))\n .filter((item): item is KeyedItem<T> => !!item);\n }\n\n get isEmpty() {\n return this.select.isEmpty;\n }\n\n get uncheckedInCurrentCollection() {\n const { uncheckedValues, collection } = this;\n const { itemKey } = collection;\n\n return uncheckedValues.filter((item) =>\n collection.result.has(itemKey(item)),\n );\n }\n\n get selectedCountOrTotal() {\n const {\n allSelected,\n disableAutoSelectAllCount,\n selectedIds,\n useNewSelectAllLogic,\n uncheckedInCurrentCollection,\n collection: {\n result: { total },\n },\n } = this;\n\n if (!allSelected || disableAutoSelectAllCount) {\n return selectedIds.length;\n }\n\n if (useNewSelectAllLogic) {\n return total - uncheckedInCurrentCollection.length;\n }\n\n return total;\n }\n\n toggleIsSelectAll = action(() => {\n const {\n allSelected,\n select: { isEmptyEnabledItems },\n } = this;\n if (allSelected || !isEmptyEnabledItems) {\n this.deselectAll();\n } else {\n this.selectAll();\n }\n });\n\n toggle(keyedItem: BulkSelectKeyedItem<T>) {\n this.select.toggle(keyedItem);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_SelectState","require","_mobx","_snapshot","_util","_events","BulkSelectState","allSelected","select","defaultStatus","isChecked","hasUnchecked","uncheckedValues","length","constructor","params","_defineProperty2","default","EventEmitter","events","emit","action","isEmptyEnabledItems","deselectAll","selectAll","collection","scrollToTop","disableAutoSelectAllCount","useNewSelectAllLogic","SelectState","keyGetter","item","key","totalSnapshot","Snapshot","expression","effect","result","total","makeObservable","computed","observable","ref","selectOne","selectOneItem","deselectOne","deselectOneItem","resetToDefaults","bound","selectedIds","uncheckedIds","selectedValues","selectedKeyedItems","uncheckedInCurrentCollection","selectedCountOrTotal","checkedSet","indeterminateSet","getCollectionItem","_keyedItemsMap","get","selectedKeys","toArray","filter","status","map","value","selectedCount","allSelectedItemsFetched","items","Set","isIndeterminate","final","keyedItems","finalizeMany","runInAction","start","startAll","set","keyedItem","delete","clear","init","disposers","addEventListener","emitter","forceUpdate","reaction","syncValues","e","forEach","disposer","id","isEmpty","itemKey","has","toggle","exports"],"sources":["../../../src/state/BulkSelectState.ts"],"sourcesContent":["import { SelectState } from './SelectState';\nimport {\n action,\n computed,\n makeObservable,\n observable,\n reaction,\n runInAction,\n} from 'mobx';\nimport { CollectionState } from './CollectionState';\nimport { Snapshot } from './snapshot';\nimport { addEventListener, TypedEmitter } from '../util';\nimport { EventEmitter } from 'events';\nimport { KeyedItem } from '../model';\n\nexport interface BulkSelectKeyedItem<T> {\n item: T;\n key: string;\n}\n\nexport interface BulkSelectStateParams<T> {\n collection: CollectionState<T, any>;\n disableAutoSelectAllCount?: boolean;\n maxSelection?: number;\n scrollToTop: () => unknown;\n useNewSelectAllLogic?: boolean;\n}\n\nexport class BulkSelectState<T> {\n readonly select: SelectState<BulkSelectKeyedItem<T>>;\n readonly events = new EventEmitter() as TypedEmitter<{\n openModal: () => unknown;\n closeModal: () => unknown;\n }>;\n readonly collection;\n readonly scrollToTop;\n useNewSelectAllLogic;\n disableAutoSelectAllCount?: boolean;\n totalSnapshot;\n\n get allSelected() {\n return this.select.defaultStatus.isChecked;\n }\n\n get hasUnchecked() {\n return !!this.uncheckedValues.length;\n }\n\n constructor(params: Readonly<BulkSelectStateParams<T>>) {\n this.collection = params.collection;\n this.scrollToTop = params.scrollToTop;\n this.disableAutoSelectAllCount = params.disableAutoSelectAllCount;\n this.useNewSelectAllLogic = params.useNewSelectAllLogic;\n\n this.select = new SelectState<BulkSelectKeyedItem<T>>({\n keyGetter: (item) => item.key,\n });\n\n this.totalSnapshot = new Snapshot({\n expression: () => this.allSelected,\n effect: () => this.collection.result.total,\n });\n\n makeObservable(this, {\n allSelected: computed,\n disableAutoSelectAllCount: observable.ref,\n selectAll: action,\n selectOne: action,\n selectOneItem: action,\n deselectOne: action,\n deselectOneItem: action,\n resetToDefaults: action.bound,\n hasUnchecked: computed,\n selectedIds: computed,\n uncheckedIds: computed,\n selectedValues: computed,\n selectedKeyedItems: computed,\n uncheckedValues: computed,\n uncheckedInCurrentCollection: computed,\n selectedCountOrTotal: computed,\n checkedSet: computed,\n indeterminateSet: computed,\n });\n }\n\n getCollectionItem(key: string) {\n return this.collection.result._keyedItemsMap.get(key);\n }\n\n get selectedIds() {\n return this.select.selectedKeys;\n }\n\n get uncheckedIds() {\n return this.select.toArray\n .filter(({ status }) => !status.isChecked)\n .map(({ value }) => value.key);\n }\n\n get selectedCount(): number {\n return this.select.selectedCount;\n }\n\n get allSelectedItemsFetched() {\n return this.selectedCountOrTotal <= this.collection.result.items.length;\n }\n\n get selectedValues() {\n return this.select.selectedValues.map(({ item }) => item);\n }\n\n get checkedSet() {\n return new Set(\n this.select.toArray\n .filter(({ status }) => status.isChecked)\n .map(({ value }) => value.key),\n );\n }\n\n get indeterminateSet() {\n return new Set(\n this.select.toArray\n .filter(({ status }) => status.isIndeterminate)\n .map(({ value }) => value.key),\n );\n }\n\n get uncheckedValues() {\n return this.select.toArray\n .filter(({ status }) => !status.isChecked)\n .map(({ value }) => value.item);\n }\n\n isChecked(key: string) {\n const { select } = this;\n return select.isChecked(key);\n }\n\n selectAll() {\n const { select, collection } = this;\n select.defaultStatus = select.defaultStatus.final();\n const {\n result: { keyedItems },\n } = collection;\n select.finalizeMany(keyedItems);\n }\n\n deselectAll() {\n const { select } = this;\n runInAction(() => {\n select.defaultStatus = select.defaultStatus.start();\n });\n select.startAll();\n }\n\n selectOneItem(item: BulkSelectKeyedItem<T>) {\n const { select, useNewSelectAllLogic } = this;\n\n select.set(item);\n\n if (!useNewSelectAllLogic) {\n runInAction(() => {\n select.defaultStatus = select.defaultStatus.start();\n });\n }\n }\n\n selectOne(key: string) {\n const { collection } = this;\n const { result } = collection;\n const keyedItem = result.get(key);\n if (keyedItem) {\n this.selectOneItem(keyedItem);\n }\n }\n\n deselectOneItem(keyedItem: BulkSelectKeyedItem<T>) {\n const { select, useNewSelectAllLogic } = this;\n\n select.delete(keyedItem);\n\n if (!useNewSelectAllLogic) {\n runInAction(() => {\n select.defaultStatus = select.defaultStatus.start();\n });\n }\n }\n\n deselectOne(key: string) {\n const { collection } = this;\n const { result } = collection;\n const keyedItem = result.get(key);\n\n if (keyedItem == null) {\n return;\n }\n\n this.deselectOneItem(keyedItem);\n }\n\n openModal = () => {\n this.events.emit('openModal');\n };\n\n closeModal = () => {\n this.events.emit('closeModal');\n };\n\n resetToDefaults() {\n const { select } = this;\n runInAction(() => {\n select.defaultStatus = select.defaultStatus.start();\n });\n select.clear();\n }\n\n init() {\n const disposers = [\n this.totalSnapshot.init(),\n addEventListener(this.collection.emitter, 'ready', () => {\n this.totalSnapshot.forceUpdate();\n }),\n reaction(\n () => this.collection.result.keyedItems,\n (keyedItems) => {\n const {\n select,\n allSelected,\n disableAutoSelectAllCount,\n collection: {\n result: { _keyedItemsMap },\n },\n } = this;\n if (allSelected && !disableAutoSelectAllCount) {\n select.syncValues(keyedItems);\n } else {\n select.syncValues(\n select.selectedKeys\n .map(\n (key) =>\n _keyedItemsMap.get(key) as\n | BulkSelectKeyedItem<T>\n | null\n | undefined,\n )\n .filter((e): e is BulkSelectKeyedItem<T> => e != null),\n );\n }\n },\n ),\n ];\n\n return () => {\n disposers.forEach((disposer) => disposer());\n };\n }\n\n get selectedKeyedItems() {\n return this.selectedIds\n .map((id) => this.collection.result.get(id))\n .filter((item): item is KeyedItem<T> => !!item);\n }\n\n get isEmpty() {\n return this.select.isEmpty;\n }\n\n get uncheckedInCurrentCollection() {\n const { uncheckedValues, collection } = this;\n const { itemKey } = collection;\n\n return uncheckedValues.filter((item) =>\n collection.result.has(itemKey(item)),\n );\n }\n\n get selectedCountOrTotal() {\n const {\n allSelected,\n disableAutoSelectAllCount,\n selectedIds,\n useNewSelectAllLogic,\n uncheckedInCurrentCollection,\n collection: {\n result: { total },\n },\n } = this;\n\n if (!allSelected || disableAutoSelectAllCount) {\n return selectedIds.length;\n }\n\n if (useNewSelectAllLogic) {\n return total - uncheckedInCurrentCollection.length;\n }\n\n return total;\n }\n\n toggleIsSelectAll = action(() => {\n const {\n allSelected,\n select: { isEmptyEnabledItems },\n } = this;\n if (allSelected || !isEmptyEnabledItems) {\n this.deselectAll();\n } else {\n this.selectAll();\n }\n });\n\n toggle(keyedItem: BulkSelectKeyedItem<T>) {\n this.select.toggle(keyedItem);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|