@webiny/api-headless-cms-ddb-es 5.23.1 → 5.25.0-beta.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/configurations.js.map +1 -0
- package/definitions/entry.d.ts +2 -2
- package/definitions/entry.js.map +1 -0
- package/definitions/entryElasticsearch.d.ts +2 -2
- package/definitions/entryElasticsearch.js.map +1 -0
- package/definitions/group.d.ts +2 -2
- package/definitions/group.js.map +1 -0
- package/definitions/model.d.ts +2 -2
- package/definitions/model.js.map +1 -0
- package/definitions/settings.d.ts +2 -2
- package/definitions/settings.js.map +1 -0
- package/definitions/system.d.ts +2 -2
- package/definitions/system.js.map +1 -0
- package/definitions/table.d.ts +2 -2
- package/definitions/table.js.map +1 -0
- package/definitions/tableElasticsearch.d.ts +2 -2
- package/definitions/tableElasticsearch.js.map +1 -0
- package/dynamoDb/index.js.map +1 -0
- package/dynamoDb/storage/date.js.map +1 -0
- package/dynamoDb/storage/longText.js +1 -0
- package/dynamoDb/storage/longText.js.map +1 -0
- package/dynamoDb/storage/richText.js +14 -2
- package/dynamoDb/storage/richText.js.map +1 -0
- package/elasticsearch/index.js.map +1 -0
- package/elasticsearch/indexing/dateTimeIndexing.js.map +1 -0
- package/elasticsearch/indexing/defaultFieldIndexing.js.map +1 -0
- package/elasticsearch/indexing/index.js.map +1 -0
- package/elasticsearch/indexing/longTextIndexing.js.map +1 -0
- package/elasticsearch/indexing/numberIndexing.js.map +1 -0
- package/elasticsearch/indexing/objectIndexing.js +16 -2
- package/elasticsearch/indexing/objectIndexing.js.map +1 -0
- package/elasticsearch/indexing/richTextIndexing.js.map +1 -0
- package/elasticsearch/search/index.js.map +1 -0
- package/elasticsearch/search/refSearch.js.map +1 -0
- package/elasticsearch/search/timeSearch.js +3 -1
- package/elasticsearch/search/timeSearch.js.map +1 -0
- package/helpers/createElasticsearchQueryBody.js +12 -8
- package/helpers/createElasticsearchQueryBody.js.map +1 -0
- package/helpers/entryIndexHelpers.js.map +1 -0
- package/helpers/fields.d.ts +1 -61
- package/helpers/fields.js.map +1 -0
- package/helpers/index.js.map +1 -0
- package/helpers/operatorPluginsList.js.map +1 -0
- package/helpers/searchPluginsList.js.map +1 -0
- package/helpers/transformValueForSearch.d.ts +5 -2
- package/helpers/transformValueForSearch.js +3 -0
- package/helpers/transformValueForSearch.js.map +1 -0
- package/index.js +7 -7
- package/index.js.map +1 -0
- package/operations/entry/dataLoaders.d.ts +6 -2
- package/operations/entry/dataLoaders.js +19 -0
- package/operations/entry/dataLoaders.js.map +1 -0
- package/operations/entry/elasticsearchFields.js.map +1 -0
- package/operations/entry/fields.js +1 -0
- package/operations/entry/fields.js.map +1 -0
- package/operations/entry/index.d.ts +2 -2
- package/operations/entry/index.js +26 -46
- package/operations/entry/index.js.map +1 -0
- package/operations/entry/keys.js.map +1 -0
- package/operations/group/index.d.ts +2 -2
- package/operations/group/index.js.map +1 -0
- package/operations/model/index.d.ts +2 -2
- package/operations/model/index.js.map +1 -0
- package/operations/settings/index.d.ts +2 -2
- package/operations/settings/index.js.map +1 -0
- package/operations/system/createElasticsearchTemplate.d.ts +2 -2
- package/operations/system/createElasticsearchTemplate.js.map +1 -0
- package/operations/system/index.d.ts +2 -2
- package/operations/system/index.js.map +1 -0
- package/package.json +18 -20
- package/plugins/CmsEntryElasticsearchBodyModifierPlugin.d.ts +2 -2
- package/plugins/CmsEntryElasticsearchBodyModifierPlugin.js.map +1 -0
- package/plugins/CmsEntryElasticsearchFieldPlugin.d.ts +3 -3
- package/plugins/CmsEntryElasticsearchFieldPlugin.js.map +1 -0
- package/plugins/CmsEntryElasticsearchQueryBuilderValueSearchPlugin.d.ts +3 -3
- package/plugins/CmsEntryElasticsearchQueryBuilderValueSearchPlugin.js.map +1 -0
- package/plugins/CmsEntryElasticsearchQueryModifierPlugin.d.ts +2 -2
- package/plugins/CmsEntryElasticsearchQueryModifierPlugin.js.map +1 -0
- package/plugins/CmsEntryElasticsearchSortModifierPlugin.d.ts +2 -2
- package/plugins/CmsEntryElasticsearchSortModifierPlugin.js.map +1 -0
- package/types.js.map +1 -0
- package/upgrades/index.js.map +1 -0
- package/upgrades/utils.d.ts +3 -0
- package/upgrades/utils.js +4 -0
- package/upgrades/utils.js.map +1 -0
- package/upgrades/v5.0.0/cleanDatabaseRecord.d.ts +6 -3
- package/upgrades/v5.0.0/cleanDatabaseRecord.js +6 -2
- package/upgrades/v5.0.0/cleanDatabaseRecord.js.map +1 -0
- package/upgrades/v5.0.0/createOldVersionIndiceName.js.map +1 -0
- package/upgrades/v5.0.0/entryValueFixer.d.ts +3 -0
- package/upgrades/v5.0.0/entryValueFixer.js.map +1 -0
- package/upgrades/v5.0.0/fieldFinder.d.ts +3 -0
- package/upgrades/v5.0.0/fieldFinder.js +4 -0
- package/upgrades/v5.0.0/fieldFinder.js.map +1 -0
- package/upgrades/v5.0.0/helpers.js.map +1 -0
- package/upgrades/v5.0.0/index.js.map +1 -0
- package/upgrades/v5.8.0/index.d.ts +3 -0
- package/upgrades/v5.8.0/index.js +3 -3
- package/upgrades/v5.8.0/index.js.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["configurations.ts"],"names":["configurations","es","model","tenant","locale","sharedIndex","process","env","ELASTICSEARCH_SHARED_INDEXES","index","modelId","join","toLowerCase","prefix","ELASTIC_SEARCH_INDEX_PREFIX"],"mappings":";;;;;;AAaA,MAAMA,cAA8B,GAAG;AACnCC,EAAAA,EAAE,CAAC;AAAEC,IAAAA;AAAF,GAAD,EAAY;AACV,UAAM;AAAEC,MAAAA,MAAF;AAAUC,MAAAA;AAAV,QAAqBF,KAA3B;AACA,UAAMG,WAAW,GAAGC,OAAO,CAACC,GAAR,CAAYC,4BAAZ,KAA6C,MAAjE;AACA,UAAMC,KAAK,GAAG,CAACJ,WAAW,GAAG,MAAH,GAAYF,MAAxB,EAAgC,cAAhC,EAAgDC,MAAhD,EAAwDF,KAAK,CAACQ,OAA9D,EACTC,IADS,CACJ,GADI,EAETC,WAFS,EAAd;AAIA,UAAMC,MAAM,GAAGP,OAAO,CAACC,GAAR,CAAYO,2BAA3B;;AACA,QAAID,MAAJ,EAAY;AACR,aAAO;AAAEJ,QAAAA,KAAK,EAAEI,MAAM,GAAGJ;AAAlB,OAAP;AACH;;AACD,WAAO;AAAEA,MAAAA;AAAF,KAAP;AACH;;AAbkC,CAAvC;eAgBeT,c","sourcesContent":["import { CmsModel } from \"@webiny/api-headless-cms/types\";\n\ninterface ElasticsearchConfig {\n index: string;\n}\n\ninterface CmsElasticsearchParams {\n model: CmsModel;\n}\ninterface Configurations {\n es: (params: CmsElasticsearchParams) => ElasticsearchConfig;\n}\n\nconst configurations: Configurations = {\n es({ model }) {\n const { tenant, locale } = model;\n const sharedIndex = process.env.ELASTICSEARCH_SHARED_INDEXES === \"true\";\n const index = [sharedIndex ? \"root\" : tenant, \"headless-cms\", locale, model.modelId]\n .join(\"-\")\n .toLowerCase();\n\n const prefix = process.env.ELASTIC_SEARCH_INDEX_PREFIX;\n if (prefix) {\n return { index: prefix + index };\n }\n return { index };\n }\n};\n\nexport default configurations;\n"]}
|
package/definitions/entry.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Entity, Table } from "dynamodb-toolbox";
|
|
2
2
|
import { Attributes } from "../types";
|
|
3
|
-
export interface
|
|
3
|
+
export interface CreateEntryEntityParams {
|
|
4
4
|
table: Table;
|
|
5
5
|
entityName: string;
|
|
6
6
|
attributes: Attributes;
|
|
7
7
|
}
|
|
8
|
-
export declare const createEntryEntity: (params:
|
|
8
|
+
export declare const createEntryEntity: (params: CreateEntryEntityParams) => Entity<any>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["entry.ts"],"names":["createEntryEntity","params","table","entityName","attributes","Entity","name","PK","type","partitionKey","SK","sortKey","TYPE","__type","webinyVersion","tenant","entryId","id","createdBy","ownedBy","createdOn","savedOn","modelId","locale","publishedOn","version","locked","status","values"],"mappings":";;;;;;;;;;;AAAA;;;;;;AAQO,MAAMA,iBAAiB,GAAIC,MAAD,IAAkD;AAC/E,QAAM;AAAEC,IAAAA,KAAF;AAASC,IAAAA,UAAT;AAAqBC,IAAAA;AAArB,MAAoCH,MAA1C;AACA,SAAO,IAAII,uBAAJ,CAAW;AACdC,IAAAA,IAAI,EAAEH,UADQ;AAEdD,IAAAA,KAFc;AAGdE,IAAAA,UAAU;AACNG,MAAAA,EAAE,EAAE;AACAC,QAAAA,IAAI,EAAE,QADN;AAEAC,QAAAA,YAAY,EAAE;AAFd,OADE;AAKNC,MAAAA,EAAE,EAAE;AACAF,QAAAA,IAAI,EAAE,QADN;AAEAG,QAAAA,OAAO,EAAE;AAFT,OALE;AASNC,MAAAA,IAAI,EAAE;AACFJ,QAAAA,IAAI,EAAE;AADJ,OATA;AAYNK,MAAAA,MAAM,EAAE;AACJL,QAAAA,IAAI,EAAE;AADF,OAZF;AAeNM,MAAAA,aAAa,EAAE;AACXN,QAAAA,IAAI,EAAE;AADK,OAfT;AAkBNO,MAAAA,MAAM,EAAE;AACJP,QAAAA,IAAI,EAAE;AADF,OAlBF;AAqBNQ,MAAAA,OAAO,EAAE;AACLR,QAAAA,IAAI,EAAE;AADD,OArBH;AAwBNS,MAAAA,EAAE,EAAE;AACAT,QAAAA,IAAI,EAAE;AADN,OAxBE;AA2BNU,MAAAA,SAAS,EAAE;AACPV,QAAAA,IAAI,EAAE;AADC,OA3BL;AA8BNW,MAAAA,OAAO,EAAE;AACLX,QAAAA,IAAI,EAAE;AADD,OA9BH;AAiCNY,MAAAA,SAAS,EAAE;AACPZ,QAAAA,IAAI,EAAE;AADC,OAjCL;AAoCNa,MAAAA,OAAO,EAAE;AACLb,QAAAA,IAAI,EAAE;AADD,OApCH;AAuCNc,MAAAA,OAAO,EAAE;AACLd,QAAAA,IAAI,EAAE;AADD,OAvCH;AA0CNe,MAAAA,MAAM,EAAE;AACJf,QAAAA,IAAI,EAAE;AADF,OA1CF;AA6CNgB,MAAAA,WAAW,EAAE;AACThB,QAAAA,IAAI,EAAE;AADG,OA7CP;AAgDNiB,MAAAA,OAAO,EAAE;AACLjB,QAAAA,IAAI,EAAE;AADD,OAhDH;AAmDNkB,MAAAA,MAAM,EAAE;AACJlB,QAAAA,IAAI,EAAE;AADF,OAnDF;AAsDNmB,MAAAA,MAAM,EAAE;AACJnB,QAAAA,IAAI,EAAE;AADF,OAtDF;AAyDNoB,MAAAA,MAAM,EAAE;AACJpB,QAAAA,IAAI,EAAE;AADF;AAzDF,OA4DFJ,UAAU,IAAI,EA5DZ;AAHI,GAAX,CAAP;AAkEH,CApEM","sourcesContent":["import { Entity, Table } from \"dynamodb-toolbox\";\nimport { Attributes } from \"~/types\";\n\nexport interface CreateEntryEntityParams {\n table: Table;\n entityName: string;\n attributes: Attributes;\n}\nexport const createEntryEntity = (params: CreateEntryEntityParams): Entity<any> => {\n const { table, entityName, attributes } = params;\n return new Entity({\n name: entityName,\n table,\n attributes: {\n PK: {\n type: \"string\",\n partitionKey: true\n },\n SK: {\n type: \"string\",\n sortKey: true\n },\n TYPE: {\n type: \"string\"\n },\n __type: {\n type: \"string\"\n },\n webinyVersion: {\n type: \"string\"\n },\n tenant: {\n type: \"string\"\n },\n entryId: {\n type: \"string\"\n },\n id: {\n type: \"string\"\n },\n createdBy: {\n type: \"map\"\n },\n ownedBy: {\n type: \"map\"\n },\n createdOn: {\n type: \"string\"\n },\n savedOn: {\n type: \"string\"\n },\n modelId: {\n type: \"string\"\n },\n locale: {\n type: \"string\"\n },\n publishedOn: {\n type: \"string\"\n },\n version: {\n type: \"number\"\n },\n locked: {\n type: \"boolean\"\n },\n status: {\n type: \"string\"\n },\n values: {\n type: \"map\"\n },\n ...(attributes || {})\n }\n });\n};\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Entity, Table } from "dynamodb-toolbox";
|
|
2
2
|
import { Attributes } from "../types";
|
|
3
|
-
export interface
|
|
3
|
+
export interface CreateEntryElasticsearchEntityParams {
|
|
4
4
|
table: Table;
|
|
5
5
|
entityName: string;
|
|
6
6
|
attributes: Attributes;
|
|
7
7
|
}
|
|
8
|
-
export declare const createEntryElasticsearchEntity: (params:
|
|
8
|
+
export declare const createEntryElasticsearchEntity: (params: CreateEntryElasticsearchEntityParams) => Entity<any>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["entryElasticsearch.ts"],"names":["createEntryElasticsearchEntity","params","table","entityName","attributes","Entity","name","PK","type","partitionKey","SK","sortKey","index","data"],"mappings":";;;;;;;;;;;AAAA;;;;;;AAQO,MAAMA,8BAA8B,GACvCC,MAD0C,IAE5B;AACd,QAAM;AAAEC,IAAAA,KAAF;AAASC,IAAAA,UAAT;AAAqBC,IAAAA;AAArB,MAAoCH,MAA1C;AACA,SAAO,IAAII,uBAAJ,CAAW;AACdC,IAAAA,IAAI,EAAEH,UADQ;AAEdD,IAAAA,KAFc;AAGdE,IAAAA,UAAU;AACNG,MAAAA,EAAE,EAAE;AACAC,QAAAA,IAAI,EAAE,QADN;AAEAC,QAAAA,YAAY,EAAE;AAFd,OADE;AAKNC,MAAAA,EAAE,EAAE;AACAF,QAAAA,IAAI,EAAE,QADN;AAEAG,QAAAA,OAAO,EAAE;AAFT,OALE;AASNC,MAAAA,KAAK,EAAE;AACHJ,QAAAA,IAAI,EAAE;AADH,OATD;AAYNK,MAAAA,IAAI,EAAE;AACFL,QAAAA,IAAI,EAAE;AADJ;AAZA,OAeFJ,UAAU,IAAI,EAfZ;AAHI,GAAX,CAAP;AAqBH,CAzBM","sourcesContent":["import { Entity, Table } from \"dynamodb-toolbox\";\nimport { Attributes } from \"~/types\";\n\nexport interface CreateEntryElasticsearchEntityParams {\n table: Table;\n entityName: string;\n attributes: Attributes;\n}\nexport const createEntryElasticsearchEntity = (\n params: CreateEntryElasticsearchEntityParams\n): Entity<any> => {\n const { table, entityName, attributes } = params;\n return new Entity({\n name: entityName,\n table,\n attributes: {\n PK: {\n type: \"string\",\n partitionKey: true\n },\n SK: {\n type: \"string\",\n sortKey: true\n },\n index: {\n type: \"string\"\n },\n data: {\n type: \"map\"\n },\n ...(attributes || {})\n }\n });\n};\n"]}
|
package/definitions/group.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Entity, Table } from "dynamodb-toolbox";
|
|
2
2
|
import { Attributes } from "../types";
|
|
3
|
-
export interface
|
|
3
|
+
export interface CreateGroupEntityParams {
|
|
4
4
|
table: Table;
|
|
5
5
|
entityName: string;
|
|
6
6
|
attributes: Attributes;
|
|
7
7
|
}
|
|
8
|
-
export declare const createGroupEntity: (params:
|
|
8
|
+
export declare const createGroupEntity: (params: CreateGroupEntityParams) => Entity<any>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["group.ts"],"names":["createGroupEntity","params","table","attributes","entityName","Entity","name","PK","partitionKey","SK","sortKey","TYPE","type","webinyVersion","id","slug","locale","description","icon","createdBy","createdOn","savedOn","tenant"],"mappings":";;;;;;;;;;;AAAA;;;;;;AAQO,MAAMA,iBAAiB,GAAIC,MAAD,IAAkD;AAC/E,QAAM;AAAEC,IAAAA,KAAF;AAASC,IAAAA,UAAT;AAAqBC,IAAAA;AAArB,MAAoCH,MAA1C;AACA,SAAO,IAAII,uBAAJ,CAAW;AACdC,IAAAA,IAAI,EAAEF,UADQ;AAEdF,IAAAA,KAFc;AAGdC,IAAAA,UAAU;AACNI,MAAAA,EAAE,EAAE;AACAC,QAAAA,YAAY,EAAE;AADd,OADE;AAINC,MAAAA,EAAE,EAAE;AACAC,QAAAA,OAAO,EAAE;AADT,OAJE;AAONC,MAAAA,IAAI,EAAE;AACFC,QAAAA,IAAI,EAAE;AADJ,OAPA;AAUNC,MAAAA,aAAa,EAAE;AACXD,QAAAA,IAAI,EAAE;AADK,OAVT;AAaNE,MAAAA,EAAE,EAAE;AACAF,QAAAA,IAAI,EAAE;AADN,OAbE;AAgBNN,MAAAA,IAAI,EAAE;AACFM,QAAAA,IAAI,EAAE;AADJ,OAhBA;AAmBNG,MAAAA,IAAI,EAAE;AACFH,QAAAA,IAAI,EAAE;AADJ,OAnBA;AAsBNI,MAAAA,MAAM,EAAE;AACJJ,QAAAA,IAAI,EAAE;AADF,OAtBF;AAyBNK,MAAAA,WAAW,EAAE;AACTL,QAAAA,IAAI,EAAE;AADG,OAzBP;AA4BNM,MAAAA,IAAI,EAAE;AACFN,QAAAA,IAAI,EAAE;AADJ,OA5BA;AAgCNO,MAAAA,SAAS,EAAE;AACPP,QAAAA,IAAI,EAAE;AADC,OAhCL;AAmCNQ,MAAAA,SAAS,EAAE;AACPR,QAAAA,IAAI,EAAE;AADC,OAnCL;AAsCNS,MAAAA,OAAO,EAAE;AACLT,QAAAA,IAAI,EAAE;AADD,OAtCH;AAyCNU,MAAAA,MAAM,EAAE;AACJV,QAAAA,IAAI,EAAE;AADF;AAzCF,OA4CFT,UAAU,IAAI,EA5CZ;AAHI,GAAX,CAAP;AAkDH,CApDM","sourcesContent":["import { Entity, Table } from \"dynamodb-toolbox\";\nimport { Attributes } from \"~/types\";\n\nexport interface CreateGroupEntityParams {\n table: Table;\n entityName: string;\n attributes: Attributes;\n}\nexport const createGroupEntity = (params: CreateGroupEntityParams): Entity<any> => {\n const { table, attributes, entityName } = params;\n return new Entity({\n name: entityName,\n table,\n attributes: {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n TYPE: {\n type: \"string\"\n },\n webinyVersion: {\n type: \"string\"\n },\n id: {\n type: \"string\"\n },\n name: {\n type: \"string\"\n },\n slug: {\n type: \"string\"\n },\n locale: {\n type: \"string\"\n },\n description: {\n type: \"string\"\n },\n icon: {\n type: \"string\"\n },\n\n createdBy: {\n type: \"map\"\n },\n createdOn: {\n type: \"string\"\n },\n savedOn: {\n type: \"string\"\n },\n tenant: {\n type: \"string\"\n },\n ...(attributes || {})\n }\n });\n};\n"]}
|
package/definitions/model.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Entity, Table } from "dynamodb-toolbox";
|
|
2
2
|
import { Attributes } from "../types";
|
|
3
|
-
export interface
|
|
3
|
+
export interface CreateModelEntityParams {
|
|
4
4
|
table: Table;
|
|
5
5
|
entityName: string;
|
|
6
6
|
attributes: Attributes;
|
|
7
7
|
}
|
|
8
|
-
export declare const createModelEntity: (params:
|
|
8
|
+
export declare const createModelEntity: (params: CreateModelEntityParams) => Entity<any>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["model.ts"],"names":["createModelEntity","params","table","attributes","entityName","Entity","name","PK","partitionKey","SK","sortKey","TYPE","type","required","webinyVersion","modelId","locale","group","description","createdOn","savedOn","createdBy","fields","layout","lockedFields","titleFieldId","tenant"],"mappings":";;;;;;;;;;;AAAA;;;;;;AASO,MAAMA,iBAAiB,GAAIC,MAAD,IAAkD;AAC/E,QAAM;AAAEC,IAAAA,KAAF;AAASC,IAAAA,UAAT;AAAqBC,IAAAA;AAArB,MAAoCH,MAA1C;AACA,SAAO,IAAII,uBAAJ,CAAW;AACdC,IAAAA,IAAI,EAAEF,UADQ;AAEdF,IAAAA,KAFc;AAGdC,IAAAA,UAAU;AACNI,MAAAA,EAAE,EAAE;AACAC,QAAAA,YAAY,EAAE;AADd,OADE;AAINC,MAAAA,EAAE,EAAE;AACAC,QAAAA,OAAO,EAAE;AADT,OAJE;AAONC,MAAAA,IAAI,EAAE;AACFC,QAAAA,IAAI,EAAE,QADJ;AAEFC,QAAAA,QAAQ,EAAE;AAFR,OAPA;AAWNC,MAAAA,aAAa,EAAE;AACXF,QAAAA,IAAI,EAAE,QADK;AAEXC,QAAAA,QAAQ,EAAE;AAFC,OAXT;AAeNP,MAAAA,IAAI,EAAE;AACFM,QAAAA,IAAI,EAAE,QADJ;AAEFC,QAAAA,QAAQ,EAAE;AAFR,OAfA;AAmBNE,MAAAA,OAAO,EAAE;AACLH,QAAAA,IAAI,EAAE,QADD;AAELC,QAAAA,QAAQ,EAAE;AAFL,OAnBH;AAuBNG,MAAAA,MAAM,EAAE;AACJJ,QAAAA,IAAI,EAAE,QADF;AAEJC,QAAAA,QAAQ,EAAE;AAFN,OAvBF;AA2BNI,MAAAA,KAAK,EAAE;AACHL,QAAAA,IAAI,EAAE,KADH;AAEHC,QAAAA,QAAQ,EAAE;AAFP,OA3BD;AA+BNK,MAAAA,WAAW,EAAE;AACTN,QAAAA,IAAI,EAAE;AADG,OA/BP;AAkCNO,MAAAA,SAAS,EAAE;AACPP,QAAAA,IAAI,EAAE,QADC;AAEPC,QAAAA,QAAQ,EAAE;AAFH,OAlCL;AAsCNO,MAAAA,OAAO,EAAE;AACLR,QAAAA,IAAI,EAAE,QADD;AAELC,QAAAA,QAAQ,EAAE;AAFL,OAtCH;AA0CNQ,MAAAA,SAAS,EAAE;AACPT,QAAAA,IAAI,EAAE,KADC;AAEPC,QAAAA,QAAQ,EAAE;AAFH,OA1CL;AA8CNS,MAAAA,MAAM,EAAE;AACJV,QAAAA,IAAI,EAAE,MADF;AAEJC,QAAAA,QAAQ,EAAE;AAFN,OA9CF;AAkDNU,MAAAA,MAAM,EAAE;AACJX,QAAAA,IAAI,EAAE,MADF;AAEJC,QAAAA,QAAQ,EAAE;AAFN,OAlDF;AAsDNW,MAAAA,YAAY,EAAE;AACVZ,QAAAA,IAAI,EAAE,MADI;AAEVC,QAAAA,QAAQ,EAAE;AAFA,OAtDR;AA0DNY,MAAAA,YAAY,EAAE;AACVb,QAAAA,IAAI,EAAE;AADI,OA1DR;AA6DNc,MAAAA,MAAM,EAAE;AACJd,QAAAA,IAAI,EAAE,QADF;AAEJC,QAAAA,QAAQ,EAAE;AAFN;AA7DF,OAiEFV,UAAU,IAAI,EAjEZ;AAHI,GAAX,CAAP;AAuEH,CAzEM","sourcesContent":["import { Entity, Table } from \"dynamodb-toolbox\";\nimport { Attributes } from \"~/types\";\n\nexport interface CreateModelEntityParams {\n table: Table;\n entityName: string;\n attributes: Attributes;\n}\n\nexport const createModelEntity = (params: CreateModelEntityParams): Entity<any> => {\n const { table, attributes, entityName } = params;\n return new Entity({\n name: entityName,\n table,\n attributes: {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n TYPE: {\n type: \"string\",\n required: true\n },\n webinyVersion: {\n type: \"string\",\n required: true\n },\n name: {\n type: \"string\",\n required: true\n },\n modelId: {\n type: \"string\",\n required: true\n },\n locale: {\n type: \"string\",\n required: true\n },\n group: {\n type: \"map\",\n required: true\n },\n description: {\n type: \"string\"\n },\n createdOn: {\n type: \"string\",\n required: true\n },\n savedOn: {\n type: \"string\",\n required: true\n },\n createdBy: {\n type: \"map\",\n required: true\n },\n fields: {\n type: \"list\",\n required: true\n },\n layout: {\n type: \"list\",\n required: true\n },\n lockedFields: {\n type: \"list\",\n required: true\n },\n titleFieldId: {\n type: \"string\"\n },\n tenant: {\n type: \"string\",\n required: true\n },\n ...(attributes || {})\n }\n });\n};\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Entity, Table } from "dynamodb-toolbox";
|
|
2
2
|
import { Attributes } from "../types";
|
|
3
|
-
export interface
|
|
3
|
+
export interface CreateSettingsEntityParams {
|
|
4
4
|
table: Table;
|
|
5
5
|
entityName: string;
|
|
6
6
|
attributes: Attributes;
|
|
7
7
|
}
|
|
8
|
-
export declare const createSettingsEntity: (params:
|
|
8
|
+
export declare const createSettingsEntity: (params: CreateSettingsEntityParams) => Entity<any>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["settings.ts"],"names":["createSettingsEntity","params","entityName","table","attributes","Entity","name","PK","partitionKey","SK","sortKey","TYPE","type","key","uploadMinFileSize","uploadMaxFileSize","srcPrefix","contentModelLastChange","tenant","locale"],"mappings":";;;;;;;;;;;AAAA;;;;;;AASO,MAAMA,oBAAoB,GAAIC,MAAD,IAAqD;AACrF,QAAM;AAAEC,IAAAA,UAAF;AAAcC,IAAAA,KAAd;AAAqBC,IAAAA;AAArB,MAAoCH,MAA1C;AACA,SAAO,IAAII,uBAAJ,CAAW;AACdC,IAAAA,IAAI,EAAEJ,UADQ;AAEdC,IAAAA,KAFc;AAGdC,IAAAA,UAAU;AACNG,MAAAA,EAAE,EAAE;AACAC,QAAAA,YAAY,EAAE;AADd,OADE;AAINC,MAAAA,EAAE,EAAE;AACAC,QAAAA,OAAO,EAAE;AADT,OAJE;AAONC,MAAAA,IAAI,EAAE;AACFC,QAAAA,IAAI,EAAE;AADJ,OAPA;AAUNC,MAAAA,GAAG,EAAE;AACDD,QAAAA,IAAI,EAAE;AADL,OAVC;AAaNE,MAAAA,iBAAiB,EAAE;AACfF,QAAAA,IAAI,EAAE;AADS,OAbb;AAgBNG,MAAAA,iBAAiB,EAAE;AACfH,QAAAA,IAAI,EAAE;AADS,OAhBb;AAmBNI,MAAAA,SAAS,EAAE;AACPJ,QAAAA,IAAI,EAAE;AADC,OAnBL;AAsBNK,MAAAA,sBAAsB,EAAE;AACpBL,QAAAA,IAAI,EAAE;AADc,OAtBlB;AAyBNM,MAAAA,MAAM,EAAE;AACJN,QAAAA,IAAI,EAAE;AADF,OAzBF;AA4BNO,MAAAA,MAAM,EAAE;AACJP,QAAAA,IAAI,EAAE;AADF;AA5BF,OA+BFR,UAAU,IAAI,EA/BZ;AAHI,GAAX,CAAP;AAqCH,CAvCM","sourcesContent":["import { Entity, Table } from \"dynamodb-toolbox\";\nimport { Attributes } from \"~/types\";\n\nexport interface CreateSettingsEntityParams {\n table: Table;\n entityName: string;\n attributes: Attributes;\n}\n\nexport const createSettingsEntity = (params: CreateSettingsEntityParams): Entity<any> => {\n const { entityName, table, attributes } = params;\n return new Entity({\n name: entityName,\n table,\n attributes: {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n TYPE: {\n type: \"string\"\n },\n key: {\n type: \"string\"\n },\n uploadMinFileSize: {\n type: \"number\"\n },\n uploadMaxFileSize: {\n type: \"number\"\n },\n srcPrefix: {\n type: \"string\"\n },\n contentModelLastChange: {\n type: \"string\"\n },\n tenant: {\n type: \"string\"\n },\n locale: {\n type: \"string\"\n },\n ...(attributes || {})\n }\n });\n};\n"]}
|
package/definitions/system.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Entity, Table } from "dynamodb-toolbox";
|
|
2
2
|
import { Attributes } from "../types";
|
|
3
|
-
export interface
|
|
3
|
+
export interface CreateSystemEntityParams {
|
|
4
4
|
table: Table;
|
|
5
5
|
entityName: string;
|
|
6
6
|
attributes: Attributes;
|
|
7
7
|
}
|
|
8
|
-
export declare const createSystemEntity: (params:
|
|
8
|
+
export declare const createSystemEntity: (params: CreateSystemEntityParams) => Entity<any>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["system.ts"],"names":["createSystemEntity","params","entityName","attributes","table","Entity","name","PK","partitionKey","SK","sortKey","version","type","locale","tenant","readAPIKey"],"mappings":";;;;;;;;;;;AAAA;;;;;;AASO,MAAMA,kBAAkB,GAAIC,MAAD,IAAmD;AACjF,QAAM;AAAEC,IAAAA,UAAF;AAAcC,IAAAA,UAAd;AAA0BC,IAAAA;AAA1B,MAAoCH,MAA1C;AACA,SAAO,IAAII,uBAAJ,CAAW;AACdC,IAAAA,IAAI,EAAEJ,UADQ;AAEdE,IAAAA,KAFc;AAGdD,IAAAA,UAAU;AACNI,MAAAA,EAAE,EAAE;AACAC,QAAAA,YAAY,EAAE;AADd,OADE;AAINC,MAAAA,EAAE,EAAE;AACAC,QAAAA,OAAO,EAAE;AADT,OAJE;AAONC,MAAAA,OAAO,EAAE;AACLC,QAAAA,IAAI,EAAE;AADD,OAPH;AAUNC,MAAAA,MAAM,EAAE;AACJD,QAAAA,IAAI,EAAE;AADF,OAVF;AAaNE,MAAAA,MAAM,EAAE;AACJF,QAAAA,IAAI,EAAE;AADF,OAbF;AAgBNG,MAAAA,UAAU,EAAE;AACRH,QAAAA,IAAI,EAAE;AADE;AAhBN,OAmBFT,UAAU,IAAI,EAnBZ;AAHI,GAAX,CAAP;AAyBH,CA3BM","sourcesContent":["import { Entity, Table } from \"dynamodb-toolbox\";\nimport { Attributes } from \"~/types\";\n\nexport interface CreateSystemEntityParams {\n table: Table;\n entityName: string;\n attributes: Attributes;\n}\n\nexport const createSystemEntity = (params: CreateSystemEntityParams): Entity<any> => {\n const { entityName, attributes, table } = params;\n return new Entity({\n name: entityName,\n table,\n attributes: {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n version: {\n type: \"string\"\n },\n locale: {\n type: \"string\"\n },\n tenant: {\n type: \"string\"\n },\n readAPIKey: {\n type: \"string\"\n },\n ...(attributes || {})\n }\n });\n};\n"]}
|
package/definitions/table.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { TableModifier } from "../types";
|
|
2
2
|
import { DocumentClient } from "aws-sdk/clients/dynamodb";
|
|
3
3
|
import { Table } from "dynamodb-toolbox";
|
|
4
|
-
export interface
|
|
4
|
+
export interface CreateTableParams {
|
|
5
5
|
table?: TableModifier;
|
|
6
6
|
documentClient: DocumentClient;
|
|
7
7
|
}
|
|
8
|
-
export declare const createTable: ({ table, documentClient }:
|
|
8
|
+
export declare const createTable: ({ table, documentClient }: CreateTableParams) => Table;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["table.ts"],"names":["createTable","table","documentClient","tableConfig","name","process","env","DB_TABLE_HEADLESS_CMS","DB_TABLE","partitionKey","sortKey","DocumentClient","config","Table"],"mappings":";;;;;;;AAEA;;AAOO,MAAMA,WAAW,GAAG,CAAC;AAAEC,EAAAA,KAAF;AAASC,EAAAA;AAAT,CAAD,KAAyD;AAChF,QAAMC,WAA6B,GAAG;AAClCC,IAAAA,IAAI,EAAEC,OAAO,CAACC,GAAR,CAAYC,qBAAZ,IAAsCF,OAAO,CAACC,GAAR,CAAYE,QADtB;AAElCC,IAAAA,YAAY,EAAE,IAFoB;AAGlCC,IAAAA,OAAO,EAAE,IAHyB;AAIlCC,IAAAA,cAAc,EAAET;AAJkB,GAAtC;AAOA,QAAMU,MAAM,GAAG,OAAOX,KAAP,KAAiB,UAAjB,GAA8BA,KAAK,CAACE,WAAD,CAAnC,GAAmDA,WAAlE;AAEA,SAAO,IAAIU,sBAAJ,CAAUD,MAAV,CAAP;AACH,CAXM","sourcesContent":["import { TableModifier } from \"~/types\";\nimport { DocumentClient } from \"aws-sdk/clients/dynamodb\";\nimport { Table } from \"dynamodb-toolbox\";\nimport { TableConstructor } from \"dynamodb-toolbox/dist/classes/Table\";\n\nexport interface CreateTableParams {\n table?: TableModifier;\n documentClient: DocumentClient;\n}\nexport const createTable = ({ table, documentClient }: CreateTableParams): Table => {\n const tableConfig: TableConstructor = {\n name: process.env.DB_TABLE_HEADLESS_CMS || (process.env.DB_TABLE as string),\n partitionKey: \"PK\",\n sortKey: \"SK\",\n DocumentClient: documentClient\n };\n\n const config = typeof table === \"function\" ? table(tableConfig) : tableConfig;\n\n return new Table(config);\n};\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { TableModifier } from "../types";
|
|
2
2
|
import { DocumentClient } from "aws-sdk/clients/dynamodb";
|
|
3
3
|
import { Table } from "dynamodb-toolbox";
|
|
4
|
-
export interface
|
|
4
|
+
export interface CreateElasticsearchTableParams {
|
|
5
5
|
table?: TableModifier;
|
|
6
6
|
documentClient: DocumentClient;
|
|
7
7
|
}
|
|
8
|
-
export declare const createElasticsearchTable: ({ table, documentClient }:
|
|
8
|
+
export declare const createElasticsearchTable: ({ table, documentClient }: CreateElasticsearchTableParams) => Table;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["tableElasticsearch.ts"],"names":["createElasticsearchTable","table","documentClient","tableConfig","name","process","env","DB_TABLE_ELASTICSEARCH","partitionKey","sortKey","DocumentClient","config","Table"],"mappings":";;;;;;;AAEA;;AAOO,MAAMA,wBAAwB,GAAG,CAAC;AACrCC,EAAAA,KADqC;AAErCC,EAAAA;AAFqC,CAAD,KAGK;AACzC,QAAMC,WAA6B,GAAG;AAClCC,IAAAA,IAAI,EAAEC,OAAO,CAACC,GAAR,CAAYC,sBADgB;AAElCC,IAAAA,YAAY,EAAE,IAFoB;AAGlCC,IAAAA,OAAO,EAAE,IAHyB;AAIlCC,IAAAA,cAAc,EAAER;AAJkB,GAAtC;AAOA,QAAMS,MAAM,GAAG,OAAOV,KAAP,KAAiB,UAAjB,GAA8BA,KAAK,CAACE,WAAD,CAAnC,GAAmDA,WAAlE;AAEA,SAAO,IAAIS,sBAAJ,CAAUD,MAAV,CAAP;AACH,CAdM","sourcesContent":["import { TableModifier } from \"~/types\";\nimport { DocumentClient } from \"aws-sdk/clients/dynamodb\";\nimport { Table } from \"dynamodb-toolbox\";\nimport { TableConstructor } from \"dynamodb-toolbox/dist/classes/Table\";\n\nexport interface CreateElasticsearchTableParams {\n table?: TableModifier;\n documentClient: DocumentClient;\n}\nexport const createElasticsearchTable = ({\n table,\n documentClient\n}: CreateElasticsearchTableParams): Table => {\n const tableConfig: TableConstructor = {\n name: process.env.DB_TABLE_ELASTICSEARCH as string,\n partitionKey: \"PK\",\n sortKey: \"SK\",\n DocumentClient: documentClient\n };\n\n const config = typeof table === \"function\" ? table(tableConfig) : tableConfig;\n\n return new Table(config);\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;eAEe,MAAM,CAAC,wBAAD,EAAoB,wBAApB,EAAuC,oBAAvC,C","sourcesContent":["import richTextStorage from \"./storage/richText\";\nimport longTextStorage from \"./storage/longText\";\nimport dateStorage from \"./storage/date\";\n\nexport default () => [richTextStorage(), longTextStorage(), dateStorage()];\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["date.ts"],"names":["excludeTypes","plugin","StorageTransformPlugin","fieldType","fromStorage","value","field","type","settings","includes","Date","console","log","toStorage","toISOString","WebinyError","fieldId"],"mappings":";;;;;;;;;AAAA;;AACA;;AAEA,MAAMA,YAAY,GAAG,CAAC,MAAD,EAAS,sBAAT,CAArB;AAEA,MAAMC,MAAM,GAAG,IAAIC,8CAAJ,CAA2B;AACtCC,EAAAA,SAAS,EAAE,UAD2B;AAEtCC,EAAAA,WAAW,EAAE,OAAO;AAAEC,IAAAA,KAAF;AAASC,IAAAA;AAAT,GAAP,KAA4B;AACrC,UAAM;AAAEC,MAAAA;AAAF,QAAWD,KAAK,CAACE,QAAN,IAAkB,EAAnC;;AACA,QAAI,CAACH,KAAD,IAAU,CAACE,IAAX,IAAmBP,YAAY,CAACS,QAAb,CAAsBF,IAAtB,CAAvB,EAAoD;AAChD,aAAOF,KAAP;AACH;;AACD,QAAI;AACA,aAAO,IAAIK,IAAJ,CAASL,KAAT,CAAP;AACH,KAFD,CAEE,MAAM;AACJM,MAAAA,OAAO,CAACC,GAAR,CAAa,iDAAb;AACA,aAAOP,KAAP;AACH;AACJ,GAbqC;AActCQ,EAAAA,SAAS,EAAE,OAAO;AAAER,IAAAA,KAAF;AAASC,IAAAA;AAAT,GAAP,KAA4B;AACnC,UAAM;AAAEC,MAAAA;AAAF,QAAWD,KAAK,CAACE,QAAN,IAAkB,EAAnC;;AACA,QAAI,CAACH,KAAD,IAAU,CAACE,IAAX,IAAmBP,YAAY,CAACS,QAAb,CAAsBF,IAAtB,CAAvB,EAAoD;AAChD,aAAOF,KAAP;AACH;;AACD,QAAKA,KAAD,CAAeS,WAAnB,EAAgC;AAC5B,aAAQT,KAAD,CAAgBS,WAAhB,EAAP;AACH,KAFD,MAEO,IAAI,OAAOT,KAAP,KAAiB,QAArB,EAA+B;AAClC,aAAOA,KAAP;AACH;;AACD,UAAM,IAAIU,cAAJ,CAAgB,2CAAhB,EAA6D,kBAA7D,EAAiF;AACnFV,MAAAA,KADmF;AAEnFW,MAAAA,OAAO,EAAEV,KAAK,CAACU;AAFoE,KAAjF,CAAN;AAIH;AA5BqC,CAA3B,CAAf;;eA+Be,MAAM;AACjB,SAAOf,MAAP;AACH,C","sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { StorageTransformPlugin } from \"@webiny/api-headless-cms/content/plugins/storage/StorageTransformPlugin\";\n\nconst excludeTypes = [\"time\", \"dateTimeWithTimezone\"];\n\nconst plugin = new StorageTransformPlugin({\n fieldType: \"datetime\",\n fromStorage: async ({ value, field }) => {\n const { type } = field.settings || {};\n if (!value || !type || excludeTypes.includes(type)) {\n return value;\n }\n try {\n return new Date(value);\n } catch {\n console.log(`Could not transform from storage for field type`);\n return value;\n }\n },\n toStorage: async ({ value, field }) => {\n const { type } = field.settings || {};\n if (!value || !type || excludeTypes.includes(type)) {\n return value;\n }\n if ((value as any).toISOString) {\n return (value as Date).toISOString();\n } else if (typeof value === \"string\") {\n return value as string;\n }\n throw new WebinyError(\"Error converting value to a storage type.\", \"TO_STORAGE_ERROR\", {\n value,\n fieldId: field.fieldId\n });\n }\n});\n\nexport default () => {\n return plugin;\n};\n"]}
|
|
@@ -61,6 +61,7 @@ const plugin = new _StorageTransformPlugin.StorageTransformPlugin({
|
|
|
61
61
|
const buf = await (0, _gzip.decompress)(convertToBuffer(value));
|
|
62
62
|
return buf.toString(FROM_STORAGE_ENCODING);
|
|
63
63
|
} catch (ex) {
|
|
64
|
+
console.log("Error while decompressing long-text.");
|
|
64
65
|
console.log(ex.message);
|
|
65
66
|
return null;
|
|
66
67
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["longText.ts"],"names":["GZIP","TO_STORAGE_ENCODING","FROM_STORAGE_ENCODING","convertToBuffer","value","Buffer","from","plugin","StorageTransformPlugin","fieldType","fromStorage","field","storageValue","typeOf","WebinyError","fieldId","compression","JSON","stringify","buf","toString","ex","console","log","message","toStorage","compressedValue"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AAEA,MAAMA,IAAI,GAAG,MAAb;AACA,MAAMC,mBAAmB,GAAG,QAA5B;AACA,MAAMC,qBAAqB,GAAG,MAA9B;;AAEA,MAAMC,eAAe,GAAIC,KAAD,IAAoC;AACxD,MAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAC3B,WAAOC,MAAM,CAACC,IAAP,CAAYF,KAAZ,EAAmBH,mBAAnB,CAAP;AACH;;AACD,SAAOG,KAAP;AACH,CALD;;AAYA,MAAMG,MAAM,GAAG,IAAIC,8CAAJ,CAAiD;AAC5DC,EAAAA,SAAS,EAAE,WADiD;AAE5DC,EAAAA,WAAW,EAAE,OAAO;AAAEC,IAAAA,KAAF;AAASP,IAAAA,KAAK,EAAEQ;AAAhB,GAAP,KAA0C;AACnD,UAAMC,MAAM,GAAG,OAAOD,YAAtB;;AACA,QAAI,CAACA,YAAD,IAAiBC,MAAM,KAAK,QAA5B,IAAwCA,MAAM,KAAK,QAAvD,EAAiE;AAC7D,aAAOD,YAAP;AACH,KAFD,MAEO,IAAI,OAAOA,YAAP,KAAwB,QAA5B,EAAsC;AACzC,YAAM,IAAIE,cAAJ,CACD,gFAA+EH,KAAK,CAACI,OAAQ,IAD5F,CAAN;AAGH;;AACD,UAAM;AAAEC,MAAAA,WAAF;AAAeZ,MAAAA;AAAf,QAAyBQ,YAA/B;AACA;AACR;AACA;;AACQ,QAAI,CAACI,WAAL,EAAkB;AACd,YAAM,IAAIF,cAAJ,CACD,2DACGH,KAAK,CAACI,OACT,MAAKE,IAAI,CAACC,SAAL,CAAeN,YAAf,CAA6B,GAHjC,EAIF,qBAJE,EAKF;AACIR,QAAAA,KAAK,EAAEQ;AADX,OALE,CAAN;AASH,KAVD,MAUO,IAAII,WAAW,KAAKhB,IAApB,EAA0B;AAC7B,YAAM,IAAIc,cAAJ,CACD,oEADC,EAEF,mBAFE,EAGF;AACIE,QAAAA;AADJ,OAHE,CAAN;AAOH;;AACD,QAAI;AACA,YAAMG,GAAG,GAAG,MAAM,sBAAOhB,eAAe,CAACC,KAAD,CAAtB,CAAlB;AACA,aAAOe,GAAG,CAACC,QAAJ,CAAalB,qBAAb,CAAP;AACH,KAHD,CAGE,OAAOmB,EAAP,EAAW;AACTC,MAAAA,OAAO,CAACC,GAAR,CAAY,sCAAZ;AACAD,MAAAA,OAAO,CAACC,GAAR,CAAYF,EAAE,CAACG,OAAf;AACA,aAAO,IAAP;AACH;AACJ,GA1C2D;AA2C5DC,EAAAA,SAAS,EAAE,OAAO;AAAErB,IAAAA;AAAF,GAAP,KAAqB;AAC5B,UAAMsB,eAAe,GAAG,MAAM,oBAAKtB,KAAL,CAA9B;AAEA,WAAO;AACHY,MAAAA,WAAW,EAAEhB,IADV;AAEHI,MAAAA,KAAK,EAAEsB,eAAe,CAACN,QAAhB,CAAyBnB,mBAAzB;AAFJ,KAAP;AAIH;AAlD2D,CAAjD,CAAf;;eAqDe,MAAM;AACjB,SAAOM,MAAP;AACH,C","sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { compress as gzip, decompress as ungzip } from \"@webiny/utils/compression/gzip\";\nimport { StorageTransformPlugin } from \"@webiny/api-headless-cms/content/plugins/storage/StorageTransformPlugin\";\n\nconst GZIP = \"gzip\";\nconst TO_STORAGE_ENCODING = \"base64\";\nconst FROM_STORAGE_ENCODING = \"utf8\";\n\nconst convertToBuffer = (value: string | Buffer): Buffer => {\n if (typeof value === \"string\") {\n return Buffer.from(value, TO_STORAGE_ENCODING);\n }\n return value;\n};\n\nexport interface StorageValue {\n compression: string;\n value: any;\n}\n\nconst plugin = new StorageTransformPlugin<string, StorageValue>({\n fieldType: \"long-text\",\n fromStorage: async ({ field, value: storageValue }) => {\n const typeOf = typeof storageValue;\n if (!storageValue || typeOf === \"string\" || typeOf === \"number\") {\n return storageValue as any;\n } else if (typeof storageValue !== \"object\") {\n throw new WebinyError(\n `LongText value received in \"fromStorage\" function is not an object in field \"${field.fieldId}\".`\n );\n }\n const { compression, value } = storageValue;\n /**\n * Check if possibly undefined, null, empty...\n */\n if (!compression) {\n throw new WebinyError(\n `Missing compression in \"fromStorage\" function in field \"${\n field.fieldId\n }\": ${JSON.stringify(storageValue)}.`,\n \"MISSING_COMPRESSION\",\n {\n value: storageValue\n }\n );\n } else if (compression !== GZIP) {\n throw new WebinyError(\n `This plugin cannot transform something not compressed with \"GZIP\".`,\n \"WRONG_COMPRESSION\",\n {\n compression\n }\n );\n }\n try {\n const buf = await ungzip(convertToBuffer(value));\n return buf.toString(FROM_STORAGE_ENCODING);\n } catch (ex) {\n console.log(\"Error while decompressing long-text.\");\n console.log(ex.message);\n return null;\n }\n },\n toStorage: async ({ value }) => {\n const compressedValue = await gzip(value);\n\n return {\n compression: GZIP,\n value: compressedValue.toString(TO_STORAGE_ENCODING)\n };\n }\n});\n\nexport default () => {\n return plugin;\n};\n"]}
|
|
@@ -18,6 +18,7 @@ var _StorageTransformPlugin = require("@webiny/api-headless-cms/content/plugins/
|
|
|
18
18
|
* https://github.com/rgcl/jsonpack/pull/25/files
|
|
19
19
|
* NOTE 2021-07-28: it seems PR is not going to be merged so keep this.
|
|
20
20
|
*/
|
|
21
|
+
// TODO @ts-refactor figure better type
|
|
21
22
|
const transformArray = value => {
|
|
22
23
|
if (!value) {
|
|
23
24
|
return value;
|
|
@@ -80,7 +81,9 @@ const plugin = new _StorageTransformPlugin.StorageTransformPlugin({
|
|
|
80
81
|
|
|
81
82
|
try {
|
|
82
83
|
return _jsonpack.default.unpack(value);
|
|
83
|
-
} catch {
|
|
84
|
+
} catch (ex) {
|
|
85
|
+
console.log("Error while decompressing rich-text.");
|
|
86
|
+
console.log(ex.message);
|
|
84
87
|
return null;
|
|
85
88
|
}
|
|
86
89
|
},
|
|
@@ -96,9 +99,18 @@ const plugin = new _StorageTransformPlugin.StorageTransformPlugin({
|
|
|
96
99
|
}
|
|
97
100
|
|
|
98
101
|
value = transformArray(value);
|
|
102
|
+
let jsonValue = null;
|
|
103
|
+
|
|
104
|
+
try {
|
|
105
|
+
jsonValue = _jsonpack.default.pack(value);
|
|
106
|
+
} catch (ex) {
|
|
107
|
+
console.log("Error while compressing rich-text.");
|
|
108
|
+
console.log(ex.message);
|
|
109
|
+
}
|
|
110
|
+
|
|
99
111
|
return {
|
|
100
112
|
compression: "jsonpack",
|
|
101
|
-
value:
|
|
113
|
+
value: jsonValue
|
|
102
114
|
};
|
|
103
115
|
}
|
|
104
116
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["richText.ts"],"names":["transformArray","value","isArray","Array","shouldBeArray","from","k","plugin","StorageTransformPlugin","fieldType","fromStorage","field","storageValue","WebinyError","fieldId","hasOwnProperty","compression","JSON","stringify","jsonpack","unpack","ex","console","log","message","toStorage","jsonValue","pack"],"mappings":"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","sourcesContent":["import jsonpack from \"jsonpack\";\nimport WebinyError from \"@webiny/error\";\nimport { StorageTransformPlugin } from \"@webiny/api-headless-cms/content/plugins/storage/StorageTransformPlugin\";\n\nexport type OriginalValue = Record<string, any> | any[];\n\nexport interface StorageValue {\n compression: string;\n value: any;\n}\n\n/**\n * Remove when jsonpack gets PR with a fix merged\n * https://github.com/rgcl/jsonpack/pull/25/files\n * NOTE 2021-07-28: it seems PR is not going to be merged so keep this.\n */\n// TODO @ts-refactor figure better type\nconst transformArray = (value: any) => {\n if (!value) {\n return value;\n }\n let isArray = Array.isArray(value);\n const shouldBeArray = value instanceof Array === false && isArray;\n if (shouldBeArray) {\n value = Array.from(value as any);\n isArray = true;\n }\n if (typeof value === \"object\" || isArray) {\n for (const k in value) {\n value[k] = transformArray(value[k]);\n }\n }\n return value;\n};\n\nconst plugin = new StorageTransformPlugin({\n fieldType: \"rich-text\",\n fromStorage: async ({ field, value: storageValue }) => {\n if (!storageValue) {\n return storageValue;\n } else if (typeof storageValue !== \"object\") {\n throw new WebinyError(\n `RichText value received in \"fromStorage\" function is not an object in field \"${field.fieldId}\".`\n );\n }\n /**\n * This is to circumvent a bug introduced with 5.8.0 storage operations.\n * Do not remove.\n */\n if (storageValue.hasOwnProperty(\"compression\") === false) {\n return storageValue;\n }\n const { compression, value } = storageValue;\n if (!compression) {\n throw new WebinyError(\n `Missing compression in \"fromStorage\" function in field \"${\n field.fieldId\n }\": ${JSON.stringify(storageValue)}.`,\n \"MISSING_COMPRESSION\",\n {\n value: storageValue\n }\n );\n }\n if (compression !== \"jsonpack\") {\n throw new WebinyError(\n `This plugin cannot transform something not packed with \"jsonpack\".`,\n \"WRONG_COMPRESSION\",\n {\n compression\n }\n );\n }\n try {\n return jsonpack.unpack(value);\n } catch (ex) {\n console.log(\"Error while decompressing rich-text.\");\n console.log(ex.message);\n return null;\n }\n },\n toStorage: async ({ value }) => {\n /**\n * There is a possibility that we are trying to compress already compressed value.\n * Introduced a bug with 5.8.0 storage operations, so just return the value to correct it.\n */\n if (value && value.hasOwnProperty(\"compression\") === true) {\n return value as any;\n }\n value = transformArray(value);\n\n let jsonValue: string | null = null;\n try {\n jsonValue = jsonpack.pack(value);\n } catch (ex) {\n console.log(\"Error while compressing rich-text.\");\n console.log(ex.message);\n }\n return {\n compression: \"jsonpack\",\n value: jsonValue\n };\n }\n});\n\nexport default () => {\n return plugin;\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;;;;AAAA;;AACA;;eAEe,MAAM,CAAC,wBAAD,EAAiC,sBAAjC,C","sourcesContent":["import elasticsearchIndexingPlugins from \"./indexing\";\nimport elasticsearchSearchPlugins from \"./search\";\n\nexport default () => [elasticsearchIndexingPlugins(), elasticsearchSearchPlugins()];\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["dateTimeIndexing.ts"],"names":["convertTimeToNumber","time","hours","minutes","seconds","split","map","Number","convertNumberToTime","value","undefined","String","match","Math","floor","v","padStart","join","convertValueFromIndex","field","type","settings","dateValue","Date","toISOString","substr","convertValueToIndex","name","fieldType","unmappedType","toIndex","fromIndex"],"mappings":"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","sourcesContent":["import { CmsModelDateTimeField } from \"@webiny/api-headless-cms/types\";\nimport { CmsModelFieldToElasticsearchPlugin } from \"~/types\";\n\nconst convertTimeToNumber = (time?: string): number | null => {\n if (!time) {\n return null;\n }\n const [hours, minutes, seconds = 0] = time.split(\":\").map(Number);\n return hours * 60 * 60 + minutes * 60 + seconds;\n};\n\nconst convertNumberToTime = (value?: number): string | null => {\n if (value === undefined || value === null) {\n return null;\n }\n // TODO remove when v5 goes out\n // this is a fix for pre beta.5\n if (String(value).match(/^([0-9]{2}):([0-9]{2})/) !== null) {\n return String(value);\n }\n //\n const hours = Math.floor(value / 60 / 60);\n\n const minutes = Math.floor((value - hours * 60 * 60) / 60);\n\n const seconds = Math.floor(value - hours * 60 * 60 - minutes * 60);\n\n return [hours, minutes, seconds].map(v => String(v).padStart(2, \"0\")).join(\":\");\n};\n\nconst convertValueFromIndex = (\n value: string | number,\n field: CmsModelDateTimeField\n): string | null => {\n const type = field.settings.type;\n if (type === \"time\") {\n return convertNumberToTime(value as number);\n } else if (!value) {\n return null;\n } else if (type === \"dateTimeWithTimezone\") {\n return value as string;\n } else if (type === \"date\") {\n const dateValue = new Date(value);\n return dateValue.toISOString().substr(0, 10);\n }\n return new Date(value).toISOString();\n};\n\nconst convertValueToIndex = (value: string, field: CmsModelDateTimeField) => {\n if (!value) {\n return null;\n } else if (field.settings.type === \"time\") {\n return convertTimeToNumber(value);\n }\n return value;\n};\n\nexport default (): CmsModelFieldToElasticsearchPlugin => ({\n type: \"cms-model-field-to-elastic-search\",\n name: \"cms-model-field-to-elastic-search-datetime\",\n fieldType: \"datetime\",\n unmappedType: () => {\n return \"date\";\n },\n toIndex({ field, value }) {\n const dateValue = convertValueToIndex(value, field as CmsModelDateTimeField);\n return {\n value: dateValue\n };\n },\n fromIndex({ field, value }) {\n return convertValueFromIndex(value, field as CmsModelDateTimeField);\n }\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["defaultFieldIndexing.ts"],"names":["type","name","fieldType","toIndex","field","getFieldTypePlugin","value","fieldTypePlugin","isSearchable","rawValue","fromIndex"],"mappings":";;;;;;;eAEe,OAA2C;AACtDA,EAAAA,IAAI,EAAE,mCADgD;AAEtDC,EAAAA,IAAI,EAAE,2CAFgD;AAGtDC,EAAAA,SAAS,EAAE,GAH2C;;AAItDC,EAAAA,OAAO,CAAC;AAAEC,IAAAA,KAAF;AAASC,IAAAA,kBAAT;AAA6BC,IAAAA;AAA7B,GAAD,EAAuC;AAC1C,UAAMC,eAAe,GAAGF,kBAAkB,CAACD,KAAK,CAACJ,IAAP,CAA1C,CAD0C,CAG1C;;AACA,QAAIO,eAAe,CAACC,YAAhB,KAAiC,IAArC,EAA2C;AACvC,aAAO;AAAEF,QAAAA;AAAF,OAAP;AACH,KANyC,CAQ1C;AACA;;;AACA,WAAO;AAAEG,MAAAA,QAAQ,EAAEH;AAAZ,KAAP;AACH,GAfqD;;AAgBtDI,EAAAA,SAAS,CAAC;AAAEN,IAAAA,KAAF;AAASC,IAAAA,kBAAT;AAA6BC,IAAAA,KAA7B;AAAoCG,IAAAA;AAApC,GAAD,EAAiD;AACtD,UAAM;AAAED,MAAAA;AAAF,QAAmBH,kBAAkB,CAACD,KAAK,CAACJ,IAAP,CAA3C;AAEA,WAAOQ,YAAY,KAAK,IAAjB,GAAwBF,KAAxB,GAAgCG,QAAvC;AACH;;AApBqD,CAA3C,C","sourcesContent":["import { CmsModelFieldToElasticsearchPlugin } from \"~/types\";\n\nexport default (): CmsModelFieldToElasticsearchPlugin => ({\n type: \"cms-model-field-to-elastic-search\",\n name: \"cms-model-field-to-elastic-search-default\",\n fieldType: \"*\",\n toIndex({ field, getFieldTypePlugin, value }) {\n const fieldTypePlugin = getFieldTypePlugin(field.type);\n\n // when field is searchable, assign it to `values`\n if (fieldTypePlugin.isSearchable === true) {\n return { value };\n }\n\n // when field is not searchable, move its value to `rawValues`.\n // `rawValues` is a field in ES index that's not being indexed.\n return { rawValue: value };\n },\n fromIndex({ field, getFieldTypePlugin, value, rawValue }) {\n const { isSearchable } = getFieldTypePlugin(field.type);\n\n return isSearchable === true ? value : rawValue;\n }\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;eAEe,MAAM,CACjB,gCADiB,EAEjB,gCAFiB,EAGjB,gCAHiB,EAIjB,oCAJiB,EAKjB,8BALiB,EAMjB,8BANiB,C","sourcesContent":["import richTextIndexing from \"./richTextIndexing\";\nimport longTextIndexing from \"./longTextIndexing\";\nimport defaultFieldIndexing from \"./defaultFieldIndexing\";\nimport dateTimeIndexing from \"./dateTimeIndexing\";\nimport numberIndexing from \"./numberIndexing\";\nimport objectIndexing from \"./objectIndexing\";\n\nexport default () => [\n dateTimeIndexing(),\n richTextIndexing(),\n longTextIndexing(),\n defaultFieldIndexing(),\n numberIndexing(),\n objectIndexing()\n];\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["longTextIndexing.ts"],"names":["type","name","fieldType","toIndex","rawValue","value","encodeURIComponent","fromIndex","decodeURIComponent"],"mappings":";;;;;;;eAEe,OAA2C;AACtDA,EAAAA,IAAI,EAAE,mCADgD;AAEtDC,EAAAA,IAAI,EAAE,6CAFgD;AAGtDC,EAAAA,SAAS,EAAE,WAH2C;;AAItDC,EAAAA,OAAO,CAAC;AAAEC,IAAAA;AAAF,GAAD,EAAe;AAClB;AACR;AACA;AACA;AACQ,WAAO;AACHC,MAAAA,KAAK,EAAED,QAAQ,GAAGE,kBAAkB,CAACF,QAAD,CAArB,GAAkC;AAD9C,KAAP;AAGH,GAZqD;;AAatD;AACJ;AACA;AACIG,EAAAA,SAAS,CAAC;AAAEF,IAAAA;AAAF,GAAD,EAAY;AACjB,WAAOA,KAAK,GAAGG,kBAAkB,CAACH,KAAD,CAArB,GAA+B,EAA3C;AACH;;AAlBqD,CAA3C,C","sourcesContent":["import { CmsModelFieldToElasticsearchPlugin } from \"~/types\";\n\nexport default (): CmsModelFieldToElasticsearchPlugin => ({\n type: \"cms-model-field-to-elastic-search\",\n name: \"cms-model-field-to-elastic-search-long-text\",\n fieldType: \"long-text\",\n toIndex({ rawValue }) {\n /**\n * We want to store the value (rawValue) from entry before it was prepared for storage as value to be searched on.\n * And we want to store prepared value into rawValue so it is not indexed.\n */\n return {\n value: rawValue ? encodeURIComponent(rawValue) : \"\"\n };\n },\n /**\n * When extracting from index, we can return the value that was stored to be searched - and then no decompression will be required.\n */\n fromIndex({ value }) {\n return value ? decodeURIComponent(value) : \"\";\n }\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["numberIndexing.ts"],"names":["convertToString","value","Array","isArray","map","String","convertToFloat","parseFloat","v","type","name","fieldType","unmappedType","toIndex","fromIndex"],"mappings":";;;;;;;AAEA,MAAMA,eAAe,GAAIC,KAAD,IAA8B;AAClD,MAAIC,KAAK,CAACC,OAAN,CAAcF,KAAd,MAAyB,KAA7B,EAAoC;AAChC,WAAOA,KAAP;AACH;;AACD,SAAQA,KAAD,CAAoBG,GAApB,CAAwBC,MAAxB,CAAP;AACH,CALD;;AAOA,MAAMC,cAAc,GAAIL,KAAD,IAA8B;AACjD,MAAIC,KAAK,CAACC,OAAN,CAAcF,KAAd,MAAyB,KAA7B,EAAoC;AAChC,WAAO,OAAOA,KAAP,KAAiB,QAAjB,GAA4BM,UAAU,CAACN,KAAD,CAAtC,GAAgDA,KAAvD;AACH;;AACD,SAAQA,KAAD,CAAoBG,GAApB,CAAwBI,CAAC,IAAID,UAAU,CAACC,CAAD,CAAvC,CAAP;AACH,CALD;;eAOe,OAA2C;AACtDC,EAAAA,IAAI,EAAE,mCADgD;AAEtDC,EAAAA,IAAI,EAAE,0CAFgD;AAGtDC,EAAAA,SAAS,EAAE,QAH2C;AAItDC,EAAAA,YAAY,EAAE,MAAM;AAChB,WAAO,OAAP;AACH,GANqD;;AAOtDC,EAAAA,OAAO,CAAC;AAAEZ,IAAAA;AAAF,GAAD,EAAY;AACf,WAAO;AACHA,MAAAA,KAAK,EAAED,eAAe,CAACC,KAAD;AADnB,KAAP;AAGH,GAXqD;;AAYtDa,EAAAA,SAAS,CAAC;AAAEb,IAAAA;AAAF,GAAD,EAAY;AACjB,WAAOK,cAAc,CAACL,KAAD,CAArB;AACH;;AAdqD,CAA3C,C","sourcesContent":["import { CmsModelFieldToElasticsearchPlugin } from \"~/types\";\n\nconst convertToString = (value: number[] | number) => {\n if (Array.isArray(value) === false) {\n return value;\n }\n return (value as number[]).map(String);\n};\n\nconst convertToFloat = (value: string[] | number) => {\n if (Array.isArray(value) === false) {\n return typeof value === \"string\" ? parseFloat(value) : value;\n }\n return (value as string[]).map(v => parseFloat(v));\n};\n\nexport default (): CmsModelFieldToElasticsearchPlugin => ({\n type: \"cms-model-field-to-elastic-search\",\n name: \"cms-model-field-to-elastic-search-number\",\n fieldType: \"number\",\n unmappedType: () => {\n return \"float\";\n },\n toIndex({ value }) {\n return {\n value: convertToString(value)\n };\n },\n fromIndex({ value }) {\n return convertToFloat(value);\n }\n});\n"]}
|
|
@@ -16,6 +16,11 @@ const processToIndex = ({
|
|
|
16
16
|
}) => {
|
|
17
17
|
const reducer = (values, field) => {
|
|
18
18
|
const plugin = getFieldIndexPlugin(field.type);
|
|
19
|
+
|
|
20
|
+
if (!plugin || !plugin.toIndex) {
|
|
21
|
+
return values;
|
|
22
|
+
}
|
|
23
|
+
|
|
19
24
|
const {
|
|
20
25
|
value,
|
|
21
26
|
rawValue
|
|
@@ -57,6 +62,11 @@ const processFromIndex = ({
|
|
|
57
62
|
}) => {
|
|
58
63
|
const reducer = (values, field) => {
|
|
59
64
|
const plugin = getFieldIndexPlugin(field.type);
|
|
65
|
+
|
|
66
|
+
if (!plugin || !plugin.fromIndex) {
|
|
67
|
+
return values;
|
|
68
|
+
}
|
|
69
|
+
|
|
60
70
|
const value = plugin.fromIndex({
|
|
61
71
|
plugins,
|
|
62
72
|
model,
|
|
@@ -91,13 +101,15 @@ var _default = () => ({
|
|
|
91
101
|
getFieldIndexPlugin,
|
|
92
102
|
getFieldTypePlugin
|
|
93
103
|
}) {
|
|
104
|
+
var _field$settings;
|
|
105
|
+
|
|
94
106
|
if (!initialValue) {
|
|
95
107
|
return {
|
|
96
108
|
value: null
|
|
97
109
|
};
|
|
98
110
|
}
|
|
99
111
|
|
|
100
|
-
const fields = field.settings.fields;
|
|
112
|
+
const fields = ((_field$settings = field.settings) === null || _field$settings === void 0 ? void 0 : _field$settings.fields) || [];
|
|
101
113
|
/**
|
|
102
114
|
* In "object" field, value is either an object or an array of objects.
|
|
103
115
|
*/
|
|
@@ -157,11 +169,13 @@ var _default = () => ({
|
|
|
157
169
|
getFieldIndexPlugin,
|
|
158
170
|
getFieldTypePlugin
|
|
159
171
|
}) {
|
|
172
|
+
var _field$settings2;
|
|
173
|
+
|
|
160
174
|
if (!value) {
|
|
161
175
|
return null;
|
|
162
176
|
}
|
|
163
177
|
|
|
164
|
-
const fields = field.settings.fields;
|
|
178
|
+
const fields = ((_field$settings2 = field.settings) === null || _field$settings2 === void 0 ? void 0 : _field$settings2.fields) || [];
|
|
165
179
|
/**
|
|
166
180
|
* In "object" field, value is either an object or an array of objects.
|
|
167
181
|
*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["objectIndexing.ts"],"names":["processToIndex","fields","value","sourceValue","rawValue","sourceRawValue","getFieldIndexPlugin","getFieldTypePlugin","plugins","model","reducer","values","field","plugin","type","toIndex","fieldId","undefined","reduce","processFromIndex","fromIndex","name","fieldType","initialValue","initialRawValue","settings","multipleValues","result","key","Object","keys","length","push","source","map","_","index"],"mappings":"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","sourcesContent":["import { CmsModelFieldToElasticsearchPlugin } from \"~/types\";\nimport {\n CmsModel,\n CmsModelField,\n CmsModelFieldToGraphQLPlugin\n} from \"@webiny/api-headless-cms/types\";\nimport { PluginsContainer } from \"@webiny/plugins\";\n\ninterface ProcessToIndex {\n (params: {\n fields: CmsModelField[];\n value: Record<string, any>;\n rawValue: Record<string, any>;\n getFieldIndexPlugin: (fieldType: string) => CmsModelFieldToElasticsearchPlugin;\n getFieldTypePlugin: (fieldType: string) => CmsModelFieldToGraphQLPlugin;\n plugins: PluginsContainer;\n model: CmsModel;\n }): Record<\"value\" | \"rawValue\", Record<string, any>>;\n}\n\ninterface ProcessFromIndex {\n (params: {\n fields: CmsModelField[];\n value: Record<string, any>;\n rawValue: Record<string, any>;\n getFieldIndexPlugin: (fieldType: string) => CmsModelFieldToElasticsearchPlugin;\n getFieldTypePlugin: (fieldType: string) => CmsModelFieldToGraphQLPlugin;\n plugins: PluginsContainer;\n model: CmsModel;\n }): Record<string, any>;\n}\n\ninterface ReducerValue {\n value: {\n [key: string]: string;\n };\n rawValue: {\n [key: string]: string;\n };\n}\n\nconst processToIndex: ProcessToIndex = ({\n fields,\n value: sourceValue,\n rawValue: sourceRawValue,\n getFieldIndexPlugin,\n getFieldTypePlugin,\n plugins,\n model\n}) => {\n const reducer = (values: ReducerValue, field: CmsModelField) => {\n const plugin = getFieldIndexPlugin(field.type);\n if (!plugin || !plugin.toIndex) {\n return values;\n }\n const { value, rawValue } = plugin.toIndex({\n model,\n field,\n value: sourceValue[field.fieldId],\n rawValue: sourceRawValue[field.fieldId],\n getFieldIndexPlugin,\n getFieldTypePlugin,\n plugins\n });\n\n if (value !== undefined) {\n values.value[field.fieldId] = value;\n }\n\n if (rawValue !== undefined) {\n values.rawValue[field.fieldId] = rawValue;\n }\n\n return values;\n };\n\n return fields.reduce(reducer, { value: {}, rawValue: {} });\n};\nconst processFromIndex: ProcessFromIndex = ({\n fields,\n value: sourceValue,\n rawValue: sourceRawValue,\n getFieldIndexPlugin,\n getFieldTypePlugin,\n plugins,\n model\n}) => {\n const reducer = (values: Record<string, string>, field: CmsModelField) => {\n const plugin = getFieldIndexPlugin(field.type);\n if (!plugin || !plugin.fromIndex) {\n return values;\n }\n const value = plugin.fromIndex({\n plugins,\n model,\n field,\n value: sourceValue[field.fieldId],\n rawValue: sourceRawValue[field.fieldId],\n getFieldIndexPlugin,\n getFieldTypePlugin\n });\n\n if (value !== undefined) {\n values[field.fieldId] = value;\n }\n\n return values;\n };\n\n return fields.reduce(reducer, {});\n};\n\ninterface ToIndexMultipleFieldValue {\n value: Record<string, string>[];\n rawValue: Record<string, string>[];\n}\n\nexport default (): CmsModelFieldToElasticsearchPlugin => ({\n type: \"cms-model-field-to-elastic-search\",\n name: \"cms-model-field-to-elastic-search-object\",\n fieldType: \"object\",\n toIndex({\n plugins,\n model,\n field,\n value: initialValue,\n rawValue: initialRawValue,\n getFieldIndexPlugin,\n getFieldTypePlugin\n }) {\n if (!initialValue) {\n return { value: null };\n }\n\n const fields = (field.settings?.fields || []) as CmsModelField[];\n\n /**\n * In \"object\" field, value is either an object or an array of objects.\n */\n if (field.multipleValues) {\n const result: ToIndexMultipleFieldValue = {\n value: [],\n rawValue: []\n };\n for (const key in initialValue) {\n const { value, rawValue } = processToIndex({\n value: initialValue[key],\n rawValue: initialRawValue[key],\n getFieldIndexPlugin,\n getFieldTypePlugin,\n model,\n plugins,\n fields\n });\n if (Object.keys(value).length > 0) {\n result.value.push(value);\n }\n\n if (Object.keys(rawValue).length > 0) {\n result.rawValue.push(rawValue);\n }\n }\n\n return {\n value: result.value.length > 0 ? result.value : undefined,\n rawValue: result.rawValue.length > 0 ? result.rawValue : undefined\n };\n }\n\n return processToIndex({\n value: initialValue,\n rawValue: initialRawValue,\n getFieldIndexPlugin,\n getFieldTypePlugin,\n model,\n plugins,\n fields\n });\n },\n fromIndex({ field, value, rawValue, model, plugins, getFieldIndexPlugin, getFieldTypePlugin }) {\n if (!value) {\n return null;\n }\n\n const fields = (field.settings?.fields || []) as CmsModelField[];\n\n /**\n * In \"object\" field, value is either an object or an array of objects.\n */\n if (field.multipleValues) {\n /**\n * Why this `value || rawValue || []`?\n * It's possible that an object contains all non-indexable fields, or vice-versa, and so\n * we can never be sure which array we can reliably use as a source of values.\n */\n const source = value || rawValue || [];\n\n return source.map((_: any, index: number) =>\n processFromIndex({\n value: value ? value[index] || {} : {},\n rawValue: rawValue ? rawValue[index] || {} : {},\n getFieldIndexPlugin,\n getFieldTypePlugin,\n model,\n plugins,\n fields\n })\n );\n }\n\n return processFromIndex({\n value,\n rawValue,\n getFieldIndexPlugin,\n getFieldTypePlugin,\n model,\n plugins,\n fields\n });\n }\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["richTextIndexing.ts"],"names":["type","name","fieldType","toIndex","value","rawValue","fromIndex"],"mappings":";;;;;;;eAEe,OAA2C;AACtDA,EAAAA,IAAI,EAAE,mCADgD;AAEtDC,EAAAA,IAAI,EAAE,6CAFgD;AAGtDC,EAAAA,SAAS,EAAE,WAH2C;;AAItDC,EAAAA,OAAO,CAAC;AAAEC,IAAAA;AAAF,GAAD,EAAY;AACf;;AAEA;AACR;AACA;AACQ,WAAO;AACHC,MAAAA,QAAQ,EAAED;AADP,KAAP;AAGH,GAbqD;;AActDE,EAAAA,SAAS,CAAC;AAAED,IAAAA;AAAF,GAAD,EAAe;AACpB,WAAOA,QAAP;AACH;;AAhBqD,CAA3C,C","sourcesContent":["import { CmsModelFieldToElasticsearchPlugin } from \"~/types\";\n\nexport default (): CmsModelFieldToElasticsearchPlugin => ({\n type: \"cms-model-field-to-elastic-search\",\n name: \"cms-model-field-to-elastic-search-rich-text\",\n fieldType: \"rich-text\",\n toIndex({ value }) {\n // TODO: convert rich-text object to a searchable string to offer full-text search at some point\n\n /**\n * We want to store rich-text value as a \"rawValue\", meaning it wont' be indexed by ES.\n */\n return {\n rawValue: value\n };\n },\n fromIndex({ rawValue }) {\n return rawValue;\n }\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;;AAAA;;AACA;;eAGe,MAA4D,CACvE,yCADuE,EAEvE,uCAFuE,C","sourcesContent":["import { createTimeSearchPlugin } from \"./timeSearch\";\nimport { createRefSearchPlugin } from \"./refSearch\";\nimport { CmsEntryElasticsearchQueryBuilderValueSearchPlugin } from \"~/plugins/CmsEntryElasticsearchQueryBuilderValueSearchPlugin\";\n\nexport default (): CmsEntryElasticsearchQueryBuilderValueSearchPlugin[] => [\n createTimeSearchPlugin(),\n createRefSearchPlugin()\n];\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["refSearch.ts"],"names":["createPath","field","key","match","fieldId","transform","params","value","createRefSearchPlugin","CmsEntryElasticsearchQueryBuilderValueSearchPlugin","fieldType","path"],"mappings":";;;;;;;AAAA;;AAMA,MAAMA,UAAsC,GAAG,CAAC;AAAEC,EAAAA,KAAF;AAASC,EAAAA;AAAT,CAAD,KAAoB;AAC/D,MAAIA,GAAG,IAAIA,GAAG,CAACC,KAAJ,CAAU,SAAV,MAAyB,IAApC,EAA0C;AACtC,WAAQ,GAAEF,KAAK,CAACG,OAAQ,KAAxB;AACH;;AACD,SAAQ,GAAEH,KAAK,CAACG,OAAQ,UAAxB;AACH,CALD;;AAOA,MAAMC,SAAoC,GAAGC,MAAM,IAAI;AACnD,SAAOA,MAAM,CAACC,KAAd;AACH,CAFD;;AAIO,MAAMC,qBAAqB,GAAG,MAA0D;AAC3F,SAAO,IAAIC,sGAAJ,CAAuD;AAC1DC,IAAAA,SAAS,EAAE,KAD+C;AAE1DC,IAAAA,IAAI,EAAEX,UAFoD;AAG1DK,IAAAA;AAH0D,GAAvD,CAAP;AAKH,CANM","sourcesContent":["import {\n CmsEntryElasticsearchQueryBuilderValueSearchPlugin,\n CreatePathCallable,\n TransformCallable\n} from \"~/plugins/CmsEntryElasticsearchQueryBuilderValueSearchPlugin\";\n\nconst createPath: CreatePathCallable<string> = ({ field, key }) => {\n if (key && key.match(\"entryId\") === null) {\n return `${field.fieldId}.id`;\n }\n return `${field.fieldId}.entryId`;\n};\n\nconst transform: TransformCallable<string> = params => {\n return params.value;\n};\n\nexport const createRefSearchPlugin = (): CmsEntryElasticsearchQueryBuilderValueSearchPlugin => {\n return new CmsEntryElasticsearchQueryBuilderValueSearchPlugin({\n fieldType: \"ref\",\n path: createPath,\n transform\n });\n};\n"]}
|
|
@@ -8,12 +8,14 @@ exports.createTimeSearchPlugin = void 0;
|
|
|
8
8
|
var _CmsEntryElasticsearchQueryBuilderValueSearchPlugin = require("../../plugins/CmsEntryElasticsearchQueryBuilderValueSearchPlugin");
|
|
9
9
|
|
|
10
10
|
const transform = params => {
|
|
11
|
+
var _field$settings;
|
|
12
|
+
|
|
11
13
|
const {
|
|
12
14
|
field,
|
|
13
15
|
value
|
|
14
16
|
} = params;
|
|
15
17
|
|
|
16
|
-
if (!value || field.settings.type !== "time") {
|
|
18
|
+
if (!value || ((_field$settings = field.settings) === null || _field$settings === void 0 ? void 0 : _field$settings.type) !== "time") {
|
|
17
19
|
return value;
|
|
18
20
|
}
|
|
19
21
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["timeSearch.ts"],"names":["transform","params","field","value","settings","type","hours","minutes","seconds","split","map","Number","createTimeSearchPlugin","CmsEntryElasticsearchQueryBuilderValueSearchPlugin","fieldType"],"mappings":";;;;;;;AAAA;;AAKA,MAAMA,SAA4B,GAAGC,MAAM,IAAI;AAAA;;AAC3C,QAAM;AAAEC,IAAAA,KAAF;AAASC,IAAAA;AAAT,MAAmBF,MAAzB;;AACA,MAAI,CAACE,KAAD,IAAU,oBAAAD,KAAK,CAACE,QAAN,oEAAgBC,IAAhB,MAAyB,MAAvC,EAA+C;AAC3C,WAAOF,KAAP;AACH;;AACD,QAAM,CAACG,KAAD,EAAQC,OAAR,EAAiBC,OAAO,GAAG,CAA3B,IAAgCL,KAAK,CAACM,KAAN,CAAY,GAAZ,EAAiBC,GAAjB,CAAqBC,MAArB,CAAtC;AACA,SAAOL,KAAK,GAAG,EAAR,GAAa,EAAb,GAAkBC,OAAO,GAAG,EAA5B,GAAiCC,OAAxC;AACH,CAPD;;AASO,MAAMI,sBAAsB,GAAG,MAA0D;AAC5F,SAAO,IAAIC,sGAAJ,CAAuD;AAC1DC,IAAAA,SAAS,EAAE,UAD+C;AAE1Dd,IAAAA;AAF0D,GAAvD,CAAP;AAIH,CALM","sourcesContent":["import {\n CmsEntryElasticsearchQueryBuilderValueSearchPlugin,\n TransformCallable\n} from \"~/plugins/CmsEntryElasticsearchQueryBuilderValueSearchPlugin\";\n\nconst transform: TransformCallable = params => {\n const { field, value } = params;\n if (!value || field.settings?.type !== \"time\") {\n return value;\n }\n const [hours, minutes, seconds = 0] = value.split(\":\").map(Number);\n return hours * 60 * 60 + minutes * 60 + seconds;\n};\n\nexport const createTimeSearchPlugin = (): CmsEntryElasticsearchQueryBuilderValueSearchPlugin => {\n return new CmsEntryElasticsearchQueryBuilderValueSearchPlugin({\n fieldType: \"datetime\",\n transform\n });\n};\n"]}
|
|
@@ -51,7 +51,7 @@ const createElasticsearchSortParams = args => {
|
|
|
51
51
|
} = args;
|
|
52
52
|
|
|
53
53
|
if (!sort || sort.length === 0) {
|
|
54
|
-
return
|
|
54
|
+
return [];
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
const sortPlugins = Object.values(modelFields).reduce((plugins, modelField) => {
|
|
@@ -84,9 +84,10 @@ const createElasticsearchSortParams = args => {
|
|
|
84
84
|
|
|
85
85
|
|
|
86
86
|
const createInitialQueryValue = args => {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
87
|
+
/**
|
|
88
|
+
* Cast as partial so we can remove unnecessary keys.
|
|
89
|
+
*/
|
|
90
|
+
const where = args.where;
|
|
90
91
|
const query = {
|
|
91
92
|
must: [],
|
|
92
93
|
must_not: [],
|
|
@@ -96,7 +97,7 @@ const createInitialQueryValue = args => {
|
|
|
96
97
|
|
|
97
98
|
const sharedIndex = process.env.ELASTICSEARCH_SHARED_INDEXES === "true";
|
|
98
99
|
|
|
99
|
-
if (sharedIndex) {
|
|
100
|
+
if (sharedIndex && where.tenant) {
|
|
100
101
|
query.must.push({
|
|
101
102
|
term: {
|
|
102
103
|
"tenant.keyword": where.tenant
|
|
@@ -148,7 +149,7 @@ const createFieldPath = ({
|
|
|
148
149
|
parentPath,
|
|
149
150
|
key
|
|
150
151
|
}) => {
|
|
151
|
-
let path;
|
|
152
|
+
let path = null;
|
|
152
153
|
|
|
153
154
|
if (searchPlugin && typeof searchPlugin.createPath === "function") {
|
|
154
155
|
path = searchPlugin.createPath({
|
|
@@ -161,6 +162,9 @@ const createFieldPath = ({
|
|
|
161
162
|
}
|
|
162
163
|
|
|
163
164
|
if (!path) {
|
|
165
|
+
/**
|
|
166
|
+
* We know that modelFieldPath is a string or undefined at this point.
|
|
167
|
+
*/
|
|
164
168
|
path = modelField.path || modelField.field.fieldId || modelField.field.id;
|
|
165
169
|
}
|
|
166
170
|
|
|
@@ -229,7 +233,7 @@ const fieldPathFactory = params => {
|
|
|
229
233
|
key
|
|
230
234
|
} = params;
|
|
231
235
|
const field = modelField.field;
|
|
232
|
-
let fieldPath;
|
|
236
|
+
let fieldPath = null;
|
|
233
237
|
|
|
234
238
|
if (plugin) {
|
|
235
239
|
fieldPath = plugin.createPath({
|
|
@@ -479,7 +483,7 @@ const createElasticsearchQueryBody = params => {
|
|
|
479
483
|
}
|
|
480
484
|
},
|
|
481
485
|
sort,
|
|
482
|
-
size: limit + 1,
|
|
486
|
+
size: (limit || 0) + 1,
|
|
483
487
|
// eslint-disable-next-line
|
|
484
488
|
search_after: (0, _cursors.decodeCursor)(after),
|
|
485
489
|
// eslint-disable-next-line
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["createElasticsearchQueryBody.ts"],"names":["specialFields","noKeywordFields","createElasticsearchSortParams","args","sort","modelFields","parentPath","searchPlugins","length","sortPlugins","Object","values","reduce","plugins","modelField","searchPlugin","type","field","fieldId","CmsEntryElasticsearchFieldPlugin","unmappedType","keyword","hasKeyword","sortable","isSortable","searchable","isSearchable","path","createFieldPath","key","fieldPlugins","createInitialQueryValue","where","query","must","must_not","should","filter","sharedIndex","process","env","ELASTICSEARCH_SHARED_INDEXES","tenant","push","term","locale","published","latest","WebinyError","createPath","value","id","isSystemField","match","includes","nonRefFieldTypes","isRefFieldFiltering","params","typeOf","Array","isArray","Date","toISOString","fieldPathFactory","plugin","fieldPath","keywordValue","applyFiltering","operator","initialValue","operatorPlugins","fieldSearchPlugin","apply","basePath","execElasticsearchBuildQueryPlugins","initialWhere","sf","keys","hasOwnProperty","undefined","cmsField","whereKey","createElasticsearchQueryBody","model","after","limit","initialSort","queryPlugins","byType","CmsEntryElasticsearchQueryModifierPlugin","pl","modelId","modifyQuery","CmsEntryElasticsearchSortModifierPlugin","modifySort","body","bool","size","search_after","track_total_hits","bodyPlugins","CmsEntryElasticsearchBodyModifierPlugin","modifyBody"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAaA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;;;;;AA+BA,MAAMA,aAAa,GAAG,CAAC,WAAD,EAAc,QAAd,EAAwB,QAAxB,EAAkC,QAAlC,CAAtB;AACA,MAAMC,eAAe,GAAG,CAAC,MAAD,EAAS,QAAT,EAAmB,SAAnB,CAAxB;;AAEA,MAAMC,6BAA6B,GAAIC,IAAD,IAAiD;AACnF,QAAM;AAAEC,IAAAA,IAAF;AAAQC,IAAAA,WAAR;AAAqBC,IAAAA,UAArB;AAAiCC,IAAAA;AAAjC,MAAmDJ,IAAzD;;AAEA,MAAI,CAACC,IAAD,IAASA,IAAI,CAACI,MAAL,KAAgB,CAA7B,EAAgC;AAC5B,WAAO,EAAP;AACH;;AAED,QAAMC,WAAW,GAAGC,MAAM,CAACC,MAAP,CAAcN,WAAd,EAA2BO,MAA3B,CAAkC,CAACC,OAAD,EAAUC,UAAV,KAAyB;AAC3E,UAAMC,YAAY,GAAGR,aAAa,CAACO,UAAU,CAACE,IAAZ,CAAlC;AAEAH,IAAAA,OAAO,CAACC,UAAU,CAACG,KAAX,CAAiBC,OAAlB,CAAP,GAAoC,IAAIC,kEAAJ,CAAqC;AACrEC,MAAAA,YAAY,EAAEN,UAAU,CAACM,YAD4C;AAErEC,MAAAA,OAAO,EAAEC,UAAU,CAACR,UAAD,CAFkD;AAGrES,MAAAA,QAAQ,EAAET,UAAU,CAACU,UAHgD;AAIrEC,MAAAA,UAAU,EAAEX,UAAU,CAACY,YAJ8C;AAKrET,MAAAA,KAAK,EAAEH,UAAU,CAACG,KAAX,CAAiBC,OAL6C;AAMrES,MAAAA,IAAI,EAAEC,eAAe,CAAC;AAClBC,QAAAA,GAAG,EAAEf,UAAU,CAACG,KAAX,CAAiBC,OADJ;AAElBZ,QAAAA,UAFkB;AAGlBQ,QAAAA,UAHkB;AAIlBC,QAAAA;AAJkB,OAAD;AANgD,KAArC,CAApC;AAaA,WAAOF,OAAP;AACH,GAjBmB,EAiBjB,EAjBiB,CAApB;AAmBA,SAAO,sBAAW;AACdiB,IAAAA,YAAY,EAAErB,WADA;AAEdL,IAAAA;AAFc,GAAX,CAAP;AAIH,CA9BD;AA+BA;AACA;AACA;AACA;AACA;;;AACA,MAAM2B,uBAAuB,GACzB5B,IAD4B,IAEG;AAC/B;AACJ;AACA;AACI,QAAM6B,KAAK,GAAG7B,IAAI,CAAC6B,KAAnB;AAEA,QAAMC,KAAmC,GAAG;AACxCC,IAAAA,IAAI,EAAE,EADkC;AAExCC,IAAAA,QAAQ,EAAE,EAF8B;AAGxCC,IAAAA,MAAM,EAAE,EAHgC;AAIxCC,IAAAA,MAAM,EAAE;AAJgC,GAA5C,CAN+B,CAa/B;;AACA,QAAMC,WAAW,GAAGC,OAAO,CAACC,GAAR,CAAYC,4BAAZ,KAA6C,MAAjE;;AACA,MAAIH,WAAW,IAAIN,KAAK,CAACU,MAAzB,EAAiC;AAC7BT,IAAAA,KAAK,CAACC,IAAN,CAAWS,IAAX,CAAgB;AAAEC,MAAAA,IAAI,EAAE;AAAE,0BAAkBZ,KAAK,CAACU;AAA1B;AAAR,KAAhB;AACH;;AACD,SAAOV,KAAK,CAAC,QAAD,CAAZ;;AAEA,MAAIA,KAAK,CAACa,MAAV,EAAkB;AACdZ,IAAAA,KAAK,CAACC,IAAN,CAAWS,IAAX,CAAgB;AACZC,MAAAA,IAAI,EAAE;AACF,0BAAkBZ,KAAK,CAACa;AADtB;AADM,KAAhB;AAKH;;AACD,SAAOb,KAAK,CAAC,QAAD,CAAZ;AACA;AACJ;AACA;;AACI,MAAIA,KAAK,CAACc,SAAN,KAAoB,IAAxB,EAA8B;AAC1Bb,IAAAA,KAAK,CAACC,IAAN,CAAWS,IAAX,CAAgB;AACZC,MAAAA,IAAI,EAAE;AACF,0BAAkB;AADhB;AADM,KAAhB;AAKH,GAND,MAMO,IAAIZ,KAAK,CAACe,MAAN,KAAiB,IAArB,EAA2B;AAC9Bd,IAAAA,KAAK,CAACC,IAAN,CAAWS,IAAX,CAAgB;AACZC,MAAAA,IAAI,EAAE;AACF,0BAAkB;AADhB;AADM,KAAhB;AAKH,GANM,CAOP;AAPO,OAQF;AACD,UAAM,IAAII,cAAJ,CACD,2EADC,EAEF,iCAFE,EAGF;AACIhB,MAAAA;AADJ,KAHE,CAAN;AAOH,GArD8B,CAsD/B;;;AACA,SAAOC,KAAP;AACH,CA1DD;;AAkEA,MAAML,eAAe,GAAG,CAAC;AACrBd,EAAAA,UADqB;AAErBC,EAAAA,YAFqB;AAGrBT,EAAAA,UAHqB;AAIrBuB,EAAAA;AAJqB,CAAD,KAKa;AACjC,MAAIF,IAAmB,GAAG,IAA1B;;AACA,MAAIZ,YAAY,IAAI,OAAOA,YAAY,CAACkC,UAApB,KAAmC,UAAvD,EAAmE;AAC/DtB,IAAAA,IAAI,GAAGZ,YAAY,CAACkC,UAAb,CAAwB;AAC3BhC,MAAAA,KAAK,EAAEH,UAAU,CAACG,KADS;AAE3BiC,MAAAA,KAAK,EAAE,IAFoB;AAG3BrB,MAAAA;AAH2B,KAAxB,CAAP;AAKH,GAND,MAMO,IAAI,OAAOf,UAAU,CAACa,IAAlB,KAA2B,UAA/B,EAA2C;AAC9CA,IAAAA,IAAI,GAAGb,UAAU,CAACa,IAAX,CAAgBb,UAAU,CAACG,KAAX,CAAiBC,OAAjC,CAAP;AACH;;AACD,MAAI,CAACS,IAAL,EAAW;AACP;AACR;AACA;AACQA,IAAAA,IAAI,GAAIb,UAAU,CAACa,IAAZ,IAA+Bb,UAAU,CAACG,KAAX,CAAiBC,OAAhD,IAA2DJ,UAAU,CAACG,KAAX,CAAiBkC,EAAnF;AACH;;AACD,SAAOrC,UAAU,CAACsC,aAAX,IAA4B,CAAC9C,UAA7B,IAA2CqB,IAAI,CAAC0B,KAAL,CAAW/C,UAAX,CAA3C,GACDqB,IADC,GAEA,GAAErB,UAAW,IAAGqB,IAAK,EAF5B;AAGH,CAzBD;;AA2BA,MAAML,UAAU,GAAIR,UAAD,IAAqC;AACpD;AACJ;AACA;AACI,MAAIb,eAAe,CAACqD,QAAhB,CAAyBxC,UAAU,CAACE,IAApC,CAAJ,EAA+C;AAC3C,WAAO,KAAP;AACH,GAFD,MAEO,IAAIF,UAAU,CAACM,YAAf,EAA6B;AAChC;AACR;AACA;AACQ,WAAO,KAAP;AACH,GALM,MAKA,IAAIN,UAAU,CAACO,OAAX,KAAuB,KAA3B,EAAkC;AACrC;AACR;AACA;AACQ,WAAO,KAAP;AACH;AACD;AACJ;AACA;;;AACI,SAAO,IAAP;AACH,CArBD;;AA6BA;AACA;AACA;AACA;AACA,MAAMkC,gBAA0B,GAAG,CAC/B,QAD+B,EAE/B,QAF+B,EAG/B,WAH+B,EAI/B,QAJ+B,EAK/B,QAL+B,EAM/B,UAN+B,EAO/B,SAP+B,CAAnC;;AASA,MAAMC,mBAAmB,GAAIC,MAAD,IAAgD;AACxE,QAAM;AAAE5B,IAAAA,GAAF;AAAOqB,IAAAA,KAAP;AAAcjC,IAAAA;AAAd,MAAwBwC,MAA9B;AACA,QAAMC,MAAM,GAAG,OAAOR,KAAtB;;AACA,MACI,CAACA,KAAD,IACAK,gBAAgB,CAACD,QAAjB,CAA0BI,MAA1B,CADA,IAEAC,KAAK,CAACC,OAAN,CAAcV,KAAd,CAFA,IAGAA,KAAK,YAAYW,IAHjB,IAIA,CAAC,CAACX,KAAK,CAACY,WALZ,EAME;AACE,WAAO,KAAP;AACH,GARD,MAQO,IAAIJ,MAAM,KAAK,QAAX,IAAuBzC,KAAK,CAACD,IAAN,KAAe,KAA1C,EAAiD;AACpD,WAAO,IAAP;AACH;;AACD,QAAM,IAAIgC,cAAJ,CACF,8DADE,EAEF,wBAFE,EAGF;AACIE,IAAAA,KADJ;AAEIjC,IAAAA,KAFJ;AAGIY,IAAAA;AAHJ,GAHE,CAAN;AASH,CAvBD;;AAgCA,MAAMkC,gBAAgB,GAAIN,MAAD,IAA4C;AACjE,QAAM;AAAEO,IAAAA,MAAF;AAAUlD,IAAAA,UAAV;AAAsBoC,IAAAA,KAAtB;AAA6B5C,IAAAA,UAA7B;AAAyCe,IAAAA,OAAzC;AAAkDQ,IAAAA;AAAlD,MAA0D4B,MAAhE;AAEA,QAAMxC,KAAK,GAAGH,UAAU,CAACG,KAAzB;AAEA,MAAIgD,SAAwB,GAAG,IAA/B;;AACA,MAAID,MAAJ,EAAY;AACRC,IAAAA,SAAS,GAAGD,MAAM,CAACf,UAAP,CAAkB;AAAEhC,MAAAA,KAAF;AAASiC,MAAAA,KAAT;AAAgBrB,MAAAA;AAAhB,KAAlB,CAAZ;AACH;;AACD,MAAI,CAACoC,SAAL,EAAgB;AACZA,IAAAA,SAAS,GAAGhD,KAAK,CAACC,OAAlB;;AACA,QAAIJ,UAAU,CAACa,IAAf,EAAqB;AACjBsC,MAAAA,SAAS,GACL,OAAOnD,UAAU,CAACa,IAAlB,KAA2B,UAA3B,GAAwCb,UAAU,CAACa,IAAX,CAAgBuB,KAAhB,CAAxC,GAAiEpC,UAAU,CAACa,IADhF;AAEH;AACJ;;AAED,QAAMuC,YAAY,GAAG7C,OAAO,GAAG,UAAH,GAAgB,EAA5C;;AACA,MAAI,CAACf,UAAL,EAAiB;AACb,WAAQ,GAAE2D,SAAU,GAAEC,YAAa,EAAnC;AACH;;AACD,SAAQ,GAAE5D,UAAW,IAAG2D,SAAU,GAAEC,YAAa,EAAjD;AACH,CAtBD;;AAkCA,MAAMC,cAAc,GAAIV,MAAD,IAAkC;AACrD,QAAM;AACFxB,IAAAA,KADE;AAEFnB,IAAAA,UAFE;AAGFsD,IAAAA,QAHE;AAIFvC,IAAAA,GAJE;AAKFqB,IAAAA,KAAK,EAAEmB,YALL;AAMFC,IAAAA,eANE;AAOF/D,IAAAA,aAPE;AAQFD,IAAAA;AARE,MASFmD,MATJ;AAUA,QAAMO,MAAM,GAAGM,eAAe,CAACF,QAAD,CAA9B;;AACA,MAAI,CAACJ,MAAL,EAAa;AACT,UAAM,IAAIhB,cAAJ,CAAgB,0BAAhB,EAA4C,gBAA5C,EAA8D;AAChEoB,MAAAA;AADgE,KAA9D,CAAN;AAGH;;AACD,QAAMG,iBAAiB,GAAGhE,aAAa,CAACO,UAAU,CAACE,IAAZ,CAAvC;AACA,QAAMkC,KAAK,GAAG,sDAAwB;AAClCrC,IAAAA,OAAO,EAAEN,aADyB;AAElCU,IAAAA,KAAK,EAAEH,UAAU,CAACG,KAFgB;AAGlCiC,IAAAA,KAAK,EAAEmB;AAH2B,GAAxB,CAAd;AAMA,QAAMhD,OAAO,GAAGC,UAAU,CAACR,UAAD,CAA1B;AACAkD,EAAAA,MAAM,CAACQ,KAAP,CAAavC,KAAb,EAAoB;AAChBwC,IAAAA,QAAQ,EAAEV,gBAAgB,CAAC;AACvBC,MAAAA,MAAM,EAAEO,iBADe;AAEvBzD,MAAAA,UAFuB;AAGvBR,MAAAA,UAAU,EAAEQ,UAAU,CAACsC,aAAX,GAA2B,IAA3B,GAAkC9C,UAHvB;AAIvB4C,MAAAA,KAJuB;AAKvBrB,MAAAA;AALuB,KAAD,CADV;AAQhBF,IAAAA,IAAI,EAAEoC,gBAAgB,CAAC;AACnBC,MAAAA,MAAM,EAAEO,iBADW;AAEnBzD,MAAAA,UAFmB;AAGnBoC,MAAAA,KAHmB;AAInB5C,MAAAA,UAAU,EAAEQ,UAAU,CAACsC,aAAX,GAA2B,IAA3B,GAAkC9C,UAJ3B;AAKnBe,MAAAA,OALmB;AAMnBQ,MAAAA;AANmB,KAAD,CARN;AAgBhBqB,IAAAA,KAhBgB;AAiBhB7B,IAAAA;AAjBgB,GAApB;AAmBH,CA5CD;AA6CA;AACA;AACA;;;AACA,MAAMqD,kCAAkC,GACpCjB,MADuC,IAER;AAC/B,QAAM;AAAEzB,IAAAA,KAAK,EAAE2C,YAAT;AAAuBtE,IAAAA,WAAvB;AAAoCC,IAAAA,UAApC;AAAgDO,IAAAA,OAAhD;AAAyDN,IAAAA;AAAzD,MAA2EkD,MAAjF;;AAEA,QAAMzB,KAAwB,qBACvB2C,YADuB,CAA9B;;AAGA,QAAM1C,KAAK,GAAGF,uBAAuB,iCAC9B0B,MAD8B;AAEjCzB,IAAAA;AAFiC,KAArC;AAKA;AACJ;AACA;;AACI,OAAK,MAAM4C,EAAX,IAAiB5E,aAAjB,EAAgC;AAC5B,WAAOgC,KAAK,CAAC4C,EAAD,CAAZ;AACH;;AAED,MAAIlE,MAAM,CAACmE,IAAP,CAAY7C,KAAZ,EAAmBxB,MAAnB,KAA8B,CAAlC,EAAqC;AACjC,WAAOyB,KAAP;AACH;;AAED,QAAMqC,eAAe,GAAG,8CAAoBzD,OAApB,CAAxB;;AAEA,OAAK,MAAMgB,GAAX,IAAkBG,KAAlB,EAAyB;AACrB,QAAIA,KAAK,CAAC8C,cAAN,CAAqBjD,GAArB,MAA8B,KAAlC,EAAyC;AACrC;AACH;AACD;AACR;AACA;AACA;;;AACQ,QAAIG,KAAK,CAACH,GAAD,CAAL,KAAekD,SAAnB,EAA8B;AAC1B;AACH;;AACD,UAAM;AAAE9D,MAAAA,KAAF;AAASmD,MAAAA;AAAT,QAAsB,0BAAcvC,GAAd,CAA5B;AACA,UAAMf,UAAU,GAAGT,WAAW,CAACY,KAAD,CAA9B;;AAEA,QAAI,CAACH,UAAL,EAAiB;AACb,YAAM,IAAIkC,cAAJ,CAAiB,sBAAqB/B,KAAM,IAA5C,CAAN;AACH;;AACD,UAAM;AAAES,MAAAA,YAAY,GAAG,KAAjB;AAAwBT,MAAAA,KAAK,EAAE+D;AAA/B,QAA4ClE,UAAlD;;AACA,QAAI,CAACY,YAAL,EAAmB;AACf,YAAM,IAAIsB,cAAJ,CAAiB,UAAS/B,KAAM,sBAAhC,CAAN;AACH;AACD;AACR;AACA;AACA;;;AACQ,QAAIuC,mBAAmB,CAAC;AAAE3B,MAAAA,GAAF;AAAOqB,MAAAA,KAAK,EAAElB,KAAK,CAACH,GAAD,CAAnB;AAA0BZ,MAAAA,KAAK,EAAE+D;AAAjC,KAAD,CAAvB,EAAsE;AAClE;AACZ;AACA;AACY,WAAK,MAAMC,QAAX,IAAuBjD,KAAK,CAACH,GAAD,CAA5B,EAAmC;AAC/B,cAAM;AAAEuC,UAAAA;AAAF,YAAe,0BAAca,QAAd,CAArB;AACAd,QAAAA,cAAc,CAAC;AACXlC,UAAAA,KADW;AAEXnB,UAAAA,UAFW;AAGXsD,UAAAA,QAHW;AAIXvC,UAAAA,GAAG,EAAEoD,QAJM;AAKX/B,UAAAA,KAAK,EAAElB,KAAK,CAACH,GAAD,CAAL,CAAWoD,QAAX,CALI;AAMX1E,UAAAA,aANW;AAOX+D,UAAAA,eAPW;AAQXhE,UAAAA;AARW,SAAD,CAAd;AAUH;;AACD;AACH;;AACD6D,IAAAA,cAAc,CAAC;AACXlC,MAAAA,KADW;AAEXnB,MAAAA,UAFW;AAGXsD,MAAAA,QAHW;AAIXvC,MAAAA,GAJW;AAKXqB,MAAAA,KAAK,EAAElB,KAAK,CAACH,GAAD,CALD;AAMXtB,MAAAA,aANW;AAOX+D,MAAAA,eAPW;AAQXhE,MAAAA;AARW,KAAD,CAAd;AAUH;;AAED,SAAO2B,KAAP;AACH,CAnFD;;AAqFO,MAAMiD,4BAA4B,GAAIzB,MAAD,IAAqD;AAC7F,QAAM;AAAE5C,IAAAA,OAAF;AAAWsE,IAAAA,KAAX;AAAkBhF,IAAAA,IAAlB;AAAwBG,IAAAA,UAAU,GAAG;AAArC,MAA8CmD,MAApD;AACA,QAAM;AAAEzB,IAAAA,KAAF;AAASoD,IAAAA,KAAT;AAAgBC,IAAAA,KAAhB;AAAuBjF,IAAAA,IAAI,EAAEkF;AAA7B,MAA6CnF,IAAnD;AAEA,QAAME,WAAW,GAAG,+BAAkBQ,OAAlB,EAA2BsE,KAA3B,CAApB;AACA,QAAM5E,aAAa,GAAG,0CAAkBM,OAAlB,CAAtB;AAEA,QAAMoB,KAAK,GAAGyC,kCAAkC,CAAC;AAC7CS,IAAAA,KAD6C;AAE7CtE,IAAAA,OAF6C;AAG7CmB,IAAAA,KAH6C;AAI7C3B,IAAAA,WAJ6C;AAK7CC,IAAAA,UAL6C;AAM7CC,IAAAA;AAN6C,GAAD,CAAhD;AASA,QAAMgF,YAAY,GAAG1E,OAAO,CACvB2E,MADgB,CAEbC,mFAAyCzE,IAF5B,EAIhBqB,MAJgB,CAITqD,EAAE,IAAI;AACV,WAAO,CAACA,EAAE,CAACC,OAAJ,IAAeD,EAAE,CAACC,OAAH,KAAeR,KAAK,CAACQ,OAA3C;AACH,GANgB,CAArB;;AAOA,OAAK,MAAMD,EAAX,IAAiBH,YAAjB,EAA+B;AAC3BG,IAAAA,EAAE,CAACE,WAAH,CAAe;AAAE3D,MAAAA,KAAF;AAASkD,MAAAA,KAAT;AAAgBnD,MAAAA;AAAhB,KAAf;AACH;;AAED,QAAM5B,IAAI,GAAGF,6BAA6B,CAAC;AACvCW,IAAAA,OADuC;AAEvCT,IAAAA,IAAI,EAAEkF,WAFiC;AAGvCjF,IAAAA,WAHuC;AAIvCC,IAAAA,UAJuC;AAKvC6E,IAAAA,KALuC;AAMvC5E,IAAAA;AANuC,GAAD,CAA1C;AASA,QAAME,WAAW,GAAGI,OAAO,CACtB2E,MADe,CAEZK,iFAAwC7E,IAF5B,EAIfqB,MAJe,CAIRqD,EAAE,IAAI;AACV,WAAO,CAACA,EAAE,CAACC,OAAJ,IAAeD,EAAE,CAACC,OAAH,KAAeR,KAAK,CAACQ,OAA3C;AACH,GANe,CAApB;;AAOA,OAAK,MAAMD,EAAX,IAAiBjF,WAAjB,EAA8B;AAC1BiF,IAAAA,EAAE,CAACI,UAAH,CAAc;AACV1F,MAAAA,IADU;AAEV+E,MAAAA;AAFU,KAAd;AAIH;;AAED,QAAMY,IAAkB,GAAG;AACvB9D,IAAAA,KAAK,EAAE;AACH+D,MAAAA,IAAI,EAAE;AACF9D,QAAAA,IAAI,EAAED,KAAK,CAACC,IAAN,CAAW1B,MAAX,GAAoB,CAApB,GAAwByB,KAAK,CAACC,IAA9B,GAAqC6C,SADzC;AAEF5C,QAAAA,QAAQ,EAAEF,KAAK,CAACE,QAAN,CAAe3B,MAAf,GAAwB,CAAxB,GAA4ByB,KAAK,CAACE,QAAlC,GAA6C4C,SAFrD;AAGF3C,QAAAA,MAAM,EAAEH,KAAK,CAACG,MAAN,CAAa5B,MAAb,GAAsB,CAAtB,GAA0ByB,KAAK,CAACG,MAAhC,GAAyC2C,SAH/C;AAIF1C,QAAAA,MAAM,EAAEJ,KAAK,CAACI,MAAN,CAAa7B,MAAb,GAAsB,CAAtB,GAA0ByB,KAAK,CAACI,MAAhC,GAAyC0C;AAJ/C;AADH,KADgB;AASvB3E,IAAAA,IATuB;AAUvB6F,IAAAA,IAAI,EAAE,CAACZ,KAAK,IAAI,CAAV,IAAe,CAVE;AAWvB;AACAa,IAAAA,YAAY,EAAE,2BAAad,KAAb,CAZS;AAavB;AACAe,IAAAA,gBAAgB,EAAE;AAdK,GAA3B;AAiBA,QAAMC,WAAW,GAAGvF,OAAO,CACtB2E,MADe,CAEZa,iFAAwCrF,IAF5B,EAIfqB,MAJe,CAIRqD,EAAE,IAAI;AACV,WAAO,CAACA,EAAE,CAACC,OAAJ,IAAeD,EAAE,CAACC,OAAH,KAAeR,KAAK,CAACQ,OAA3C;AACH,GANe,CAApB;;AAOA,OAAK,MAAMD,EAAX,IAAiBU,WAAjB,EAA8B;AAC1BV,IAAAA,EAAE,CAACY,UAAH,CAAc;AACVP,MAAAA,IADU;AAEVZ,MAAAA;AAFU,KAAd;AAIH;;AAED,SAAOY,IAAP;AACH,CAlFM","sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { OperatorPlugins, operatorPluginsList } from \"./operatorPluginsList\";\nimport { transformValueForSearch } from \"./transformValueForSearch\";\nimport { searchPluginsList } from \"./searchPluginsList\";\nimport {\n CmsEntryListParams,\n CmsEntryListSort,\n CmsEntryListWhere,\n CmsModel,\n CmsModelField\n} from \"@webiny/api-headless-cms/types\";\nimport {\n SearchBody as esSearchBody,\n Sort as esSort,\n ElasticsearchBoolQueryConfig\n} from \"@webiny/api-elasticsearch/types\";\nimport { decodeCursor } from \"@webiny/api-elasticsearch/cursors\";\nimport { createSort } from \"@webiny/api-elasticsearch/sort\";\nimport { createModelFields, ModelField, ModelFields } from \"./fields\";\nimport { CmsEntryElasticsearchFieldPlugin } from \"~/plugins/CmsEntryElasticsearchFieldPlugin\";\nimport { parseWhereKey } from \"@webiny/api-elasticsearch/where\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { createLatestType, createPublishedType } from \"~/operations/entry\";\nimport { CmsEntryElasticsearchQueryModifierPlugin } from \"~/plugins/CmsEntryElasticsearchQueryModifierPlugin\";\nimport { CmsEntryElasticsearchSortModifierPlugin } from \"~/plugins/CmsEntryElasticsearchSortModifierPlugin\";\nimport { CmsEntryElasticsearchBodyModifierPlugin } from \"~/plugins/CmsEntryElasticsearchBodyModifierPlugin\";\nimport {\n CmsEntryElasticsearchQueryBuilderValueSearchPlugin,\n CreatePathCallableParams\n} from \"~/plugins/CmsEntryElasticsearchQueryBuilderValueSearchPlugin\";\n\ninterface CreateElasticsearchParams {\n plugins: PluginsContainer;\n model: CmsModel;\n args: CmsEntryListParams;\n parentPath?: string;\n}\n\ninterface CreateElasticsearchSortParams {\n plugins: PluginsContainer;\n sort?: CmsEntryListSort;\n modelFields: ModelFields;\n parentPath?: string | null;\n model: CmsModel;\n searchPlugins: Record<string, CmsEntryElasticsearchQueryBuilderValueSearchPlugin>;\n}\n\ninterface CreateElasticsearchQueryArgs {\n model: CmsModel;\n plugins: PluginsContainer;\n where: CmsEntryListWhere;\n modelFields: ModelFields;\n parentPath?: string | null;\n searchPlugins: Record<string, CmsEntryElasticsearchQueryBuilderValueSearchPlugin>;\n}\n\nconst specialFields = [\"published\", \"latest\", \"locale\", \"tenant\"];\nconst noKeywordFields = [\"date\", \"number\", \"boolean\"];\n\nconst createElasticsearchSortParams = (args: CreateElasticsearchSortParams): esSort => {\n const { sort, modelFields, parentPath, searchPlugins } = args;\n\n if (!sort || sort.length === 0) {\n return [];\n }\n\n const sortPlugins = Object.values(modelFields).reduce((plugins, modelField) => {\n const searchPlugin = searchPlugins[modelField.type];\n\n plugins[modelField.field.fieldId] = new CmsEntryElasticsearchFieldPlugin({\n unmappedType: modelField.unmappedType,\n keyword: hasKeyword(modelField),\n sortable: modelField.isSortable,\n searchable: modelField.isSearchable,\n field: modelField.field.fieldId,\n path: createFieldPath({\n key: modelField.field.fieldId,\n parentPath,\n modelField,\n searchPlugin\n })\n });\n return plugins;\n }, {} as Record<string, CmsEntryElasticsearchFieldPlugin>);\n\n return createSort({\n fieldPlugins: sortPlugins,\n sort\n });\n};\n/**\n * Latest and published are specific in Elasticsearch to that extend that they are tagged in the __type property.\n * We allow either published or either latest.\n * Latest is used in the manage API and published in the read API.\n */\nconst createInitialQueryValue = (\n args: CreateElasticsearchQueryArgs\n): ElasticsearchBoolQueryConfig => {\n /**\n * Cast as partial so we can remove unnecessary keys.\n */\n const where = args.where as Partial<CmsEntryListWhere>;\n\n const query: ElasticsearchBoolQueryConfig = {\n must: [],\n must_not: [],\n should: [],\n filter: []\n };\n\n // When ES index is shared between tenants, we need to filter records by tenant ID\n const sharedIndex = process.env.ELASTICSEARCH_SHARED_INDEXES === \"true\";\n if (sharedIndex && where.tenant) {\n query.must.push({ term: { \"tenant.keyword\": where.tenant } });\n }\n delete where[\"tenant\"];\n\n if (where.locale) {\n query.must.push({\n term: {\n \"locale.keyword\": where.locale\n }\n });\n }\n delete where[\"locale\"];\n /**\n * We must transform published and latest where args into something that is understandable by our Elasticsearch\n */\n if (where.published === true) {\n query.must.push({\n term: {\n \"__type.keyword\": createPublishedType()\n }\n });\n } else if (where.latest === true) {\n query.must.push({\n term: {\n \"__type.keyword\": createLatestType()\n }\n });\n }\n // we do not allow not published and not latest\n else {\n throw new WebinyError(\n `Cannot call Elasticsearch query when not setting \"published\" or \"latest\".`,\n \"ELASTICSEARCH_UNSUPPORTED_QUERY\",\n {\n where\n }\n );\n }\n //\n return query;\n};\n\ninterface CreateFieldPathParams {\n modelField: ModelField;\n key: string;\n searchPlugin?: CmsEntryElasticsearchQueryBuilderValueSearchPlugin;\n parentPath?: string | null;\n}\nconst createFieldPath = ({\n modelField,\n searchPlugin,\n parentPath,\n key\n}: CreateFieldPathParams): string => {\n let path: string | null = null;\n if (searchPlugin && typeof searchPlugin.createPath === \"function\") {\n path = searchPlugin.createPath({\n field: modelField.field,\n value: null,\n key\n });\n } else if (typeof modelField.path === \"function\") {\n path = modelField.path(modelField.field.fieldId);\n }\n if (!path) {\n /**\n * We know that modelFieldPath is a string or undefined at this point.\n */\n path = (modelField.path as string) || modelField.field.fieldId || modelField.field.id;\n }\n return modelField.isSystemField || !parentPath || path.match(parentPath)\n ? path\n : `${parentPath}.${path}`;\n};\n\nconst hasKeyword = (modelField: ModelField): boolean => {\n /**\n * We defined some field types that MUST have no keyword added to the field path\n */\n if (noKeywordFields.includes(modelField.type)) {\n return false;\n } else if (modelField.unmappedType) {\n /**\n * If modelField has unmapped type defined, do not add keyword.\n */\n return false;\n } else if (modelField.keyword === false) {\n /**\n * And if specifically defined that modelField has no keyword, do not add it.\n */\n return false;\n }\n /**\n * All other fields have keyword added.\n */\n return true;\n};\n\ninterface IsRefFieldFilteringParams {\n key: string;\n value: any;\n field: CmsModelField;\n}\n\n/**\n * A list of typeof strings that are 100% not ref field filtering.\n * We also need to check for array and date.\n */\nconst nonRefFieldTypes: string[] = [\n \"string\",\n \"number\",\n \"undefined\",\n \"symbol\",\n \"bigint\",\n \"function\",\n \"boolean\"\n];\nconst isRefFieldFiltering = (params: IsRefFieldFilteringParams): boolean => {\n const { key, value, field } = params;\n const typeOf = typeof value;\n if (\n !value ||\n nonRefFieldTypes.includes(typeOf) ||\n Array.isArray(value) ||\n value instanceof Date ||\n !!value.toISOString\n ) {\n return false;\n } else if (typeOf === \"object\" && field.type === \"ref\") {\n return true;\n }\n throw new WebinyError(\n \"Could not determine if the search value is ref field search.\",\n \"REF_FIELD_SEARCH_ERROR\",\n {\n value,\n field,\n key\n }\n );\n};\n\ninterface FieldPathFactoryParams extends Omit<CreatePathCallableParams, \"field\"> {\n plugin?: CmsEntryElasticsearchQueryBuilderValueSearchPlugin;\n modelField: ModelField;\n key: string;\n parentPath?: string | null;\n keyword?: boolean;\n}\nconst fieldPathFactory = (params: FieldPathFactoryParams): string => {\n const { plugin, modelField, value, parentPath, keyword, key } = params;\n\n const field = modelField.field;\n\n let fieldPath: string | null = null;\n if (plugin) {\n fieldPath = plugin.createPath({ field, value, key });\n }\n if (!fieldPath) {\n fieldPath = field.fieldId;\n if (modelField.path) {\n fieldPath =\n typeof modelField.path === \"function\" ? modelField.path(value) : modelField.path;\n }\n }\n\n const keywordValue = keyword ? \".keyword\" : \"\";\n if (!parentPath) {\n return `${fieldPath}${keywordValue}`;\n }\n return `${parentPath}.${fieldPath}${keywordValue}`;\n};\n\ninterface ApplyFilteringParams {\n query: ElasticsearchBoolQueryConfig;\n modelField: ModelField;\n operator: string;\n key: string;\n value: any;\n operatorPlugins: OperatorPlugins;\n searchPlugins: Record<string, CmsEntryElasticsearchQueryBuilderValueSearchPlugin>;\n parentPath?: string | null;\n}\nconst applyFiltering = (params: ApplyFilteringParams) => {\n const {\n query,\n modelField,\n operator,\n key,\n value: initialValue,\n operatorPlugins,\n searchPlugins,\n parentPath\n } = params;\n const plugin = operatorPlugins[operator];\n if (!plugin) {\n throw new WebinyError(\"Operator plugin missing.\", \"PLUGIN_MISSING\", {\n operator\n });\n }\n const fieldSearchPlugin = searchPlugins[modelField.type];\n const value = transformValueForSearch({\n plugins: searchPlugins,\n field: modelField.field,\n value: initialValue\n });\n\n const keyword = hasKeyword(modelField);\n plugin.apply(query, {\n basePath: fieldPathFactory({\n plugin: fieldSearchPlugin,\n modelField,\n parentPath: modelField.isSystemField ? null : parentPath,\n value,\n key\n }),\n path: fieldPathFactory({\n plugin: fieldSearchPlugin,\n modelField,\n value,\n parentPath: modelField.isSystemField ? null : parentPath,\n keyword,\n key\n }),\n value,\n keyword\n });\n};\n/*\n * Iterate through where keys and apply plugins where necessary\n */\nconst execElasticsearchBuildQueryPlugins = (\n params: CreateElasticsearchQueryArgs\n): ElasticsearchBoolQueryConfig => {\n const { where: initialWhere, modelFields, parentPath, plugins, searchPlugins } = params;\n\n const where: CmsEntryListWhere = {\n ...initialWhere\n };\n const query = createInitialQueryValue({\n ...params,\n where\n });\n\n /**\n * Always remove special fields, as these do not exist in Elasticsearch.\n */\n for (const sf of specialFields) {\n delete where[sf];\n }\n\n if (Object.keys(where).length === 0) {\n return query;\n }\n\n const operatorPlugins = operatorPluginsList(plugins);\n\n for (const key in where) {\n if (where.hasOwnProperty(key) === false) {\n continue;\n }\n /**\n * We do not need to go further if value is undefined.\n * There are few hardcoded possibilities when value is undefined, for example, ownedBy.\n */\n if (where[key] === undefined) {\n continue;\n }\n const { field, operator } = parseWhereKey(key);\n const modelField = modelFields[field];\n\n if (!modelField) {\n throw new WebinyError(`There is no field \"${field}\".`);\n }\n const { isSearchable = false, field: cmsField } = modelField;\n if (!isSearchable) {\n throw new WebinyError(`Field \"${field}\" is not searchable.`);\n }\n /**\n * There is a possibility that value is an object.\n * In that case, check if field is ref field and continue a bit differently.\n */\n if (isRefFieldFiltering({ key, value: where[key], field: cmsField })) {\n /**\n * We we need to go through each key in where[key] to determine the filters.\n */\n for (const whereKey in where[key]) {\n const { operator } = parseWhereKey(whereKey);\n applyFiltering({\n query,\n modelField,\n operator,\n key: whereKey,\n value: where[key][whereKey],\n searchPlugins,\n operatorPlugins,\n parentPath\n });\n }\n continue;\n }\n applyFiltering({\n query,\n modelField,\n operator,\n key,\n value: where[key],\n searchPlugins,\n operatorPlugins,\n parentPath\n });\n }\n\n return query;\n};\n\nexport const createElasticsearchQueryBody = (params: CreateElasticsearchParams): esSearchBody => {\n const { plugins, model, args, parentPath = null } = params;\n const { where, after, limit, sort: initialSort } = args;\n\n const modelFields = createModelFields(plugins, model);\n const searchPlugins = searchPluginsList(plugins);\n\n const query = execElasticsearchBuildQueryPlugins({\n model,\n plugins,\n where,\n modelFields,\n parentPath,\n searchPlugins\n });\n\n const queryPlugins = plugins\n .byType<CmsEntryElasticsearchQueryModifierPlugin>(\n CmsEntryElasticsearchQueryModifierPlugin.type\n )\n .filter(pl => {\n return !pl.modelId || pl.modelId === model.modelId;\n });\n for (const pl of queryPlugins) {\n pl.modifyQuery({ query, model, where });\n }\n\n const sort = createElasticsearchSortParams({\n plugins,\n sort: initialSort,\n modelFields,\n parentPath,\n model,\n searchPlugins\n });\n\n const sortPlugins = plugins\n .byType<CmsEntryElasticsearchSortModifierPlugin>(\n CmsEntryElasticsearchSortModifierPlugin.type\n )\n .filter(pl => {\n return !pl.modelId || pl.modelId === model.modelId;\n });\n for (const pl of sortPlugins) {\n pl.modifySort({\n sort,\n model\n });\n }\n\n const body: esSearchBody = {\n query: {\n bool: {\n must: query.must.length > 0 ? query.must : undefined,\n must_not: query.must_not.length > 0 ? query.must_not : undefined,\n should: query.should.length > 0 ? query.should : undefined,\n filter: query.filter.length > 0 ? query.filter : undefined\n }\n },\n sort,\n size: (limit || 0) + 1,\n // eslint-disable-next-line\n search_after: decodeCursor(after) as any,\n // eslint-disable-next-line\n track_total_hits: true\n };\n\n const bodyPlugins = plugins\n .byType<CmsEntryElasticsearchBodyModifierPlugin>(\n CmsEntryElasticsearchBodyModifierPlugin.type\n )\n .filter(pl => {\n return !pl.modelId || pl.modelId === model.modelId;\n });\n for (const pl of bodyPlugins) {\n pl.modifyBody({\n body,\n model\n });\n }\n\n return body;\n};\n"]}
|