@webiny/api-headless-cms-utils-os 6.6.0-alpha.0 → 6.6.0-alpha.2
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/configurations.d.ts +5 -15
- package/configurations.js +14 -28
- package/configurations.js.map +1 -1
- package/exports/api/cms/opensearch.d.ts +1 -0
- package/exports/api/cms/opensearch.js +1 -0
- package/features/CmsEntryOpenSearchIndex/BaseOpenSearchIndex.d.ts +1 -1
- package/features/CmsEntryOpenSearchIndex/BaseOpenSearchIndex.js +1 -1
- package/features/CmsEntryOpenSearchIndex/BaseOpenSearchIndex.js.map +1 -1
- package/features/CmsEntryOpenSearchIndexCreate/CmsEntryOpenSearchIndexCreate.d.ts +3 -3
- package/features/CmsEntryOpenSearchIndexCreate/CmsEntryOpenSearchIndexCreate.js +9 -22
- package/features/CmsEntryOpenSearchIndexCreate/CmsEntryOpenSearchIndexCreate.js.map +1 -1
- package/features/CmsEntryOpenSearchIndexDelete/CmsEntryOpenSearchIndexDelete.d.ts +3 -1
- package/features/CmsEntryOpenSearchIndexDelete/CmsEntryOpenSearchIndexDelete.js +10 -7
- package/features/CmsEntryOpenSearchIndexDelete/CmsEntryOpenSearchIndexDelete.js.map +1 -1
- package/features/CmsEntryOpenSearchUtilsFeature.js +2 -0
- package/features/CmsEntryOpenSearchUtilsFeature.js.map +1 -1
- package/features/CmsModelOpenSearchIndex/CmsModelOpenSearchIndexProvider.d.ts +15 -0
- package/features/CmsModelOpenSearchIndex/CmsModelOpenSearchIndexProvider.js +5 -0
- package/features/CmsModelOpenSearchIndex/CmsModelOpenSearchIndexProvider.js.map +1 -0
- package/features/CmsModelOpenSearchIndex/DefaultCmsModelOpenSearchIndex.d.ts +8 -0
- package/features/CmsModelOpenSearchIndex/DefaultCmsModelOpenSearchIndex.js +17 -0
- package/features/CmsModelOpenSearchIndex/DefaultCmsModelOpenSearchIndex.js.map +1 -0
- package/features/CmsModelOpenSearchIndex/DefaultCmsModelOpenSearchIndexProvider.d.ts +12 -0
- package/features/CmsModelOpenSearchIndex/DefaultCmsModelOpenSearchIndexProvider.js +35 -0
- package/features/CmsModelOpenSearchIndex/DefaultCmsModelOpenSearchIndexProvider.js.map +1 -0
- package/features/CmsModelOpenSearchIndex/abstractions.d.ts +20 -0
- package/features/CmsModelOpenSearchIndex/abstractions.js +5 -0
- package/features/CmsModelOpenSearchIndex/abstractions.js.map +1 -0
- package/features/CmsModelOpenSearchIndex/feature.d.ts +4 -0
- package/features/CmsModelOpenSearchIndex/feature.js +13 -0
- package/features/CmsModelOpenSearchIndex/feature.js.map +1 -0
- package/features/CmsModelOpenSearchIndex/index.d.ts +7 -0
- package/features/CmsModelOpenSearchIndex/index.js +5 -0
- package/package.json +6 -6
- package/testing/createTestModelIndexName.d.ts +3 -0
- package/testing/createTestModelIndexName.js +11 -0
- package/testing/createTestModelIndexName.js.map +1 -0
- package/testing/index.d.ts +1 -0
- package/testing/index.js +1 -0
package/configurations.d.ts
CHANGED
|
@@ -1,19 +1,9 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
3
|
-
import type { CmsEntryOpenSearchIndex } from "./features/CmsEntryOpenSearchIndex/index.js";
|
|
4
|
-
interface ConfigurationsElasticsearch {
|
|
5
|
-
index: string;
|
|
6
|
-
}
|
|
1
|
+
import type { StorageCmsModel } from "@webiny/api-headless-cms/types/index.js";
|
|
2
|
+
import type { CmsModelOpenSearchIndexProvider, ICmsModelOpenSearchIndexProviderResult } from "./features/CmsModelOpenSearchIndex/CmsModelOpenSearchIndexProvider.js";
|
|
7
3
|
export interface CmsElasticsearchParams {
|
|
8
|
-
model:
|
|
9
|
-
}
|
|
10
|
-
export interface ConfigurationsIndexSettingsParams {
|
|
11
|
-
indexConfigs: CmsEntryOpenSearchIndex.Interface[];
|
|
12
|
-
model: Pick<CmsModel, "tenant" | "modelId" | "group">;
|
|
4
|
+
model: StorageCmsModel;
|
|
13
5
|
}
|
|
14
6
|
export interface Configurations {
|
|
15
|
-
es: (params: CmsElasticsearchParams) =>
|
|
16
|
-
indexSettings: (params: ConfigurationsIndexSettingsParams) => Partial<OpenSearchIndexRequestBody>;
|
|
7
|
+
es: (params: CmsElasticsearchParams) => Promise<ICmsModelOpenSearchIndexProviderResult>;
|
|
17
8
|
}
|
|
18
|
-
export declare const
|
|
19
|
-
export {};
|
|
9
|
+
export declare const createConfigurations: (provider: CmsModelOpenSearchIndexProvider.Interface) => Configurations;
|
package/configurations.js
CHANGED
|
@@ -1,31 +1,17 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const { tenant } = model;
|
|
6
|
-
if (!tenant) throw new error('Missing "tenant" parameter when trying to create Elasticsearch index name.', "TENANT_ERROR");
|
|
7
|
-
const sharedIndex = isSharedOpenSearchIndex();
|
|
8
|
-
const index = [
|
|
9
|
-
sharedIndex ? "root" : tenant,
|
|
10
|
-
"headless-cms",
|
|
11
|
-
model.modelId
|
|
12
|
-
].join("-").toLowerCase();
|
|
13
|
-
const prefix = getOpenSearchIndexPrefix();
|
|
14
|
-
if (!prefix) return {
|
|
15
|
-
index
|
|
16
|
-
};
|
|
17
|
-
return {
|
|
18
|
-
index: prefix + index
|
|
19
|
-
};
|
|
20
|
-
},
|
|
21
|
-
indexSettings: ({ indexConfigs, model })=>{
|
|
22
|
-
const usable = indexConfigs.filter((c)=>c.canUse({
|
|
1
|
+
import { getOpenSearchIndexPrefix } from "@webiny/api-opensearch";
|
|
2
|
+
const createConfigurations = (provider)=>({
|
|
3
|
+
async es ({ model }) {
|
|
4
|
+
const result = await provider.execute({
|
|
23
5
|
model
|
|
24
|
-
})
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
6
|
+
});
|
|
7
|
+
const prefix = getOpenSearchIndexPrefix();
|
|
8
|
+
if (!prefix) return result;
|
|
9
|
+
return {
|
|
10
|
+
...result,
|
|
11
|
+
index: prefix + result.index
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
export { createConfigurations };
|
|
30
16
|
|
|
31
17
|
//# sourceMappingURL=configurations.js.map
|
package/configurations.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configurations.js","sources":["../src/configurations.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"configurations.js","sources":["../src/configurations.ts"],"sourcesContent":["import { getOpenSearchIndexPrefix } from \"@webiny/api-opensearch\";\nimport type { StorageCmsModel } from \"@webiny/api-headless-cms/types/index.js\";\nimport type {\n CmsModelOpenSearchIndexProvider,\n ICmsModelOpenSearchIndexProviderResult\n} from \"./features/CmsModelOpenSearchIndex/CmsModelOpenSearchIndexProvider.js\";\n\nexport interface CmsElasticsearchParams {\n model: StorageCmsModel;\n}\n\nexport interface Configurations {\n es: (params: CmsElasticsearchParams) => Promise<ICmsModelOpenSearchIndexProviderResult>;\n}\n\nexport const createConfigurations = (\n provider: CmsModelOpenSearchIndexProvider.Interface\n): Configurations => ({\n async es({ model }) {\n const result = await provider.execute({ model });\n\n const prefix = getOpenSearchIndexPrefix();\n\n if (!prefix) {\n return result;\n }\n return {\n ...result,\n index: prefix + result.index\n };\n }\n});\n"],"names":["createConfigurations","provider","model","result","prefix","getOpenSearchIndexPrefix"],"mappings":";AAeO,MAAMA,uBAAuB,CAChCC,WACkB;QAClB,MAAM,IAAG,EAAEC,KAAK,EAAE;YACd,MAAMC,SAAS,MAAMF,SAAS,OAAO,CAAC;gBAAEC;YAAM;YAE9C,MAAME,SAASC;YAEf,IAAI,CAACD,QACD,OAAOD;YAEX,OAAO;gBACH,GAAGA,MAAM;gBACT,OAAOC,SAASD,OAAO,KAAK;YAChC;QACJ;IACJ"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { CmsModelOpenSearchIndexProvider, CmsModelOpenSearchIndex } from "../../../features/CmsModelOpenSearchIndex/index.js";
|
|
1
2
|
export { CmsEntryOpenSearchUtilsFeature } from "../../../features/CmsEntryOpenSearchUtilsFeature.js";
|
|
2
3
|
export { CmsEntryOpenSearchFieldIndexRegistry, CmsEntryOpenSearchFieldIndex } from "../../../features/CmsEntryOpenSearchFieldIndex/index.js";
|
|
3
4
|
export { CmsEntryOpenSearchFilterRegistry, CmsEntryOpenSearchFilter } from "../../../features/CmsEntryOpenSearchFilter/index.js";
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { CmsModelOpenSearchIndex, CmsModelOpenSearchIndexProvider } from "../../../features/CmsModelOpenSearchIndex/index.js";
|
|
1
2
|
export { CmsEntryOpenSearchUtilsFeature } from "../../../features/CmsEntryOpenSearchUtilsFeature.js";
|
|
2
3
|
export { CmsEntryOpenSearchFieldIndex, CmsEntryOpenSearchFieldIndexRegistry } from "../../../features/CmsEntryOpenSearchFieldIndex/index.js";
|
|
3
4
|
export { CmsEntryOpenSearchFilter, CmsEntryOpenSearchFilterRegistry } from "../../../features/CmsEntryOpenSearchFilter/index.js";
|
|
@@ -3,7 +3,7 @@ import type { OpenSearchIndexRequestBody } from "@webiny/api-opensearch/types.js
|
|
|
3
3
|
declare class BaseOpenSearchIndexImpl implements CmsEntryOpenSearchIndex.Interface {
|
|
4
4
|
readonly body: OpenSearchIndexRequestBody;
|
|
5
5
|
constructor();
|
|
6
|
-
canUse(
|
|
6
|
+
canUse(): boolean;
|
|
7
7
|
}
|
|
8
8
|
export declare const BaseOpenSearchIndex: typeof BaseOpenSearchIndexImpl & {
|
|
9
9
|
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").ICmsEntryOpenSearchIndex>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features/CmsEntryOpenSearchIndex/BaseOpenSearchIndex.js","sources":["../../../src/features/CmsEntryOpenSearchIndex/BaseOpenSearchIndex.ts"],"sourcesContent":["import { getBaseConfiguration } from \"@webiny/api-opensearch\";\nimport { CmsEntryOpenSearchIndex } from \"./abstractions.js\";\nimport type { OpenSearchIndexRequestBody } from \"@webiny/api-opensearch/types.js\";\n\nclass BaseOpenSearchIndexImpl implements CmsEntryOpenSearchIndex.Interface {\n public readonly body: OpenSearchIndexRequestBody;\n\n public constructor() {\n this.body = getBaseConfiguration();\n }\n public canUse(
|
|
1
|
+
{"version":3,"file":"features/CmsEntryOpenSearchIndex/BaseOpenSearchIndex.js","sources":["../../../src/features/CmsEntryOpenSearchIndex/BaseOpenSearchIndex.ts"],"sourcesContent":["import { getBaseConfiguration } from \"@webiny/api-opensearch\";\nimport { CmsEntryOpenSearchIndex } from \"./abstractions.js\";\nimport type { OpenSearchIndexRequestBody } from \"@webiny/api-opensearch/types.js\";\n\nclass BaseOpenSearchIndexImpl implements CmsEntryOpenSearchIndex.Interface {\n public readonly body: OpenSearchIndexRequestBody;\n\n public constructor() {\n this.body = getBaseConfiguration();\n }\n public canUse(): boolean {\n return true;\n }\n}\n\nexport const BaseOpenSearchIndex = CmsEntryOpenSearchIndex.createImplementation({\n implementation: BaseOpenSearchIndexImpl,\n dependencies: []\n});\n"],"names":["BaseOpenSearchIndexImpl","getBaseConfiguration","BaseOpenSearchIndex","CmsEntryOpenSearchIndex"],"mappings":";;AAIA,MAAMA;IAGF,aAAqB;QACjB,IAAI,CAAC,IAAI,GAAGC;IAChB;IACO,SAAkB;QACrB,OAAO;IACX;AACJ;AAEO,MAAMC,sBAAsBC,wBAAwB,oBAAoB,CAAC;IAC5E,gBAAgBH;IAChB,cAAc,EAAE;AACpB"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { OpenSearchClient } from "@webiny/api-opensearch/exports/api/opensearch.js";
|
|
2
|
-
import {
|
|
2
|
+
import { CmsModelOpenSearchIndexProvider } from "../../features/CmsModelOpenSearchIndex/CmsModelOpenSearchIndexProvider.js";
|
|
3
3
|
import { CmsEntryOpenSearchIndexCreate as CmsEntryOpenSearchIndexCreateAbstraction } from "./abstractions.js";
|
|
4
4
|
declare class CmsEntryOpenSearchIndexCreateImpl implements CmsEntryOpenSearchIndexCreateAbstraction.Interface {
|
|
5
5
|
private readonly openSearchClient;
|
|
6
|
-
private readonly
|
|
7
|
-
constructor(openSearchClient: OpenSearchClient.Interface,
|
|
6
|
+
private readonly indexProvider;
|
|
7
|
+
constructor(openSearchClient: OpenSearchClient.Interface, indexProvider: CmsModelOpenSearchIndexProvider.Interface);
|
|
8
8
|
execute(params: CmsEntryOpenSearchIndexCreateAbstraction.Params): Promise<void>;
|
|
9
9
|
}
|
|
10
10
|
export declare const CmsEntryOpenSearchIndexCreate: typeof CmsEntryOpenSearchIndexCreateImpl & {
|
|
@@ -1,28 +1,20 @@
|
|
|
1
1
|
import error from "@webiny/error";
|
|
2
|
-
import { configurations } from "../../configurations.js";
|
|
3
2
|
import { OpenSearchClient } from "@webiny/api-opensearch/exports/api/opensearch.js";
|
|
4
|
-
import {
|
|
3
|
+
import { CmsModelOpenSearchIndexProvider } from "../CmsModelOpenSearchIndex/CmsModelOpenSearchIndexProvider.js";
|
|
5
4
|
import { CmsEntryOpenSearchIndexCreate } from "./abstractions.js";
|
|
6
|
-
|
|
7
|
-
const usable = configs.filter((c)=>c.canUse({
|
|
8
|
-
model
|
|
9
|
-
}));
|
|
10
|
-
if (0 === usable.length) throw new error("Could not find a single usable CmsEntryOpenSearchIndex.", "OPENSEARCH_INDEX_TEMPLATE_ERROR");
|
|
11
|
-
return usable[usable.length - 1];
|
|
12
|
-
};
|
|
5
|
+
import { createConfigurations } from "../../configurations.js";
|
|
13
6
|
class CmsEntryOpenSearchIndexCreateImpl {
|
|
14
|
-
constructor(openSearchClient,
|
|
7
|
+
constructor(openSearchClient, indexProvider){
|
|
15
8
|
this.openSearchClient = openSearchClient;
|
|
16
|
-
this.
|
|
9
|
+
this.indexProvider = indexProvider;
|
|
17
10
|
}
|
|
18
11
|
async execute(params) {
|
|
19
12
|
const { model } = params;
|
|
20
13
|
const client = this.openSearchClient.use();
|
|
21
|
-
const
|
|
14
|
+
const configurations = createConfigurations(this.indexProvider);
|
|
15
|
+
const { index, settings } = await configurations.es({
|
|
22
16
|
model
|
|
23
17
|
});
|
|
24
|
-
const config = getLastUsable(this.indexConfigs, model);
|
|
25
|
-
if (!config) throw new Error(`Could not find a usable CmsEntryOpenSearchIndex for the CMS model "${model.name}".`);
|
|
26
18
|
try {
|
|
27
19
|
const response = await client.indices.exists({
|
|
28
20
|
index,
|
|
@@ -40,7 +32,7 @@ class CmsEntryOpenSearchIndexCreateImpl {
|
|
|
40
32
|
await client.indices.create({
|
|
41
33
|
index,
|
|
42
34
|
body: {
|
|
43
|
-
...
|
|
35
|
+
...settings
|
|
44
36
|
}
|
|
45
37
|
});
|
|
46
38
|
} catch (ex) {
|
|
@@ -55,7 +47,7 @@ class CmsEntryOpenSearchIndexCreateImpl {
|
|
|
55
47
|
},
|
|
56
48
|
tenant: model.tenant,
|
|
57
49
|
index,
|
|
58
|
-
body:
|
|
50
|
+
body: settings
|
|
59
51
|
});
|
|
60
52
|
}
|
|
61
53
|
}
|
|
@@ -64,12 +56,7 @@ const CmsEntryOpenSearchIndexCreate_CmsEntryOpenSearchIndexCreate = CmsEntryOpen
|
|
|
64
56
|
implementation: CmsEntryOpenSearchIndexCreateImpl,
|
|
65
57
|
dependencies: [
|
|
66
58
|
OpenSearchClient,
|
|
67
|
-
|
|
68
|
-
CmsEntryOpenSearchIndex,
|
|
69
|
-
{
|
|
70
|
-
multiple: true
|
|
71
|
-
}
|
|
72
|
-
]
|
|
59
|
+
CmsModelOpenSearchIndexProvider
|
|
73
60
|
]
|
|
74
61
|
});
|
|
75
62
|
export { CmsEntryOpenSearchIndexCreate_CmsEntryOpenSearchIndexCreate as CmsEntryOpenSearchIndexCreate };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features/CmsEntryOpenSearchIndexCreate/CmsEntryOpenSearchIndexCreate.js","sources":["../../../src/features/CmsEntryOpenSearchIndexCreate/CmsEntryOpenSearchIndexCreate.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {
|
|
1
|
+
{"version":3,"file":"features/CmsEntryOpenSearchIndexCreate/CmsEntryOpenSearchIndexCreate.js","sources":["../../../src/features/CmsEntryOpenSearchIndexCreate/CmsEntryOpenSearchIndexCreate.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { OpenSearchClient } from \"@webiny/api-opensearch/exports/api/opensearch.js\";\nimport { CmsModelOpenSearchIndexProvider } from \"~/features/CmsModelOpenSearchIndex/CmsModelOpenSearchIndexProvider.js\";\nimport { CmsEntryOpenSearchIndexCreate as CmsEntryOpenSearchIndexCreateAbstraction } from \"./abstractions.js\";\nimport { createConfigurations } from \"~/configurations.js\";\n\nclass CmsEntryOpenSearchIndexCreateImpl\n implements CmsEntryOpenSearchIndexCreateAbstraction.Interface\n{\n public constructor(\n private readonly openSearchClient: OpenSearchClient.Interface,\n private readonly indexProvider: CmsModelOpenSearchIndexProvider.Interface\n ) {}\n\n public async execute(params: CmsEntryOpenSearchIndexCreateAbstraction.Params): Promise<void> {\n const { model } = params;\n const client = this.openSearchClient.use();\n\n const configurations = createConfigurations(this.indexProvider);\n const { index, settings } = await configurations.es({ model });\n\n try {\n const response = await client.indices.exists({\n index,\n ignore_unavailable: false,\n allow_no_indices: true,\n include_defaults: true,\n flat_settings: false,\n local: false\n });\n if (response.body) {\n console.log(\n `Elasticsearch index \"${index}\" for the CMS model \"${model.name}\" already exists.`\n );\n return;\n }\n } catch {\n console.error(`Could not determine if the index \"${index}\" exists.`);\n }\n\n try {\n await client.indices.create({\n index,\n body: {\n ...settings\n }\n });\n } catch (ex) {\n console.error(\n `Could not create Elasticsearch index \"${index}\" for the CMS model \"${model.name}\".`\n );\n console.error(ex);\n throw new WebinyError(\n ex.message || \"Could not create OpenSearch index for the CMS entry.\",\n ex.code || \"CREATE_OPENSEARCH_INDEX_ERROR\",\n {\n error: {\n ...ex,\n message: ex.message,\n code: ex.code,\n data: ex.data\n },\n tenant: model.tenant,\n index,\n body: settings\n }\n );\n }\n }\n}\n\nexport const CmsEntryOpenSearchIndexCreate =\n CmsEntryOpenSearchIndexCreateAbstraction.createImplementation({\n implementation: CmsEntryOpenSearchIndexCreateImpl,\n dependencies: [OpenSearchClient, CmsModelOpenSearchIndexProvider]\n });\n"],"names":["CmsEntryOpenSearchIndexCreateImpl","openSearchClient","indexProvider","params","model","client","configurations","createConfigurations","index","settings","response","console","ex","WebinyError","CmsEntryOpenSearchIndexCreate","CmsEntryOpenSearchIndexCreateAbstraction","OpenSearchClient","CmsModelOpenSearchIndexProvider"],"mappings":";;;;;AAMA,MAAMA;IAGF,YACqBC,gBAA4C,EAC5CC,aAAwD,CAC3E;aAFmBD,gBAAgB,GAAhBA;aACAC,aAAa,GAAbA;IAClB;IAEH,MAAa,QAAQC,MAAuD,EAAiB;QACzF,MAAM,EAAEC,KAAK,EAAE,GAAGD;QAClB,MAAME,SAAS,IAAI,CAAC,gBAAgB,CAAC,GAAG;QAExC,MAAMC,iBAAiBC,qBAAqB,IAAI,CAAC,aAAa;QAC9D,MAAM,EAAEC,KAAK,EAAEC,QAAQ,EAAE,GAAG,MAAMH,eAAe,EAAE,CAAC;YAAEF;QAAM;QAE5D,IAAI;YACA,MAAMM,WAAW,MAAML,OAAO,OAAO,CAAC,MAAM,CAAC;gBACzCG;gBACA,oBAAoB;gBACpB,kBAAkB;gBAClB,kBAAkB;gBAClB,eAAe;gBACf,OAAO;YACX;YACA,IAAIE,SAAS,IAAI,EAAE,YACfC,QAAQ,GAAG,CACP,CAAC,qBAAqB,EAAEH,MAAM,qBAAqB,EAAEJ,MAAM,IAAI,CAAC,iBAAiB,CAAC;QAI9F,EAAE,OAAM;YACJO,QAAQ,KAAK,CAAC,CAAC,kCAAkC,EAAEH,MAAM,SAAS,CAAC;QACvE;QAEA,IAAI;YACA,MAAMH,OAAO,OAAO,CAAC,MAAM,CAAC;gBACxBG;gBACA,MAAM;oBACF,GAAGC,QAAQ;gBACf;YACJ;QACJ,EAAE,OAAOG,IAAI;YACTD,QAAQ,KAAK,CACT,CAAC,sCAAsC,EAAEH,MAAM,qBAAqB,EAAEJ,MAAM,IAAI,CAAC,EAAE,CAAC;YAExFO,QAAQ,KAAK,CAACC;YACd,MAAM,IAAIC,MACND,GAAG,OAAO,IAAI,wDACdA,GAAG,IAAI,IAAI,iCACX;gBACI,OAAO;oBACH,GAAGA,EAAE;oBACL,SAASA,GAAG,OAAO;oBACnB,MAAMA,GAAG,IAAI;oBACb,MAAMA,GAAG,IAAI;gBACjB;gBACA,QAAQR,MAAM,MAAM;gBACpBI;gBACA,MAAMC;YACV;QAER;IACJ;AACJ;AAEO,MAAMK,8DACTC,8BAAAA,oBAA6D,CAAC;IAC1D,gBAAgBf;IAChB,cAAc;QAACgB;QAAkBC;KAAgC;AACrE"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { OpenSearchClient } from "@webiny/api-opensearch/exports/api/opensearch.js";
|
|
2
|
+
import { CmsModelOpenSearchIndexProvider } from "../../features/CmsModelOpenSearchIndex/CmsModelOpenSearchIndexProvider.js";
|
|
2
3
|
import { CmsEntryOpenSearchIndexDelete as CmsEntryOpenSearchIndexDeleteAbstraction } from "./abstractions.js";
|
|
3
4
|
declare class CmsEntryOpenSearchIndexDeleteImpl implements CmsEntryOpenSearchIndexDeleteAbstraction.Interface {
|
|
4
5
|
private readonly openSearchClient;
|
|
5
|
-
|
|
6
|
+
private readonly indexProvider;
|
|
7
|
+
constructor(openSearchClient: OpenSearchClient.Interface, indexProvider: CmsModelOpenSearchIndexProvider.Interface);
|
|
6
8
|
execute(params: CmsEntryOpenSearchIndexDeleteAbstraction.Params): Promise<void>;
|
|
7
9
|
}
|
|
8
10
|
export declare const CmsEntryOpenSearchIndexDelete: typeof CmsEntryOpenSearchIndexDeleteImpl & {
|
|
@@ -1,18 +1,20 @@
|
|
|
1
|
-
import { configurations } from "../../configurations.js";
|
|
2
1
|
import { OpenSearchClient } from "@webiny/api-opensearch/exports/api/opensearch.js";
|
|
3
|
-
import {
|
|
2
|
+
import { CmsModelOpenSearchIndexProvider } from "../CmsModelOpenSearchIndex/CmsModelOpenSearchIndexProvider.js";
|
|
4
3
|
import { CmsEntryOpenSearchIndexDelete } from "./abstractions.js";
|
|
4
|
+
import { createConfigurations } from "../../configurations.js";
|
|
5
5
|
class CmsEntryOpenSearchIndexDeleteImpl {
|
|
6
|
-
constructor(openSearchClient){
|
|
6
|
+
constructor(openSearchClient, indexProvider){
|
|
7
7
|
this.openSearchClient = openSearchClient;
|
|
8
|
+
this.indexProvider = indexProvider;
|
|
8
9
|
}
|
|
9
10
|
async execute(params) {
|
|
10
|
-
if (isSharedOpenSearchIndex()) return;
|
|
11
11
|
const { model } = params;
|
|
12
|
-
const
|
|
13
|
-
const { index } = configurations.es({
|
|
12
|
+
const configurations = createConfigurations(this.indexProvider);
|
|
13
|
+
const { index, shared } = await configurations.es({
|
|
14
14
|
model
|
|
15
15
|
});
|
|
16
|
+
if (shared) return;
|
|
17
|
+
const client = this.openSearchClient.use();
|
|
16
18
|
const { body: exists } = await client.indices.exists({
|
|
17
19
|
index
|
|
18
20
|
});
|
|
@@ -31,7 +33,8 @@ class CmsEntryOpenSearchIndexDeleteImpl {
|
|
|
31
33
|
const CmsEntryOpenSearchIndexDelete_CmsEntryOpenSearchIndexDelete = CmsEntryOpenSearchIndexDelete.createImplementation({
|
|
32
34
|
implementation: CmsEntryOpenSearchIndexDeleteImpl,
|
|
33
35
|
dependencies: [
|
|
34
|
-
OpenSearchClient
|
|
36
|
+
OpenSearchClient,
|
|
37
|
+
CmsModelOpenSearchIndexProvider
|
|
35
38
|
]
|
|
36
39
|
});
|
|
37
40
|
export { CmsEntryOpenSearchIndexDelete_CmsEntryOpenSearchIndexDelete as CmsEntryOpenSearchIndexDelete };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features/CmsEntryOpenSearchIndexDelete/CmsEntryOpenSearchIndexDelete.js","sources":["../../../src/features/CmsEntryOpenSearchIndexDelete/CmsEntryOpenSearchIndexDelete.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"features/CmsEntryOpenSearchIndexDelete/CmsEntryOpenSearchIndexDelete.js","sources":["../../../src/features/CmsEntryOpenSearchIndexDelete/CmsEntryOpenSearchIndexDelete.ts"],"sourcesContent":["import { OpenSearchClient } from \"@webiny/api-opensearch/exports/api/opensearch.js\";\nimport { CmsModelOpenSearchIndexProvider } from \"~/features/CmsModelOpenSearchIndex/CmsModelOpenSearchIndexProvider.js\";\nimport { CmsEntryOpenSearchIndexDelete as CmsEntryOpenSearchIndexDeleteAbstraction } from \"./abstractions.js\";\nimport { createConfigurations } from \"~/configurations.js\";\n\nclass CmsEntryOpenSearchIndexDeleteImpl\n implements CmsEntryOpenSearchIndexDeleteAbstraction.Interface\n{\n public constructor(\n private readonly openSearchClient: OpenSearchClient.Interface,\n private readonly indexProvider: CmsModelOpenSearchIndexProvider.Interface\n ) {}\n\n public async execute(params: CmsEntryOpenSearchIndexDeleteAbstraction.Params): Promise<void> {\n const { model } = params;\n\n const configurations = createConfigurations(this.indexProvider);\n const { index, shared } = await configurations.es({ model });\n if (shared) {\n return;\n }\n const client = this.openSearchClient.use();\n\n const { body: exists } = await client.indices.exists({ index });\n if (!exists) {\n return;\n }\n\n try {\n await client.indices.delete({\n index,\n ignore_unavailable: true\n });\n } catch (ex) {\n console.log(`Could not delete Elasticsearch index \"${index}\". Please do it manually.`);\n console.log(ex.message);\n }\n }\n}\n\nexport const CmsEntryOpenSearchIndexDelete =\n CmsEntryOpenSearchIndexDeleteAbstraction.createImplementation({\n implementation: CmsEntryOpenSearchIndexDeleteImpl,\n dependencies: [OpenSearchClient, CmsModelOpenSearchIndexProvider]\n });\n"],"names":["CmsEntryOpenSearchIndexDeleteImpl","openSearchClient","indexProvider","params","model","configurations","createConfigurations","index","shared","client","exists","ex","console","CmsEntryOpenSearchIndexDelete","CmsEntryOpenSearchIndexDeleteAbstraction","OpenSearchClient","CmsModelOpenSearchIndexProvider"],"mappings":";;;;AAKA,MAAMA;IAGF,YACqBC,gBAA4C,EAC5CC,aAAwD,CAC3E;aAFmBD,gBAAgB,GAAhBA;aACAC,aAAa,GAAbA;IAClB;IAEH,MAAa,QAAQC,MAAuD,EAAiB;QACzF,MAAM,EAAEC,KAAK,EAAE,GAAGD;QAElB,MAAME,iBAAiBC,qBAAqB,IAAI,CAAC,aAAa;QAC9D,MAAM,EAAEC,KAAK,EAAEC,MAAM,EAAE,GAAG,MAAMH,eAAe,EAAE,CAAC;YAAED;QAAM;QAC1D,IAAII,QACA;QAEJ,MAAMC,SAAS,IAAI,CAAC,gBAAgB,CAAC,GAAG;QAExC,MAAM,EAAE,MAAMC,MAAM,EAAE,GAAG,MAAMD,OAAO,OAAO,CAAC,MAAM,CAAC;YAAEF;QAAM;QAC7D,IAAI,CAACG,QACD;QAGJ,IAAI;YACA,MAAMD,OAAO,OAAO,CAAC,MAAM,CAAC;gBACxBF;gBACA,oBAAoB;YACxB;QACJ,EAAE,OAAOI,IAAI;YACTC,QAAQ,GAAG,CAAC,CAAC,sCAAsC,EAAEL,MAAM,yBAAyB,CAAC;YACrFK,QAAQ,GAAG,CAACD,GAAG,OAAO;QAC1B;IACJ;AACJ;AAEO,MAAME,8DACTC,8BAAAA,oBAA6D,CAAC;IAC1D,gBAAgBd;IAChB,cAAc;QAACe;QAAkBC;KAAgC;AACrE"}
|
|
@@ -13,9 +13,11 @@ import { CmsEntryOpenSearchValueSearchFeature } from "./CmsEntryOpenSearchValueS
|
|
|
13
13
|
import { ModelAfterCreateHandler } from "./CmsEntryOpenSearchIndexCreate/ModelAfterCreateHandler.js";
|
|
14
14
|
import { ModelAfterCreateFromHandler } from "./CmsEntryOpenSearchIndexCreate/ModelAfterCreateFromHandler.js";
|
|
15
15
|
import { ModelAfterDeleteHandler } from "./CmsEntryOpenSearchIndexDelete/ModelAfterDeleteHandler.js";
|
|
16
|
+
import { CmsModelOpenSearchIndexFeature } from "./CmsModelOpenSearchIndex/index.js";
|
|
16
17
|
const CmsEntryOpenSearchUtilsFeature = createFeature({
|
|
17
18
|
name: "Cms/Entry/OpenSearch/UtilsFeature",
|
|
18
19
|
register: (container)=>{
|
|
20
|
+
CmsModelOpenSearchIndexFeature.register(container);
|
|
19
21
|
CmsEntryOpenSearchFieldIndexFeature.register(container);
|
|
20
22
|
CmsEntryOpenSearchFilterFeature.register(container);
|
|
21
23
|
CmsEntryOpenSearchIndexFeature.register(container);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features/CmsEntryOpenSearchUtilsFeature.js","sources":["../../src/features/CmsEntryOpenSearchUtilsFeature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { CmsEntryOpenSearchFieldIndexFeature } from \"./CmsEntryOpenSearchFieldIndex/feature.js\";\nimport { CmsEntryOpenSearchFilterFeature } from \"./CmsEntryOpenSearchFilter/feature.js\";\nimport { CmsEntryOpenSearchIndexFeature } from \"./CmsEntryOpenSearchIndex/feature.js\";\nimport { CmsEntryOpenSearchIndexCreateFeature } from \"./CmsEntryOpenSearchIndexCreate/feature.js\";\nimport { CmsEntryOpenSearchIndexDeleteFeature } from \"./CmsEntryOpenSearchIndexDelete/feature.js\";\nimport { CmsEntryOpenSearchFieldPathFactoryFeature } from \"./CmsEntryOpenSearchFieldPathFactory/feature.js\";\nimport { CmsEntryOpenSearchValueTransformerFeature } from \"./CmsEntryOpenSearchValueTransformer/feature.js\";\nimport { CmsEntryOpenSearchOperatorListFeature } from \"./CmsEntryOpenSearchOperatorList/feature.js\";\nimport { CmsEntryOpenSearchExecFilteringFeature } from \"./CmsEntryOpenSearchExecFiltering/feature.js\";\nimport { CmsEntryOpenSearchBodyBuilderFeature } from \"./CmsEntryOpenSearchBodyBuilder/feature.js\";\nimport { CmsEntryOpenSearchValueSearchFeature } from \"./CmsEntryOpenSearchValueSearch/feature.js\";\nimport { ModelAfterCreateHandler } from \"./CmsEntryOpenSearchIndexCreate/ModelAfterCreateHandler.js\";\nimport { ModelAfterCreateFromHandler } from \"./CmsEntryOpenSearchIndexCreate/ModelAfterCreateFromHandler.js\";\nimport { ModelAfterDeleteHandler } from \"./CmsEntryOpenSearchIndexDelete/ModelAfterDeleteHandler.js\";\n\nexport const CmsEntryOpenSearchUtilsFeature = createFeature({\n name: \"Cms/Entry/OpenSearch/UtilsFeature\",\n register: container => {\n CmsEntryOpenSearchFieldIndexFeature.register(container);\n CmsEntryOpenSearchFilterFeature.register(container);\n CmsEntryOpenSearchIndexFeature.register(container);\n CmsEntryOpenSearchIndexCreateFeature.register(container);\n CmsEntryOpenSearchIndexDeleteFeature.register(container);\n CmsEntryOpenSearchFieldPathFactoryFeature.register(container);\n CmsEntryOpenSearchValueTransformerFeature.register(container);\n CmsEntryOpenSearchOperatorListFeature.register(container);\n CmsEntryOpenSearchExecFilteringFeature.register(container);\n CmsEntryOpenSearchBodyBuilderFeature.register(container);\n CmsEntryOpenSearchValueSearchFeature.register(container);\n\n // Model lifecycle event handlers for OpenSearch index management\n container.register(ModelAfterCreateHandler);\n container.register(ModelAfterCreateFromHandler);\n container.register(ModelAfterDeleteHandler);\n }\n});\n"],"names":["CmsEntryOpenSearchUtilsFeature","createFeature","container","CmsEntryOpenSearchFieldIndexFeature","CmsEntryOpenSearchFilterFeature","CmsEntryOpenSearchIndexFeature","CmsEntryOpenSearchIndexCreateFeature","CmsEntryOpenSearchIndexDeleteFeature","CmsEntryOpenSearchFieldPathFactoryFeature","CmsEntryOpenSearchValueTransformerFeature","CmsEntryOpenSearchOperatorListFeature","CmsEntryOpenSearchExecFilteringFeature","CmsEntryOpenSearchBodyBuilderFeature","CmsEntryOpenSearchValueSearchFeature","ModelAfterCreateHandler","ModelAfterCreateFromHandler","ModelAfterDeleteHandler"],"mappings":"
|
|
1
|
+
{"version":3,"file":"features/CmsEntryOpenSearchUtilsFeature.js","sources":["../../src/features/CmsEntryOpenSearchUtilsFeature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { CmsEntryOpenSearchFieldIndexFeature } from \"./CmsEntryOpenSearchFieldIndex/feature.js\";\nimport { CmsEntryOpenSearchFilterFeature } from \"./CmsEntryOpenSearchFilter/feature.js\";\nimport { CmsEntryOpenSearchIndexFeature } from \"./CmsEntryOpenSearchIndex/feature.js\";\nimport { CmsEntryOpenSearchIndexCreateFeature } from \"./CmsEntryOpenSearchIndexCreate/feature.js\";\nimport { CmsEntryOpenSearchIndexDeleteFeature } from \"./CmsEntryOpenSearchIndexDelete/feature.js\";\nimport { CmsEntryOpenSearchFieldPathFactoryFeature } from \"./CmsEntryOpenSearchFieldPathFactory/feature.js\";\nimport { CmsEntryOpenSearchValueTransformerFeature } from \"./CmsEntryOpenSearchValueTransformer/feature.js\";\nimport { CmsEntryOpenSearchOperatorListFeature } from \"./CmsEntryOpenSearchOperatorList/feature.js\";\nimport { CmsEntryOpenSearchExecFilteringFeature } from \"./CmsEntryOpenSearchExecFiltering/feature.js\";\nimport { CmsEntryOpenSearchBodyBuilderFeature } from \"./CmsEntryOpenSearchBodyBuilder/feature.js\";\nimport { CmsEntryOpenSearchValueSearchFeature } from \"./CmsEntryOpenSearchValueSearch/feature.js\";\nimport { ModelAfterCreateHandler } from \"./CmsEntryOpenSearchIndexCreate/ModelAfterCreateHandler.js\";\nimport { ModelAfterCreateFromHandler } from \"./CmsEntryOpenSearchIndexCreate/ModelAfterCreateFromHandler.js\";\nimport { ModelAfterDeleteHandler } from \"./CmsEntryOpenSearchIndexDelete/ModelAfterDeleteHandler.js\";\nimport { CmsModelOpenSearchIndexFeature } from \"./CmsModelOpenSearchIndex/index.js\";\n\nexport const CmsEntryOpenSearchUtilsFeature = createFeature({\n name: \"Cms/Entry/OpenSearch/UtilsFeature\",\n register: container => {\n CmsModelOpenSearchIndexFeature.register(container);\n CmsEntryOpenSearchFieldIndexFeature.register(container);\n CmsEntryOpenSearchFilterFeature.register(container);\n CmsEntryOpenSearchIndexFeature.register(container);\n CmsEntryOpenSearchIndexCreateFeature.register(container);\n CmsEntryOpenSearchIndexDeleteFeature.register(container);\n CmsEntryOpenSearchFieldPathFactoryFeature.register(container);\n CmsEntryOpenSearchValueTransformerFeature.register(container);\n CmsEntryOpenSearchOperatorListFeature.register(container);\n CmsEntryOpenSearchExecFilteringFeature.register(container);\n CmsEntryOpenSearchBodyBuilderFeature.register(container);\n CmsEntryOpenSearchValueSearchFeature.register(container);\n\n // Model lifecycle event handlers for OpenSearch index management\n container.register(ModelAfterCreateHandler);\n container.register(ModelAfterCreateFromHandler);\n container.register(ModelAfterDeleteHandler);\n }\n});\n"],"names":["CmsEntryOpenSearchUtilsFeature","createFeature","container","CmsModelOpenSearchIndexFeature","CmsEntryOpenSearchFieldIndexFeature","CmsEntryOpenSearchFilterFeature","CmsEntryOpenSearchIndexFeature","CmsEntryOpenSearchIndexCreateFeature","CmsEntryOpenSearchIndexDeleteFeature","CmsEntryOpenSearchFieldPathFactoryFeature","CmsEntryOpenSearchValueTransformerFeature","CmsEntryOpenSearchOperatorListFeature","CmsEntryOpenSearchExecFilteringFeature","CmsEntryOpenSearchBodyBuilderFeature","CmsEntryOpenSearchValueSearchFeature","ModelAfterCreateHandler","ModelAfterCreateFromHandler","ModelAfterDeleteHandler"],"mappings":";;;;;;;;;;;;;;;;AAiBO,MAAMA,iCAAiCC,cAAc;IACxD,MAAM;IACN,UAAUC,CAAAA;QACNC,+BAA+B,QAAQ,CAACD;QACxCE,oCAAoC,QAAQ,CAACF;QAC7CG,gCAAgC,QAAQ,CAACH;QACzCI,+BAA+B,QAAQ,CAACJ;QACxCK,qCAAqC,QAAQ,CAACL;QAC9CM,qCAAqC,QAAQ,CAACN;QAC9CO,0CAA0C,QAAQ,CAACP;QACnDQ,0CAA0C,QAAQ,CAACR;QACnDS,sCAAsC,QAAQ,CAACT;QAC/CU,uCAAuC,QAAQ,CAACV;QAChDW,qCAAqC,QAAQ,CAACX;QAC9CY,qCAAqC,QAAQ,CAACZ;QAG9CA,UAAU,QAAQ,CAACa;QACnBb,UAAU,QAAQ,CAACc;QACnBd,UAAU,QAAQ,CAACe;IACvB;AACJ"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { OpenSearchIndexRequestBody } from "@webiny/api-opensearch/types.js";
|
|
2
|
+
import type { CmsModelOpenSearchIndex } from "./abstractions.js";
|
|
3
|
+
export interface ICmsModelOpenSearchIndexProviderResult {
|
|
4
|
+
index: string;
|
|
5
|
+
settings: OpenSearchIndexRequestBody;
|
|
6
|
+
shared: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface ICmsModelOpenSearchIndexProvider {
|
|
9
|
+
execute(params: CmsModelOpenSearchIndex.Params): Promise<ICmsModelOpenSearchIndexProviderResult>;
|
|
10
|
+
}
|
|
11
|
+
export declare const CmsModelOpenSearchIndexProvider: import("@webiny/di").Abstraction<ICmsModelOpenSearchIndexProvider>;
|
|
12
|
+
export declare namespace CmsModelOpenSearchIndexProvider {
|
|
13
|
+
type Interface = ICmsModelOpenSearchIndexProvider;
|
|
14
|
+
type Result = ICmsModelOpenSearchIndexProviderResult;
|
|
15
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { createAbstraction } from "@webiny/feature/api/index.js";
|
|
2
|
+
const CmsModelOpenSearchIndexProvider = createAbstraction("Cms/Model/OpenSearch/IndexProvider");
|
|
3
|
+
export { CmsModelOpenSearchIndexProvider };
|
|
4
|
+
|
|
5
|
+
//# sourceMappingURL=CmsModelOpenSearchIndexProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/CmsModelOpenSearchIndex/CmsModelOpenSearchIndexProvider.js","sources":["../../../src/features/CmsModelOpenSearchIndex/CmsModelOpenSearchIndexProvider.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api/index.js\";\nimport type { OpenSearchIndexRequestBody } from \"@webiny/api-opensearch/types.js\";\nimport type { CmsModelOpenSearchIndex } from \"./abstractions.js\";\n\nexport interface ICmsModelOpenSearchIndexProviderResult {\n index: string;\n settings: OpenSearchIndexRequestBody;\n shared: boolean;\n}\n\nexport interface ICmsModelOpenSearchIndexProvider {\n execute(\n params: CmsModelOpenSearchIndex.Params\n ): Promise<ICmsModelOpenSearchIndexProviderResult>;\n}\n\nexport const CmsModelOpenSearchIndexProvider = createAbstraction<ICmsModelOpenSearchIndexProvider>(\n \"Cms/Model/OpenSearch/IndexProvider\"\n);\n\nexport namespace CmsModelOpenSearchIndexProvider {\n export type Interface = ICmsModelOpenSearchIndexProvider;\n export type Result = ICmsModelOpenSearchIndexProviderResult;\n}\n"],"names":["CmsModelOpenSearchIndexProvider","createAbstraction"],"mappings":";AAgBO,MAAMA,kCAAkCC,kBAC3C"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { CmsModelOpenSearchIndex } from "./abstractions.js";
|
|
2
|
+
declare class DefaultCmsModelOpenSearchIndexImpl implements CmsModelOpenSearchIndex.Interface {
|
|
3
|
+
execute(): Promise<CmsModelOpenSearchIndex.Result>;
|
|
4
|
+
}
|
|
5
|
+
export declare const DefaultCmsModelOpenSearchIndex: typeof DefaultCmsModelOpenSearchIndexImpl & {
|
|
6
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").ICmsModelOpenSearchIndex>;
|
|
7
|
+
};
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { getBaseConfiguration, isSharedOpenSearchIndex } from "@webiny/api-opensearch";
|
|
2
|
+
import { CmsModelOpenSearchIndex } from "./abstractions.js";
|
|
3
|
+
class DefaultCmsModelOpenSearchIndexImpl {
|
|
4
|
+
async execute() {
|
|
5
|
+
return {
|
|
6
|
+
settings: getBaseConfiguration(),
|
|
7
|
+
shared: isSharedOpenSearchIndex()
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
const DefaultCmsModelOpenSearchIndex = CmsModelOpenSearchIndex.createImplementation({
|
|
12
|
+
implementation: DefaultCmsModelOpenSearchIndexImpl,
|
|
13
|
+
dependencies: []
|
|
14
|
+
});
|
|
15
|
+
export { DefaultCmsModelOpenSearchIndex };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=DefaultCmsModelOpenSearchIndex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/CmsModelOpenSearchIndex/DefaultCmsModelOpenSearchIndex.js","sources":["../../../src/features/CmsModelOpenSearchIndex/DefaultCmsModelOpenSearchIndex.ts"],"sourcesContent":["import { getBaseConfiguration, isSharedOpenSearchIndex } from \"@webiny/api-opensearch\";\nimport { CmsModelOpenSearchIndex } from \"./abstractions.js\";\n\nclass DefaultCmsModelOpenSearchIndexImpl implements CmsModelOpenSearchIndex.Interface {\n public async execute(): Promise<CmsModelOpenSearchIndex.Result> {\n return {\n settings: getBaseConfiguration(),\n shared: isSharedOpenSearchIndex()\n };\n }\n}\n\nexport const DefaultCmsModelOpenSearchIndex = CmsModelOpenSearchIndex.createImplementation({\n implementation: DefaultCmsModelOpenSearchIndexImpl,\n dependencies: []\n});\n"],"names":["DefaultCmsModelOpenSearchIndexImpl","getBaseConfiguration","isSharedOpenSearchIndex","DefaultCmsModelOpenSearchIndex","CmsModelOpenSearchIndex"],"mappings":";;AAGA,MAAMA;IACF,MAAa,UAAmD;QAC5D,OAAO;YACH,UAAUC;YACV,QAAQC;QACZ;IACJ;AACJ;AAEO,MAAMC,iCAAiCC,wBAAwB,oBAAoB,CAAC;IACvF,gBAAgBJ;IAChB,cAAc,EAAE;AACpB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CmsModelOpenSearchIndexProvider, type ICmsModelOpenSearchIndexProviderResult } from "./CmsModelOpenSearchIndexProvider.js";
|
|
2
|
+
import { CmsModelOpenSearchIndex } from "./abstractions.js";
|
|
3
|
+
declare class CmsModelOpenSearchIndexProviderImpl implements CmsModelOpenSearchIndexProvider.Interface {
|
|
4
|
+
private readonly indexConfig;
|
|
5
|
+
private readonly cache;
|
|
6
|
+
constructor(indexConfig: CmsModelOpenSearchIndex.Interface);
|
|
7
|
+
execute(params: CmsModelOpenSearchIndex.Params): Promise<ICmsModelOpenSearchIndexProviderResult>;
|
|
8
|
+
}
|
|
9
|
+
export declare const DefaultCmsModelOpenSearchIndexProvider: typeof CmsModelOpenSearchIndexProviderImpl & {
|
|
10
|
+
__abstraction: import("@webiny/di").Abstraction<import("./CmsModelOpenSearchIndexProvider.js").ICmsModelOpenSearchIndexProvider>;
|
|
11
|
+
};
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { CmsModelOpenSearchIndexProvider } from "./CmsModelOpenSearchIndexProvider.js";
|
|
2
|
+
import { CmsModelOpenSearchIndex } from "./abstractions.js";
|
|
3
|
+
class CmsModelOpenSearchIndexProviderImpl {
|
|
4
|
+
constructor(indexConfig){
|
|
5
|
+
this.indexConfig = indexConfig;
|
|
6
|
+
this.cache = new Map();
|
|
7
|
+
}
|
|
8
|
+
async execute(params) {
|
|
9
|
+
const key = `${params.model.tenant}:${params.model.modelId}`;
|
|
10
|
+
const cached = this.cache.get(key);
|
|
11
|
+
if (cached) return cached;
|
|
12
|
+
const { shared, settings } = await this.indexConfig.execute(params);
|
|
13
|
+
const index = [
|
|
14
|
+
shared ? "root" : params.model.tenant,
|
|
15
|
+
"headless-cms",
|
|
16
|
+
params.model.modelId
|
|
17
|
+
].join("-").toLowerCase();
|
|
18
|
+
const result = {
|
|
19
|
+
index,
|
|
20
|
+
settings,
|
|
21
|
+
shared
|
|
22
|
+
};
|
|
23
|
+
this.cache.set(key, result);
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
const DefaultCmsModelOpenSearchIndexProvider = CmsModelOpenSearchIndexProvider.createImplementation({
|
|
28
|
+
implementation: CmsModelOpenSearchIndexProviderImpl,
|
|
29
|
+
dependencies: [
|
|
30
|
+
CmsModelOpenSearchIndex
|
|
31
|
+
]
|
|
32
|
+
});
|
|
33
|
+
export { DefaultCmsModelOpenSearchIndexProvider };
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=DefaultCmsModelOpenSearchIndexProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/CmsModelOpenSearchIndex/DefaultCmsModelOpenSearchIndexProvider.js","sources":["../../../src/features/CmsModelOpenSearchIndex/DefaultCmsModelOpenSearchIndexProvider.ts"],"sourcesContent":["import {\n CmsModelOpenSearchIndexProvider,\n type ICmsModelOpenSearchIndexProviderResult\n} from \"./CmsModelOpenSearchIndexProvider.js\";\nimport { CmsModelOpenSearchIndex } from \"./abstractions.js\";\n\nclass CmsModelOpenSearchIndexProviderImpl implements CmsModelOpenSearchIndexProvider.Interface {\n private readonly cache = new Map<string, ICmsModelOpenSearchIndexProviderResult>();\n\n public constructor(private readonly indexConfig: CmsModelOpenSearchIndex.Interface) {}\n\n public async execute(\n params: CmsModelOpenSearchIndex.Params\n ): Promise<ICmsModelOpenSearchIndexProviderResult> {\n const key = `${params.model.tenant}:${params.model.modelId}`;\n const cached = this.cache.get(key);\n if (cached) {\n return cached;\n }\n\n const { shared, settings } = await this.indexConfig.execute(params);\n\n const index = [shared ? \"root\" : params.model.tenant, \"headless-cms\", params.model.modelId]\n .join(\"-\")\n .toLowerCase();\n\n const result: ICmsModelOpenSearchIndexProviderResult = { index, settings, shared };\n this.cache.set(key, result);\n return result;\n }\n}\n\nexport const DefaultCmsModelOpenSearchIndexProvider =\n CmsModelOpenSearchIndexProvider.createImplementation({\n implementation: CmsModelOpenSearchIndexProviderImpl,\n dependencies: [CmsModelOpenSearchIndex]\n });\n"],"names":["CmsModelOpenSearchIndexProviderImpl","indexConfig","Map","params","key","cached","shared","settings","index","result","DefaultCmsModelOpenSearchIndexProvider","CmsModelOpenSearchIndexProvider","CmsModelOpenSearchIndex"],"mappings":";;AAMA,MAAMA;IAGF,YAAoCC,WAA8C,CAAE;aAAhDA,WAAW,GAAXA;aAFnB,KAAK,GAAG,IAAIC;IAEwD;IAErF,MAAa,QACTC,MAAsC,EACS;QAC/C,MAAMC,MAAM,GAAGD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,EAAEA,OAAO,KAAK,CAAC,OAAO,EAAE;QAC5D,MAAME,SAAS,IAAI,CAAC,KAAK,CAAC,GAAG,CAACD;QAC9B,IAAIC,QACA,OAAOA;QAGX,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAACJ;QAE5D,MAAMK,QAAQ;YAACF,SAAS,SAASH,OAAO,KAAK,CAAC,MAAM;YAAE;YAAgBA,OAAO,KAAK,CAAC,OAAO;SAAC,CACtF,IAAI,CAAC,KACL,WAAW;QAEhB,MAAMM,SAAiD;YAAED;YAAOD;YAAUD;QAAO;QACjF,IAAI,CAAC,KAAK,CAAC,GAAG,CAACF,KAAKK;QACpB,OAAOA;IACX;AACJ;AAEO,MAAMC,yCACTC,gCAAgC,oBAAoB,CAAC;IACjD,gBAAgBX;IAChB,cAAc;QAACY;KAAwB;AAC3C"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { OpenSearchIndexRequestBody } from "@webiny/api-opensearch/types.js";
|
|
2
|
+
import { type StorageCmsModel } from "@webiny/api-headless-cms/types/index.js";
|
|
3
|
+
export { type StorageCmsModel } from "@webiny/api-headless-cms/types/index.js";
|
|
4
|
+
export interface ICmsModelOpenSearchIndexParams {
|
|
5
|
+
model: StorageCmsModel;
|
|
6
|
+
}
|
|
7
|
+
export interface ICmsModelOpenSearchIndexResult {
|
|
8
|
+
settings: OpenSearchIndexRequestBody;
|
|
9
|
+
shared: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface ICmsModelOpenSearchIndex {
|
|
12
|
+
execute(params: ICmsModelOpenSearchIndexParams): Promise<ICmsModelOpenSearchIndexResult>;
|
|
13
|
+
}
|
|
14
|
+
export declare const CmsModelOpenSearchIndex: import("@webiny/di").Abstraction<ICmsModelOpenSearchIndex>;
|
|
15
|
+
export declare namespace CmsModelOpenSearchIndex {
|
|
16
|
+
type Interface = ICmsModelOpenSearchIndex;
|
|
17
|
+
type Params = ICmsModelOpenSearchIndexParams;
|
|
18
|
+
type Result = ICmsModelOpenSearchIndexResult;
|
|
19
|
+
type Model = StorageCmsModel;
|
|
20
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/CmsModelOpenSearchIndex/abstractions.js","sources":["../../../src/features/CmsModelOpenSearchIndex/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api/index.js\";\nimport type { OpenSearchIndexRequestBody } from \"@webiny/api-opensearch/types.js\";\nimport { type StorageCmsModel } from \"@webiny/api-headless-cms/types/index.js\";\nexport { type StorageCmsModel } from \"@webiny/api-headless-cms/types/index.js\";\n\nexport interface ICmsModelOpenSearchIndexParams {\n model: StorageCmsModel;\n}\n\nexport interface ICmsModelOpenSearchIndexResult {\n settings: OpenSearchIndexRequestBody;\n shared: boolean;\n}\n\nexport interface ICmsModelOpenSearchIndex {\n execute(params: ICmsModelOpenSearchIndexParams): Promise<ICmsModelOpenSearchIndexResult>;\n}\n\nexport const CmsModelOpenSearchIndex = createAbstraction<ICmsModelOpenSearchIndex>(\n \"Cms/Model/OpenSearch/Index\"\n);\n\nexport namespace CmsModelOpenSearchIndex {\n export type Interface = ICmsModelOpenSearchIndex;\n export type Params = ICmsModelOpenSearchIndexParams;\n export type Result = ICmsModelOpenSearchIndexResult;\n export type Model = StorageCmsModel;\n}\n"],"names":["CmsModelOpenSearchIndex","createAbstraction"],"mappings":";AAkBO,MAAMA,0BAA0BC,kBACnC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api/index.js";
|
|
2
|
+
import { DefaultCmsModelOpenSearchIndex } from "./DefaultCmsModelOpenSearchIndex.js";
|
|
3
|
+
import { DefaultCmsModelOpenSearchIndexProvider } from "./DefaultCmsModelOpenSearchIndexProvider.js";
|
|
4
|
+
const CmsModelOpenSearchIndexFeature = createFeature({
|
|
5
|
+
name: "Cms/Model/OpenSearch/IndexFeature",
|
|
6
|
+
register: (container)=>{
|
|
7
|
+
container.register(DefaultCmsModelOpenSearchIndex);
|
|
8
|
+
container.register(DefaultCmsModelOpenSearchIndexProvider).inSingletonScope();
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
export { CmsModelOpenSearchIndexFeature };
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/CmsModelOpenSearchIndex/feature.js","sources":["../../../src/features/CmsModelOpenSearchIndex/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api/index.js\";\nimport { DefaultCmsModelOpenSearchIndex } from \"./DefaultCmsModelOpenSearchIndex.js\";\nimport { DefaultCmsModelOpenSearchIndexProvider } from \"./DefaultCmsModelOpenSearchIndexProvider.js\";\n\nexport const CmsModelOpenSearchIndexFeature = createFeature({\n name: \"Cms/Model/OpenSearch/IndexFeature\",\n register: container => {\n container.register(DefaultCmsModelOpenSearchIndex);\n container.register(DefaultCmsModelOpenSearchIndexProvider).inSingletonScope();\n }\n});\n"],"names":["CmsModelOpenSearchIndexFeature","createFeature","container","DefaultCmsModelOpenSearchIndex","DefaultCmsModelOpenSearchIndexProvider"],"mappings":";;;AAIO,MAAMA,iCAAiCC,cAAc;IACxD,MAAM;IACN,UAAUC,CAAAA;QACNA,UAAU,QAAQ,CAACC;QACnBD,UAAU,QAAQ,CAACE,wCAAwC,gBAAgB;IAC/E;AACJ"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { CmsModelOpenSearchIndex } from "./abstractions.js";
|
|
2
|
+
export type { ICmsModelOpenSearchIndex, ICmsModelOpenSearchIndexParams, ICmsModelOpenSearchIndexResult } from "./abstractions.js";
|
|
3
|
+
export { CmsModelOpenSearchIndexProvider } from "./CmsModelOpenSearchIndexProvider.js";
|
|
4
|
+
export type { ICmsModelOpenSearchIndexProvider, ICmsModelOpenSearchIndexProviderResult } from "./CmsModelOpenSearchIndexProvider.js";
|
|
5
|
+
export { DefaultCmsModelOpenSearchIndex } from "./DefaultCmsModelOpenSearchIndex.js";
|
|
6
|
+
export { DefaultCmsModelOpenSearchIndexProvider } from "./DefaultCmsModelOpenSearchIndexProvider.js";
|
|
7
|
+
export { CmsModelOpenSearchIndexFeature } from "./feature.js";
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { CmsModelOpenSearchIndex } from "./abstractions.js";
|
|
2
|
+
export { CmsModelOpenSearchIndexProvider } from "./CmsModelOpenSearchIndexProvider.js";
|
|
3
|
+
export { DefaultCmsModelOpenSearchIndex } from "./DefaultCmsModelOpenSearchIndex.js";
|
|
4
|
+
export { DefaultCmsModelOpenSearchIndexProvider } from "./DefaultCmsModelOpenSearchIndexProvider.js";
|
|
5
|
+
export { CmsModelOpenSearchIndexFeature } from "./feature.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/api-headless-cms-utils-os",
|
|
3
|
-
"version": "6.6.0-alpha.
|
|
3
|
+
"version": "6.6.0-alpha.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./index.js",
|
|
@@ -15,13 +15,13 @@
|
|
|
15
15
|
"license": "MIT",
|
|
16
16
|
"author": "Webiny Ltd.",
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@webiny/api-headless-cms": "6.6.0-alpha.
|
|
19
|
-
"@webiny/api-opensearch": "6.6.0-alpha.
|
|
20
|
-
"@webiny/error": "6.6.0-alpha.
|
|
21
|
-
"@webiny/feature": "6.6.0-alpha.
|
|
18
|
+
"@webiny/api-headless-cms": "6.6.0-alpha.2",
|
|
19
|
+
"@webiny/api-opensearch": "6.6.0-alpha.2",
|
|
20
|
+
"@webiny/error": "6.6.0-alpha.2",
|
|
21
|
+
"@webiny/feature": "6.6.0-alpha.2"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
|
-
"@webiny/build-tools": "6.6.0-alpha.
|
|
24
|
+
"@webiny/build-tools": "6.6.0-alpha.2",
|
|
25
25
|
"typescript": "7.0.2"
|
|
26
26
|
},
|
|
27
27
|
"publishConfig": {
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { Container } from "@webiny/feature/api/index.js";
|
|
2
|
+
import type { CmsModelOpenSearchIndex } from "../features/CmsModelOpenSearchIndex/abstractions.js";
|
|
3
|
+
export declare const createTestModelIndexName: (container: Container, params: CmsModelOpenSearchIndex.Params) => Promise<string>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { getOpenSearchIndexPrefix } from "@webiny/api-opensearch";
|
|
2
|
+
import { CmsModelOpenSearchIndexProvider } from "../features/CmsModelOpenSearchIndex/index.js";
|
|
3
|
+
const createTestModelIndexName = async (container, params)=>{
|
|
4
|
+
const provider = container.resolve(CmsModelOpenSearchIndexProvider);
|
|
5
|
+
const result = await provider.execute(params);
|
|
6
|
+
const prefix = getOpenSearchIndexPrefix();
|
|
7
|
+
return prefix ? prefix + result.index : result.index;
|
|
8
|
+
};
|
|
9
|
+
export { createTestModelIndexName };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=createTestModelIndexName.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testing/createTestModelIndexName.js","sources":["../../src/testing/createTestModelIndexName.ts"],"sourcesContent":["import { getOpenSearchIndexPrefix } from \"@webiny/api-opensearch\";\nimport type { Container } from \"@webiny/feature/api/index.js\";\nimport type { CmsModelOpenSearchIndex } from \"../features/CmsModelOpenSearchIndex/abstractions.js\";\nimport { CmsModelOpenSearchIndexProvider } from \"../features/CmsModelOpenSearchIndex/index.js\";\n\nexport const createTestModelIndexName = async (\n container: Container,\n params: CmsModelOpenSearchIndex.Params\n): Promise<string> => {\n const provider = container.resolve(CmsModelOpenSearchIndexProvider);\n const result = await provider.execute(params);\n const prefix = getOpenSearchIndexPrefix();\n return prefix ? prefix + result.index : result.index;\n};\n"],"names":["createTestModelIndexName","container","params","provider","CmsModelOpenSearchIndexProvider","result","prefix","getOpenSearchIndexPrefix"],"mappings":";;AAKO,MAAMA,2BAA2B,OACpCC,WACAC;IAEA,MAAMC,WAAWF,UAAU,OAAO,CAACG;IACnC,MAAMC,SAAS,MAAMF,SAAS,OAAO,CAACD;IACtC,MAAMI,SAASC;IACf,OAAOD,SAASA,SAASD,OAAO,KAAK,GAAGA,OAAO,KAAK;AACxD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { createTestModelIndexName } from "./createTestModelIndexName.js";
|
package/testing/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { createTestModelIndexName } from "./createTestModelIndexName.js";
|