@langchain/core
Version:
Core LangChain.js abstractions and schemas
1 lines • 4.17 kB
Source Map (JSON)
{"version":3,"file":"utils.cjs","names":["obj: any","filter: ((q: any) => any) | object | string | undefined","value: unknown","input: unknown"],"sources":["../../src/structured_query/utils.ts"],"sourcesContent":["/**\n * Checks if the provided argument is an object and not an array.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isObject(obj: any): obj is object {\n return obj && typeof obj === \"object\" && !Array.isArray(obj);\n}\n\n/**\n * Checks if a provided filter is empty. The filter can be a function, an\n * object, a string, or undefined.\n */\nexport function isFilterEmpty(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n filter: ((q: any) => any) | object | string | undefined\n): filter is undefined {\n if (!filter) return true;\n // for Milvus\n if (typeof filter === \"string\" && filter.length > 0) {\n return false;\n }\n if (typeof filter === \"function\") {\n return false;\n }\n return isObject(filter) && Object.keys(filter).length === 0;\n}\n\n/**\n * Checks if the provided value is an integer.\n */\nexport function isInt(value: unknown): boolean {\n if (typeof value === \"number\") {\n return value % 1 === 0;\n } else if (typeof value === \"string\") {\n const numberValue = parseInt(value, 10);\n return (\n !Number.isNaN(numberValue) &&\n numberValue % 1 === 0 &&\n numberValue.toString() === value\n );\n }\n\n return false;\n}\n\n/**\n * Checks if the provided value is a floating-point number.\n */\nexport function isFloat(value: unknown): boolean {\n if (typeof value === \"number\") {\n return value % 1 !== 0;\n } else if (typeof value === \"string\") {\n const numberValue = parseFloat(value);\n return (\n !Number.isNaN(numberValue) &&\n numberValue % 1 !== 0 &&\n numberValue.toString() === value\n );\n }\n\n return false;\n}\n\n/**\n * Checks if the provided value is a string that cannot be parsed into a\n * number.\n */\nexport function isString(value: unknown): boolean {\n return (\n typeof value === \"string\" &&\n (Number.isNaN(parseFloat(value)) || parseFloat(value).toString() !== value)\n );\n}\n\n/**\n * Checks if the provided value is a boolean.\n */\nexport function isBoolean(value: unknown): boolean {\n return typeof value === \"boolean\";\n}\n\n/**\n * Casts a value that might be string or number to actual string or number.\n * Since LLM might return back an integer/float as a string, we need to cast\n * it back to a number, as many vector databases can't handle number as string\n * values as a comparator.\n */\nexport function castValue(input: unknown): string | number | boolean {\n let value;\n if (isString(input)) {\n value = input as string;\n } else if (isInt(input)) {\n value = parseInt(input as string, 10);\n } else if (isFloat(input)) {\n value = parseFloat(input as string);\n } else if (isBoolean(input)) {\n value = Boolean(input);\n } else {\n throw new Error(\"Unsupported value type\");\n }\n\n return value;\n}\n"],"mappings":";;;;;AAIA,SAAgB,SAASA,KAAyB;AAChD,QAAO,OAAO,OAAO,QAAQ,YAAY,CAAC,MAAM,QAAQ,IAAI;AAC7D;;;;;AAMD,SAAgB,cAEdC,QACqB;AACrB,KAAI,CAAC,OAAQ,QAAO;AAEpB,KAAI,OAAO,WAAW,YAAY,OAAO,SAAS,EAChD,QAAO;AAET,KAAI,OAAO,WAAW,WACpB,QAAO;AAET,QAAO,SAAS,OAAO,IAAI,OAAO,KAAK,OAAO,CAAC,WAAW;AAC3D;;;;AAKD,SAAgB,MAAMC,OAAyB;AAC7C,KAAI,OAAO,UAAU,SACnB,QAAO,QAAQ,MAAM;UACZ,OAAO,UAAU,UAAU;EACpC,MAAM,cAAc,SAAS,OAAO,GAAG;AACvC,SACE,CAAC,OAAO,MAAM,YAAY,IAC1B,cAAc,MAAM,KACpB,YAAY,UAAU,KAAK;CAE9B;AAED,QAAO;AACR;;;;AAKD,SAAgB,QAAQA,OAAyB;AAC/C,KAAI,OAAO,UAAU,SACnB,QAAO,QAAQ,MAAM;UACZ,OAAO,UAAU,UAAU;EACpC,MAAM,cAAc,WAAW,MAAM;AACrC,SACE,CAAC,OAAO,MAAM,YAAY,IAC1B,cAAc,MAAM,KACpB,YAAY,UAAU,KAAK;CAE9B;AAED,QAAO;AACR;;;;;AAMD,SAAgB,SAASA,OAAyB;AAChD,QACE,OAAO,UAAU,aAChB,OAAO,MAAM,WAAW,MAAM,CAAC,IAAI,WAAW,MAAM,CAAC,UAAU,KAAK;AAExE;;;;AAKD,SAAgB,UAAUA,OAAyB;AACjD,QAAO,OAAO,UAAU;AACzB;;;;;;;AAQD,SAAgB,UAAUC,OAA2C;CACnE,IAAI;AACJ,KAAI,SAAS,MAAM,EACjB,QAAQ;UACC,MAAM,MAAM,EACrB,QAAQ,SAAS,OAAiB,GAAG;UAC5B,QAAQ,MAAM,EACvB,QAAQ,WAAW,MAAgB;UAC1B,UAAU,MAAM,EACzB,QAAQ,QAAQ,MAAM;KAEtB,OAAM,IAAI,MAAM;AAGlB,QAAO;AACR"}