@strapi/utils
Version: 
Shared utilities for the Strapi packages
1 lines • 3.7 kB
Source Map (JSON)
{"version":3,"file":"operators.mjs","sources":["../src/operators.ts"],"sourcesContent":["const GROUP_OPERATORS = ['$and', '$or'];\n\nconst WHERE_OPERATORS = [\n  '$not',\n  '$in',\n  '$notIn',\n  '$eq',\n  '$eqi',\n  '$ne',\n  '$nei',\n  '$gt',\n  '$gte',\n  '$lt',\n  '$lte',\n  '$null',\n  '$notNull',\n  '$between',\n  '$startsWith',\n  '$endsWith',\n  '$startsWithi',\n  '$endsWithi',\n  '$contains',\n  '$notContains',\n  '$containsi',\n  '$notContainsi',\n  // Experimental, only for internal use\n  '$jsonSupersetOf',\n];\n\nconst CAST_OPERATORS = [\n  '$not',\n  '$in',\n  '$notIn',\n  '$eq',\n  '$ne',\n  '$gt',\n  '$gte',\n  '$lt',\n  '$lte',\n  '$between',\n];\n\nconst ARRAY_OPERATORS = ['$in', '$notIn', '$between'];\n\nconst OPERATORS = {\n  where: WHERE_OPERATORS,\n  cast: CAST_OPERATORS,\n  group: GROUP_OPERATORS,\n  array: ARRAY_OPERATORS,\n};\n\n// for performance, cache all operators in lowercase\nconst OPERATORS_LOWERCASE = Object.fromEntries(\n  Object.entries(OPERATORS).map(([key, values]) => [\n    key,\n    values.map((value) => value.toLowerCase()),\n  ])\n);\n\nconst isObjKey = <T extends object>(key: string | symbol | number, obj: T): key is keyof T => {\n  return key in obj;\n};\n\nexport const isOperatorOfType = (type: string, key: string, ignoreCase = false) => {\n  if (ignoreCase) {\n    return OPERATORS_LOWERCASE[type]?.includes(key.toLowerCase()) ?? false;\n  }\n\n  if (isObjKey(type, OPERATORS)) {\n    return OPERATORS[type]?.includes(key) ?? false;\n  }\n\n  return false;\n};\n\nexport const isOperator = (key: string, ignoreCase = false) => {\n  return Object.keys(OPERATORS).some((type) => isOperatorOfType(type, key, ignoreCase));\n};\n"],"names":["GROUP_OPERATORS","WHERE_OPERATORS","CAST_OPERATORS","ARRAY_OPERATORS","OPERATORS","where","cast","group","array","OPERATORS_LOWERCASE","Object","fromEntries","entries","map","key","values","value","toLowerCase","isObjKey","obj","isOperatorOfType","type","ignoreCase","includes","isOperator","keys","some"],"mappings":"AAAA,MAAMA,eAAkB,GAAA;AAAC,IAAA,MAAA;AAAQ,IAAA;AAAM,CAAA;AAEvC,MAAMC,eAAkB,GAAA;AACtB,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,QAAA;AACA,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA,OAAA;AACA,IAAA,UAAA;AACA,IAAA,UAAA;AACA,IAAA,aAAA;AACA,IAAA,WAAA;AACA,IAAA,cAAA;AACA,IAAA,YAAA;AACA,IAAA,WAAA;AACA,IAAA,cAAA;AACA,IAAA,YAAA;AACA,IAAA,eAAA;;AAEA,IAAA;AACD,CAAA;AAED,MAAMC,cAAiB,GAAA;AACrB,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,QAAA;AACA,IAAA,KAAA;AACA,IAAA,KAAA;AACA,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA;AACD,CAAA;AAED,MAAMC,eAAkB,GAAA;AAAC,IAAA,KAAA;AAAO,IAAA,QAAA;AAAU,IAAA;AAAW,CAAA;AAErD,MAAMC,SAAY,GAAA;IAChBC,KAAOJ,EAAAA,eAAAA;IACPK,IAAMJ,EAAAA,cAAAA;IACNK,KAAOP,EAAAA,eAAAA;IACPQ,KAAOL,EAAAA;AACT,CAAA;AAEA;AACA,MAAMM,mBAAsBC,GAAAA,MAAAA,CAAOC,WAAW,CAC5CD,OAAOE,OAAO,CAACR,SAAWS,CAAAA,CAAAA,GAAG,CAAC,CAAC,CAACC,GAAAA,EAAKC,OAAO,GAAK;AAC/CD,QAAAA,GAAAA;AACAC,QAAAA,MAAAA,CAAOF,GAAG,CAAC,CAACG,KAAAA,GAAUA,MAAMC,WAAW,EAAA;AACxC,KAAA,CAAA,CAAA;AAGH,MAAMC,QAAAA,GAAW,CAAmBJ,GAA+BK,EAAAA,GAAAA,GAAAA;AACjE,IAAA,OAAOL,GAAOK,IAAAA,GAAAA;AAChB,CAAA;MAEaC,gBAAmB,GAAA,CAACC,IAAcP,EAAAA,GAAAA,EAAaQ,aAAa,KAAK,GAAA;AAC5E,IAAA,IAAIA,UAAY,EAAA;AACd,QAAA,OAAOb,mBAAmB,CAACY,IAAAA,CAAK,EAAEE,QAAST,CAAAA,GAAAA,CAAIG,WAAW,EAAO,CAAA,IAAA,KAAA;AACnE;IAEA,IAAIC,QAAAA,CAASG,MAAMjB,SAAY,CAAA,EAAA;AAC7B,QAAA,OAAOA,SAAS,CAACiB,IAAK,CAAA,EAAEE,SAAST,GAAQ,CAAA,IAAA,KAAA;AAC3C;IAEA,OAAO,KAAA;AACT;AAEaU,MAAAA,UAAAA,GAAa,CAACV,GAAAA,EAAaQ,aAAa,KAAK,GAAA;IACxD,OAAOZ,MAAAA,CAAOe,IAAI,CAACrB,SAAWsB,CAAAA,CAAAA,IAAI,CAAC,CAACL,IAAAA,GAASD,gBAAiBC,CAAAA,IAAAA,EAAMP,GAAKQ,EAAAA,UAAAA,CAAAA,CAAAA;AAC3E;;;;"}