@contentstack/delivery-sdk 5.0.0 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/legacy/assets/asset.cjs +20 -0
- package/dist/legacy/assets/asset.cjs.map +1 -1
- package/dist/legacy/assets/asset.js +20 -0
- package/dist/legacy/assets/asset.js.map +1 -1
- package/dist/legacy/entries/entries.cjs +20 -0
- package/dist/legacy/entries/entries.cjs.map +1 -1
- package/dist/legacy/entries/entries.js +20 -0
- package/dist/legacy/entries/entries.js.map +1 -1
- package/dist/legacy/entries/entry.cjs +20 -0
- package/dist/legacy/entries/entry.cjs.map +1 -1
- package/dist/legacy/entries/entry.js +20 -0
- package/dist/legacy/entries/entry.js.map +1 -1
- package/dist/legacy/query/asset-query.cjs +20 -0
- package/dist/legacy/query/asset-query.cjs.map +1 -1
- package/dist/legacy/query/asset-query.js +20 -0
- package/dist/legacy/query/asset-query.js.map +1 -1
- package/dist/legacy/query/query.cjs +2 -2
- package/dist/legacy/query/query.cjs.map +1 -1
- package/dist/legacy/query/query.js +2 -2
- package/dist/legacy/query/query.js.map +1 -1
- package/dist/modern/assets/asset.cjs +20 -0
- package/dist/modern/assets/asset.cjs.map +1 -1
- package/dist/modern/assets/asset.d.ts +16 -1
- package/dist/modern/assets/asset.d.ts.map +1 -1
- package/dist/modern/assets/asset.js +20 -0
- package/dist/modern/assets/asset.js.map +1 -1
- package/dist/modern/entries/entries.cjs +20 -0
- package/dist/modern/entries/entries.cjs.map +1 -1
- package/dist/modern/entries/entries.d.ts +15 -0
- package/dist/modern/entries/entries.d.ts.map +1 -1
- package/dist/modern/entries/entries.js +20 -0
- package/dist/modern/entries/entries.js.map +1 -1
- package/dist/modern/entries/entry.cjs +20 -0
- package/dist/modern/entries/entry.cjs.map +1 -1
- package/dist/modern/entries/entry.d.ts +15 -0
- package/dist/modern/entries/entry.d.ts.map +1 -1
- package/dist/modern/entries/entry.js +20 -0
- package/dist/modern/entries/entry.js.map +1 -1
- package/dist/modern/query/asset-query.cjs +20 -0
- package/dist/modern/query/asset-query.cjs.map +1 -1
- package/dist/modern/query/asset-query.d.ts +15 -0
- package/dist/modern/query/asset-query.d.ts.map +1 -1
- package/dist/modern/query/asset-query.js +20 -0
- package/dist/modern/query/asset-query.js.map +1 -1
- package/dist/modern/query/query.cjs +2 -2
- package/dist/modern/query/query.cjs.map +1 -1
- package/dist/modern/query/query.d.ts.map +1 -1
- package/dist/modern/query/query.js +2 -2
- package/dist/modern/query/query.js.map +1 -1
- package/package.json +1 -1
|
@@ -114,6 +114,26 @@ class AssetQuery extends baseQuery.BaseQuery {
|
|
|
114
114
|
this._queryParams.locale = locale;
|
|
115
115
|
return this;
|
|
116
116
|
}
|
|
117
|
+
/**
|
|
118
|
+
* @method assetFields
|
|
119
|
+
* @memberof AssetQuery
|
|
120
|
+
* @description Include specific asset fields in the response (CDA getAssets).
|
|
121
|
+
* Use with asset_fields[]: user_defined_fields, embedded, ai_suggested, visual_markups.
|
|
122
|
+
* @example
|
|
123
|
+
* import contentstack from '@contentstack/delivery-sdk'
|
|
124
|
+
*
|
|
125
|
+
* const stack = contentstack.stack({ apiKey: "apiKey", deliveryToken: "deliveryToken", environment: "environment" });
|
|
126
|
+
* const result = await stack.asset().assetFields("user_defined_fields", "embedded_metadata").find();
|
|
127
|
+
*
|
|
128
|
+
* @param {...string} fields - Asset field names to include (e.g. user_defined_fields, embedded, ai_suggested, visual_markups)
|
|
129
|
+
* @returns {AssetQuery} - Returns the AssetQuery instance for chaining.
|
|
130
|
+
*/
|
|
131
|
+
assetFields(...fields) {
|
|
132
|
+
if (fields.length > 0) {
|
|
133
|
+
this._queryParams["asset_fields[]"] = fields;
|
|
134
|
+
}
|
|
135
|
+
return this;
|
|
136
|
+
}
|
|
117
137
|
/**
|
|
118
138
|
* @method query
|
|
119
139
|
* @memberof AssetQuery
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asset-query.cjs","sources":["../../../src/query/asset-query.ts"],"sourcesContent":["import { BaseQuery } from './base-query';\nimport { AxiosInstance } from '@contentstack/core';\nimport { Query } from './query';\n\nexport class AssetQuery extends BaseQuery {\n constructor(client: AxiosInstance) {\n super();\n this._client = client;\n this._urlPath = '/assets';\n }\n /**\n * @method version\n * @memberof AssetQuery\n * @description Retrieve a specific version of an asset in result\n * @returns {AssetQuery}\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.asset().version(1).find();\n */\n version(version: number): AssetQuery {\n this._queryParams.version = String(version);\n\n return this;\n }\n\n /**\n * @method includeDimension\n * @memberof AssetQuery\n * @description Includes the dimensions (height and width) of the image in result\n * @returns {AssetQuery}\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.asset().includeDimension().find();\n */\n includeDimension(): AssetQuery {\n this._queryParams.include_dimension = 'true';\n\n return this;\n }\n\n /**\n * @method includeBranch\n * @memberof AssetQuery\n * @description Includes the branch in result\n * @returns {AssetQuery}\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.asset().includeBranch().find();\n */\n includeBranch(): AssetQuery {\n this._queryParams.include_branch = 'true';\n\n return this;\n }\n\n /**\n * @method includeMetadata\n * @memberof AssetQuery\n * @description Include the metadata for getting metadata content for the asset.\n * @returns {AssetQuery}\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.asset().includeMetadata().find();\n */\n includeMetadata(): AssetQuery {\n this._queryParams.include_metadata = 'true';\n\n return this;\n }\n\n /**\n * @method relativeUrls\n * @memberof AssetQuery\n * @description Includes the relative URLs of the assets in result\n * @returns {AssetQuery}\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.asset().relativeUrls().find();\n */\n relativeUrls(): AssetQuery {\n this._queryParams.relative_url = 'true';\n\n return this;\n }\n\n /**\n * @method includeFallback\n * @memberof AssetQuery\n * @description When an entry is not published in a specific language, content can be fetched from its fallback language\n * @returns {AssetQuery}\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.asset().includeFallback().find();\n */\n includeFallback(): AssetQuery {\n this._queryParams.include_fallback = 'true';\n\n return this;\n }\n\n /**\n * @method locale\n * @memberof AssetQuery\n * @description The assets published in the locale will be fetched\n * @returns {AssetQuery}\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.asset().locale('en-us').find();\n */\n locale(locale: string): AssetQuery {\n this._queryParams.locale = locale;\n\n return this;\n }\n /**\n * @method query\n * @memberof AssetQuery\n * @description Fetches the asset data on the basis of the query\n * @returns {Query}\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.asset().query().where('fieldUid', QueryOperation.EQUALS, 'value').find();\n */\n query() {\n return new Query(this._client, this._parameters, this._queryParams);\n }\n}\n"],"names":["BaseQuery","Query"],"mappings":";;;;;AAIO,MAAM,mBAAmBA,mBAAU,CAAA;AAAA,EACxC,YAAY,MAAuB,EAAA;AACjC,IAAM,KAAA,EAAA,CAAA;AACN,IAAA,IAAA,CAAK,OAAU,GAAA,MAAA,CAAA;AACf,IAAA,IAAA,CAAK,QAAW,GAAA,SAAA,CAAA;AAAA,GAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,QAAQ,OAA6B,EAAA;AACnC,IAAK,IAAA,CAAA,YAAA,CAAa,OAAU,GAAA,MAAA,CAAO,OAAO,CAAA,CAAA;AAE1C,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,gBAA+B,GAAA;AAC7B,IAAA,IAAA,CAAK,aAAa,iBAAoB,GAAA,MAAA,CAAA;AAEtC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,aAA4B,GAAA;AAC1B,IAAA,IAAA,CAAK,aAAa,cAAiB,GAAA,MAAA,CAAA;AAEnC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,eAA8B,GAAA;AAC5B,IAAA,IAAA,CAAK,aAAa,gBAAmB,GAAA,MAAA,CAAA;AAErC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,YAA2B,GAAA;AACzB,IAAA,IAAA,CAAK,aAAa,YAAe,GAAA,MAAA,CAAA;AAEjC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,eAA8B,GAAA;AAC5B,IAAA,IAAA,CAAK,aAAa,gBAAmB,GAAA,MAAA,CAAA;AAErC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,OAAO,MAA4B,EAAA;AACjC,IAAA,IAAA,CAAK,aAAa,MAAS,GAAA,MAAA,CAAA;AAE3B,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"asset-query.cjs","sources":["../../../src/query/asset-query.ts"],"sourcesContent":["import { BaseQuery } from './base-query';\nimport { AxiosInstance } from '@contentstack/core';\nimport { Query } from './query';\n\nexport class AssetQuery extends BaseQuery {\n constructor(client: AxiosInstance) {\n super();\n this._client = client;\n this._urlPath = '/assets';\n }\n /**\n * @method version\n * @memberof AssetQuery\n * @description Retrieve a specific version of an asset in result\n * @returns {AssetQuery}\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.asset().version(1).find();\n */\n version(version: number): AssetQuery {\n this._queryParams.version = String(version);\n\n return this;\n }\n\n /**\n * @method includeDimension\n * @memberof AssetQuery\n * @description Includes the dimensions (height and width) of the image in result\n * @returns {AssetQuery}\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.asset().includeDimension().find();\n */\n includeDimension(): AssetQuery {\n this._queryParams.include_dimension = 'true';\n\n return this;\n }\n\n /**\n * @method includeBranch\n * @memberof AssetQuery\n * @description Includes the branch in result\n * @returns {AssetQuery}\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.asset().includeBranch().find();\n */\n includeBranch(): AssetQuery {\n this._queryParams.include_branch = 'true';\n\n return this;\n }\n\n /**\n * @method includeMetadata\n * @memberof AssetQuery\n * @description Include the metadata for getting metadata content for the asset.\n * @returns {AssetQuery}\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.asset().includeMetadata().find();\n */\n includeMetadata(): AssetQuery {\n this._queryParams.include_metadata = 'true';\n\n return this;\n }\n\n /**\n * @method relativeUrls\n * @memberof AssetQuery\n * @description Includes the relative URLs of the assets in result\n * @returns {AssetQuery}\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.asset().relativeUrls().find();\n */\n relativeUrls(): AssetQuery {\n this._queryParams.relative_url = 'true';\n\n return this;\n }\n\n /**\n * @method includeFallback\n * @memberof AssetQuery\n * @description When an entry is not published in a specific language, content can be fetched from its fallback language\n * @returns {AssetQuery}\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.asset().includeFallback().find();\n */\n includeFallback(): AssetQuery {\n this._queryParams.include_fallback = 'true';\n\n return this;\n }\n\n /**\n * @method locale\n * @memberof AssetQuery\n * @description The assets published in the locale will be fetched\n * @returns {AssetQuery}\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.asset().locale('en-us').find();\n */\n locale(locale: string): AssetQuery {\n this._queryParams.locale = locale;\n\n return this;\n }\n\n /**\n * @method assetFields\n * @memberof AssetQuery\n * @description Include specific asset fields in the response (CDA getAssets).\n * Use with asset_fields[]: user_defined_fields, embedded, ai_suggested, visual_markups.\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.asset().assetFields(\"user_defined_fields\", \"embedded_metadata\").find();\n *\n * @param {...string} fields - Asset field names to include (e.g. user_defined_fields, embedded, ai_suggested, visual_markups)\n * @returns {AssetQuery} - Returns the AssetQuery instance for chaining.\n */\n assetFields(...fields: string[]): this {\n if (fields.length > 0) {\n this._queryParams['asset_fields[]'] = fields;\n }\n return this;\n }\n\n /**\n * @method query\n * @memberof AssetQuery\n * @description Fetches the asset data on the basis of the query\n * @returns {Query}\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.asset().query().where('fieldUid', QueryOperation.EQUALS, 'value').find();\n */\n query() {\n return new Query(this._client, this._parameters, this._queryParams);\n }\n}\n"],"names":["BaseQuery","Query"],"mappings":";;;;;AAIO,MAAM,mBAAmBA,mBAAU,CAAA;AAAA,EACxC,YAAY,MAAuB,EAAA;AACjC,IAAM,KAAA,EAAA,CAAA;AACN,IAAA,IAAA,CAAK,OAAU,GAAA,MAAA,CAAA;AACf,IAAA,IAAA,CAAK,QAAW,GAAA,SAAA,CAAA;AAAA,GAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,QAAQ,OAA6B,EAAA;AACnC,IAAK,IAAA,CAAA,YAAA,CAAa,OAAU,GAAA,MAAA,CAAO,OAAO,CAAA,CAAA;AAE1C,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,gBAA+B,GAAA;AAC7B,IAAA,IAAA,CAAK,aAAa,iBAAoB,GAAA,MAAA,CAAA;AAEtC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,aAA4B,GAAA;AAC1B,IAAA,IAAA,CAAK,aAAa,cAAiB,GAAA,MAAA,CAAA;AAEnC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,eAA8B,GAAA;AAC5B,IAAA,IAAA,CAAK,aAAa,gBAAmB,GAAA,MAAA,CAAA;AAErC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,YAA2B,GAAA;AACzB,IAAA,IAAA,CAAK,aAAa,YAAe,GAAA,MAAA,CAAA;AAEjC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,eAA8B,GAAA;AAC5B,IAAA,IAAA,CAAK,aAAa,gBAAmB,GAAA,MAAA,CAAA;AAErC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,OAAO,MAA4B,EAAA;AACjC,IAAA,IAAA,CAAK,aAAa,MAAS,GAAA,MAAA,CAAA;AAE3B,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,eAAe,MAAwB,EAAA;AACrC,IAAI,IAAA,MAAA,CAAO,SAAS,CAAG,EAAA;AACrB,MAAK,IAAA,CAAA,YAAA,CAAa,gBAAgB,CAAI,GAAA,MAAA,CAAA;AAAA,KACxC;AACA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,KAAQ,GAAA;AACN,IAAA,OAAO,IAAIC,WAAM,CAAA,IAAA,CAAK,SAAS,IAAK,CAAA,WAAA,EAAa,KAAK,YAAY,CAAA,CAAA;AAAA,GACpE;AACF;;;;"}
|
|
@@ -87,6 +87,21 @@ export declare class AssetQuery extends BaseQuery {
|
|
|
87
87
|
* const result = await stack.asset().locale('en-us').find();
|
|
88
88
|
*/
|
|
89
89
|
locale(locale: string): AssetQuery;
|
|
90
|
+
/**
|
|
91
|
+
* @method assetFields
|
|
92
|
+
* @memberof AssetQuery
|
|
93
|
+
* @description Include specific asset fields in the response (CDA getAssets).
|
|
94
|
+
* Use with asset_fields[]: user_defined_fields, embedded, ai_suggested, visual_markups.
|
|
95
|
+
* @example
|
|
96
|
+
* import contentstack from '@contentstack/delivery-sdk'
|
|
97
|
+
*
|
|
98
|
+
* const stack = contentstack.stack({ apiKey: "apiKey", deliveryToken: "deliveryToken", environment: "environment" });
|
|
99
|
+
* const result = await stack.asset().assetFields("user_defined_fields", "embedded_metadata").find();
|
|
100
|
+
*
|
|
101
|
+
* @param {...string} fields - Asset field names to include (e.g. user_defined_fields, embedded, ai_suggested, visual_markups)
|
|
102
|
+
* @returns {AssetQuery} - Returns the AssetQuery instance for chaining.
|
|
103
|
+
*/
|
|
104
|
+
assetFields(...fields: string[]): this;
|
|
90
105
|
/**
|
|
91
106
|
* @method query
|
|
92
107
|
* @memberof AssetQuery
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asset-query.d.ts","sourceRoot":"","sources":["../../../src/query/asset-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,qBAAa,UAAW,SAAQ,SAAS;gBAC3B,MAAM,EAAE,aAAa;IAKjC;;;;;;;;;;OAUG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAMpC;;;;;;;;;;OAUG;IACH,gBAAgB,IAAI,UAAU;IAM9B;;;;;;;;;;OAUG;IACH,aAAa,IAAI,UAAU;IAM3B;;;;;;;;;;OAUG;IACH,eAAe,IAAI,UAAU;IAM7B;;;;;;;;;;OAUG;IACH,YAAY,IAAI,UAAU;IAM1B;;;;;;;;;;OAUG;IACH,eAAe,IAAI,UAAU;IAM7B;;;;;;;;;;OAUG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU;
|
|
1
|
+
{"version":3,"file":"asset-query.d.ts","sourceRoot":"","sources":["../../../src/query/asset-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,qBAAa,UAAW,SAAQ,SAAS;gBAC3B,MAAM,EAAE,aAAa;IAKjC;;;;;;;;;;OAUG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAMpC;;;;;;;;;;OAUG;IACH,gBAAgB,IAAI,UAAU;IAM9B;;;;;;;;;;OAUG;IACH,aAAa,IAAI,UAAU;IAM3B;;;;;;;;;;OAUG;IACH,eAAe,IAAI,UAAU;IAM7B;;;;;;;;;;OAUG;IACH,YAAY,IAAI,UAAU;IAM1B;;;;;;;;;;OAUG;IACH,eAAe,IAAI,UAAU;IAM7B;;;;;;;;;;OAUG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU;IAMlC;;;;;;;;;;;;;OAaG;IACH,WAAW,CAAC,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAOtC;;;;;;;;;;OAUG;IACH,KAAK;CAGN"}
|
|
@@ -112,6 +112,26 @@ class AssetQuery extends BaseQuery {
|
|
|
112
112
|
this._queryParams.locale = locale;
|
|
113
113
|
return this;
|
|
114
114
|
}
|
|
115
|
+
/**
|
|
116
|
+
* @method assetFields
|
|
117
|
+
* @memberof AssetQuery
|
|
118
|
+
* @description Include specific asset fields in the response (CDA getAssets).
|
|
119
|
+
* Use with asset_fields[]: user_defined_fields, embedded, ai_suggested, visual_markups.
|
|
120
|
+
* @example
|
|
121
|
+
* import contentstack from '@contentstack/delivery-sdk'
|
|
122
|
+
*
|
|
123
|
+
* const stack = contentstack.stack({ apiKey: "apiKey", deliveryToken: "deliveryToken", environment: "environment" });
|
|
124
|
+
* const result = await stack.asset().assetFields("user_defined_fields", "embedded_metadata").find();
|
|
125
|
+
*
|
|
126
|
+
* @param {...string} fields - Asset field names to include (e.g. user_defined_fields, embedded, ai_suggested, visual_markups)
|
|
127
|
+
* @returns {AssetQuery} - Returns the AssetQuery instance for chaining.
|
|
128
|
+
*/
|
|
129
|
+
assetFields(...fields) {
|
|
130
|
+
if (fields.length > 0) {
|
|
131
|
+
this._queryParams["asset_fields[]"] = fields;
|
|
132
|
+
}
|
|
133
|
+
return this;
|
|
134
|
+
}
|
|
115
135
|
/**
|
|
116
136
|
* @method query
|
|
117
137
|
* @memberof AssetQuery
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asset-query.js","sources":["../../../src/query/asset-query.ts"],"sourcesContent":["import { BaseQuery } from './base-query';\nimport { AxiosInstance } from '@contentstack/core';\nimport { Query } from './query';\n\nexport class AssetQuery extends BaseQuery {\n constructor(client: AxiosInstance) {\n super();\n this._client = client;\n this._urlPath = '/assets';\n }\n /**\n * @method version\n * @memberof AssetQuery\n * @description Retrieve a specific version of an asset in result\n * @returns {AssetQuery}\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.asset().version(1).find();\n */\n version(version: number): AssetQuery {\n this._queryParams.version = String(version);\n\n return this;\n }\n\n /**\n * @method includeDimension\n * @memberof AssetQuery\n * @description Includes the dimensions (height and width) of the image in result\n * @returns {AssetQuery}\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.asset().includeDimension().find();\n */\n includeDimension(): AssetQuery {\n this._queryParams.include_dimension = 'true';\n\n return this;\n }\n\n /**\n * @method includeBranch\n * @memberof AssetQuery\n * @description Includes the branch in result\n * @returns {AssetQuery}\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.asset().includeBranch().find();\n */\n includeBranch(): AssetQuery {\n this._queryParams.include_branch = 'true';\n\n return this;\n }\n\n /**\n * @method includeMetadata\n * @memberof AssetQuery\n * @description Include the metadata for getting metadata content for the asset.\n * @returns {AssetQuery}\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.asset().includeMetadata().find();\n */\n includeMetadata(): AssetQuery {\n this._queryParams.include_metadata = 'true';\n\n return this;\n }\n\n /**\n * @method relativeUrls\n * @memberof AssetQuery\n * @description Includes the relative URLs of the assets in result\n * @returns {AssetQuery}\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.asset().relativeUrls().find();\n */\n relativeUrls(): AssetQuery {\n this._queryParams.relative_url = 'true';\n\n return this;\n }\n\n /**\n * @method includeFallback\n * @memberof AssetQuery\n * @description When an entry is not published in a specific language, content can be fetched from its fallback language\n * @returns {AssetQuery}\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.asset().includeFallback().find();\n */\n includeFallback(): AssetQuery {\n this._queryParams.include_fallback = 'true';\n\n return this;\n }\n\n /**\n * @method locale\n * @memberof AssetQuery\n * @description The assets published in the locale will be fetched\n * @returns {AssetQuery}\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.asset().locale('en-us').find();\n */\n locale(locale: string): AssetQuery {\n this._queryParams.locale = locale;\n\n return this;\n }\n /**\n * @method query\n * @memberof AssetQuery\n * @description Fetches the asset data on the basis of the query\n * @returns {Query}\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.asset().query().where('fieldUid', QueryOperation.EQUALS, 'value').find();\n */\n query() {\n return new Query(this._client, this._parameters, this._queryParams);\n }\n}\n"],"names":[],"mappings":";;;AAIO,MAAM,mBAAmB,SAAU,CAAA;AAAA,EACxC,YAAY,MAAuB,EAAA;AACjC,IAAM,KAAA,EAAA,CAAA;AACN,IAAA,IAAA,CAAK,OAAU,GAAA,MAAA,CAAA;AACf,IAAA,IAAA,CAAK,QAAW,GAAA,SAAA,CAAA;AAAA,GAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,QAAQ,OAA6B,EAAA;AACnC,IAAK,IAAA,CAAA,YAAA,CAAa,OAAU,GAAA,MAAA,CAAO,OAAO,CAAA,CAAA;AAE1C,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,gBAA+B,GAAA;AAC7B,IAAA,IAAA,CAAK,aAAa,iBAAoB,GAAA,MAAA,CAAA;AAEtC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,aAA4B,GAAA;AAC1B,IAAA,IAAA,CAAK,aAAa,cAAiB,GAAA,MAAA,CAAA;AAEnC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,eAA8B,GAAA;AAC5B,IAAA,IAAA,CAAK,aAAa,gBAAmB,GAAA,MAAA,CAAA;AAErC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,YAA2B,GAAA;AACzB,IAAA,IAAA,CAAK,aAAa,YAAe,GAAA,MAAA,CAAA;AAEjC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,eAA8B,GAAA;AAC5B,IAAA,IAAA,CAAK,aAAa,gBAAmB,GAAA,MAAA,CAAA;AAErC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,OAAO,MAA4B,EAAA;AACjC,IAAA,IAAA,CAAK,aAAa,MAAS,GAAA,MAAA,CAAA;AAE3B,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"asset-query.js","sources":["../../../src/query/asset-query.ts"],"sourcesContent":["import { BaseQuery } from './base-query';\nimport { AxiosInstance } from '@contentstack/core';\nimport { Query } from './query';\n\nexport class AssetQuery extends BaseQuery {\n constructor(client: AxiosInstance) {\n super();\n this._client = client;\n this._urlPath = '/assets';\n }\n /**\n * @method version\n * @memberof AssetQuery\n * @description Retrieve a specific version of an asset in result\n * @returns {AssetQuery}\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.asset().version(1).find();\n */\n version(version: number): AssetQuery {\n this._queryParams.version = String(version);\n\n return this;\n }\n\n /**\n * @method includeDimension\n * @memberof AssetQuery\n * @description Includes the dimensions (height and width) of the image in result\n * @returns {AssetQuery}\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.asset().includeDimension().find();\n */\n includeDimension(): AssetQuery {\n this._queryParams.include_dimension = 'true';\n\n return this;\n }\n\n /**\n * @method includeBranch\n * @memberof AssetQuery\n * @description Includes the branch in result\n * @returns {AssetQuery}\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.asset().includeBranch().find();\n */\n includeBranch(): AssetQuery {\n this._queryParams.include_branch = 'true';\n\n return this;\n }\n\n /**\n * @method includeMetadata\n * @memberof AssetQuery\n * @description Include the metadata for getting metadata content for the asset.\n * @returns {AssetQuery}\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.asset().includeMetadata().find();\n */\n includeMetadata(): AssetQuery {\n this._queryParams.include_metadata = 'true';\n\n return this;\n }\n\n /**\n * @method relativeUrls\n * @memberof AssetQuery\n * @description Includes the relative URLs of the assets in result\n * @returns {AssetQuery}\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.asset().relativeUrls().find();\n */\n relativeUrls(): AssetQuery {\n this._queryParams.relative_url = 'true';\n\n return this;\n }\n\n /**\n * @method includeFallback\n * @memberof AssetQuery\n * @description When an entry is not published in a specific language, content can be fetched from its fallback language\n * @returns {AssetQuery}\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.asset().includeFallback().find();\n */\n includeFallback(): AssetQuery {\n this._queryParams.include_fallback = 'true';\n\n return this;\n }\n\n /**\n * @method locale\n * @memberof AssetQuery\n * @description The assets published in the locale will be fetched\n * @returns {AssetQuery}\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.asset().locale('en-us').find();\n */\n locale(locale: string): AssetQuery {\n this._queryParams.locale = locale;\n\n return this;\n }\n\n /**\n * @method assetFields\n * @memberof AssetQuery\n * @description Include specific asset fields in the response (CDA getAssets).\n * Use with asset_fields[]: user_defined_fields, embedded, ai_suggested, visual_markups.\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.asset().assetFields(\"user_defined_fields\", \"embedded_metadata\").find();\n *\n * @param {...string} fields - Asset field names to include (e.g. user_defined_fields, embedded, ai_suggested, visual_markups)\n * @returns {AssetQuery} - Returns the AssetQuery instance for chaining.\n */\n assetFields(...fields: string[]): this {\n if (fields.length > 0) {\n this._queryParams['asset_fields[]'] = fields;\n }\n return this;\n }\n\n /**\n * @method query\n * @memberof AssetQuery\n * @description Fetches the asset data on the basis of the query\n * @returns {Query}\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.asset().query().where('fieldUid', QueryOperation.EQUALS, 'value').find();\n */\n query() {\n return new Query(this._client, this._parameters, this._queryParams);\n }\n}\n"],"names":[],"mappings":";;;AAIO,MAAM,mBAAmB,SAAU,CAAA;AAAA,EACxC,YAAY,MAAuB,EAAA;AACjC,IAAM,KAAA,EAAA,CAAA;AACN,IAAA,IAAA,CAAK,OAAU,GAAA,MAAA,CAAA;AACf,IAAA,IAAA,CAAK,QAAW,GAAA,SAAA,CAAA;AAAA,GAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,QAAQ,OAA6B,EAAA;AACnC,IAAK,IAAA,CAAA,YAAA,CAAa,OAAU,GAAA,MAAA,CAAO,OAAO,CAAA,CAAA;AAE1C,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,gBAA+B,GAAA;AAC7B,IAAA,IAAA,CAAK,aAAa,iBAAoB,GAAA,MAAA,CAAA;AAEtC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,aAA4B,GAAA;AAC1B,IAAA,IAAA,CAAK,aAAa,cAAiB,GAAA,MAAA,CAAA;AAEnC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,eAA8B,GAAA;AAC5B,IAAA,IAAA,CAAK,aAAa,gBAAmB,GAAA,MAAA,CAAA;AAErC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,YAA2B,GAAA;AACzB,IAAA,IAAA,CAAK,aAAa,YAAe,GAAA,MAAA,CAAA;AAEjC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,eAA8B,GAAA;AAC5B,IAAA,IAAA,CAAK,aAAa,gBAAmB,GAAA,MAAA,CAAA;AAErC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,OAAO,MAA4B,EAAA;AACjC,IAAA,IAAA,CAAK,aAAa,MAAS,GAAA,MAAA,CAAA;AAE3B,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,eAAe,MAAwB,EAAA;AACrC,IAAI,IAAA,MAAA,CAAO,SAAS,CAAG,EAAA;AACrB,MAAK,IAAA,CAAA,YAAA,CAAa,gBAAgB,CAAI,GAAA,MAAA,CAAA;AAAA,KACxC;AACA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,KAAQ,GAAA;AACN,IAAA,OAAO,IAAI,KAAM,CAAA,IAAA,CAAK,SAAS,IAAK,CAAA,WAAA,EAAa,KAAK,YAAY,CAAA,CAAA;AAAA,GACpE;AACF;;;;"}
|
|
@@ -28,9 +28,9 @@ class Query extends baseQuery.BaseQuery {
|
|
|
28
28
|
const alphanumericRegex = /^[a-zA-Z0-9_.-]+$/;
|
|
29
29
|
return alphanumericRegex.test(input);
|
|
30
30
|
}
|
|
31
|
-
// Validate if input matches
|
|
31
|
+
// Validate if input matches safe regex patterns
|
|
32
32
|
isValidRegexPattern(input) {
|
|
33
|
-
const validRegex = /^[a-zA-Z0-9|^$.*+?()[\]{}
|
|
33
|
+
const validRegex = /^[a-zA-Z0-9|^$.*+?()[\]{}:,;&@#%=/!'"_~<> -]+$/;
|
|
34
34
|
if (!validRegex.test(input)) {
|
|
35
35
|
return false;
|
|
36
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.cjs","sources":["../../../src/query/query.ts"],"sourcesContent":["import { AxiosInstance, getData } from '@contentstack/core';\nimport { BaseQuery } from './base-query';\nimport { BaseQueryParameters, QueryOperation, QueryOperator, TaxonomyQueryOperation, params, queryParams, FindResponse } from '../common/types';\nimport { encodeQueryParams } from '../common/utils';\nimport { ErrorMessages } from '../common/error-messages';\n\nexport class Query extends BaseQuery {\n private _contentTypeUid?: string;\n\n constructor(client: AxiosInstance, params: params, queryParams: queryParams, variants?: string, uid?: string, queryObj?: { [key: string]: any }) {\n super();\n this._client = client;\n this._contentTypeUid = uid;\n this._urlPath = `/content_types/${this._contentTypeUid}/entries`;\n this._parameters = params || {};\n this._queryParams = queryParams || {};\n this._variants = variants || '';\n\n if (!uid) {\n this._urlPath = `/assets`;\n }\n if (queryObj) {\n this._parameters = { ...this._parameters, ...queryObj };\n }\n }\n // Validate if input is alphanumeric \n private isValidAlphanumeric(input: string): boolean {\n const alphanumericRegex = /^[a-zA-Z0-9_.-]+$/;\n return alphanumericRegex.test(input);\n }\n\n // Validate if input matches any of the safe, pre-approved patterns\n private isValidRegexPattern(input: string): boolean {\n const validRegex = /^[a-zA-Z0-9|^$.*+?()[\\]{}\\\\-]+$/; // Allow only safe regex characters\n if (!validRegex.test(input)) {\n return false;\n }\n try {\n new RegExp(input);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n private isValidValue(value: any[]): boolean {\n return Array.isArray(value) && value.every(item => typeof item === 'string' || typeof item === 'number' || typeof item === 'boolean');\n }\n\n /**\n * @method where\n * @memberof Query\n * @description Filters the results based on the specified criteria.\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const result = await query.where(\"field_UID\", QueryOperation.IS_LESS_THAN, [\"field1\", \"field2\"]).find()\n * // OR\n * const asset = await stack.asset().query().where(\"field_UID\", QueryOperation.IS_LESS_THAN, [\"field1\", \"field2\"]).find()\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const result = await query.where(\"field_UID\", QueryOperation.MATCHES, [\"field1\", \"field2\"]).find()\n * @returns {Query}\n */\n where(\n fieldUid: string,\n queryOperation: QueryOperation | TaxonomyQueryOperation,\n fields: string | string[] | number | number[] | object | boolean,\n additionalData?: object\n ): Query {\n if (!this.isValidAlphanumeric(fieldUid)) {\n console.error(ErrorMessages.INVALID_FIELD_UID);\n return this;\n }\n if (queryOperation == QueryOperation.EQUALS) {\n this._parameters[fieldUid] = fields;\n }\n else {\n const parameterValue: { [key in QueryOperation]?: string | string[] } = { [queryOperation]: fields, ...additionalData };\n this._parameters[fieldUid] = parameterValue;\n }\n return this;\n }\n\n /**\n * @method regex\n * @memberof Query\n * @description Retrieve entries that match the provided regular expressions\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const result = await query.regex('title','^Demo').find()\n * // OR\n * const result = await query.regex('title','^Demo', 'i').find() // regex with options\n * @returns {Query}\n */\n regex(fieldUid: string, regexPattern: string, options?: string): Query {\n if (!this.isValidAlphanumeric(fieldUid)) {\n console.error(ErrorMessages.INVALID_FIELD_UID);\n return this;\n }\n if (!this.isValidRegexPattern(regexPattern)) {\n throw new Error(ErrorMessages.INVALID_REGEX_PATTERN);\n }\n else {\n this._parameters[fieldUid] = { $regex: regexPattern };\n if (options) this._parameters[fieldUid].$options = options;\n return this;\n }\n }\n\n /**\n * @method whereIn\n * @memberof Query\n * @description Get entries having values based on referenced fields.\n * The query retrieves all entries that satisfy the query conditions made on referenced fields\n * This method sets the '$in_query' parameter to a reference field UID and a query instance in the API request.\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const subQuery = stack.contentType(\"referencedContentTypeUid\").entry().query().where(\"title\", QueryOperation.EQUALS, \"value\");\n * query.whereIn(\"brand\", subQuery)\n * const result = await query.find()\n *\n * @param {string} referenceUid - UID of the reference field to query.\n * @param {Query} queryInstance - The Query instance to include in the where clause.\n * @returns {Query} - Returns the Query instance for chaining.\n */\n whereIn(referenceUid: string, queryInstance: Query): Query {\n // eslint-disable-next-line @typescript-eslint/naming-convention, prettier/prettier\n if (!this.isValidAlphanumeric(referenceUid)) {\n throw new Error(ErrorMessages.INVALID_REFERENCE_UID(referenceUid));\n }\n this._parameters[referenceUid] = { '$in_query': queryInstance._parameters };\n return this;\n }\n\n /**\n * @method whereNotIn\n * @memberof Query\n * @description Get entries having values based on referenced fields.\n * This query works the opposite of $in_query and retrieves all entries that does not satisfy query conditions made on referenced fields.\n * This method sets the '$nin_query' parameter to a reference field UID and a query instance in the API request.\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const subQuery = stack.contentType(\"referencedContentTypeUid\").entry().query().where(\"title\", QueryOperation.EQUALS, \"value\");\n * query.whereNotIn(\"brand\", subQuery)\n * const result = await query.find()\n *\n * @param {string} referenceUid - UID of the reference field to query.\n * @param {Query} queryInstance - The Query instance to include in the where clause.\n * @returns {Query} - Returns the Query instance for chaining.\n */\n whereNotIn(referenceUid: string, queryInstance: Query): Query {\n // eslint-disable-next-line @typescript-eslint/naming-convention, prettier/prettier\n if (!this.isValidAlphanumeric(referenceUid)) {\n throw new Error(ErrorMessages.INVALID_REFERENCE_UID(referenceUid));\n }\n this._parameters[referenceUid] = { '$nin_query': queryInstance._parameters };\n return this;\n }\n\n /**\n * @method queryOperator\n * @memberof Query\n * @description In case of '$and' get entries that satisfy all the conditions provided in the '$and' query and\n * in case of '$or' query get all entries that satisfy at least one of the given conditions provided in the '$or' query.\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentType1Uid\").entry().query();\n * const subQuery1 = stack.contentType(\"contentType2Uid\").entry().query().where(\"price\", QueryOperation.IS_LESS_THAN, 90);\n * const subQuery2 = stack.contentType(\"contentType3Uid\").entry().query().where(\"discount\", QueryOperation.INCLUDES, [20, 45]);\n * query.queryOperator(QueryOperator.AND, subQuery1, subQuery2)\n * const result = await query.find()\n *\n * @param {QueryOperator} queryType - The type of query operator to apply.\n * @param {...Query[]} queryObjects - The Query instances to apply the query to.\n * @returns {Query} - Returns the Query instance for chaining.\n */\n queryOperator(queryType: QueryOperator, ...queryObjects: Query[]): Query {\n const paramsList: BaseQueryParameters[] = [];\n for (const queryItem of queryObjects) {\n paramsList.push(queryItem._parameters);\n }\n this._parameters[queryType] = paramsList;\n\n return this;\n }\n\n /**\n * @method getQuery\n * @memberof Query\n * @description Returns the raw (JSON) query based on the filters applied on Query object.\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const result = query.getQuery()\n * // OR\n * const assetQuery = stack.asset().query();\n * const assetResult = assetQuery.getQuery()\n *\n * @returns {{ [key: string]: any }} The raw query object\n */\n getQuery(): { [key: string]: any } {\n return this._parameters;\n }\n\n /**\n * @method containedIn\n * @memberof Query\n * @description Filters entries where the field value is contained in the provided array of values\n * @param {string} key - The field UID to filter on\n * @param {(string | number | boolean)[]} value - Array of values to match against\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const result = await query.containedIn('fieldUid', ['value1', 'value2']).find()\n * \n * @returns {Query}\n */\n containedIn(key: string, value: (string | number | boolean)[]): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n if (!this.isValidValue(value)) {\n console.error(ErrorMessages.INVALID_VALUE_ARRAY);\n return this;\n }\n this._parameters[key] = { '$in': value };\n return this;\n }\n\n /**\n * @method notContainedIn\n * @memberof Query\n * @description Filters entries where the field value is not contained in the provided array of values\n * @param {string} key - The field UID to filter on\n * @param {(string | number | boolean)[]} value - Array of values to exclude\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const result = await query.notContainedIn('fieldUid', ['value1', 'value2']).find()\n * \n * @returns {Query}\n */\n notContainedIn(key: string, value: (string | number | boolean)[]): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n if (!this.isValidValue(value)) {\n console.error(ErrorMessages.INVALID_VALUE_ARRAY);\n return this;\n }\n this._parameters[key] = { '$nin': value };\n return this;\n }\n\n /**\n * @method exists\n * @memberof Query\n * @description Filters entries where the specified field exists\n * @param {string} key - The field UID to check for existence\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const result = await query.exists('fieldUid').find()\n * \n * @returns {Query}\n */\n exists(key: string): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n this._parameters[key] = { '$exists': true };\n return this;\n }\n\n /**\n * @method notExists\n * @memberof Query\n * @description Filters entries where the specified field does not exist\n * @param {string} key - The field UID to check for non-existence\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const result = await query.notExists('fieldUid').find()\n * \n * @returns {Query}\n */\n notExists(key: string): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n this._parameters[key] = { '$exists': false };\n return this;\n }\n\n /**\n * @method or\n * @memberof Query\n * @description Combines multiple queries with OR logic - returns entries that match at least one of the provided queries\n * @param {...Query} queries - Query instances to combine with OR logic\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query1 = stack.contentType('contenttype_uid').entry().query().containedIn('fieldUID', ['value']);\n * const query2 = stack.contentType('contenttype_uid').entry().query().where('fieldUID', QueryOperation.EQUALS, 'value2');\n * const result = await stack.contentType('contenttype_uid').entry().query().or(query1, query2).find();\n * \n * @returns {Query}\n */\n or(...queries: Query[]): Query {\n const paramsList: BaseQueryParameters[] = [];\n for (const queryItem of queries) {\n paramsList.push(queryItem._parameters);\n }\n this._parameters.$or = paramsList;\n return this;\n }\n\n /**\n * @method and\n * @memberof Query\n * @description Combines multiple queries with AND logic - returns entries that match all of the provided queries\n * @param {...Query} queries - Query instances to combine with AND logic\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query1 = stack.contentType('contenttype_uid').entry().query().containedIn('fieldUID', ['value']);\n * const query2 = stack.contentType('contenttype_uid').entry().query().where('fieldUID', QueryOperation.EQUALS, 'value2');\n * const result = await stack.contentType('contenttype_uid').entry().query().and(query1, query2).find();\n * \n * @returns {Query}\n */\n and(...queries: Query[]): Query {\n const paramsList: BaseQueryParameters[] = [];\n for (const queryItem of queries) {\n paramsList.push(queryItem._parameters);\n }\n this._parameters.$and = paramsList;\n return this;\n }\n\n /**\n * @method equalTo\n * @memberof Query\n * @description Filters entries where the field value equals the specified value\n * @param {string} key - The field UID to filter on\n * @param {string | number | boolean} value - The value to match\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.contentType('contenttype_uid').entry().query().equalTo('fieldUid', 'value').find();\n * \n * @returns {Query}\n */\n equalTo(key: string, value: string | number | boolean): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n if (typeof value !== 'string' && typeof value !== 'number') {\n console.error(ErrorMessages.INVALID_VALUE_STRING_OR_NUMBER);\n return this;\n }\n this._parameters[key] = value;\n return this;\n }\n\n /**\n * @method notEqualTo\n * @memberof Query\n * @description Filters entries where the field value does not equal the specified value\n * @param {string} key - The field UID to filter on\n * @param {string | number | boolean} value - The value to exclude\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.contentType('contenttype_uid').entry().query().notEqualTo('fieldUid', 'value').find();\n * \n * @returns {Query}\n */\n notEqualTo(key: string, value: string | number | boolean): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n if (typeof value !== 'string' && typeof value !== 'number') {\n console.error(ErrorMessages.INVALID_VALUE_STRING_OR_NUMBER);\n return this;\n }\n this._parameters[key] = { '$ne': value };\n return this;\n }\n\n /**\n * @method referenceIn\n * @memberof Query\n * @description Filters entries where the reference field matches entries from the provided query\n * @param {string} key - The reference field UID to filter on\n * @param {Query} query - Query instance to match referenced entries against\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const subQuery = stack.contentType('contenttype_uid').entry().query().where('title', QueryOperation.EQUALS, 'value');\n * const result = await stack.contentType('contenttype_uid').entry().query().referenceIn('reference_uid', subQuery).find();\n * \n * @returns {Query}\n */\n referenceIn(key: string, query: Query): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n this._parameters[key] = { '$in_query': query._parameters }\n return this;\n }\n\n /**\n * @method referenceNotIn\n * @memberof Query\n * @description Filters entries where the reference field does not match entries from the provided query\n * @param {string} key - The reference field UID to filter on\n * @param {Query} query - Query instance to exclude referenced entries against\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const subQuery = stack.contentType('contenttype_uid').entry().query().where('title', QueryOperation.EQUALS, 'value');\n * const result = await stack.contentType('contenttype_uid').entry().query().referenceNotIn('reference_uid', subQuery).find();\n * \n * @returns {Query}\n */\n referenceNotIn(key: string, query: Query): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n this._parameters[key] = { '$nin_query': query._parameters }\n return this;\n }\n\n /**\n * @method tags\n * @memberof Query\n * @description Filters entries that have any of the specified tags\n * @param {(string | number | boolean)[]} values - Array of tag values to filter by\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.contentType('contenttype_uid').entry().query().tags(['tag1']).find();\n * \n * @returns {Query}\n */\n tags(values: (string | number | boolean)[]): Query {\n if (!this.isValidValue(values)) {\n console.error(ErrorMessages.INVALID_VALUE_ARRAY);\n return this;\n }\n this._parameters['tags'] = values;\n return this;\n }\n\n /**\n * @method search\n * @memberof Query\n * @description Enables typeahead search functionality for the query\n * @param {string} key - The search term to use for typeahead search\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.contentType('contenttype_uid').entry().query().search('key').find();\n * \n * @returns {Query}\n */\n search(key: string): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n this._queryParams['typeahead'] = key\n return this\n }\n\n /**\n * @method lessThan\n * @memberof Query\n * @description Filters entries where the field value is less than the specified value\n * @param {string} key - The field UID to filter on\n * @param {string | number} value - The value to compare against\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.contentType('contenttype_uid').entry().query().lessThan('fieldUid', 100).find();\n * \n * @returns {Query}\n */\n lessThan(key: string, value: (string | number)): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n if (typeof value !== 'string' && typeof value !== 'number') {\n console.error(ErrorMessages.INVALID_VALUE_STRING_OR_NUMBER);\n return this;\n }\n\n this._parameters[key] = { '$lt': value };\n return this;\n }\n\n /**\n * @method lessThanOrEqualTo\n * @memberof Query\n * @description Filters entries where the field value is less than or equal to the specified value\n * @param {string} key - The field UID to filter on\n * @param {string | number} value - The value to compare against\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.contentType('contenttype_uid').entry().query().lessThanOrEqualTo('fieldUid', 100).find();\n * \n * @returns {Query}\n */\n lessThanOrEqualTo(key: string, value: (string | number)): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n if (typeof value !== 'string' && typeof value !== 'number') {\n console.error(ErrorMessages.INVALID_VALUE_STRING_OR_NUMBER);\n return this;\n }\n this._parameters[key] = { '$lte': value };\n return this;\n }\n\n /**\n * @method greaterThan\n * @memberof Query\n * @description Filters entries where the field value is greater than the specified value\n * @param {string} key - The field UID to filter on\n * @param {string | number} value - The value to compare against\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.contentType('contenttype_uid').entry().query().greaterThan('fieldUid', 100).find();\n * \n * @returns {Query}\n */\n greaterThan(key: string, value: (string | number)): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n if (typeof value !== 'string' && typeof value !== 'number') {\n console.error(ErrorMessages.INVALID_VALUE_STRING_OR_NUMBER);\n return this;\n }\n this._parameters[key] = { '$gt': value };\n return this;\n }\n\n /**\n * @method greaterThanOrEqualTo\n * @memberof Query\n * @description Filters entries where the field value is greater than or equal to the specified value\n * @param {string} key - The field UID to filter on\n * @param {string | number} value - The value to compare against\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.contentType('contenttype_uid').entry().query().greaterThanOrEqualTo('fieldUid', 100).find();\n * \n * @returns {Query}\n */\n greaterThanOrEqualTo(key: string, value: (string | number)): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n if (typeof value !== 'string' && typeof value !== 'number') {\n console.error(ErrorMessages.INVALID_VALUE_STRING_OR_NUMBER);\n return this;\n }\n this._parameters[key] = { '$gte': value };\n return this;\n }\n\n /**\n * Override find method to include content type UID directly for better caching\n */\n override async find<T>(encode: boolean = false): Promise<FindResponse<T>> {\n let requestParams: { [key: string]: any } = this._queryParams;\n\n if (Object.keys(this._parameters).length > 0) {\n let queryParams = { ...this._parameters };\n \n if (encode) {\n queryParams = encodeQueryParams(queryParams);\n }\n \n requestParams = { ...this._queryParams, query: queryParams };\n }\n\n const getRequestOptions: any = { \n params: requestParams,\n // Add contentTypeUid directly for improved caching\n contentTypeUid: this._contentTypeUid\n };\n\n if (this._variants) {\n getRequestOptions.headers = {\n ...getRequestOptions.headers,\n 'x-cs-variant-uid': this._variants\n };\n }\n const response = await getData(this._client, this._urlPath, getRequestOptions);\n\n return response as FindResponse<T>;\n }\n}\n"],"names":["BaseQuery","params","queryParams","ErrorMessages","QueryOperation","encodeQueryParams","getData"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"query.cjs","sources":["../../../src/query/query.ts"],"sourcesContent":["import { AxiosInstance, getData } from '@contentstack/core';\nimport { BaseQuery } from './base-query';\nimport { BaseQueryParameters, QueryOperation, QueryOperator, TaxonomyQueryOperation, params, queryParams, FindResponse } from '../common/types';\nimport { encodeQueryParams } from '../common/utils';\nimport { ErrorMessages } from '../common/error-messages';\n\nexport class Query extends BaseQuery {\n private _contentTypeUid?: string;\n\n constructor(client: AxiosInstance, params: params, queryParams: queryParams, variants?: string, uid?: string, queryObj?: { [key: string]: any }) {\n super();\n this._client = client;\n this._contentTypeUid = uid;\n this._urlPath = `/content_types/${this._contentTypeUid}/entries`;\n this._parameters = params || {};\n this._queryParams = queryParams || {};\n this._variants = variants || '';\n\n if (!uid) {\n this._urlPath = `/assets`;\n }\n if (queryObj) {\n this._parameters = { ...this._parameters, ...queryObj };\n }\n }\n // Validate if input is alphanumeric \n private isValidAlphanumeric(input: string): boolean {\n const alphanumericRegex = /^[a-zA-Z0-9_.-]+$/;\n return alphanumericRegex.test(input);\n }\n\n // Validate if input matches safe regex patterns\n private isValidRegexPattern(input: string): boolean {\n // Expanded whitelist: includes spaces and common safe special characters\n // Allows: alphanumeric, regex metacharacters, regular spaces, and common punctuation\n // Blocks: control characters (newlines, tabs, null bytes), backticks, and other dangerous chars\n const validRegex = /^[a-zA-Z0-9|^$.*+?()[\\]{}:,;&@#%=/!'\"_~<> -]+$/;\n if (!validRegex.test(input)) {\n return false;\n }\n try {\n new RegExp(input);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n private isValidValue(value: any[]): boolean {\n return Array.isArray(value) && value.every(item => typeof item === 'string' || typeof item === 'number' || typeof item === 'boolean');\n }\n\n /**\n * @method where\n * @memberof Query\n * @description Filters the results based on the specified criteria.\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const result = await query.where(\"field_UID\", QueryOperation.IS_LESS_THAN, [\"field1\", \"field2\"]).find()\n * // OR\n * const asset = await stack.asset().query().where(\"field_UID\", QueryOperation.IS_LESS_THAN, [\"field1\", \"field2\"]).find()\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const result = await query.where(\"field_UID\", QueryOperation.MATCHES, [\"field1\", \"field2\"]).find()\n * @returns {Query}\n */\n where(\n fieldUid: string,\n queryOperation: QueryOperation | TaxonomyQueryOperation,\n fields: string | string[] | number | number[] | object | boolean,\n additionalData?: object\n ): Query {\n if (!this.isValidAlphanumeric(fieldUid)) {\n console.error(ErrorMessages.INVALID_FIELD_UID);\n return this;\n }\n if (queryOperation == QueryOperation.EQUALS) {\n this._parameters[fieldUid] = fields;\n }\n else {\n const parameterValue: { [key in QueryOperation]?: string | string[] } = { [queryOperation]: fields, ...additionalData };\n this._parameters[fieldUid] = parameterValue;\n }\n return this;\n }\n\n /**\n * @method regex\n * @memberof Query\n * @description Retrieve entries that match the provided regular expressions\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const result = await query.regex('title','^Demo').find()\n * // OR\n * const result = await query.regex('title','^Demo', 'i').find() // regex with options\n * @returns {Query}\n */\n regex(fieldUid: string, regexPattern: string, options?: string): Query {\n if (!this.isValidAlphanumeric(fieldUid)) {\n console.error(ErrorMessages.INVALID_FIELD_UID);\n return this;\n }\n if (!this.isValidRegexPattern(regexPattern)) {\n throw new Error(ErrorMessages.INVALID_REGEX_PATTERN);\n }\n else {\n this._parameters[fieldUid] = { $regex: regexPattern };\n if (options) this._parameters[fieldUid].$options = options;\n return this;\n }\n }\n\n /**\n * @method whereIn\n * @memberof Query\n * @description Get entries having values based on referenced fields.\n * The query retrieves all entries that satisfy the query conditions made on referenced fields\n * This method sets the '$in_query' parameter to a reference field UID and a query instance in the API request.\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const subQuery = stack.contentType(\"referencedContentTypeUid\").entry().query().where(\"title\", QueryOperation.EQUALS, \"value\");\n * query.whereIn(\"brand\", subQuery)\n * const result = await query.find()\n *\n * @param {string} referenceUid - UID of the reference field to query.\n * @param {Query} queryInstance - The Query instance to include in the where clause.\n * @returns {Query} - Returns the Query instance for chaining.\n */\n whereIn(referenceUid: string, queryInstance: Query): Query {\n // eslint-disable-next-line @typescript-eslint/naming-convention, prettier/prettier\n if (!this.isValidAlphanumeric(referenceUid)) {\n throw new Error(ErrorMessages.INVALID_REFERENCE_UID(referenceUid));\n }\n this._parameters[referenceUid] = { '$in_query': queryInstance._parameters };\n return this;\n }\n\n /**\n * @method whereNotIn\n * @memberof Query\n * @description Get entries having values based on referenced fields.\n * This query works the opposite of $in_query and retrieves all entries that does not satisfy query conditions made on referenced fields.\n * This method sets the '$nin_query' parameter to a reference field UID and a query instance in the API request.\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const subQuery = stack.contentType(\"referencedContentTypeUid\").entry().query().where(\"title\", QueryOperation.EQUALS, \"value\");\n * query.whereNotIn(\"brand\", subQuery)\n * const result = await query.find()\n *\n * @param {string} referenceUid - UID of the reference field to query.\n * @param {Query} queryInstance - The Query instance to include in the where clause.\n * @returns {Query} - Returns the Query instance for chaining.\n */\n whereNotIn(referenceUid: string, queryInstance: Query): Query {\n // eslint-disable-next-line @typescript-eslint/naming-convention, prettier/prettier\n if (!this.isValidAlphanumeric(referenceUid)) {\n throw new Error(ErrorMessages.INVALID_REFERENCE_UID(referenceUid));\n }\n this._parameters[referenceUid] = { '$nin_query': queryInstance._parameters };\n return this;\n }\n\n /**\n * @method queryOperator\n * @memberof Query\n * @description In case of '$and' get entries that satisfy all the conditions provided in the '$and' query and\n * in case of '$or' query get all entries that satisfy at least one of the given conditions provided in the '$or' query.\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentType1Uid\").entry().query();\n * const subQuery1 = stack.contentType(\"contentType2Uid\").entry().query().where(\"price\", QueryOperation.IS_LESS_THAN, 90);\n * const subQuery2 = stack.contentType(\"contentType3Uid\").entry().query().where(\"discount\", QueryOperation.INCLUDES, [20, 45]);\n * query.queryOperator(QueryOperator.AND, subQuery1, subQuery2)\n * const result = await query.find()\n *\n * @param {QueryOperator} queryType - The type of query operator to apply.\n * @param {...Query[]} queryObjects - The Query instances to apply the query to.\n * @returns {Query} - Returns the Query instance for chaining.\n */\n queryOperator(queryType: QueryOperator, ...queryObjects: Query[]): Query {\n const paramsList: BaseQueryParameters[] = [];\n for (const queryItem of queryObjects) {\n paramsList.push(queryItem._parameters);\n }\n this._parameters[queryType] = paramsList;\n\n return this;\n }\n\n /**\n * @method getQuery\n * @memberof Query\n * @description Returns the raw (JSON) query based on the filters applied on Query object.\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const result = query.getQuery()\n * // OR\n * const assetQuery = stack.asset().query();\n * const assetResult = assetQuery.getQuery()\n *\n * @returns {{ [key: string]: any }} The raw query object\n */\n getQuery(): { [key: string]: any } {\n return this._parameters;\n }\n\n /**\n * @method containedIn\n * @memberof Query\n * @description Filters entries where the field value is contained in the provided array of values\n * @param {string} key - The field UID to filter on\n * @param {(string | number | boolean)[]} value - Array of values to match against\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const result = await query.containedIn('fieldUid', ['value1', 'value2']).find()\n * \n * @returns {Query}\n */\n containedIn(key: string, value: (string | number | boolean)[]): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n if (!this.isValidValue(value)) {\n console.error(ErrorMessages.INVALID_VALUE_ARRAY);\n return this;\n }\n this._parameters[key] = { '$in': value };\n return this;\n }\n\n /**\n * @method notContainedIn\n * @memberof Query\n * @description Filters entries where the field value is not contained in the provided array of values\n * @param {string} key - The field UID to filter on\n * @param {(string | number | boolean)[]} value - Array of values to exclude\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const result = await query.notContainedIn('fieldUid', ['value1', 'value2']).find()\n * \n * @returns {Query}\n */\n notContainedIn(key: string, value: (string | number | boolean)[]): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n if (!this.isValidValue(value)) {\n console.error(ErrorMessages.INVALID_VALUE_ARRAY);\n return this;\n }\n this._parameters[key] = { '$nin': value };\n return this;\n }\n\n /**\n * @method exists\n * @memberof Query\n * @description Filters entries where the specified field exists\n * @param {string} key - The field UID to check for existence\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const result = await query.exists('fieldUid').find()\n * \n * @returns {Query}\n */\n exists(key: string): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n this._parameters[key] = { '$exists': true };\n return this;\n }\n\n /**\n * @method notExists\n * @memberof Query\n * @description Filters entries where the specified field does not exist\n * @param {string} key - The field UID to check for non-existence\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const result = await query.notExists('fieldUid').find()\n * \n * @returns {Query}\n */\n notExists(key: string): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n this._parameters[key] = { '$exists': false };\n return this;\n }\n\n /**\n * @method or\n * @memberof Query\n * @description Combines multiple queries with OR logic - returns entries that match at least one of the provided queries\n * @param {...Query} queries - Query instances to combine with OR logic\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query1 = stack.contentType('contenttype_uid').entry().query().containedIn('fieldUID', ['value']);\n * const query2 = stack.contentType('contenttype_uid').entry().query().where('fieldUID', QueryOperation.EQUALS, 'value2');\n * const result = await stack.contentType('contenttype_uid').entry().query().or(query1, query2).find();\n * \n * @returns {Query}\n */\n or(...queries: Query[]): Query {\n const paramsList: BaseQueryParameters[] = [];\n for (const queryItem of queries) {\n paramsList.push(queryItem._parameters);\n }\n this._parameters.$or = paramsList;\n return this;\n }\n\n /**\n * @method and\n * @memberof Query\n * @description Combines multiple queries with AND logic - returns entries that match all of the provided queries\n * @param {...Query} queries - Query instances to combine with AND logic\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query1 = stack.contentType('contenttype_uid').entry().query().containedIn('fieldUID', ['value']);\n * const query2 = stack.contentType('contenttype_uid').entry().query().where('fieldUID', QueryOperation.EQUALS, 'value2');\n * const result = await stack.contentType('contenttype_uid').entry().query().and(query1, query2).find();\n * \n * @returns {Query}\n */\n and(...queries: Query[]): Query {\n const paramsList: BaseQueryParameters[] = [];\n for (const queryItem of queries) {\n paramsList.push(queryItem._parameters);\n }\n this._parameters.$and = paramsList;\n return this;\n }\n\n /**\n * @method equalTo\n * @memberof Query\n * @description Filters entries where the field value equals the specified value\n * @param {string} key - The field UID to filter on\n * @param {string | number | boolean} value - The value to match\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.contentType('contenttype_uid').entry().query().equalTo('fieldUid', 'value').find();\n * \n * @returns {Query}\n */\n equalTo(key: string, value: string | number | boolean): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n if (typeof value !== 'string' && typeof value !== 'number') {\n console.error(ErrorMessages.INVALID_VALUE_STRING_OR_NUMBER);\n return this;\n }\n this._parameters[key] = value;\n return this;\n }\n\n /**\n * @method notEqualTo\n * @memberof Query\n * @description Filters entries where the field value does not equal the specified value\n * @param {string} key - The field UID to filter on\n * @param {string | number | boolean} value - The value to exclude\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.contentType('contenttype_uid').entry().query().notEqualTo('fieldUid', 'value').find();\n * \n * @returns {Query}\n */\n notEqualTo(key: string, value: string | number | boolean): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n if (typeof value !== 'string' && typeof value !== 'number') {\n console.error(ErrorMessages.INVALID_VALUE_STRING_OR_NUMBER);\n return this;\n }\n this._parameters[key] = { '$ne': value };\n return this;\n }\n\n /**\n * @method referenceIn\n * @memberof Query\n * @description Filters entries where the reference field matches entries from the provided query\n * @param {string} key - The reference field UID to filter on\n * @param {Query} query - Query instance to match referenced entries against\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const subQuery = stack.contentType('contenttype_uid').entry().query().where('title', QueryOperation.EQUALS, 'value');\n * const result = await stack.contentType('contenttype_uid').entry().query().referenceIn('reference_uid', subQuery).find();\n * \n * @returns {Query}\n */\n referenceIn(key: string, query: Query): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n this._parameters[key] = { '$in_query': query._parameters }\n return this;\n }\n\n /**\n * @method referenceNotIn\n * @memberof Query\n * @description Filters entries where the reference field does not match entries from the provided query\n * @param {string} key - The reference field UID to filter on\n * @param {Query} query - Query instance to exclude referenced entries against\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const subQuery = stack.contentType('contenttype_uid').entry().query().where('title', QueryOperation.EQUALS, 'value');\n * const result = await stack.contentType('contenttype_uid').entry().query().referenceNotIn('reference_uid', subQuery).find();\n * \n * @returns {Query}\n */\n referenceNotIn(key: string, query: Query): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n this._parameters[key] = { '$nin_query': query._parameters }\n return this;\n }\n\n /**\n * @method tags\n * @memberof Query\n * @description Filters entries that have any of the specified tags\n * @param {(string | number | boolean)[]} values - Array of tag values to filter by\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.contentType('contenttype_uid').entry().query().tags(['tag1']).find();\n * \n * @returns {Query}\n */\n tags(values: (string | number | boolean)[]): Query {\n if (!this.isValidValue(values)) {\n console.error(ErrorMessages.INVALID_VALUE_ARRAY);\n return this;\n }\n this._parameters['tags'] = values;\n return this;\n }\n\n /**\n * @method search\n * @memberof Query\n * @description Enables typeahead search functionality for the query\n * @param {string} key - The search term to use for typeahead search\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.contentType('contenttype_uid').entry().query().search('key').find();\n * \n * @returns {Query}\n */\n search(key: string): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n this._queryParams['typeahead'] = key\n return this\n }\n\n /**\n * @method lessThan\n * @memberof Query\n * @description Filters entries where the field value is less than the specified value\n * @param {string} key - The field UID to filter on\n * @param {string | number} value - The value to compare against\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.contentType('contenttype_uid').entry().query().lessThan('fieldUid', 100).find();\n * \n * @returns {Query}\n */\n lessThan(key: string, value: (string | number)): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n if (typeof value !== 'string' && typeof value !== 'number') {\n console.error(ErrorMessages.INVALID_VALUE_STRING_OR_NUMBER);\n return this;\n }\n\n this._parameters[key] = { '$lt': value };\n return this;\n }\n\n /**\n * @method lessThanOrEqualTo\n * @memberof Query\n * @description Filters entries where the field value is less than or equal to the specified value\n * @param {string} key - The field UID to filter on\n * @param {string | number} value - The value to compare against\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.contentType('contenttype_uid').entry().query().lessThanOrEqualTo('fieldUid', 100).find();\n * \n * @returns {Query}\n */\n lessThanOrEqualTo(key: string, value: (string | number)): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n if (typeof value !== 'string' && typeof value !== 'number') {\n console.error(ErrorMessages.INVALID_VALUE_STRING_OR_NUMBER);\n return this;\n }\n this._parameters[key] = { '$lte': value };\n return this;\n }\n\n /**\n * @method greaterThan\n * @memberof Query\n * @description Filters entries where the field value is greater than the specified value\n * @param {string} key - The field UID to filter on\n * @param {string | number} value - The value to compare against\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.contentType('contenttype_uid').entry().query().greaterThan('fieldUid', 100).find();\n * \n * @returns {Query}\n */\n greaterThan(key: string, value: (string | number)): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n if (typeof value !== 'string' && typeof value !== 'number') {\n console.error(ErrorMessages.INVALID_VALUE_STRING_OR_NUMBER);\n return this;\n }\n this._parameters[key] = { '$gt': value };\n return this;\n }\n\n /**\n * @method greaterThanOrEqualTo\n * @memberof Query\n * @description Filters entries where the field value is greater than or equal to the specified value\n * @param {string} key - The field UID to filter on\n * @param {string | number} value - The value to compare against\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.contentType('contenttype_uid').entry().query().greaterThanOrEqualTo('fieldUid', 100).find();\n * \n * @returns {Query}\n */\n greaterThanOrEqualTo(key: string, value: (string | number)): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n if (typeof value !== 'string' && typeof value !== 'number') {\n console.error(ErrorMessages.INVALID_VALUE_STRING_OR_NUMBER);\n return this;\n }\n this._parameters[key] = { '$gte': value };\n return this;\n }\n\n /**\n * Override find method to include content type UID directly for better caching\n */\n override async find<T>(encode: boolean = false): Promise<FindResponse<T>> {\n let requestParams: { [key: string]: any } = this._queryParams;\n\n if (Object.keys(this._parameters).length > 0) {\n let queryParams = { ...this._parameters };\n \n if (encode) {\n queryParams = encodeQueryParams(queryParams);\n }\n \n requestParams = { ...this._queryParams, query: queryParams };\n }\n\n const getRequestOptions: any = { \n params: requestParams,\n // Add contentTypeUid directly for improved caching\n contentTypeUid: this._contentTypeUid\n };\n\n if (this._variants) {\n getRequestOptions.headers = {\n ...getRequestOptions.headers,\n 'x-cs-variant-uid': this._variants\n };\n }\n const response = await getData(this._client, this._urlPath, getRequestOptions);\n\n return response as FindResponse<T>;\n }\n}\n"],"names":["BaseQuery","params","queryParams","ErrorMessages","QueryOperation","encodeQueryParams","getData"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/query/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAW,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAuB,cAAc,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAIhJ,qBAAa,KAAM,SAAQ,SAAS;IAClC,OAAO,CAAC,eAAe,CAAC,CAAS;gBAErB,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE;IAiB/I,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,mBAAmB;
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/query/query.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,9 +26,9 @@ class Query extends BaseQuery {
|
|
|
26
26
|
const alphanumericRegex = /^[a-zA-Z0-9_.-]+$/;
|
|
27
27
|
return alphanumericRegex.test(input);
|
|
28
28
|
}
|
|
29
|
-
// Validate if input matches
|
|
29
|
+
// Validate if input matches safe regex patterns
|
|
30
30
|
isValidRegexPattern(input) {
|
|
31
|
-
const validRegex = /^[a-zA-Z0-9|^$.*+?()[\]{}
|
|
31
|
+
const validRegex = /^[a-zA-Z0-9|^$.*+?()[\]{}:,;&@#%=/!'"_~<> -]+$/;
|
|
32
32
|
if (!validRegex.test(input)) {
|
|
33
33
|
return false;
|
|
34
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.js","sources":["../../../src/query/query.ts"],"sourcesContent":["import { AxiosInstance, getData } from '@contentstack/core';\nimport { BaseQuery } from './base-query';\nimport { BaseQueryParameters, QueryOperation, QueryOperator, TaxonomyQueryOperation, params, queryParams, FindResponse } from '../common/types';\nimport { encodeQueryParams } from '../common/utils';\nimport { ErrorMessages } from '../common/error-messages';\n\nexport class Query extends BaseQuery {\n private _contentTypeUid?: string;\n\n constructor(client: AxiosInstance, params: params, queryParams: queryParams, variants?: string, uid?: string, queryObj?: { [key: string]: any }) {\n super();\n this._client = client;\n this._contentTypeUid = uid;\n this._urlPath = `/content_types/${this._contentTypeUid}/entries`;\n this._parameters = params || {};\n this._queryParams = queryParams || {};\n this._variants = variants || '';\n\n if (!uid) {\n this._urlPath = `/assets`;\n }\n if (queryObj) {\n this._parameters = { ...this._parameters, ...queryObj };\n }\n }\n // Validate if input is alphanumeric \n private isValidAlphanumeric(input: string): boolean {\n const alphanumericRegex = /^[a-zA-Z0-9_.-]+$/;\n return alphanumericRegex.test(input);\n }\n\n // Validate if input matches any of the safe, pre-approved patterns\n private isValidRegexPattern(input: string): boolean {\n const validRegex = /^[a-zA-Z0-9|^$.*+?()[\\]{}\\\\-]+$/; // Allow only safe regex characters\n if (!validRegex.test(input)) {\n return false;\n }\n try {\n new RegExp(input);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n private isValidValue(value: any[]): boolean {\n return Array.isArray(value) && value.every(item => typeof item === 'string' || typeof item === 'number' || typeof item === 'boolean');\n }\n\n /**\n * @method where\n * @memberof Query\n * @description Filters the results based on the specified criteria.\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const result = await query.where(\"field_UID\", QueryOperation.IS_LESS_THAN, [\"field1\", \"field2\"]).find()\n * // OR\n * const asset = await stack.asset().query().where(\"field_UID\", QueryOperation.IS_LESS_THAN, [\"field1\", \"field2\"]).find()\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const result = await query.where(\"field_UID\", QueryOperation.MATCHES, [\"field1\", \"field2\"]).find()\n * @returns {Query}\n */\n where(\n fieldUid: string,\n queryOperation: QueryOperation | TaxonomyQueryOperation,\n fields: string | string[] | number | number[] | object | boolean,\n additionalData?: object\n ): Query {\n if (!this.isValidAlphanumeric(fieldUid)) {\n console.error(ErrorMessages.INVALID_FIELD_UID);\n return this;\n }\n if (queryOperation == QueryOperation.EQUALS) {\n this._parameters[fieldUid] = fields;\n }\n else {\n const parameterValue: { [key in QueryOperation]?: string | string[] } = { [queryOperation]: fields, ...additionalData };\n this._parameters[fieldUid] = parameterValue;\n }\n return this;\n }\n\n /**\n * @method regex\n * @memberof Query\n * @description Retrieve entries that match the provided regular expressions\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const result = await query.regex('title','^Demo').find()\n * // OR\n * const result = await query.regex('title','^Demo', 'i').find() // regex with options\n * @returns {Query}\n */\n regex(fieldUid: string, regexPattern: string, options?: string): Query {\n if (!this.isValidAlphanumeric(fieldUid)) {\n console.error(ErrorMessages.INVALID_FIELD_UID);\n return this;\n }\n if (!this.isValidRegexPattern(regexPattern)) {\n throw new Error(ErrorMessages.INVALID_REGEX_PATTERN);\n }\n else {\n this._parameters[fieldUid] = { $regex: regexPattern };\n if (options) this._parameters[fieldUid].$options = options;\n return this;\n }\n }\n\n /**\n * @method whereIn\n * @memberof Query\n * @description Get entries having values based on referenced fields.\n * The query retrieves all entries that satisfy the query conditions made on referenced fields\n * This method sets the '$in_query' parameter to a reference field UID and a query instance in the API request.\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const subQuery = stack.contentType(\"referencedContentTypeUid\").entry().query().where(\"title\", QueryOperation.EQUALS, \"value\");\n * query.whereIn(\"brand\", subQuery)\n * const result = await query.find()\n *\n * @param {string} referenceUid - UID of the reference field to query.\n * @param {Query} queryInstance - The Query instance to include in the where clause.\n * @returns {Query} - Returns the Query instance for chaining.\n */\n whereIn(referenceUid: string, queryInstance: Query): Query {\n // eslint-disable-next-line @typescript-eslint/naming-convention, prettier/prettier\n if (!this.isValidAlphanumeric(referenceUid)) {\n throw new Error(ErrorMessages.INVALID_REFERENCE_UID(referenceUid));\n }\n this._parameters[referenceUid] = { '$in_query': queryInstance._parameters };\n return this;\n }\n\n /**\n * @method whereNotIn\n * @memberof Query\n * @description Get entries having values based on referenced fields.\n * This query works the opposite of $in_query and retrieves all entries that does not satisfy query conditions made on referenced fields.\n * This method sets the '$nin_query' parameter to a reference field UID and a query instance in the API request.\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const subQuery = stack.contentType(\"referencedContentTypeUid\").entry().query().where(\"title\", QueryOperation.EQUALS, \"value\");\n * query.whereNotIn(\"brand\", subQuery)\n * const result = await query.find()\n *\n * @param {string} referenceUid - UID of the reference field to query.\n * @param {Query} queryInstance - The Query instance to include in the where clause.\n * @returns {Query} - Returns the Query instance for chaining.\n */\n whereNotIn(referenceUid: string, queryInstance: Query): Query {\n // eslint-disable-next-line @typescript-eslint/naming-convention, prettier/prettier\n if (!this.isValidAlphanumeric(referenceUid)) {\n throw new Error(ErrorMessages.INVALID_REFERENCE_UID(referenceUid));\n }\n this._parameters[referenceUid] = { '$nin_query': queryInstance._parameters };\n return this;\n }\n\n /**\n * @method queryOperator\n * @memberof Query\n * @description In case of '$and' get entries that satisfy all the conditions provided in the '$and' query and\n * in case of '$or' query get all entries that satisfy at least one of the given conditions provided in the '$or' query.\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentType1Uid\").entry().query();\n * const subQuery1 = stack.contentType(\"contentType2Uid\").entry().query().where(\"price\", QueryOperation.IS_LESS_THAN, 90);\n * const subQuery2 = stack.contentType(\"contentType3Uid\").entry().query().where(\"discount\", QueryOperation.INCLUDES, [20, 45]);\n * query.queryOperator(QueryOperator.AND, subQuery1, subQuery2)\n * const result = await query.find()\n *\n * @param {QueryOperator} queryType - The type of query operator to apply.\n * @param {...Query[]} queryObjects - The Query instances to apply the query to.\n * @returns {Query} - Returns the Query instance for chaining.\n */\n queryOperator(queryType: QueryOperator, ...queryObjects: Query[]): Query {\n const paramsList: BaseQueryParameters[] = [];\n for (const queryItem of queryObjects) {\n paramsList.push(queryItem._parameters);\n }\n this._parameters[queryType] = paramsList;\n\n return this;\n }\n\n /**\n * @method getQuery\n * @memberof Query\n * @description Returns the raw (JSON) query based on the filters applied on Query object.\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const result = query.getQuery()\n * // OR\n * const assetQuery = stack.asset().query();\n * const assetResult = assetQuery.getQuery()\n *\n * @returns {{ [key: string]: any }} The raw query object\n */\n getQuery(): { [key: string]: any } {\n return this._parameters;\n }\n\n /**\n * @method containedIn\n * @memberof Query\n * @description Filters entries where the field value is contained in the provided array of values\n * @param {string} key - The field UID to filter on\n * @param {(string | number | boolean)[]} value - Array of values to match against\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const result = await query.containedIn('fieldUid', ['value1', 'value2']).find()\n * \n * @returns {Query}\n */\n containedIn(key: string, value: (string | number | boolean)[]): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n if (!this.isValidValue(value)) {\n console.error(ErrorMessages.INVALID_VALUE_ARRAY);\n return this;\n }\n this._parameters[key] = { '$in': value };\n return this;\n }\n\n /**\n * @method notContainedIn\n * @memberof Query\n * @description Filters entries where the field value is not contained in the provided array of values\n * @param {string} key - The field UID to filter on\n * @param {(string | number | boolean)[]} value - Array of values to exclude\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const result = await query.notContainedIn('fieldUid', ['value1', 'value2']).find()\n * \n * @returns {Query}\n */\n notContainedIn(key: string, value: (string | number | boolean)[]): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n if (!this.isValidValue(value)) {\n console.error(ErrorMessages.INVALID_VALUE_ARRAY);\n return this;\n }\n this._parameters[key] = { '$nin': value };\n return this;\n }\n\n /**\n * @method exists\n * @memberof Query\n * @description Filters entries where the specified field exists\n * @param {string} key - The field UID to check for existence\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const result = await query.exists('fieldUid').find()\n * \n * @returns {Query}\n */\n exists(key: string): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n this._parameters[key] = { '$exists': true };\n return this;\n }\n\n /**\n * @method notExists\n * @memberof Query\n * @description Filters entries where the specified field does not exist\n * @param {string} key - The field UID to check for non-existence\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const result = await query.notExists('fieldUid').find()\n * \n * @returns {Query}\n */\n notExists(key: string): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n this._parameters[key] = { '$exists': false };\n return this;\n }\n\n /**\n * @method or\n * @memberof Query\n * @description Combines multiple queries with OR logic - returns entries that match at least one of the provided queries\n * @param {...Query} queries - Query instances to combine with OR logic\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query1 = stack.contentType('contenttype_uid').entry().query().containedIn('fieldUID', ['value']);\n * const query2 = stack.contentType('contenttype_uid').entry().query().where('fieldUID', QueryOperation.EQUALS, 'value2');\n * const result = await stack.contentType('contenttype_uid').entry().query().or(query1, query2).find();\n * \n * @returns {Query}\n */\n or(...queries: Query[]): Query {\n const paramsList: BaseQueryParameters[] = [];\n for (const queryItem of queries) {\n paramsList.push(queryItem._parameters);\n }\n this._parameters.$or = paramsList;\n return this;\n }\n\n /**\n * @method and\n * @memberof Query\n * @description Combines multiple queries with AND logic - returns entries that match all of the provided queries\n * @param {...Query} queries - Query instances to combine with AND logic\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query1 = stack.contentType('contenttype_uid').entry().query().containedIn('fieldUID', ['value']);\n * const query2 = stack.contentType('contenttype_uid').entry().query().where('fieldUID', QueryOperation.EQUALS, 'value2');\n * const result = await stack.contentType('contenttype_uid').entry().query().and(query1, query2).find();\n * \n * @returns {Query}\n */\n and(...queries: Query[]): Query {\n const paramsList: BaseQueryParameters[] = [];\n for (const queryItem of queries) {\n paramsList.push(queryItem._parameters);\n }\n this._parameters.$and = paramsList;\n return this;\n }\n\n /**\n * @method equalTo\n * @memberof Query\n * @description Filters entries where the field value equals the specified value\n * @param {string} key - The field UID to filter on\n * @param {string | number | boolean} value - The value to match\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.contentType('contenttype_uid').entry().query().equalTo('fieldUid', 'value').find();\n * \n * @returns {Query}\n */\n equalTo(key: string, value: string | number | boolean): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n if (typeof value !== 'string' && typeof value !== 'number') {\n console.error(ErrorMessages.INVALID_VALUE_STRING_OR_NUMBER);\n return this;\n }\n this._parameters[key] = value;\n return this;\n }\n\n /**\n * @method notEqualTo\n * @memberof Query\n * @description Filters entries where the field value does not equal the specified value\n * @param {string} key - The field UID to filter on\n * @param {string | number | boolean} value - The value to exclude\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.contentType('contenttype_uid').entry().query().notEqualTo('fieldUid', 'value').find();\n * \n * @returns {Query}\n */\n notEqualTo(key: string, value: string | number | boolean): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n if (typeof value !== 'string' && typeof value !== 'number') {\n console.error(ErrorMessages.INVALID_VALUE_STRING_OR_NUMBER);\n return this;\n }\n this._parameters[key] = { '$ne': value };\n return this;\n }\n\n /**\n * @method referenceIn\n * @memberof Query\n * @description Filters entries where the reference field matches entries from the provided query\n * @param {string} key - The reference field UID to filter on\n * @param {Query} query - Query instance to match referenced entries against\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const subQuery = stack.contentType('contenttype_uid').entry().query().where('title', QueryOperation.EQUALS, 'value');\n * const result = await stack.contentType('contenttype_uid').entry().query().referenceIn('reference_uid', subQuery).find();\n * \n * @returns {Query}\n */\n referenceIn(key: string, query: Query): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n this._parameters[key] = { '$in_query': query._parameters }\n return this;\n }\n\n /**\n * @method referenceNotIn\n * @memberof Query\n * @description Filters entries where the reference field does not match entries from the provided query\n * @param {string} key - The reference field UID to filter on\n * @param {Query} query - Query instance to exclude referenced entries against\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const subQuery = stack.contentType('contenttype_uid').entry().query().where('title', QueryOperation.EQUALS, 'value');\n * const result = await stack.contentType('contenttype_uid').entry().query().referenceNotIn('reference_uid', subQuery).find();\n * \n * @returns {Query}\n */\n referenceNotIn(key: string, query: Query): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n this._parameters[key] = { '$nin_query': query._parameters }\n return this;\n }\n\n /**\n * @method tags\n * @memberof Query\n * @description Filters entries that have any of the specified tags\n * @param {(string | number | boolean)[]} values - Array of tag values to filter by\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.contentType('contenttype_uid').entry().query().tags(['tag1']).find();\n * \n * @returns {Query}\n */\n tags(values: (string | number | boolean)[]): Query {\n if (!this.isValidValue(values)) {\n console.error(ErrorMessages.INVALID_VALUE_ARRAY);\n return this;\n }\n this._parameters['tags'] = values;\n return this;\n }\n\n /**\n * @method search\n * @memberof Query\n * @description Enables typeahead search functionality for the query\n * @param {string} key - The search term to use for typeahead search\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.contentType('contenttype_uid').entry().query().search('key').find();\n * \n * @returns {Query}\n */\n search(key: string): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n this._queryParams['typeahead'] = key\n return this\n }\n\n /**\n * @method lessThan\n * @memberof Query\n * @description Filters entries where the field value is less than the specified value\n * @param {string} key - The field UID to filter on\n * @param {string | number} value - The value to compare against\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.contentType('contenttype_uid').entry().query().lessThan('fieldUid', 100).find();\n * \n * @returns {Query}\n */\n lessThan(key: string, value: (string | number)): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n if (typeof value !== 'string' && typeof value !== 'number') {\n console.error(ErrorMessages.INVALID_VALUE_STRING_OR_NUMBER);\n return this;\n }\n\n this._parameters[key] = { '$lt': value };\n return this;\n }\n\n /**\n * @method lessThanOrEqualTo\n * @memberof Query\n * @description Filters entries where the field value is less than or equal to the specified value\n * @param {string} key - The field UID to filter on\n * @param {string | number} value - The value to compare against\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.contentType('contenttype_uid').entry().query().lessThanOrEqualTo('fieldUid', 100).find();\n * \n * @returns {Query}\n */\n lessThanOrEqualTo(key: string, value: (string | number)): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n if (typeof value !== 'string' && typeof value !== 'number') {\n console.error(ErrorMessages.INVALID_VALUE_STRING_OR_NUMBER);\n return this;\n }\n this._parameters[key] = { '$lte': value };\n return this;\n }\n\n /**\n * @method greaterThan\n * @memberof Query\n * @description Filters entries where the field value is greater than the specified value\n * @param {string} key - The field UID to filter on\n * @param {string | number} value - The value to compare against\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.contentType('contenttype_uid').entry().query().greaterThan('fieldUid', 100).find();\n * \n * @returns {Query}\n */\n greaterThan(key: string, value: (string | number)): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n if (typeof value !== 'string' && typeof value !== 'number') {\n console.error(ErrorMessages.INVALID_VALUE_STRING_OR_NUMBER);\n return this;\n }\n this._parameters[key] = { '$gt': value };\n return this;\n }\n\n /**\n * @method greaterThanOrEqualTo\n * @memberof Query\n * @description Filters entries where the field value is greater than or equal to the specified value\n * @param {string} key - The field UID to filter on\n * @param {string | number} value - The value to compare against\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.contentType('contenttype_uid').entry().query().greaterThanOrEqualTo('fieldUid', 100).find();\n * \n * @returns {Query}\n */\n greaterThanOrEqualTo(key: string, value: (string | number)): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n if (typeof value !== 'string' && typeof value !== 'number') {\n console.error(ErrorMessages.INVALID_VALUE_STRING_OR_NUMBER);\n return this;\n }\n this._parameters[key] = { '$gte': value };\n return this;\n }\n\n /**\n * Override find method to include content type UID directly for better caching\n */\n override async find<T>(encode: boolean = false): Promise<FindResponse<T>> {\n let requestParams: { [key: string]: any } = this._queryParams;\n\n if (Object.keys(this._parameters).length > 0) {\n let queryParams = { ...this._parameters };\n \n if (encode) {\n queryParams = encodeQueryParams(queryParams);\n }\n \n requestParams = { ...this._queryParams, query: queryParams };\n }\n\n const getRequestOptions: any = { \n params: requestParams,\n // Add contentTypeUid directly for improved caching\n contentTypeUid: this._contentTypeUid\n };\n\n if (this._variants) {\n getRequestOptions.headers = {\n ...getRequestOptions.headers,\n 'x-cs-variant-uid': this._variants\n };\n }\n const response = await getData(this._client, this._urlPath, getRequestOptions);\n\n return response as FindResponse<T>;\n }\n}\n"],"names":["params","queryParams"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"query.js","sources":["../../../src/query/query.ts"],"sourcesContent":["import { AxiosInstance, getData } from '@contentstack/core';\nimport { BaseQuery } from './base-query';\nimport { BaseQueryParameters, QueryOperation, QueryOperator, TaxonomyQueryOperation, params, queryParams, FindResponse } from '../common/types';\nimport { encodeQueryParams } from '../common/utils';\nimport { ErrorMessages } from '../common/error-messages';\n\nexport class Query extends BaseQuery {\n private _contentTypeUid?: string;\n\n constructor(client: AxiosInstance, params: params, queryParams: queryParams, variants?: string, uid?: string, queryObj?: { [key: string]: any }) {\n super();\n this._client = client;\n this._contentTypeUid = uid;\n this._urlPath = `/content_types/${this._contentTypeUid}/entries`;\n this._parameters = params || {};\n this._queryParams = queryParams || {};\n this._variants = variants || '';\n\n if (!uid) {\n this._urlPath = `/assets`;\n }\n if (queryObj) {\n this._parameters = { ...this._parameters, ...queryObj };\n }\n }\n // Validate if input is alphanumeric \n private isValidAlphanumeric(input: string): boolean {\n const alphanumericRegex = /^[a-zA-Z0-9_.-]+$/;\n return alphanumericRegex.test(input);\n }\n\n // Validate if input matches safe regex patterns\n private isValidRegexPattern(input: string): boolean {\n // Expanded whitelist: includes spaces and common safe special characters\n // Allows: alphanumeric, regex metacharacters, regular spaces, and common punctuation\n // Blocks: control characters (newlines, tabs, null bytes), backticks, and other dangerous chars\n const validRegex = /^[a-zA-Z0-9|^$.*+?()[\\]{}:,;&@#%=/!'\"_~<> -]+$/;\n if (!validRegex.test(input)) {\n return false;\n }\n try {\n new RegExp(input);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n private isValidValue(value: any[]): boolean {\n return Array.isArray(value) && value.every(item => typeof item === 'string' || typeof item === 'number' || typeof item === 'boolean');\n }\n\n /**\n * @method where\n * @memberof Query\n * @description Filters the results based on the specified criteria.\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const result = await query.where(\"field_UID\", QueryOperation.IS_LESS_THAN, [\"field1\", \"field2\"]).find()\n * // OR\n * const asset = await stack.asset().query().where(\"field_UID\", QueryOperation.IS_LESS_THAN, [\"field1\", \"field2\"]).find()\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const result = await query.where(\"field_UID\", QueryOperation.MATCHES, [\"field1\", \"field2\"]).find()\n * @returns {Query}\n */\n where(\n fieldUid: string,\n queryOperation: QueryOperation | TaxonomyQueryOperation,\n fields: string | string[] | number | number[] | object | boolean,\n additionalData?: object\n ): Query {\n if (!this.isValidAlphanumeric(fieldUid)) {\n console.error(ErrorMessages.INVALID_FIELD_UID);\n return this;\n }\n if (queryOperation == QueryOperation.EQUALS) {\n this._parameters[fieldUid] = fields;\n }\n else {\n const parameterValue: { [key in QueryOperation]?: string | string[] } = { [queryOperation]: fields, ...additionalData };\n this._parameters[fieldUid] = parameterValue;\n }\n return this;\n }\n\n /**\n * @method regex\n * @memberof Query\n * @description Retrieve entries that match the provided regular expressions\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const result = await query.regex('title','^Demo').find()\n * // OR\n * const result = await query.regex('title','^Demo', 'i').find() // regex with options\n * @returns {Query}\n */\n regex(fieldUid: string, regexPattern: string, options?: string): Query {\n if (!this.isValidAlphanumeric(fieldUid)) {\n console.error(ErrorMessages.INVALID_FIELD_UID);\n return this;\n }\n if (!this.isValidRegexPattern(regexPattern)) {\n throw new Error(ErrorMessages.INVALID_REGEX_PATTERN);\n }\n else {\n this._parameters[fieldUid] = { $regex: regexPattern };\n if (options) this._parameters[fieldUid].$options = options;\n return this;\n }\n }\n\n /**\n * @method whereIn\n * @memberof Query\n * @description Get entries having values based on referenced fields.\n * The query retrieves all entries that satisfy the query conditions made on referenced fields\n * This method sets the '$in_query' parameter to a reference field UID and a query instance in the API request.\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const subQuery = stack.contentType(\"referencedContentTypeUid\").entry().query().where(\"title\", QueryOperation.EQUALS, \"value\");\n * query.whereIn(\"brand\", subQuery)\n * const result = await query.find()\n *\n * @param {string} referenceUid - UID of the reference field to query.\n * @param {Query} queryInstance - The Query instance to include in the where clause.\n * @returns {Query} - Returns the Query instance for chaining.\n */\n whereIn(referenceUid: string, queryInstance: Query): Query {\n // eslint-disable-next-line @typescript-eslint/naming-convention, prettier/prettier\n if (!this.isValidAlphanumeric(referenceUid)) {\n throw new Error(ErrorMessages.INVALID_REFERENCE_UID(referenceUid));\n }\n this._parameters[referenceUid] = { '$in_query': queryInstance._parameters };\n return this;\n }\n\n /**\n * @method whereNotIn\n * @memberof Query\n * @description Get entries having values based on referenced fields.\n * This query works the opposite of $in_query and retrieves all entries that does not satisfy query conditions made on referenced fields.\n * This method sets the '$nin_query' parameter to a reference field UID and a query instance in the API request.\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const subQuery = stack.contentType(\"referencedContentTypeUid\").entry().query().where(\"title\", QueryOperation.EQUALS, \"value\");\n * query.whereNotIn(\"brand\", subQuery)\n * const result = await query.find()\n *\n * @param {string} referenceUid - UID of the reference field to query.\n * @param {Query} queryInstance - The Query instance to include in the where clause.\n * @returns {Query} - Returns the Query instance for chaining.\n */\n whereNotIn(referenceUid: string, queryInstance: Query): Query {\n // eslint-disable-next-line @typescript-eslint/naming-convention, prettier/prettier\n if (!this.isValidAlphanumeric(referenceUid)) {\n throw new Error(ErrorMessages.INVALID_REFERENCE_UID(referenceUid));\n }\n this._parameters[referenceUid] = { '$nin_query': queryInstance._parameters };\n return this;\n }\n\n /**\n * @method queryOperator\n * @memberof Query\n * @description In case of '$and' get entries that satisfy all the conditions provided in the '$and' query and\n * in case of '$or' query get all entries that satisfy at least one of the given conditions provided in the '$or' query.\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentType1Uid\").entry().query();\n * const subQuery1 = stack.contentType(\"contentType2Uid\").entry().query().where(\"price\", QueryOperation.IS_LESS_THAN, 90);\n * const subQuery2 = stack.contentType(\"contentType3Uid\").entry().query().where(\"discount\", QueryOperation.INCLUDES, [20, 45]);\n * query.queryOperator(QueryOperator.AND, subQuery1, subQuery2)\n * const result = await query.find()\n *\n * @param {QueryOperator} queryType - The type of query operator to apply.\n * @param {...Query[]} queryObjects - The Query instances to apply the query to.\n * @returns {Query} - Returns the Query instance for chaining.\n */\n queryOperator(queryType: QueryOperator, ...queryObjects: Query[]): Query {\n const paramsList: BaseQueryParameters[] = [];\n for (const queryItem of queryObjects) {\n paramsList.push(queryItem._parameters);\n }\n this._parameters[queryType] = paramsList;\n\n return this;\n }\n\n /**\n * @method getQuery\n * @memberof Query\n * @description Returns the raw (JSON) query based on the filters applied on Query object.\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const result = query.getQuery()\n * // OR\n * const assetQuery = stack.asset().query();\n * const assetResult = assetQuery.getQuery()\n *\n * @returns {{ [key: string]: any }} The raw query object\n */\n getQuery(): { [key: string]: any } {\n return this._parameters;\n }\n\n /**\n * @method containedIn\n * @memberof Query\n * @description Filters entries where the field value is contained in the provided array of values\n * @param {string} key - The field UID to filter on\n * @param {(string | number | boolean)[]} value - Array of values to match against\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const result = await query.containedIn('fieldUid', ['value1', 'value2']).find()\n * \n * @returns {Query}\n */\n containedIn(key: string, value: (string | number | boolean)[]): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n if (!this.isValidValue(value)) {\n console.error(ErrorMessages.INVALID_VALUE_ARRAY);\n return this;\n }\n this._parameters[key] = { '$in': value };\n return this;\n }\n\n /**\n * @method notContainedIn\n * @memberof Query\n * @description Filters entries where the field value is not contained in the provided array of values\n * @param {string} key - The field UID to filter on\n * @param {(string | number | boolean)[]} value - Array of values to exclude\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const result = await query.notContainedIn('fieldUid', ['value1', 'value2']).find()\n * \n * @returns {Query}\n */\n notContainedIn(key: string, value: (string | number | boolean)[]): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n if (!this.isValidValue(value)) {\n console.error(ErrorMessages.INVALID_VALUE_ARRAY);\n return this;\n }\n this._parameters[key] = { '$nin': value };\n return this;\n }\n\n /**\n * @method exists\n * @memberof Query\n * @description Filters entries where the specified field exists\n * @param {string} key - The field UID to check for existence\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const result = await query.exists('fieldUid').find()\n * \n * @returns {Query}\n */\n exists(key: string): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n this._parameters[key] = { '$exists': true };\n return this;\n }\n\n /**\n * @method notExists\n * @memberof Query\n * @description Filters entries where the specified field does not exist\n * @param {string} key - The field UID to check for non-existence\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query = stack.contentType(\"contentTypeUid\").entry().query();\n * const result = await query.notExists('fieldUid').find()\n * \n * @returns {Query}\n */\n notExists(key: string): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n this._parameters[key] = { '$exists': false };\n return this;\n }\n\n /**\n * @method or\n * @memberof Query\n * @description Combines multiple queries with OR logic - returns entries that match at least one of the provided queries\n * @param {...Query} queries - Query instances to combine with OR logic\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query1 = stack.contentType('contenttype_uid').entry().query().containedIn('fieldUID', ['value']);\n * const query2 = stack.contentType('contenttype_uid').entry().query().where('fieldUID', QueryOperation.EQUALS, 'value2');\n * const result = await stack.contentType('contenttype_uid').entry().query().or(query1, query2).find();\n * \n * @returns {Query}\n */\n or(...queries: Query[]): Query {\n const paramsList: BaseQueryParameters[] = [];\n for (const queryItem of queries) {\n paramsList.push(queryItem._parameters);\n }\n this._parameters.$or = paramsList;\n return this;\n }\n\n /**\n * @method and\n * @memberof Query\n * @description Combines multiple queries with AND logic - returns entries that match all of the provided queries\n * @param {...Query} queries - Query instances to combine with AND logic\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const query1 = stack.contentType('contenttype_uid').entry().query().containedIn('fieldUID', ['value']);\n * const query2 = stack.contentType('contenttype_uid').entry().query().where('fieldUID', QueryOperation.EQUALS, 'value2');\n * const result = await stack.contentType('contenttype_uid').entry().query().and(query1, query2).find();\n * \n * @returns {Query}\n */\n and(...queries: Query[]): Query {\n const paramsList: BaseQueryParameters[] = [];\n for (const queryItem of queries) {\n paramsList.push(queryItem._parameters);\n }\n this._parameters.$and = paramsList;\n return this;\n }\n\n /**\n * @method equalTo\n * @memberof Query\n * @description Filters entries where the field value equals the specified value\n * @param {string} key - The field UID to filter on\n * @param {string | number | boolean} value - The value to match\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.contentType('contenttype_uid').entry().query().equalTo('fieldUid', 'value').find();\n * \n * @returns {Query}\n */\n equalTo(key: string, value: string | number | boolean): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n if (typeof value !== 'string' && typeof value !== 'number') {\n console.error(ErrorMessages.INVALID_VALUE_STRING_OR_NUMBER);\n return this;\n }\n this._parameters[key] = value;\n return this;\n }\n\n /**\n * @method notEqualTo\n * @memberof Query\n * @description Filters entries where the field value does not equal the specified value\n * @param {string} key - The field UID to filter on\n * @param {string | number | boolean} value - The value to exclude\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.contentType('contenttype_uid').entry().query().notEqualTo('fieldUid', 'value').find();\n * \n * @returns {Query}\n */\n notEqualTo(key: string, value: string | number | boolean): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n if (typeof value !== 'string' && typeof value !== 'number') {\n console.error(ErrorMessages.INVALID_VALUE_STRING_OR_NUMBER);\n return this;\n }\n this._parameters[key] = { '$ne': value };\n return this;\n }\n\n /**\n * @method referenceIn\n * @memberof Query\n * @description Filters entries where the reference field matches entries from the provided query\n * @param {string} key - The reference field UID to filter on\n * @param {Query} query - Query instance to match referenced entries against\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const subQuery = stack.contentType('contenttype_uid').entry().query().where('title', QueryOperation.EQUALS, 'value');\n * const result = await stack.contentType('contenttype_uid').entry().query().referenceIn('reference_uid', subQuery).find();\n * \n * @returns {Query}\n */\n referenceIn(key: string, query: Query): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n this._parameters[key] = { '$in_query': query._parameters }\n return this;\n }\n\n /**\n * @method referenceNotIn\n * @memberof Query\n * @description Filters entries where the reference field does not match entries from the provided query\n * @param {string} key - The reference field UID to filter on\n * @param {Query} query - Query instance to exclude referenced entries against\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const subQuery = stack.contentType('contenttype_uid').entry().query().where('title', QueryOperation.EQUALS, 'value');\n * const result = await stack.contentType('contenttype_uid').entry().query().referenceNotIn('reference_uid', subQuery).find();\n * \n * @returns {Query}\n */\n referenceNotIn(key: string, query: Query): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n this._parameters[key] = { '$nin_query': query._parameters }\n return this;\n }\n\n /**\n * @method tags\n * @memberof Query\n * @description Filters entries that have any of the specified tags\n * @param {(string | number | boolean)[]} values - Array of tag values to filter by\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.contentType('contenttype_uid').entry().query().tags(['tag1']).find();\n * \n * @returns {Query}\n */\n tags(values: (string | number | boolean)[]): Query {\n if (!this.isValidValue(values)) {\n console.error(ErrorMessages.INVALID_VALUE_ARRAY);\n return this;\n }\n this._parameters['tags'] = values;\n return this;\n }\n\n /**\n * @method search\n * @memberof Query\n * @description Enables typeahead search functionality for the query\n * @param {string} key - The search term to use for typeahead search\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.contentType('contenttype_uid').entry().query().search('key').find();\n * \n * @returns {Query}\n */\n search(key: string): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n this._queryParams['typeahead'] = key\n return this\n }\n\n /**\n * @method lessThan\n * @memberof Query\n * @description Filters entries where the field value is less than the specified value\n * @param {string} key - The field UID to filter on\n * @param {string | number} value - The value to compare against\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.contentType('contenttype_uid').entry().query().lessThan('fieldUid', 100).find();\n * \n * @returns {Query}\n */\n lessThan(key: string, value: (string | number)): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n if (typeof value !== 'string' && typeof value !== 'number') {\n console.error(ErrorMessages.INVALID_VALUE_STRING_OR_NUMBER);\n return this;\n }\n\n this._parameters[key] = { '$lt': value };\n return this;\n }\n\n /**\n * @method lessThanOrEqualTo\n * @memberof Query\n * @description Filters entries where the field value is less than or equal to the specified value\n * @param {string} key - The field UID to filter on\n * @param {string | number} value - The value to compare against\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.contentType('contenttype_uid').entry().query().lessThanOrEqualTo('fieldUid', 100).find();\n * \n * @returns {Query}\n */\n lessThanOrEqualTo(key: string, value: (string | number)): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n if (typeof value !== 'string' && typeof value !== 'number') {\n console.error(ErrorMessages.INVALID_VALUE_STRING_OR_NUMBER);\n return this;\n }\n this._parameters[key] = { '$lte': value };\n return this;\n }\n\n /**\n * @method greaterThan\n * @memberof Query\n * @description Filters entries where the field value is greater than the specified value\n * @param {string} key - The field UID to filter on\n * @param {string | number} value - The value to compare against\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.contentType('contenttype_uid').entry().query().greaterThan('fieldUid', 100).find();\n * \n * @returns {Query}\n */\n greaterThan(key: string, value: (string | number)): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n if (typeof value !== 'string' && typeof value !== 'number') {\n console.error(ErrorMessages.INVALID_VALUE_STRING_OR_NUMBER);\n return this;\n }\n this._parameters[key] = { '$gt': value };\n return this;\n }\n\n /**\n * @method greaterThanOrEqualTo\n * @memberof Query\n * @description Filters entries where the field value is greater than or equal to the specified value\n * @param {string} key - The field UID to filter on\n * @param {string | number} value - The value to compare against\n * @example\n * import contentstack from '@contentstack/delivery-sdk'\n *\n * const stack = contentstack.stack({ apiKey: \"apiKey\", deliveryToken: \"deliveryToken\", environment: \"environment\" });\n * const result = await stack.contentType('contenttype_uid').entry().query().greaterThanOrEqualTo('fieldUid', 100).find();\n * \n * @returns {Query}\n */\n greaterThanOrEqualTo(key: string, value: (string | number)): Query {\n if (!this.isValidAlphanumeric(key)) {\n console.error(ErrorMessages.INVALID_KEY);\n return this;\n }\n if (typeof value !== 'string' && typeof value !== 'number') {\n console.error(ErrorMessages.INVALID_VALUE_STRING_OR_NUMBER);\n return this;\n }\n this._parameters[key] = { '$gte': value };\n return this;\n }\n\n /**\n * Override find method to include content type UID directly for better caching\n */\n override async find<T>(encode: boolean = false): Promise<FindResponse<T>> {\n let requestParams: { [key: string]: any } = this._queryParams;\n\n if (Object.keys(this._parameters).length > 0) {\n let queryParams = { ...this._parameters };\n \n if (encode) {\n queryParams = encodeQueryParams(queryParams);\n }\n \n requestParams = { ...this._queryParams, query: queryParams };\n }\n\n const getRequestOptions: any = { \n params: requestParams,\n // Add contentTypeUid directly for improved caching\n contentTypeUid: this._contentTypeUid\n };\n\n if (this._variants) {\n getRequestOptions.headers = {\n ...getRequestOptions.headers,\n 'x-cs-variant-uid': this._variants\n };\n }\n const response = await getData(this._client, this._urlPath, getRequestOptions);\n\n return response as FindResponse<T>;\n }\n}\n"],"names":["params","queryParams"],"mappings":";;;;;;AAMO,MAAM,cAAc,SAAU,CAAA;AAAA,EAC3B,eAAA,CAAA;AAAA,EAER,YAAY,MAAuBA,EAAAA,OAAAA,EAAgBC,YAA0B,EAAA,QAAA,EAAmB,KAAc,QAAmC,EAAA;AAC/I,IAAM,KAAA,EAAA,CAAA;AACN,IAAA,IAAA,CAAK,OAAU,GAAA,MAAA,CAAA;AACf,IAAA,IAAA,CAAK,eAAkB,GAAA,GAAA,CAAA;AACvB,IAAK,IAAA,CAAA,QAAA,GAAW,CAAkB,eAAA,EAAA,IAAA,CAAK,eAAe,CAAA,QAAA,CAAA,CAAA;AACtD,IAAK,IAAA,CAAA,WAAA,GAAcD,WAAU,EAAC,CAAA;AAC9B,IAAK,IAAA,CAAA,YAAA,GAAeC,gBAAe,EAAC,CAAA;AACpC,IAAA,IAAA,CAAK,YAAY,QAAY,IAAA,EAAA,CAAA;AAE7B,IAAA,IAAI,CAAC,GAAK,EAAA;AACR,MAAA,IAAA,CAAK,QAAW,GAAA,CAAA,OAAA,CAAA,CAAA;AAAA,KAClB;AACA,IAAA,IAAI,QAAU,EAAA;AACZ,MAAA,IAAA,CAAK,cAAc,EAAE,GAAG,IAAK,CAAA,WAAA,EAAa,GAAG,QAAS,EAAA,CAAA;AAAA,KACxD;AAAA,GACF;AAAA;AAAA,EAEQ,oBAAoB,KAAwB,EAAA;AAClD,IAAA,MAAM,iBAAoB,GAAA,mBAAA,CAAA;AAC1B,IAAO,OAAA,iBAAA,CAAkB,KAAK,KAAK,CAAA,CAAA;AAAA,GACrC;AAAA;AAAA,EAGQ,oBAAoB,KAAwB,EAAA;AAIlD,IAAA,MAAM,UAAa,GAAA,gDAAA,CAAA;AACnB,IAAA,IAAI,CAAC,UAAA,CAAW,IAAK,CAAA,KAAK,CAAG,EAAA;AAC3B,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AACA,IAAI,IAAA;AACF,MAAA,IAAI,OAAO,KAAK,CAAA,CAAA;AAChB,MAAO,OAAA,IAAA,CAAA;AAAA,aACA,CAAG,EAAA;AACV,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAAA,GACF;AAAA,EAEQ,aAAa,KAAuB,EAAA;AAC1C,IAAA,OAAO,KAAM,CAAA,OAAA,CAAQ,KAAK,CAAA,IAAK,MAAM,KAAM,CAAA,CAAA,IAAA,KAAQ,OAAO,IAAA,KAAS,YAAY,OAAO,IAAA,KAAS,QAAY,IAAA,OAAO,SAAS,SAAS,CAAA,CAAA;AAAA,GACtI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBA,KACE,CAAA,QAAA,EACA,cACA,EAAA,MAAA,EACA,cACO,EAAA;AACP,IAAA,IAAI,CAAC,IAAA,CAAK,mBAAoB,CAAA,QAAQ,CAAG,EAAA;AACvC,MAAQ,OAAA,CAAA,KAAA,CAAM,cAAc,iBAAiB,CAAA,CAAA;AAC7C,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AACA,IAAI,IAAA,cAAA,IAAkB,eAAe,MAAQ,EAAA;AAC3C,MAAK,IAAA,CAAA,WAAA,CAAY,QAAQ,CAAI,GAAA,MAAA,CAAA;AAAA,KAE1B,MAAA;AACH,MAAA,MAAM,iBAAkE,EAAE,CAAC,cAAc,GAAG,MAAA,EAAQ,GAAG,cAAe,EAAA,CAAA;AACtH,MAAK,IAAA,CAAA,WAAA,CAAY,QAAQ,CAAI,GAAA,cAAA,CAAA;AAAA,KAC/B;AACA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,KAAA,CAAM,QAAkB,EAAA,YAAA,EAAsB,OAAyB,EAAA;AACrE,IAAA,IAAI,CAAC,IAAA,CAAK,mBAAoB,CAAA,QAAQ,CAAG,EAAA;AACvC,MAAQ,OAAA,CAAA,KAAA,CAAM,cAAc,iBAAiB,CAAA,CAAA;AAC7C,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AACA,IAAA,IAAI,CAAC,IAAA,CAAK,mBAAoB,CAAA,YAAY,CAAG,EAAA;AAC3C,MAAM,MAAA,IAAI,KAAM,CAAA,aAAA,CAAc,qBAAqB,CAAA,CAAA;AAAA,KAEhD,MAAA;AACH,MAAA,IAAA,CAAK,WAAY,CAAA,QAAQ,CAAI,GAAA,EAAE,QAAQ,YAAa,EAAA,CAAA;AACpD,MAAA,IAAI,OAAS,EAAA,IAAA,CAAK,WAAY,CAAA,QAAQ,EAAE,QAAW,GAAA,OAAA,CAAA;AACnD,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAAA,GACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBA,OAAA,CAAQ,cAAsB,aAA6B,EAAA;AAEzD,IAAA,IAAI,CAAC,IAAA,CAAK,mBAAoB,CAAA,YAAY,CAAG,EAAA;AAC3C,MAAA,MAAM,IAAI,KAAA,CAAM,aAAc,CAAA,qBAAA,CAAsB,YAAY,CAAC,CAAA,CAAA;AAAA,KACnE;AACA,IAAA,IAAA,CAAK,YAAY,YAAY,CAAA,GAAI,EAAE,WAAA,EAAa,cAAc,WAAY,EAAA,CAAA;AAC1E,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBA,UAAA,CAAW,cAAsB,aAA6B,EAAA;AAE5D,IAAA,IAAI,CAAC,IAAA,CAAK,mBAAoB,CAAA,YAAY,CAAG,EAAA;AAC3C,MAAA,MAAM,IAAI,KAAA,CAAM,aAAc,CAAA,qBAAA,CAAsB,YAAY,CAAC,CAAA,CAAA;AAAA,KACnE;AACA,IAAA,IAAA,CAAK,YAAY,YAAY,CAAA,GAAI,EAAE,YAAA,EAAc,cAAc,WAAY,EAAA,CAAA;AAC3E,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBA,aAAA,CAAc,cAA6B,YAA8B,EAAA;AACvE,IAAA,MAAM,aAAoC,EAAC,CAAA;AAC3C,IAAA,KAAA,MAAW,aAAa,YAAc,EAAA;AACpC,MAAW,UAAA,CAAA,IAAA,CAAK,UAAU,WAAW,CAAA,CAAA;AAAA,KACvC;AACA,IAAK,IAAA,CAAA,WAAA,CAAY,SAAS,CAAI,GAAA,UAAA,CAAA;AAE9B,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBA,QAAmC,GAAA;AACjC,IAAA,OAAO,IAAK,CAAA,WAAA,CAAA;AAAA,GACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,WAAA,CAAY,KAAa,KAA6C,EAAA;AACpE,IAAA,IAAI,CAAC,IAAA,CAAK,mBAAoB,CAAA,GAAG,CAAG,EAAA;AAClC,MAAQ,OAAA,CAAA,KAAA,CAAM,cAAc,WAAW,CAAA,CAAA;AACvC,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AACA,IAAA,IAAI,CAAC,IAAA,CAAK,YAAa,CAAA,KAAK,CAAG,EAAA;AAC7B,MAAQ,OAAA,CAAA,KAAA,CAAM,cAAc,mBAAmB,CAAA,CAAA;AAC/C,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AACA,IAAA,IAAA,CAAK,WAAY,CAAA,GAAG,CAAI,GAAA,EAAE,OAAO,KAAM,EAAA,CAAA;AACvC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,cAAA,CAAe,KAAa,KAA6C,EAAA;AACvE,IAAA,IAAI,CAAC,IAAA,CAAK,mBAAoB,CAAA,GAAG,CAAG,EAAA;AAClC,MAAQ,OAAA,CAAA,KAAA,CAAM,cAAc,WAAW,CAAA,CAAA;AACvC,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AACA,IAAA,IAAI,CAAC,IAAA,CAAK,YAAa,CAAA,KAAK,CAAG,EAAA;AAC7B,MAAQ,OAAA,CAAA,KAAA,CAAM,cAAc,mBAAmB,CAAA,CAAA;AAC/C,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AACA,IAAA,IAAA,CAAK,WAAY,CAAA,GAAG,CAAI,GAAA,EAAE,QAAQ,KAAM,EAAA,CAAA;AACxC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,OAAO,GAAoB,EAAA;AACzB,IAAA,IAAI,CAAC,IAAA,CAAK,mBAAoB,CAAA,GAAG,CAAG,EAAA;AAClC,MAAQ,OAAA,CAAA,KAAA,CAAM,cAAc,WAAW,CAAA,CAAA;AACvC,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AACA,IAAA,IAAA,CAAK,WAAY,CAAA,GAAG,CAAI,GAAA,EAAE,WAAW,IAAK,EAAA,CAAA;AAC1C,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,UAAU,GAAoB,EAAA;AAC5B,IAAA,IAAI,CAAC,IAAA,CAAK,mBAAoB,CAAA,GAAG,CAAG,EAAA;AAClC,MAAQ,OAAA,CAAA,KAAA,CAAM,cAAc,WAAW,CAAA,CAAA;AACvC,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AACA,IAAA,IAAA,CAAK,WAAY,CAAA,GAAG,CAAI,GAAA,EAAE,WAAW,KAAM,EAAA,CAAA;AAC3C,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,MAAM,OAAyB,EAAA;AAC7B,IAAA,MAAM,aAAoC,EAAC,CAAA;AAC3C,IAAA,KAAA,MAAW,aAAa,OAAS,EAAA;AAC/B,MAAW,UAAA,CAAA,IAAA,CAAK,UAAU,WAAW,CAAA,CAAA;AAAA,KACvC;AACA,IAAA,IAAA,CAAK,YAAY,GAAM,GAAA,UAAA,CAAA;AACvB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,OAAO,OAAyB,EAAA;AAC9B,IAAA,MAAM,aAAoC,EAAC,CAAA;AAC3C,IAAA,KAAA,MAAW,aAAa,OAAS,EAAA;AAC/B,MAAW,UAAA,CAAA,IAAA,CAAK,UAAU,WAAW,CAAA,CAAA;AAAA,KACvC;AACA,IAAA,IAAA,CAAK,YAAY,IAAO,GAAA,UAAA,CAAA;AACxB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,OAAA,CAAQ,KAAa,KAAyC,EAAA;AAC5D,IAAA,IAAI,CAAC,IAAA,CAAK,mBAAoB,CAAA,GAAG,CAAG,EAAA;AAClC,MAAQ,OAAA,CAAA,KAAA,CAAM,cAAc,WAAW,CAAA,CAAA;AACvC,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AACA,IAAA,IAAI,OAAO,KAAA,KAAU,QAAY,IAAA,OAAO,UAAU,QAAU,EAAA;AAC1D,MAAQ,OAAA,CAAA,KAAA,CAAM,cAAc,8BAA8B,CAAA,CAAA;AAC1D,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AACA,IAAK,IAAA,CAAA,WAAA,CAAY,GAAG,CAAI,GAAA,KAAA,CAAA;AACxB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,UAAA,CAAW,KAAa,KAAyC,EAAA;AAC/D,IAAA,IAAI,CAAC,IAAA,CAAK,mBAAoB,CAAA,GAAG,CAAG,EAAA;AAClC,MAAQ,OAAA,CAAA,KAAA,CAAM,cAAc,WAAW,CAAA,CAAA;AACvC,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AACA,IAAA,IAAI,OAAO,KAAA,KAAU,QAAY,IAAA,OAAO,UAAU,QAAU,EAAA;AAC1D,MAAQ,OAAA,CAAA,KAAA,CAAM,cAAc,8BAA8B,CAAA,CAAA;AAC1D,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AACA,IAAA,IAAA,CAAK,WAAY,CAAA,GAAG,CAAI,GAAA,EAAE,OAAO,KAAM,EAAA,CAAA;AACvC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,WAAA,CAAY,KAAa,KAAqB,EAAA;AAC5C,IAAA,IAAI,CAAC,IAAA,CAAK,mBAAoB,CAAA,GAAG,CAAG,EAAA;AAClC,MAAQ,OAAA,CAAA,KAAA,CAAM,cAAc,WAAW,CAAA,CAAA;AACvC,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AACA,IAAA,IAAA,CAAK,YAAY,GAAG,CAAA,GAAI,EAAE,WAAA,EAAa,MAAM,WAAY,EAAA,CAAA;AACzD,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,cAAA,CAAe,KAAa,KAAqB,EAAA;AAC/C,IAAA,IAAI,CAAC,IAAA,CAAK,mBAAoB,CAAA,GAAG,CAAG,EAAA;AAClC,MAAQ,OAAA,CAAA,KAAA,CAAM,cAAc,WAAW,CAAA,CAAA;AACvC,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AACA,IAAA,IAAA,CAAK,YAAY,GAAG,CAAA,GAAI,EAAE,YAAA,EAAc,MAAM,WAAY,EAAA,CAAA;AAC1D,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,KAAK,MAA8C,EAAA;AACjD,IAAA,IAAI,CAAC,IAAA,CAAK,YAAa,CAAA,MAAM,CAAG,EAAA;AAC9B,MAAQ,OAAA,CAAA,KAAA,CAAM,cAAc,mBAAmB,CAAA,CAAA;AAC/C,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AACA,IAAK,IAAA,CAAA,WAAA,CAAY,MAAM,CAAI,GAAA,MAAA,CAAA;AAC3B,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,OAAO,GAAoB,EAAA;AACzB,IAAA,IAAI,CAAC,IAAA,CAAK,mBAAoB,CAAA,GAAG,CAAG,EAAA;AAClC,MAAQ,OAAA,CAAA,KAAA,CAAM,cAAc,WAAW,CAAA,CAAA;AACvC,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AACA,IAAK,IAAA,CAAA,YAAA,CAAa,WAAW,CAAI,GAAA,GAAA,CAAA;AACjC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,QAAA,CAAS,KAAa,KAAiC,EAAA;AACrD,IAAA,IAAI,CAAC,IAAA,CAAK,mBAAoB,CAAA,GAAG,CAAG,EAAA;AAClC,MAAQ,OAAA,CAAA,KAAA,CAAM,cAAc,WAAW,CAAA,CAAA;AACvC,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AACA,IAAA,IAAI,OAAO,KAAA,KAAU,QAAY,IAAA,OAAO,UAAU,QAAU,EAAA;AAC1D,MAAQ,OAAA,CAAA,KAAA,CAAM,cAAc,8BAA8B,CAAA,CAAA;AAC1D,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAEA,IAAA,IAAA,CAAK,WAAY,CAAA,GAAG,CAAI,GAAA,EAAE,OAAO,KAAM,EAAA,CAAA;AACvC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,iBAAA,CAAkB,KAAa,KAAiC,EAAA;AAC9D,IAAA,IAAI,CAAC,IAAA,CAAK,mBAAoB,CAAA,GAAG,CAAG,EAAA;AAClC,MAAQ,OAAA,CAAA,KAAA,CAAM,cAAc,WAAW,CAAA,CAAA;AACvC,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AACA,IAAA,IAAI,OAAO,KAAA,KAAU,QAAY,IAAA,OAAO,UAAU,QAAU,EAAA;AAC1D,MAAQ,OAAA,CAAA,KAAA,CAAM,cAAc,8BAA8B,CAAA,CAAA;AAC1D,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AACA,IAAA,IAAA,CAAK,WAAY,CAAA,GAAG,CAAI,GAAA,EAAE,QAAQ,KAAM,EAAA,CAAA;AACxC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,WAAA,CAAY,KAAa,KAAiC,EAAA;AACxD,IAAA,IAAI,CAAC,IAAA,CAAK,mBAAoB,CAAA,GAAG,CAAG,EAAA;AAClC,MAAQ,OAAA,CAAA,KAAA,CAAM,cAAc,WAAW,CAAA,CAAA;AACvC,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AACA,IAAA,IAAI,OAAO,KAAA,KAAU,QAAY,IAAA,OAAO,UAAU,QAAU,EAAA;AAC1D,MAAQ,OAAA,CAAA,KAAA,CAAM,cAAc,8BAA8B,CAAA,CAAA;AAC1D,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AACA,IAAA,IAAA,CAAK,WAAY,CAAA,GAAG,CAAI,GAAA,EAAE,OAAO,KAAM,EAAA,CAAA;AACvC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,oBAAA,CAAqB,KAAa,KAAiC,EAAA;AACjE,IAAA,IAAI,CAAC,IAAA,CAAK,mBAAoB,CAAA,GAAG,CAAG,EAAA;AAClC,MAAQ,OAAA,CAAA,KAAA,CAAM,cAAc,WAAW,CAAA,CAAA;AACvC,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AACA,IAAA,IAAI,OAAO,KAAA,KAAU,QAAY,IAAA,OAAO,UAAU,QAAU,EAAA;AAC1D,MAAQ,OAAA,CAAA,KAAA,CAAM,cAAc,8BAA8B,CAAA,CAAA;AAC1D,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AACA,IAAA,IAAA,CAAK,WAAY,CAAA,GAAG,CAAI,GAAA,EAAE,QAAQ,KAAM,EAAA,CAAA;AACxC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA,EAKA,MAAe,IAAQ,CAAA,MAAA,GAAkB,KAAiC,EAAA;AACxE,IAAA,IAAI,gBAAwC,IAAK,CAAA,YAAA,CAAA;AAEjD,IAAA,IAAI,OAAO,IAAK,CAAA,IAAA,CAAK,WAAW,CAAA,CAAE,SAAS,CAAG,EAAA;AAC5C,MAAA,IAAIA,YAAc,GAAA,EAAE,GAAG,IAAA,CAAK,WAAY,EAAA,CAAA;AAExC,MAAA,IAAI,MAAQ,EAAA;AACV,QAAAA,YAAAA,GAAc,kBAAkBA,YAAW,CAAA,CAAA;AAAA,OAC7C;AAEA,MAAA,aAAA,GAAgB,EAAE,GAAG,IAAK,CAAA,YAAA,EAAc,OAAOA,YAAY,EAAA,CAAA;AAAA,KAC7D;AAEA,IAAA,MAAM,iBAAyB,GAAA;AAAA,MAC7B,MAAQ,EAAA,aAAA;AAAA;AAAA,MAER,gBAAgB,IAAK,CAAA,eAAA;AAAA,KACvB,CAAA;AAEA,IAAA,IAAI,KAAK,SAAW,EAAA;AAClB,MAAA,iBAAA,CAAkB,OAAU,GAAA;AAAA,QAC1B,GAAG,iBAAkB,CAAA,OAAA;AAAA,QACrB,oBAAoB,IAAK,CAAA,SAAA;AAAA,OAC3B,CAAA;AAAA,KACF;AACA,IAAA,MAAM,WAAW,MAAM,OAAA,CAAQ,KAAK,OAAS,EAAA,IAAA,CAAK,UAAU,iBAAiB,CAAA,CAAA;AAE7E,IAAO,OAAA,QAAA,CAAA;AAAA,GACT;AACF;;;;"}
|