@orama/plugin-secure-proxy 2.0.1 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![Tests](https://github.com/oramasearch/orama/actions/workflows/turbo.yml/badge.svg)](https://github.com/oramasearch/orama/actions/workflows/turbo.yml)
4
4
 
5
- Orama plugin for generating embeddings securely on the front-end.
5
+ Orama plugin for generating embeddings and performing vector/hybrid search securely on the front-end.
6
6
 
7
7
  # Usage
8
8
 
@@ -18,17 +18,25 @@ const db = await create({
18
18
  schema: {
19
19
  title: 'string',
20
20
  description: 'string',
21
- embeddings: 'vector[1536]'
21
+ embeddings: 'vector[384]'
22
22
  },
23
23
  plugins: [
24
24
  pluginSecureProxy({
25
25
  apiKey: '<API-KEY>',
26
- defaultProperty: 'embeddings'
26
+ defaultProperty: 'embeddings',
27
+ model: 'orama/gte-small'
27
28
  })
28
29
  ]
29
30
  })
30
31
  ```
31
32
 
33
+ Available models:
34
+
35
+ - `orama/gte-small`. 384 dimensions.
36
+ - `openai/text-embedding-ada-002`. 1536 dimensions.
37
+
38
+ Mode models coming soon!
39
+
32
40
  For the full configuration guide of this plugin, please follow the [official plugin documentation](https://docs.oramasearch.com/open-source/plugins/plugin-secure-proxy).
33
41
 
34
42
  # License
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";function e(e,r,t,n,o,u,i){try{var a=e[u](i);var c=a.value}catch(e){t(e);return}if(a.done){r(c)}else{Promise.resolve(c).then(n,o)}}function r(r){return function(){var t=this,n=arguments;return new Promise(function(o,u){var i=r.apply(t,n);function a(r){e(i,o,u,a,c,"next",r)}function c(r){e(i,o,u,a,c,"throw",r)}a(undefined)})}}var t=function(e){"@swc/helpers - typeof";return e&&typeof Symbol!=="undefined"&&e.constructor===Symbol?"symbol":typeof e};var n=this&&this.__generator||function(e,r){var t,n,o,u,i={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]};return u={next:a(0),"throw":a(1),"return":a(2)},typeof Symbol==="function"&&(u[Symbol.iterator]=function(){return this}),u;function a(e){return function(r){return c([e,r])}}function c(u){if(t)throw new TypeError("Generator is already executing.");while(i)try{if(t=1,n&&(o=u[0]&2?n["return"]:u[0]?n["throw"]||((o=n["return"])&&o.call(n),0):n.next)&&!(o=o.call(n,u[1])).done)return o;if(n=0,o)u=[u[0]&2,o.value];switch(u[0]){case 0:case 1:o=u;break;case 4:i.label++;return{value:u[1],done:false};case 5:i.label++;n=u[1];u=[0];continue;case 7:u=i.ops.pop();i.trys.pop();continue;default:if(!(o=i.trys,o=o.length>0&&o[o.length-1])&&(u[0]===6||u[0]===2)){i=0;continue}if(u[0]===3&&(!o||u[1]>o[0]&&u[1]<o[3])){i.label=u[1];break}if(u[0]===6&&i.label<o[1]){i.label=o[1];o=u;break}if(o&&i.label<o[2]){i.label=o[2];i.ops.push(u);break}if(o[2])i.ops.pop();i.trys.pop();continue}u=r.call(e,i)}catch(e){u=[6,e];n=0}finally{t=o=0}if(u[0]&5)throw u[1];return{value:u[0]?u[1]:void 0,done:true}}};var o=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var c=function(e,r){for(var t in r)o(e,t,{get:r[t],enumerable:!0})},l=function(e,r,t,n){var c=true,l=false,f=undefined;if(r&&typeof r=="object"||typeof r=="function")try{var s=function(){var i=y.value;!a.call(e,i)&&i!==t&&o(e,i,{get:function(){return r[i]},enumerable:!(n=u(r,i))||n.enumerable})};for(var p=i(r)[Symbol.iterator](),y;!(c=(y=p.next()).done);c=true)s()}catch(e){l=true;f=e}finally{try{if(!c&&p.return!=null){p.return()}}finally{if(l){throw f}}}return e};var f=function(e){return l(o({},"__esModule",{value:!0}),e)};var s={};c(s,{pluginSecureProxy:function(){return P}});module.exports=f(s);var p="https://secure-proxy.orama.run",y="".concat(p,"/init"),h="".concat(p,"/query");function v(){return(typeof window==="undefined"?"undefined":t(window))>"u"}function d(){return v()?"http://localhost":window.location.href}function w(e){return b.apply(this,arguments)}function b(){b=r(function(e){return n(this,function(r){switch(r.label){case 0:return[4,fetch("".concat(y,"?apiKey=").concat(e),{headers:{Referer:d()}})];case 1:return[2,r.sent().json()]}})});return b.apply(this,arguments)}function m(e,r,t){return g.apply(this,arguments)}function g(){g=r(function(e,r,t){var o;return n(this,function(n){switch(n.label){case 0:o=new URLSearchParams({query:r,csrf:t}).toString();return[4,fetch("".concat(h,"?apiKey=").concat(e),{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",Referer:d()},body:o})];case 1:return[2,n.sent().json()]}})});return g.apply(this,arguments)}function P(e){return x.apply(this,arguments)}function x(){x=r(function(e){var t,o;return n(this,function(u){switch(u.label){case 0:if(!e.apiKey)throw new Error('Missing "apiKey" parameter for plugin-telemetry');if(!e.defaultProperty)throw new Error('Missing "defaultProperty" parameter for plugin-telemetry');return[4,w(e.apiKey)];case 1:t=u.sent(),o=t.csrfToken;return[2,{name:"secure-proxy",beforeSearch:function t(t,u){return r(function(){var r,t,i,a,c;return n(this,function(n){switch(n.label){case 0:if(u.mode!=="vector"&&u.mode!=="hybrid"||(u===null||u===void 0?void 0:(r=u.vector)===null||r===void 0?void 0:r.value))return[2];if(!u.term)throw new Error('Neither "term" nor "vector" parameters were provided');i=u.term;return[4,m(e.apiKey,i,o)];case 1:a=n.sent();u.vector||(u.vector={property:(c=u===null||u===void 0?void 0:(t=u.vector)===null||t===void 0?void 0:t.property)!==null&&c!==void 0?c:e.defaultProperty,value:a}),u.vector.value=a;return[2]}})})()}}]}})});return x.apply(this,arguments)}0&&(module.exports={pluginSecureProxy:pluginSecureProxy});//# sourceMappingURL=index.cjs.map
1
+ "use strict";function e(e,r,t,n,o,i,u){try{var a=e[i](u);var l=a.value}catch(e){t(e);return}if(a.done){r(l)}else{Promise.resolve(l).then(n,o)}}function r(r){return function(){var t=this,n=arguments;return new Promise(function(o,i){var u=r.apply(t,n);function a(r){e(u,o,i,a,l,"next",r)}function l(r){e(u,o,i,a,l,"throw",r)}a(undefined)})}}var t=this&&this.__generator||function(e,r){var t,n,o,i,u={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]};return i={next:a(0),"throw":a(1),"return":a(2)},typeof Symbol==="function"&&(i[Symbol.iterator]=function(){return this}),i;function a(e){return function(r){return l([e,r])}}function l(i){if(t)throw new TypeError("Generator is already executing.");while(u)try{if(t=1,n&&(o=i[0]&2?n["return"]:i[0]?n["throw"]||((o=n["return"])&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;if(n=0,o)i=[i[0]&2,o.value];switch(i[0]){case 0:case 1:o=i;break;case 4:u.label++;return{value:i[1],done:false};case 5:u.label++;n=i[1];i=[0];continue;case 7:i=u.ops.pop();u.trys.pop();continue;default:if(!(o=u.trys,o=o.length>0&&o[o.length-1])&&(i[0]===6||i[0]===2)){u=0;continue}if(i[0]===3&&(!o||i[1]>o[0]&&i[1]<o[3])){u.label=i[1];break}if(i[0]===6&&u.label<o[1]){u.label=o[1];o=i;break}if(o&&u.label<o[2]){u.label=o[2];u.ops.push(i);break}if(o[2])u.ops.pop();u.trys.pop();continue}i=r.call(e,u)}catch(e){i=[6,e];n=0}finally{t=o=0}if(i[0]&5)throw i[1];return{value:i[0]?i[1]:void 0,done:true}}};var n=Object.defineProperty;var o=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var a=function(e,r){for(var t in r)n(e,t,{get:r[t],enumerable:!0})},l=function(e,r,t,a){var l=true,c=false,f=undefined;if(r&&typeof r=="object"||typeof r=="function")try{var p=function(){var i=v.value;!u.call(e,i)&&i!==t&&n(e,i,{get:function(){return r[i]},enumerable:!(a=o(r,i))||a.enumerable})};for(var s=i(r)[Symbol.iterator](),v;!(l=(v=s.next()).done);l=true)p()}catch(e){c=true;f=e}finally{try{if(!l&&s.return!=null){s.return()}}finally{if(c){throw f}}}return e};var c=function(e){return l(n({},"__esModule",{value:!0}),e)};var f={};a(f,{pluginSecureProxy:function(){return s}});module.exports=c(f);var p=require("@oramacloud/client");function s(e){return v.apply(this,arguments)}function v(){v=r(function(e){var n;return t(this,function(o){if(!e.apiKey)throw new Error('Missing "apiKey" parameter for plugin-telemetry');if(!e.defaultProperty)throw new Error('Missing "defaultProperty" parameter for plugin-telemetry');if(!e.model)throw new Error('Missing "model" parameter for plugin-telemetry');n=new p.OramaProxy({api_key:e.apiKey});return[2,{name:"secure-proxy",beforeSearch:function o(o,i){return r(function(){var r,o,u,a,l;return t(this,function(t){switch(t.label){case 0:if(i.mode!=="vector"&&i.mode!=="hybrid"||(i===null||i===void 0?void 0:(r=i.vector)===null||r===void 0?void 0:r.value))return[2];if(!i.term)throw new Error('Neither "term" nor "vector" parameters were provided');u=i.term;return[4,n.generateEmbeddings(u,e.model)];case 1:a=t.sent();i.vector||(i.vector={property:(l=i===null||i===void 0?void 0:(o=i.vector)===null||o===void 0?void 0:o.property)!==null&&l!==void 0?l:e.defaultProperty,value:a}),i.vector.value=a;return[2]}})})()}}]})});return v.apply(this,arguments)}0&&(module.exports={pluginSecureProxy:pluginSecureProxy});//# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["src_exports","__export","pluginSecureProxy","__toCommonJS","SECURE_PROXY_ENDPOINT","INIT_URL","SEARCH_URL","isServer","getReferer","getCSRFToken","apiKey","getEmbeddings","query","csrfToken","body","pluginParams","_db","params","term","embeddings"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,uBAAAE,IAAA,eAAAC,EAAAH,GAeA,IAAMI,EAAwB,iCACxBC,EAAW,GAAGD,CAAqB,QACnCE,EAAa,GAAGF,CAAqB,SAE3C,SAASG,GAAW,CAClB,OAAO,OAAO,OAAW,GAC3B,CAEA,SAASC,GAAa,CACpB,OAAOD,EAAS,EAAI,mBAAqB,OAAO,SAAS,IAC3D,CAEA,eAAeE,EAAaC,EAAuC,CAOjE,OANiB,MAAM,MAAM,GAAGL,CAAQ,WAAWK,CAAM,GAAI,CAC3D,QAAS,CACP,QAASF,EAAW,CACtB,CACF,CAAC,GAEe,KAAK,CACvB,CAEA,eAAeG,EAAcD,EAAgBE,EAAeC,EAAgD,CAC1G,IAAMC,EAAO,IAAI,gBAAgB,CAAE,MAAAF,EAAO,KAAMC,CAAU,CAAC,EAAE,SAAS,EAWtE,OATiB,MAAM,MAAM,GAAGP,CAAU,WAAWI,CAAM,GAAI,CAC7D,OAAQ,OACR,QAAS,CACP,eAAgB,mDAChB,QAASF,EAAW,CACtB,EACA,KAAAM,CACF,CAAC,GAEe,KAAK,CACvB,CAEA,eAAsBZ,EAAkBa,EAA0D,CAChG,GAAI,CAACA,EAAa,OAAQ,MAAM,IAAI,MAAM,iDAAiD,EAC3F,GAAI,CAACA,EAAa,gBAAiB,MAAM,IAAI,MAAM,0DAA0D,EAE7G,GAAM,CAAE,UAAAF,CAAU,EAAI,MAAMJ,EAAaM,EAAa,MAAM,EAE5D,MAAO,CACL,KAAM,eAEN,MAAM,aAAiCC,EAAeC,EAA6C,CAKjG,GAJIA,EAAO,OAAS,UAAYA,EAAO,OAAS,UAI5CA,GAAQ,QAAQ,MAClB,OAGF,GAAI,CAACA,EAAO,KACV,MAAM,IAAI,MAAM,sDAAsD,EAGxE,IAAMC,EAAOD,EAAO,KACdE,EAAa,MAAMR,EAAcI,EAAa,OAAQG,EAAML,CAAS,EAEtEI,EAAO,SACVA,EAAO,OAAS,CAEd,SAAUA,GAAQ,QAAQ,UAAYF,EAAa,gBACnD,MAAOI,CACT,GAGFF,EAAO,OAAO,MAAQE,CACxB,CACF,CACF","sourcesContent":["import type { AnyOrama, SearchParams, TypedDocument, OramaPluginAsync } from '@orama/orama'\n\ntype InitResponse = {\n clientID: string\n ttl: number\n csrfToken: string\n}\n\ntype EmbeddingsResponse = number[]\n\nexport type SecureProxyPluginOptions = {\n apiKey: string\n defaultProperty: string\n}\n\nconst SECURE_PROXY_ENDPOINT = 'https://secure-proxy.orama.run'\nconst INIT_URL = `${SECURE_PROXY_ENDPOINT}/init`\nconst SEARCH_URL = `${SECURE_PROXY_ENDPOINT}/query`\n\nfunction isServer() {\n return typeof window === 'undefined'\n}\n\nfunction getReferer() {\n return isServer() ? 'http://localhost' : window.location.href\n}\n\nasync function getCSRFToken(apiKey: string): Promise<InitResponse> {\n const response = await fetch(`${INIT_URL}?apiKey=${apiKey}`, {\n headers: {\n Referer: getReferer()\n }\n })\n\n return response.json()\n}\n\nasync function getEmbeddings(apiKey: string, query: string, csrfToken: string): Promise<EmbeddingsResponse> {\n const body = new URLSearchParams({ query, csrf: csrfToken }).toString()\n\n const response = await fetch(`${SEARCH_URL}?apiKey=${apiKey}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n Referer: getReferer()\n },\n body\n })\n\n return response.json()\n}\n\nexport async function pluginSecureProxy(pluginParams: SecureProxyPluginOptions): OramaPluginAsync {\n if (!pluginParams.apiKey) throw new Error('Missing \"apiKey\" parameter for plugin-telemetry')\n if (!pluginParams.defaultProperty) throw new Error('Missing \"defaultProperty\" parameter for plugin-telemetry')\n\n const { csrfToken } = await getCSRFToken(pluginParams.apiKey)\n\n return {\n name: 'secure-proxy',\n\n async beforeSearch<T extends AnyOrama>(_db: AnyOrama, params: SearchParams<T, TypedDocument<any>>) {\n if (params.mode !== 'vector' && params.mode !== 'hybrid') {\n return\n }\n\n if (params?.vector?.value) {\n return\n }\n\n if (!params.term) {\n throw new Error('Neither \"term\" nor \"vector\" parameters were provided')\n }\n\n const term = params.term\n const embeddings = await getEmbeddings(pluginParams.apiKey, term, csrfToken)\n\n if (!params.vector) {\n params.vector = {\n // @ts-expect-error - vector param is not present in full-text search\n property: params?.vector?.property ?? pluginParams.defaultProperty,\n value: embeddings\n }\n }\n\n params.vector.value = embeddings\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":["src_exports","__export","pluginSecureProxy","__toCommonJS","import_client","pluginParams","proxy","_db","params","term","embeddings"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,uBAAAE,IAAA,eAAAC,EAAAH,GACA,IAAAI,EAA2C,8BAQ3C,eAAsBF,EAAkBG,EAAmE,CACzG,GAAI,CAACA,EAAa,OAAQ,MAAM,IAAI,MAAM,iDAAiD,EAC3F,GAAI,CAACA,EAAa,gBAAiB,MAAM,IAAI,MAAM,0DAA0D,EAC7G,GAAI,CAACA,EAAa,MAAO,MAAM,IAAI,MAAM,gDAAgD,EAEzF,IAAMC,EAAQ,IAAI,aAAW,CAC3B,QAASD,EAAa,MACxB,CAAC,EAED,MAAO,CACL,KAAM,eAEN,MAAM,aAAiCE,EAAeC,EAA6C,CAKjG,GAJIA,EAAO,OAAS,UAAYA,EAAO,OAAS,UAI5CA,GAAQ,QAAQ,MAClB,OAGF,GAAI,CAACA,EAAO,KACV,MAAM,IAAI,MAAM,sDAAsD,EAGxE,IAAMC,EAAOD,EAAO,KACdE,EAAa,MAAMJ,EAAM,mBAAmBG,EAAMJ,EAAa,KAAK,EAErEG,EAAO,SACVA,EAAO,OAAS,CAGd,SAAUA,GAAQ,QAAQ,UAAYH,EAAa,gBACnD,MAAOK,CACT,GAGFF,EAAO,OAAO,MAAQE,CACxB,CACF,CACF","sourcesContent":["import type { AnyOrama, SearchParams, TypedDocument, OramaPluginAsync } from '@orama/orama'\nimport { OramaProxy, EmbeddingModel } from '@oramacloud/client'\n\nexport type SecureProxyPluginOptions = {\n apiKey: string\n defaultProperty: string\n model: EmbeddingModel\n}\n\nexport async function pluginSecureProxy(pluginParams: SecureProxyPluginOptions): Promise<OramaPluginAsync> {\n if (!pluginParams.apiKey) throw new Error('Missing \"apiKey\" parameter for plugin-telemetry')\n if (!pluginParams.defaultProperty) throw new Error('Missing \"defaultProperty\" parameter for plugin-telemetry')\n if (!pluginParams.model) throw new Error('Missing \"model\" parameter for plugin-telemetry')\n\n const proxy = new OramaProxy({\n api_key: pluginParams.apiKey,\n })\n\n return {\n name: 'secure-proxy',\n\n async beforeSearch<T extends AnyOrama>(_db: AnyOrama, params: SearchParams<T, TypedDocument<any>>) {\n if (params.mode !== 'vector' && params.mode !== 'hybrid') {\n return\n }\n\n if (params?.vector?.value) {\n return\n }\n\n if (!params.term) {\n throw new Error('Neither \"term\" nor \"vector\" parameters were provided')\n }\n\n const term = params.term\n const embeddings = await proxy.generateEmbeddings(term, pluginParams.model)\n\n if (!params.vector) {\n params.vector = {\n // eslint-disable-next-line\n // @ts-ignore\n property: params?.vector?.property ?? pluginParams.defaultProperty,\n value: embeddings\n }\n }\n\n params.vector.value = embeddings\n }\n }\n}\n"]}
package/dist/index.d.cts CHANGED
@@ -1,9 +1,11 @@
1
1
  import { OramaPluginAsync } from '@orama/orama';
2
+ import { EmbeddingModel } from '@oramacloud/client';
2
3
 
3
4
  type SecureProxyPluginOptions = {
4
5
  apiKey: string;
5
6
  defaultProperty: string;
7
+ model: EmbeddingModel;
6
8
  };
7
- declare function pluginSecureProxy(pluginParams: SecureProxyPluginOptions): OramaPluginAsync;
9
+ declare function pluginSecureProxy(pluginParams: SecureProxyPluginOptions): Promise<OramaPluginAsync>;
8
10
 
9
11
  export { SecureProxyPluginOptions, pluginSecureProxy };
package/dist/index.d.ts CHANGED
@@ -1,9 +1,11 @@
1
1
  import { OramaPluginAsync } from '@orama/orama';
2
+ import { EmbeddingModel } from '@oramacloud/client';
2
3
 
3
4
  type SecureProxyPluginOptions = {
4
5
  apiKey: string;
5
6
  defaultProperty: string;
7
+ model: EmbeddingModel;
6
8
  };
7
- declare function pluginSecureProxy(pluginParams: SecureProxyPluginOptions): OramaPluginAsync;
9
+ declare function pluginSecureProxy(pluginParams: SecureProxyPluginOptions): Promise<OramaPluginAsync>;
8
10
 
9
11
  export { SecureProxyPluginOptions, pluginSecureProxy };
@@ -1 +1 @@
1
- "use strict";function e(e,r,t,n,o,i,u){try{var a=e[i](u);var c=a.value}catch(e){t(e);return}if(a.done){r(c)}else{Promise.resolve(c).then(n,o)}}function r(r){return function(){var t=this,n=arguments;return new Promise(function(o,i){var u=r.apply(t,n);function a(r){e(u,o,i,a,c,"next",r)}function c(r){e(u,o,i,a,c,"throw",r)}a(undefined)})}}var t=function(e){"@swc/helpers - typeof";return e&&typeof Symbol!=="undefined"&&e.constructor===Symbol?"symbol":typeof e};var n=this&&this.__generator||function(e,r){var t,n,o,i,u={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]};return i={next:a(0),"throw":a(1),"return":a(2)},typeof Symbol==="function"&&(i[Symbol.iterator]=function(){return this}),i;function a(e){return function(r){return c([e,r])}}function c(i){if(t)throw new TypeError("Generator is already executing.");while(u)try{if(t=1,n&&(o=i[0]&2?n["return"]:i[0]?n["throw"]||((o=n["return"])&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;if(n=0,o)i=[i[0]&2,o.value];switch(i[0]){case 0:case 1:o=i;break;case 4:u.label++;return{value:i[1],done:false};case 5:u.label++;n=i[1];i=[0];continue;case 7:i=u.ops.pop();u.trys.pop();continue;default:if(!(o=u.trys,o=o.length>0&&o[o.length-1])&&(i[0]===6||i[0]===2)){u=0;continue}if(i[0]===3&&(!o||i[1]>o[0]&&i[1]<o[3])){u.label=i[1];break}if(i[0]===6&&u.label<o[1]){u.label=o[1];o=i;break}if(o&&u.label<o[2]){u.label=o[2];u.ops.push(i);break}if(o[2])u.ops.pop();u.trys.pop();continue}i=r.call(e,u)}catch(e){i=[6,e];n=0}finally{t=o=0}if(i[0]&5)throw i[1];return{value:i[0]?i[1]:void 0,done:true}}};var pluginTelemetry=function(){var e=function e(){return(typeof window==="undefined"?"undefined":t(window))>"u"};var o=function r(){return e()?"http://localhost":window.location.href};var i=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var l=function(e,r){for(var t in r)i(e,t,{get:r[t],enumerable:!0})},f=function(e,r,t,n){var o=true,l=false,f=undefined;if(r&&typeof r=="object"||typeof r=="function")try{var s=function(){var o=y.value;!c.call(e,o)&&o!==t&&i(e,o,{get:function(){return r[o]},enumerable:!(n=u(r,o))||n.enumerable})};for(var p=a(r)[Symbol.iterator](),y;!(o=(y=p.next()).done);o=true)s()}catch(e){l=true;f=e}finally{try{if(!o&&p.return!=null){p.return()}}finally{if(l){throw f}}}return e};var s=function(e){return f(i({},"__esModule",{value:!0}),e)};var p={};l(p,{pluginSecureProxy:function(){return g}});var y="https://secure-proxy.orama.run",v="".concat(y,"/init"),h="".concat(y,"/query");function d(e){return w.apply(this,arguments)}function w(){w=r(function(e){return n(this,function(r){switch(r.label){case 0:return[4,fetch("".concat(v,"?apiKey=").concat(e),{headers:{Referer:o()}})];case 1:return[2,r.sent().json()]}})});return w.apply(this,arguments)}function b(e,r,t){return m.apply(this,arguments)}function m(){m=r(function(e,r,t){var i;return n(this,function(n){switch(n.label){case 0:i=new URLSearchParams({query:r,csrf:t}).toString();return[4,fetch("".concat(h,"?apiKey=").concat(e),{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",Referer:o()},body:i})];case 1:return[2,n.sent().json()]}})});return m.apply(this,arguments)}function g(e){return P.apply(this,arguments)}function P(){P=r(function(e){var t,o;return n(this,function(i){switch(i.label){case 0:if(!e.apiKey)throw new Error('Missing "apiKey" parameter for plugin-telemetry');if(!e.defaultProperty)throw new Error('Missing "defaultProperty" parameter for plugin-telemetry');return[4,d(e.apiKey)];case 1:t=i.sent(),o=t.csrfToken;return[2,{name:"secure-proxy",beforeSearch:function t(t,i){return r(function(){var r,t,u,a,c;return n(this,function(n){switch(n.label){case 0:if(i.mode!=="vector"&&i.mode!=="hybrid"||(i===null||i===void 0?void 0:(r=i.vector)===null||r===void 0?void 0:r.value))return[2];if(!i.term)throw new Error('Neither "term" nor "vector" parameters were provided');u=i.term;return[4,b(e.apiKey,u,o)];case 1:a=n.sent();i.vector||(i.vector={property:(c=i===null||i===void 0?void 0:(t=i.vector)===null||t===void 0?void 0:t.property)!==null&&c!==void 0?c:e.defaultProperty,value:a}),i.vector.value=a;return[2]}})})()}}]}})});return P.apply(this,arguments)}return s(p)}();//# sourceMappingURL=index.global.js.map
1
+ "use strict";function t(t,e){if(e==null||e>t.length)e=t.length;for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function e(t){if(Array.isArray(t))return t}function r(t){if(t===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}return t}function n(t){var e,r;function n(t,n){return new Promise(function(i,u){var a={key:t,arg:n,resolve:i,reject:u,next:null};if(r){r=r.next=a}else{e=r=a;o(t,n)}})}function o(e,r){try{var n=t[e](r);var u=n.value;var a=u instanceof s;Promise.resolve(a?u.wrapped:u).then(function(t){if(a){o("next",t);return}i(n.done?"return":"normal",t)},function(t){o("throw",t)})}catch(t){i("throw",t)}}function i(t,n){switch(t){case"return":e.resolve({value:n,done:true});break;case"throw":e.reject(n);break;default:e.resolve({value:n,done:false});break}e=e.next;if(e){o(e.key,e.arg)}else{r=null}}this._invoke=n;if(typeof t.return!=="function"){this.return=undefined}}if(typeof Symbol==="function"&&Symbol.asyncIterator){n.prototype[Symbol.asyncIterator]=function(){return this}}n.prototype.next=function(t){return this._invoke("next",t)};n.prototype.throw=function(t){return this._invoke("throw",t)};n.prototype.return=function(t){return this._invoke("return",t)};function o(t){var e,r,n,o=2;for("undefined"!=typeof Symbol&&(r=Symbol.asyncIterator,n=Symbol.iterator);o--;){if(r&&null!=(e=t[r]))return e.call(t);if(n&&null!=(e=t[n]))return new i(e.call(t));r="@@asyncIterator",n="@@iterator"}throw new TypeError("Object is not async iterable")}function i(t){function e(t){if(Object(t)!==t)return Promise.reject(new TypeError(t+" is not an object."));var e=t.done;return Promise.resolve(t.value).then(function(t){return{value:t,done:e}})}return i=function(t){this.s=t,this.n=t.next},i.prototype={s:null,n:null,next:function(){return e(this.n.apply(this.s,arguments))},return:function(t){var r=this.s.return;return void 0===r?Promise.resolve({value:t,done:!0}):e(r.apply(this.s,arguments))},throw:function(t){var r=this.s.return;return void 0===r?Promise.reject(t):e(r.apply(this.s,arguments))}},new i(t)}function u(t,e,r,n,o,i,u){try{var a=t[i](u);var c=a.value}catch(t){r(t);return}if(a.done){e(c)}else{Promise.resolve(c).then(n,o)}}function a(t){return function(){var e=this,r=arguments;return new Promise(function(n,o){var i=t.apply(e,r);function a(t){u(i,n,o,a,c,"next",t)}function c(t){u(i,n,o,a,c,"throw",t)}a(undefined)})}}function c(t){return new s(t)}function s(t){this.wrapped=t}function f(t,e){if(!(t instanceof e)){throw new TypeError("Cannot call a class as a function")}}function l(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||false;n.configurable=true;if("value"in n)n.writable=true;Object.defineProperty(t,n.key,n)}}function h(t,e,r){if(e)l(t.prototype,e);if(r)l(t,r);return t}function p(t,e,r){if(e in t){Object.defineProperty(t,e,{value:r,enumerable:true,configurable:true,writable:true})}else{t[e]=r}return t}function d(t){d=Object.setPrototypeOf?Object.getPrototypeOf:function t(t){return t.__proto__||Object.getPrototypeOf(t)};return d(t)}function v(t,e){if(typeof e!=="function"&&e!==null){throw new TypeError("Super expression must either be null or a function")}t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:true,configurable:true}});if(e)x(t,e)}function y(t,e){if(e!=null&&typeof Symbol!=="undefined"&&e[Symbol.hasInstance]){return!!e[Symbol.hasInstance](t)}else{return t instanceof e}}function b(t,e){var r=t==null?null:typeof Symbol!=="undefined"&&t[Symbol.iterator]||t["@@iterator"];if(r==null)return;var n=[];var o=true;var i=false;var u,a;try{for(r=r.call(t);!(o=(u=r.next()).done);o=true){n.push(u.value);if(e&&n.length===e)break}}catch(t){i=true;a=t}finally{try{if(!o&&r["return"]!=null)r["return"]()}finally{if(i)throw a}}return n}function w(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function g(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};var n=Object.keys(r);if(typeof Object.getOwnPropertySymbols==="function"){n=n.concat(Object.getOwnPropertySymbols(r).filter(function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))}n.forEach(function(e){p(t,e,r[e])})}return t}function m(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);if(e){n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})}r.push.apply(r,n)}return r}function k(t,e){e=e!=null?e:{};if(Object.getOwnPropertyDescriptors){Object.defineProperties(t,Object.getOwnPropertyDescriptors(e))}else{m(Object(e)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))})}return t}function O(t,e){if(e&&(L(e)==="object"||typeof e==="function")){return e}return r(t)}function x(t,e){x=Object.setPrototypeOf||function t(t,e){t.__proto__=e;return t};return x(t,e)}function S(t,r){return e(t)||b(t,r)||P(t,r)||w()}var L=function(t){"@swc/helpers - typeof";return t&&typeof Symbol!=="undefined"&&t.constructor===Symbol?"symbol":typeof t};function P(e,r){if(!e)return;if(typeof e==="string")return t(e,r);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor)n=e.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return t(e,r)}function _(t){return function(){return new n(t.apply(this,arguments))}}function j(){if(typeof Reflect==="undefined"||!Reflect.construct)return false;if(Reflect.construct.sham)return false;if(typeof Proxy==="function")return true;try{Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));return true}catch(t){return false}}function E(t){var e=j();return function r(){var r=d(t),n;if(e){var o=d(this).constructor;n=Reflect.construct(r,arguments,o)}else{n=r.apply(this,arguments)}return O(this,n)}}var B=this&&this.__generator||function(t,e){var r,n,o,i,u={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]};return i={next:a(0),"throw":a(1),"return":a(2)},typeof Symbol==="function"&&(i[Symbol.iterator]=function(){return this}),i;function a(t){return function(e){return c([t,e])}}function c(i){if(r)throw new TypeError("Generator is already executing.");while(u)try{if(r=1,n&&(o=i[0]&2?n["return"]:i[0]?n["throw"]||((o=n["return"])&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;if(n=0,o)i=[i[0]&2,o.value];switch(i[0]){case 0:case 1:o=i;break;case 4:u.label++;return{value:i[1],done:false};case 5:u.label++;n=i[1];i=[0];continue;case 7:i=u.ops.pop();u.trys.pop();continue;default:if(!(o=u.trys,o=o.length>0&&o[o.length-1])&&(i[0]===6||i[0]===2)){u=0;continue}if(i[0]===3&&(!o||i[1]>o[0]&&i[1]<o[3])){u.label=i[1];break}if(i[0]===6&&u.label<o[1]){u.label=o[1];o=i;break}if(o&&u.label<o[2]){u.label=o[2];u.ops.push(i);break}if(o[2])u.ops.pop();u.trys.pop();continue}i=e.call(t,u)}catch(t){i=[6,t];n=0}finally{r=o=0}if(i[0]&5)throw i[1];return{value:i[0]?i[1]:void 0,done:true}}};var pluginTelemetry=function(){var t=function t(t){return Uint8Array.from(t)};var e=Object.create;var r=Object.defineProperty;var n=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var u=Object.getPrototypeOf,s=Object.prototype.hasOwnProperty;var l=function(t,e,n){return e in t?r(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n};var d=function(t){return(typeof require==="undefined"?"undefined":L(require))<"u"?require:(typeof Proxy==="undefined"?"undefined":L(Proxy))<"u"?new Proxy(t,{get:function(t,e){return((typeof require==="undefined"?"undefined":L(require))<"u"?require:t)[e]}}):t}(function(t){if((typeof require==="undefined"?"undefined":L(require))<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var b=function(t,e){return function(){return e||t((e={exports:{}}).exports,e),e.exports}},w=function(t,e){for(var n in e)r(t,n,{get:e[n],enumerable:!0})},m=function(t,e,o,u){var a=true,c=false,f=undefined;if(e&&typeof e=="object"||typeof e=="function")try{var l=function(){var i=p.value;!s.call(t,i)&&i!==o&&r(t,i,{get:function(){return e[i]},enumerable:!(u=n(e,i))||u.enumerable})};for(var h=i(e)[Symbol.iterator](),p;!(a=(p=h.next()).done);a=true)l()}catch(t){c=true;f=t}finally{try{if(!a&&h.return!=null){h.return()}}finally{if(c){throw f}}}return t};var x=function(t,n,o){return o=t!=null?e(u(t)):{},m(n||!t||!t.__esModule?r(o,"default",{value:t,enumerable:!0}):o,t)},P=function(t){return m(r({},"__esModule",{value:!0}),t)};var j=function(t,e,r){return l(t,(typeof e==="undefined"?"undefined":L(e))!="symbol"?e+"":e,r),r};var H=b(function(t){"use strict";var e=function t(t){if(!Number.isSafeInteger(t)||t<0)throw new Error("Wrong positive integer: ".concat(t))};var r=function t(t){if(typeof t!="boolean")throw new Error("Expected boolean, not ".concat(t))};var n=function t(t){for(var e=arguments.length,r=new Array(e>1?e-1:0),n=1;n<e;n++){r[n-1]=arguments[n]}if(!y(t,Uint8Array))throw new Error("Expected Uint8Array");if(r.length>0&&!r.includes(t.length))throw new Error("Expected Uint8Array of length ".concat(r,", not of length=").concat(t.length))};var o=function t(t){if(typeof t!="function"||typeof t.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");e(t.outputLen),e(t.blockLen)};var i=function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")};var u=function t(t,e){n(t);var r=e.outputLen;if(t.length<r)throw new Error("digestInto() expects output buffer of length at least ".concat(r))};Object.defineProperty(t,"__esModule",{value:!0});t.output=t.exists=t.hash=t.bytes=t.bool=t.number=void 0;t.number=e;t.bool=r;t.bytes=n;t.hash=o;t.exists=i;t.output=u;var a={number:e,bool:r,bytes:n,hash:o,exists:i,output:u};t.default=a});var A=b(function(t){"use strict";var e=function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return e?{h:Number(t&o),l:Number(t>>i&o)}:{h:Number(t>>i&o)|0,l:Number(t&o)|0}};var r=function t(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;var n=new Uint32Array(t.length),o=new Uint32Array(t.length);for(var i=0;i<t.length;i++){var u=e(t[i],r),a=u.h,c=u.l;var s;s=[a,c],n[i]=s[0],o[i]=s[1],s}return[n,o]};var n=function t(t,e,r,n){var o=(e>>>0)+(n>>>0);return{h:t+r+(o/Math.pow(2,32)|0)|0,l:o|0}};Object.defineProperty(t,"__esModule",{value:!0});t.add5L=t.add5H=t.add4H=t.add4L=t.add3H=t.add3L=t.add=t.rotlBL=t.rotlBH=t.rotlSL=t.rotlSH=t.rotr32L=t.rotr32H=t.rotrBL=t.rotrBH=t.rotrSL=t.rotrSH=t.shrSL=t.shrSH=t.toBig=t.split=t.fromBig=void 0;var o=BigInt(Math.pow(2,32)-1),i=BigInt(32);t.fromBig=e;t.split=r;var u=function(t,e){return BigInt(t>>>0)<<i|BigInt(e>>>0)};t.toBig=u;var a=function(t,e,r){return t>>>r};t.shrSH=a;var c=function(t,e,r){return t<<32-r|e>>>r};t.shrSL=c;var s=function(t,e,r){return t>>>r|e<<32-r};t.rotrSH=s;var f=function(t,e,r){return t<<32-r|e>>>r};t.rotrSL=f;var l=function(t,e,r){return t<<64-r|e>>>r-32};t.rotrBH=l;var h=function(t,e,r){return t>>>r-32|e<<64-r};t.rotrBL=h;var p=function(t,e){return e};t.rotr32H=p;var d=function(t,e){return t};t.rotr32L=d;var v=function(t,e,r){return t<<r|e>>>32-r};t.rotlSH=v;var y=function(t,e,r){return e<<r|t>>>32-r};t.rotlSL=y;var b=function(t,e,r){return e<<r-32|t>>>64-r};t.rotlBH=b;var w=function(t,e,r){return t<<r-32|e>>>64-r};t.rotlBL=w;t.add=n;var g=function(t,e,r){return(t>>>0)+(e>>>0)+(r>>>0)};t.add3L=g;var m=function(t,e,r,n){return e+r+n+(t/Math.pow(2,32)|0)|0};t.add3H=m;var k=function(t,e,r,n){return(t>>>0)+(e>>>0)+(r>>>0)+(n>>>0)};t.add4L=k;var O=function(t,e,r,n,o){return e+r+n+o+(t/Math.pow(2,32)|0)|0};t.add4H=O;var x=function(t,e,r,n,o){return(t>>>0)+(e>>>0)+(r>>>0)+(n>>>0)+(o>>>0)};t.add5L=x;var S=function(t,e,r,n,o,i){return e+r+n+o+i+(t/Math.pow(2,32)|0)|0};t.add5H=S;var L={fromBig:e,split:r,toBig:u,shrSH:a,shrSL:c,rotrSH:s,rotrSL:f,rotrBH:l,rotrBL:h,rotr32H:p,rotr32L:d,rotlSH:v,rotlSL:y,rotlBH:b,rotlBL:w,add:n,add3L:g,add3H:m,add4L:k,add4H:O,add5H:S,add5L:x};t.default=L});var I=b(function(t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.crypto=void 0;var e=d("crypto");t.crypto=e&&typeof e=="object"&&"webcrypto"in e?e.webcrypto:void 0});var T=b(function(t){"use strict";var e=function t(t){if(!v(t))throw new Error("Uint8Array expected");var e="";for(var r=0;r<t.length;r++)e+=k[t[r]];return e};var r=function t(t){if(typeof t!="string")throw new Error("hex string expected, got "+(typeof t==="undefined"?"undefined":L(t)));var e=t.length;if(e%2)throw new Error("padded hex string expected, got unpadded hex of length "+e);var r=new Uint8Array(e/2);for(var n=0;n<r.length;n++){var o=n*2,i=t.slice(o,o+2),u=Number.parseInt(i,16);if(Number.isNaN(u)||u<0)throw new Error("Invalid byte sequence");r[n]=u}return r};var n=function t(t){if(typeof t!="string")throw new Error("utf8ToBytes expected string, got ".concat(typeof t==="undefined"?"undefined":L(t)));return new Uint8Array(new TextEncoder().encode(t))};var o=function t(t){if(typeof t=="string"&&(t=n(t)),!v(t))throw new Error("expected Uint8Array, got ".concat(typeof t==="undefined"?"undefined":L(t)));return t};var i=function t(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++){e[r]=arguments[r]}var n=new Uint8Array(e.reduce(function(t,e){return t+e.length},0)),o=0;return e.forEach(function(t){if(!v(t))throw new Error("Uint8Array expected");n.set(t,o),o+=t.length}),n};var u=function t(t,e){if(e!==void 0&&_.call(e)!=="[object Object]")throw new Error("Options should be object or undefined");return Object.assign(t,e)};var c=function t(t){var e=function(e){return t().update(o(e)).digest()},r=t();return e.outputLen=r.outputLen,e.blockLen=r.blockLen,e.create=function(){return t()},e};var s=function t(t){var e=function(e,r){return t(r).update(o(e)).digest()},r=t({});return e.outputLen=r.outputLen,e.blockLen=r.blockLen,e.create=function(e){return t(e)},e};var l=function t(t){var e=function(e,r){return t(r).update(o(e)).digest()},r=t({});return e.outputLen=r.outputLen,e.blockLen=r.blockLen,e.create=function(e){return t(e)},e};var p=function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:32;if(d.crypto&&typeof d.crypto.getRandomValues=="function")return d.crypto.getRandomValues(new Uint8Array(t));throw new Error("crypto.getRandomValues must be defined")};Object.defineProperty(t,"__esModule",{value:!0});t.randomBytes=t.wrapXOFConstructorWithOpts=t.wrapConstructorWithOpts=t.wrapConstructor=t.checkOpts=t.Hash=t.concatBytes=t.toBytes=t.utf8ToBytes=t.asyncLoop=t.nextTick=t.hexToBytes=t.bytesToHex=t.isLE=t.rotr=t.createView=t.u32=t.u8=void 0;var d=I(),v=function(t){return y(t,Uint8Array)},b=function(t){return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)};t.u8=b;var w=function(t){return new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4))};t.u32=w;var g=function(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)};t.createView=g;var m=function(t,e){return t<<32-e|t>>>e};t.rotr=m;t.isLE=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!t.isLE)throw new Error("Non little-endian hardware is not supported");var k=Array.from({length:256},function(t,e){return e.toString(16).padStart(2,"0")});t.bytesToHex=e;t.hexToBytes=r;var O=function(){var t=a(function(){return B(this,function(t){return[2]})});return function e(){return t.apply(this,arguments)}}();t.nextTick=O;function x(t,e,r){return S.apply(this,arguments)}function S(){S=a(function(e,r,n){var o,i,u,a;return B(this,function(c){switch(c.label){case 0:o=Date.now();i=0;c.label=1;case 1:if(!(i<e))return[3,5];n(i);u=Date.now()-o;a=u>=0&&u<r;if(a)return[3,3];return[4,(0,t.nextTick)()];case 2:a=(c.sent(),o+=u);c.label=3;case 3:a;c.label=4;case 4:i++;return[3,1];case 5:return[2]}})});return S.apply(this,arguments)}t.asyncLoop=x;t.utf8ToBytes=n;t.toBytes=o;t.concatBytes=i;var P=function(){function t(){f(this,t)}h(t,[{key:"clone",value:function t(){return this._cloneInto()}}]);return t}();t.Hash=P;var _={}.toString;t.checkOpts=u;t.wrapConstructor=c;t.wrapConstructorWithOpts=s;t.wrapXOFConstructorWithOpts=l;t.randomBytes=p});var U=b(function(t){"use strict";var e=function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:24;var r=new Uint32Array(10);for(var n=24-e;n<24;n++){for(var o=0;o<10;o++)r[o]=t[o]^t[o+10]^t[o+20]^t[o+30]^t[o+40];for(var a=0;a<10;a+=2){var c=(a+8)%10,s=(a+2)%10,f=r[s],l=r[s+1],h=B(f,l,1)^r[c],p=I(f,l,1)^r[c+1];for(var d=0;d<50;d+=10)t[a+d]^=h,t[a+d+1]^=p}var v=t[2],y=t[3];for(var b=0;b<24;b++){var w=u[b],g=B(v,y,w),m=I(v,y,w),k=i[b];v=t[k],y=t[k+1],t[k]=g,t[k+1]=m}for(var O=0;O<50;O+=10){for(var x=0;x<10;x++)r[x]=t[O+x];for(var S=0;S<10;S++)t[O+S]^=~r[(S+2)%10]&r[(S+4)%10]}t[0]^=_[n],t[1]^=j[n]}r.fill(0)};Object.defineProperty(t,"__esModule",{value:!0});t.shake256=t.shake128=t.keccak_512=t.keccak_384=t.keccak_256=t.keccak_224=t.sha3_512=t.sha3_384=t.sha3_256=t.sha3_224=t.Keccak=t.keccakP=void 0;var r=H(),n=A(),o=T(),i=[],u=[],a=[],c=BigInt(0),s=BigInt(1),l=BigInt(2),p=BigInt(7),d=BigInt(256),y=BigInt(113);for(var b=0,w=s,g=1,m=0;b<24;b++){var k;k=[m,(2*g+3*m)%5],g=k[0],m=k[1],k,i.push(2*(5*m+g)),u.push((b+1)*(b+2)/2%64);var x=c;for(var L=0;L<7;L++)w=(w<<s^(w>>p)*y)%d,w&l&&(x^=s<<(s<<BigInt(L))-s);a.push(x)}var P=S((0,n.split)(a,!0),2),_=P[0],j=P[1],B=function(t,e,r){return r>32?(0,n.rotlBH)(t,e,r):(0,n.rotlSH)(t,e,r)},I=function(t,e,r){return r>32?(0,n.rotlBL)(t,e,r):(0,n.rotlSL)(t,e,r)};t.keccakP=e;var U=function(t){v(i,t);var n=E(i);function i(t,e,u){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,c=arguments.length>4&&arguments[4]!==void 0?arguments[4]:24;f(this,i);var s;if(s=n.call(this),s.blockLen=t,s.suffix=e,s.outputLen=u,s.enableXOF=a,s.rounds=c,s.pos=0,s.posOut=0,s.finished=!1,s.destroyed=!1,(0,r.number)(u),0>=s.blockLen||s.blockLen>=200)throw new Error("Sha3 supports only keccak-f1600 function");s.state=new Uint8Array(200),s.state32=(0,o.u32)(s.state);return O(s)}h(i,[{key:"keccak",value:function t(){e(this.state32,this.rounds),this.posOut=0,this.pos=0}},{key:"update",value:function t(t){(0,r.exists)(this);var e=this,n=e.blockLen,i=e.state;t=(0,o.toBytes)(t);var u=t.length;for(var a=0;a<u;){var c=Math.min(n-this.pos,u-a);for(var s=0;s<c;s++)i[this.pos++]^=t[a++];this.pos===n&&this.keccak()}return this}},{key:"finish",value:function t(){if(this.finished)return;this.finished=!0;var t=this,e=t.state,r=t.suffix,n=t.pos,o=t.blockLen;e[n]^=r,r&128&&n===o-1&&this.keccak(),e[o-1]^=128,this.keccak()}},{key:"writeInto",value:function t(t){(0,r.exists)(this,!1),(0,r.bytes)(t),this.finish();var e=this.state,n=this,o=n.blockLen;for(var i=0,u=t.length;i<u;){this.posOut>=o&&this.keccak();var a=Math.min(o-this.posOut,u-i);t.set(e.subarray(this.posOut,this.posOut+a),i),this.posOut+=a,i+=a}return t}},{key:"xofInto",value:function t(t){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(t)}},{key:"xof",value:function t(t){return(0,r.number)(t),this.xofInto(new Uint8Array(t))}},{key:"digestInto",value:function t(t){if((0,r.output)(t,this),this.finished)throw new Error("digest() was already called");return this.writeInto(t),this.destroy(),t}},{key:"digest",value:function t(){return this.digestInto(new Uint8Array(this.outputLen))}},{key:"destroy",value:function t(){this.destroyed=!0,this.state.fill(0)}},{key:"_cloneInto",value:function t(t){var e=this,r=e.blockLen,n=e.suffix,o=e.outputLen,u=e.rounds,a=e.enableXOF;return t||(t=new i(r,n,o,a,u)),t.state32.set(this.state32),t.pos=this.pos,t.posOut=this.posOut,t.finished=this.finished,t.rounds=u,t.suffix=n,t.outputLen=o,t.enableXOF=a,t.destroyed=this.destroyed,t}}]);return i}(o.Hash);t.Keccak=U;var C=function(t,e,r){return(0,o.wrapConstructor)(function(){return new U(e,t,r)})};t.sha3_224=C(6,144,224/8);t.sha3_256=C(6,136,256/8);t.sha3_384=C(6,104,384/8);t.sha3_512=C(6,72,512/8);t.keccak_224=C(1,144,224/8);t.keccak_256=C(1,136,256/8);t.keccak_384=C(1,104,384/8);t.keccak_512=C(1,72,512/8);var M=function(t,e,r){return(0,o.wrapXOFConstructorWithOpts)(function(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return new U(e,t,n.dkLen===void 0?r:n.dkLen,!0)})};t.shake128=M(31,168,128/8);t.shake256=M(31,136,256/8)});var C=b(function(t,e){"use strict";var r=function t(t){var e=8n,r=0n;var n=true,o=false,i=undefined;try{for(var u=t.values()[Symbol.iterator](),a;!(n=(a=u.next()).done);n=true){var c=a.value;var s=BigInt(c);r=(r<<e)+s}}catch(t){o=true;i=t}finally{try{if(!n&&u.return!=null){u.return()}}finally{if(o){throw i}}}return r};var n=U(),o=n.sha3_512,i=24,u=32,a=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:4,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Math.random;var r="";for(;r.length<t;)r=r+Math.floor(e()*36).toString(36);return r};var c=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"";return r(o(t)).toString(36).slice(1)},s=Array.from({length:26},function(t,e){return String.fromCharCode(e+97)}),f=function(t){return s[Math.floor(t()*s.length)]},l=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=t.globalObj,r=e===void 0?(typeof global==="undefined"?"undefined":L(global))<"u"?global:(typeof window==="undefined"?"undefined":L(window))<"u"?window:{}:e,n=t.random,o=n===void 0?Math.random:n;var i=Object.keys(r).toString(),s=i.length?i+a(u,o):a(u,o);return c(s).substring(0,u)},h=function(t){return function(){return t++}},p=476782367,d=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=t.random,r=e===void 0?Math.random:e,n=t.counter,o=n===void 0?h(Math.floor(r()*p)):n,u=t.length,s=u===void 0?i:u,d=t.fingerprint,v=d===void 0?l({random:r}):d;return function t(){var t=f(r),e=Date.now().toString(36),n=o().toString(36),i=a(s,r),u="".concat(e+i+n+v);return"".concat(t+c(u).substring(1,s))}},v=d(),y=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=e.minLength,n=r===void 0?2:r,o=e.maxLength,i=o===void 0?u:o;var a=t.length,c=/^[0-9a-z]+$/;try{if(typeof t=="string"&&a>=n&&a<=i&&c.test(t))return!0}finally{}return!1};e.exports.getConstants=function(){return{defaultLength:i,bigLength:u}};e.exports.init=d;e.exports.createId=v;e.exports.bufToBigInt=r;e.exports.createCounter=h;e.exports.createFingerprint=l;e.exports.isCuid=y});var M=b(function(t,e){"use strict";var r=C(),n=r.createId,o=r.init,i=r.getConstants,u=r.isCuid;e.exports.createId=n;e.exports.init=o;e.exports.getConstants=i;e.exports.isCuid=u});var R={};w(R,{pluginSecureProxy:function(){return tc}});var F=x(M(),1);var K="https://secure-proxy.orama.run",q="/init",N="/chat",D="/query";var X,V;var W="text-embedding-ada-002",z="gte-small",$="gpt-4-1106-preview",G="gpt-4",J="gpt-3.5-turbo",Q="gpt-3.5-turbo-16k",Y=(X={},p(X,"openai/".concat(W),"openai/".concat(W)),p(X,"orama/".concat(z),"orama/".concat(z)),X),Z=(V={},p(V,"openai/".concat(J),J),p(V,"openai/".concat(G),G),p(V,"openai/".concat(Q),Q),p(V,"openai/".concat($),$),V),tt=function(){function e(t){f(this,e);j(this,"CSRFToken","");j(this,"ready");j(this,"api_key");j(this,"publicKey");this.api_key=t.api_key,this.ready=this.init().then(function(){return!0}).catch(function(t){return console.log(t),!1})}h(e,[{key:"generateEmbeddings",value:function t(t,e){var r=this;return a(function(){var n,o;return B(this,function(i){switch(i.label){case 0:return[4,r.ready];case 1:if(!i.sent())return[2,(console.log("OramaProxy had an error during the initialization"),[])];n="".concat(K).concat(D,"?apiKey=").concat(r.api_key);return[4,fetch(n,{method:"POST",headers:r.getHeaders(),body:new URLSearchParams({query:t,csrf:r.CSRFToken,model:Y[e]}).toString()})];case 2:return[4,i.sent().json()];case 3:o=i.sent();return[2,(o.length===1&&(o=o[0]),o)]}})})()}},{key:"chat",value:function t(t){var e=this;return a(function(){var r,n,i,u,a,c,s,f,l;return B(this,function(h){switch(h.label){case 0:return[4,e.ready];case 1:if(!h.sent())return[2,(console.log("OramaProxy had an error during the initialization"),"")];r="";n=false,i=false;h.label=2;case 2:h.trys.push([2,7,8,13]);a=o(e.chatStream(t));h.label=3;case 3:return[4,a.next()];case 4:if(!(n=!(c=h.sent()).done))return[3,6];s=c.value;f=s;r+=f;h.label=5;case 5:n=false;return[3,3];case 6:return[3,13];case 7:l=h.sent();i=true;u=l;return[3,13];case 8:h.trys.push([8,,11,12]);if(!(n&&a.return!=null))return[3,10];return[4,a.return()];case 9:h.sent();h.label=10;case 10:return[3,12];case 11:if(i){throw u}return[7];case 12:return[7];case 13:return[2,r]}})})()}},{key:"chatStream",value:function t(t){var e=this;return _(function(){var r,n,o,i,u,s,f,l,h;return B(this,function(p){switch(p.label){case 0:r="".concat(K).concat(N,"?apiKey=").concat(e.api_key),n=t.messages;o=e.publicKey;if(!o)return[3,2];return[4,c(Promise.all(n.map(function(){var t=a(function(t){var r,n,o;return B(this,function(i){switch(i.label){case 0:if(!(!t.content||typeof t.content!="string"))return[3,1];r=t;return[3,3];case 1:n=[g({},t)];o={};return[4,tu(e.publicKey,t.content)];case 2:r=k.apply(void 0,n.concat([(o.content=i.sent(),o)]));i.label=3;case 3:return[2,r]}})});return function(e){return t.apply(this,arguments)}}())))];case 1:o=n=p.sent();p.label=2;case 2:o;return[4,c(fetch(r,{method:"POST",headers:e.getHeaders(),body:new URLSearchParams({messages:JSON.stringify(n),csrf:e.CSRFToken,model:Z[t.model]}).toString()}))];case 3:i=p.sent();if(!i.ok||i.body==null)throw i.statusText;u=i.body.getReader(),s=new TextDecoder;p.label=4;case 4:return[4,c(u.read())];case 5:f=p.sent(),l=f.value,h=f.done;if(h)return[3,8];return[4,s.decode(l,{stream:!0})];case 6:p.sent();p.label=7;case 7:return[3,4];case 8:return[2]}})})()}},{key:"init",value:function e(){var e=this;return a(function(){var r,n,o,i;return B(this,function(u){switch(u.label){case 0:n="".concat(K).concat(q,"?apiKey=").concat(e.api_key);return[4,fetch(n,{headers:{referer:e.getReferrer()}})];case 1:return[4,u.sent().json()];case 2:o=u.sent();e.CSRFToken=o.csrfToken;i=((r=o.encryption)===null||r===void 0?void 0:r.enabled)===!0;if(!i)return[3,4];return[4,te(t(o.encryption.publicKey))];case 3:i=e.publicKey=u.sent();u.label=4;case 4:i;return[2]}})})()}},{key:"isServer",value:function t(){return(typeof window==="undefined"?"undefined":L(window))>"u"}},{key:"getHeaders",value:function t(){return{"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",referer:this.getReferrer()}}},{key:"getReferrer",value:function t(){return this.isServer()?"http://localhost":window.location.href}}]);return e}();function te(t){return tr.apply(this,arguments)}function tr(){tr=a(function(t){return B(this,function(e){switch(e.label){case 0:return[4,crypto.subtle.importKey("spki",t,{name:"RSA-OAEP",hash:{name:"SHA-256"}},!0,["encrypt"])];case 1:return[2,e.sent()]}})});return tr.apply(this,arguments)}function tn(t,e){return to.apply(this,arguments)}function to(){to=a(function(t,e){var r;return B(this,function(n){switch(n.label){case 0:return[4,crypto.subtle.encrypt({name:"RSA-OAEP"},t,e)];case 1:r=n.sent();return[2,new Uint8Array(r)]}})});return to.apply(this,arguments)}var ti=50;function tu(t,e){return ta.apply(this,arguments)}function ta(){ta=a(function(t,e){var r,n,o,i,u;return B(this,function(a){switch(a.label){case 0:r=new TextEncoder().encode(e),n=[];o=0;a.label=1;case 1:if(!(o<r.length))return[3,4];i=r.subarray(o,o+ti);return[4,tn(t,i)];case 2:u=a.sent();n.push(Array.from(u));a.label=3;case 3:o+=ti;return[3,1];case 4:return[2,n]}})});return ta.apply(this,arguments)}function tc(t){return ts.apply(this,arguments)}function ts(){ts=a(function(t){var e;return B(this,function(r){if(!t.apiKey)throw new Error('Missing "apiKey" parameter for plugin-telemetry');if(!t.defaultProperty)throw new Error('Missing "defaultProperty" parameter for plugin-telemetry');if(!t.model)throw new Error('Missing "model" parameter for plugin-telemetry');e=new tt({api_key:t.apiKey});return[2,{name:"secure-proxy",beforeSearch:function r(r,n){return a(function(){var r,o,i,u,a;return B(this,function(c){switch(c.label){case 0:if(n.mode!=="vector"&&n.mode!=="hybrid"||(n===null||n===void 0?void 0:(r=n.vector)===null||r===void 0?void 0:r.value))return[2];if(!n.term)throw new Error('Neither "term" nor "vector" parameters were provided');i=n.term;return[4,e.generateEmbeddings(i,t.model)];case 1:u=c.sent();n.vector||(n.vector={property:(a=n===null||n===void 0?void 0:(o=n.vector)===null||o===void 0?void 0:o.property)!==null&&a!==void 0?a:t.defaultProperty,value:u}),n.vector.value=u;return[2]}})})()}}]})});return ts.apply(this,arguments)}return P(R)}();//# sourceMappingURL=index.global.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["src_exports","__export","pluginSecureProxy","SECURE_PROXY_ENDPOINT","INIT_URL","SEARCH_URL","isServer","getReferer","getCSRFToken","apiKey","getEmbeddings","query","csrfToken","body","pluginParams","_db","params","term","embeddings"],"mappings":"mcAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,uBAAAE,IAeA,IAAMC,EAAwB,iCACxBC,EAAW,GAAGD,CAAqB,QACnCE,EAAa,GAAGF,CAAqB,SAE3C,SAASG,GAAW,CAClB,OAAO,OAAO,OAAW,GAC3B,CAEA,SAASC,GAAa,CACpB,OAAOD,EAAS,EAAI,mBAAqB,OAAO,SAAS,IAC3D,CAEA,eAAeE,EAAaC,EAAuC,CAOjE,OANiB,MAAM,MAAM,GAAGL,CAAQ,WAAWK,CAAM,GAAI,CAC3D,QAAS,CACP,QAASF,EAAW,CACtB,CACF,CAAC,GAEe,KAAK,CACvB,CAEA,eAAeG,EAAcD,EAAgBE,EAAeC,EAAgD,CAC1G,IAAMC,EAAO,IAAI,gBAAgB,CAAE,MAAAF,EAAO,KAAMC,CAAU,CAAC,EAAE,SAAS,EAWtE,OATiB,MAAM,MAAM,GAAGP,CAAU,WAAWI,CAAM,GAAI,CAC7D,OAAQ,OACR,QAAS,CACP,eAAgB,mDAChB,QAASF,EAAW,CACtB,EACA,KAAAM,CACF,CAAC,GAEe,KAAK,CACvB,CAEA,eAAsBX,EAAkBY,EAA0D,CAChG,GAAI,CAACA,EAAa,OAAQ,MAAM,IAAI,MAAM,iDAAiD,EAC3F,GAAI,CAACA,EAAa,gBAAiB,MAAM,IAAI,MAAM,0DAA0D,EAE7G,GAAM,CAAE,UAAAF,CAAU,EAAI,MAAMJ,EAAaM,EAAa,MAAM,EAE5D,MAAO,CACL,KAAM,eAEN,MAAM,aAAiCC,EAAeC,EAA6C,CAKjG,GAJIA,EAAO,OAAS,UAAYA,EAAO,OAAS,UAI5CA,GAAQ,QAAQ,MAClB,OAGF,GAAI,CAACA,EAAO,KACV,MAAM,IAAI,MAAM,sDAAsD,EAGxE,IAAMC,EAAOD,EAAO,KACdE,EAAa,MAAMR,EAAcI,EAAa,OAAQG,EAAML,CAAS,EAEtEI,EAAO,SACVA,EAAO,OAAS,CAEd,SAAUA,GAAQ,QAAQ,UAAYF,EAAa,gBACnD,MAAOI,CACT,GAGFF,EAAO,OAAO,MAAQE,CACxB,CACF,CACF","sourcesContent":["import type { AnyOrama, SearchParams, TypedDocument, OramaPluginAsync } from '@orama/orama'\n\ntype InitResponse = {\n clientID: string\n ttl: number\n csrfToken: string\n}\n\ntype EmbeddingsResponse = number[]\n\nexport type SecureProxyPluginOptions = {\n apiKey: string\n defaultProperty: string\n}\n\nconst SECURE_PROXY_ENDPOINT = 'https://secure-proxy.orama.run'\nconst INIT_URL = `${SECURE_PROXY_ENDPOINT}/init`\nconst SEARCH_URL = `${SECURE_PROXY_ENDPOINT}/query`\n\nfunction isServer() {\n return typeof window === 'undefined'\n}\n\nfunction getReferer() {\n return isServer() ? 'http://localhost' : window.location.href\n}\n\nasync function getCSRFToken(apiKey: string): Promise<InitResponse> {\n const response = await fetch(`${INIT_URL}?apiKey=${apiKey}`, {\n headers: {\n Referer: getReferer()\n }\n })\n\n return response.json()\n}\n\nasync function getEmbeddings(apiKey: string, query: string, csrfToken: string): Promise<EmbeddingsResponse> {\n const body = new URLSearchParams({ query, csrf: csrfToken }).toString()\n\n const response = await fetch(`${SEARCH_URL}?apiKey=${apiKey}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n Referer: getReferer()\n },\n body\n })\n\n return response.json()\n}\n\nexport async function pluginSecureProxy(pluginParams: SecureProxyPluginOptions): OramaPluginAsync {\n if (!pluginParams.apiKey) throw new Error('Missing \"apiKey\" parameter for plugin-telemetry')\n if (!pluginParams.defaultProperty) throw new Error('Missing \"defaultProperty\" parameter for plugin-telemetry')\n\n const { csrfToken } = await getCSRFToken(pluginParams.apiKey)\n\n return {\n name: 'secure-proxy',\n\n async beforeSearch<T extends AnyOrama>(_db: AnyOrama, params: SearchParams<T, TypedDocument<any>>) {\n if (params.mode !== 'vector' && params.mode !== 'hybrid') {\n return\n }\n\n if (params?.vector?.value) {\n return\n }\n\n if (!params.term) {\n throw new Error('Neither \"term\" nor \"vector\" parameters were provided')\n }\n\n const term = params.term\n const embeddings = await getEmbeddings(pluginParams.apiKey, term, csrfToken)\n\n if (!params.vector) {\n params.vector = {\n // @ts-expect-error - vector param is not present in full-text search\n property: params?.vector?.property ?? pluginParams.defaultProperty,\n value: embeddings\n }\n }\n\n params.vector.value = embeddings\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/@noble+hashes@1.3.2/node_modules/@noble/hashes/src/_assert.ts","../../../node_modules/.pnpm/@noble+hashes@1.3.2/node_modules/@noble/hashes/src/_u64.ts","../../../node_modules/.pnpm/@noble+hashes@1.3.2/node_modules/@noble/hashes/src/cryptoNode.ts","../../../node_modules/.pnpm/@noble+hashes@1.3.2/node_modules/@noble/hashes/src/utils.ts","../../../node_modules/.pnpm/@noble+hashes@1.3.2/node_modules/@noble/hashes/src/sha3.ts","../../../node_modules/.pnpm/@paralleldrive+cuid2@2.2.2/node_modules/@paralleldrive/cuid2/src/index.js","../../../node_modules/.pnpm/@paralleldrive+cuid2@2.2.2/node_modules/@paralleldrive/cuid2/index.js","../src/index.ts","../../../node_modules/.pnpm/@oramacloud+client@1.0.4_typescript@5.0.3/node_modules/@oramacloud/client/src/client.ts","../../../node_modules/.pnpm/@oramacloud+client@1.0.4_typescript@5.0.3/node_modules/@oramacloud/client/src/constants.ts","../../../node_modules/.pnpm/@oramacloud+client@1.0.4_typescript@5.0.3/node_modules/@oramacloud/client/src/proxy.ts"],"names":["number","n","exports","bool","b","bytes","lengths","hash","exists","instance","checkFinished","output","out","min","assert","U32_MASK64","_32n","fromBig","le","split","lst","Ah","Al","i","h","l","toBig","shrSH","_l","s","shrSL","rotrSH","rotrSL","rotrBH","rotrBL","rotr32H","_h","rotr32L","rotlSH","rotlSL","rotlBH","rotlBL","add","Bh","Bl","add3L","Cl","add3H","low","Ch","add4L","Dl","add4H","Dh","add5L","El","add5H","Eh","u64","nc","crypto_1","u8a","a","u8","arr","u32","createView","rotr","word","shift","hexes","_","bytesToHex","hex","hexToBytes","len","array","j","hexByte","byte","nextTick","asyncLoop","iters","tick","cb","ts","diff","utf8ToBytes","str","toBytes","data","concatBytes","arrays","r","sum","pad","Hash","toStr","checkOpts","defaults","opts","wrapConstructor","hashCons","hashC","msg","tmp","wrapConstructorWithOpts","wrapXOFConstructorWithOpts","randomBytes","bytesLength","_assert_js_1","_u64_js_1","utils_js_1","SHA3_PI","SHA3_ROTL","_SHA3_IOTA","_0n","_1n","_2n","_7n","_256n","_0x71n","round","R","x","y","t","SHA3_IOTA_H","SHA3_IOTA_L","rotlH","rotlL","keccakP","rounds","B","idx1","idx0","B0","B1","Th","Tl","curH","curL","PI","Keccak","_Keccak","blockLen","suffix","outputLen","enableXOF","state","pos","take","bufferOut","to","gen","genShake","require_src","__commonJSMin","module","sha3","defaultLength","bigLength","createEntropy","length","random","entropy","bufToBigInt","buf","bits","value","bi","input","alphabet","randomLetter","createFingerprint","globalObj","globals","sourceString","createCounter","count","initialCountMax","init","counter","fingerprint","firstLetter","time","salt","hashInput","createId","isCuid","id","minLength","maxLength","regex","require_cuid2","getConstants","src_exports","__export","pluginSecureProxy","import_cuid2","ORAMA_PROXY_ENDPOINT","ORAMA_PROXY_INIT_ENDPOINT","ORAMA_PROXY_CHAT_ENDPOINT","ORAMA_PROXY_EMBEDDINGS_ENDPOINT","OPENAI_EMBEDDINGS_MODEL_ADA","ORAMA_EMBEDDINGS_MODEL_GTE_SMALL","OPENAI_CHAT_MODEL_GPT4_1106_PREVIEW","OPENAI_CHAT_MODEL_GPT4","OPENAI_CHAT_MODEL_GPT3_5_TURBO","OPENAI_CHAT_MODEL_GPT3_3_5_TURBO_16K","embeddingsModels","chatModels","OramaProxy","params","__publicField","err","text","model","endpoint","embeddings","response","messages","message","encryptData","reader","decoder","done","importPublicKey","restoreKey","keyData","encryptPieceData","publicKey","encodedData","encryptedData","BATCH_SIZE","item","pluginParams","proxy","D","_db","term"],"mappings":"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","sourcesContent":["function number(n: number) {\n if (!Number.isSafeInteger(n) || n < 0) throw new Error(`Wrong positive integer: ${n}`);\n}\n\nfunction bool(b: boolean) {\n if (typeof b !== 'boolean') throw new Error(`Expected boolean, not ${b}`);\n}\n\nfunction bytes(b: Uint8Array | undefined, ...lengths: number[]) {\n if (!(b instanceof Uint8Array)) throw new Error('Expected Uint8Array');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\n\ntype Hash = {\n (data: Uint8Array): Uint8Array;\n blockLen: number;\n outputLen: number;\n create: any;\n};\nfunction hash(hash: Hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\n\nfunction exists(instance: any, checkFinished = true) {\n if (instance.destroyed) throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished) throw new Error('Hash#digest() has already been called');\n}\nfunction output(out: any, instance: any) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\n\nexport { number, bool, bytes, hash, exists, output };\n\nconst assert = { number, bool, bytes, hash, exists, output };\nexport default assert;\n","const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nfunction fromBig(n: bigint, le = false) {\n if (le) return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\n\nfunction split(lst: bigint[], le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\n\nconst toBig = (h: number, l: number) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h: number, _l: number, s: number) => h >>> s;\nconst shrSL = (h: number, l: number, s: number) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h: number, l: number, s: number) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h: number, l: number, s: number) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h: number, l: number, s: number) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h: number, l: number, s: number) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h: number, l: number) => l;\nconst rotr32L = (h: number, _l: number) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h: number, l: number, s: number) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h: number, l: number, s: number) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h: number, l: number, s: number) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h: number, l: number, s: number) => (h << (s - 32)) | (l >>> (64 - s));\n\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah: number, Al: number, Bh: number, Bl: number) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al: number, Bl: number, Cl: number) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low: number, Ah: number, Bh: number, Ch: number) =>\n (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al: number, Bl: number, Cl: number, Dl: number) =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number) =>\n (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al: number, Bl: number, Cl: number, Dl: number, El: number) =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number) =>\n (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n\n// prettier-ignore\nexport {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n","// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// See utils.ts for details.\n// The file will throw on node.js 14 and earlier.\n// @ts-ignore\nimport * as nc from 'node:crypto';\nexport const crypto =\n nc && typeof nc === 'object' && 'webcrypto' in nc ? (nc.webcrypto as any) : undefined;\n","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated, we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\n\n// prettier-ignore\nexport type TypedArray = Int8Array | Uint8ClampedArray | Uint8Array |\n Uint16Array | Int16Array | Uint32Array | Int32Array;\n\nconst u8a = (a: any): a is Uint8Array => a instanceof Uint8Array;\n// Cast array to different type\nexport const u8 = (arr: TypedArray) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr: TypedArray) =>\n new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n\n// Cast array to view\nexport const createView = (arr: TypedArray) =>\n new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word: number, shift: number) => (word << (32 - shift)) | (word >>> shift);\n\n// big-endian hardware is rare. Just in case someone still decides to run hashes:\n// early-throw an error because we don't support BE yet.\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\nif (!isLE) throw new Error('Non little-endian hardware is not supported');\n\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n i.toString(16).padStart(2, '0')\n);\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n if (!u8a(bytes)) throw new Error('Uint8Array expected');\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n const len = hex.length;\n if (len % 2) throw new Error('padded hex string expected, got unpadded hex of length ' + len);\n const array = new Uint8Array(len / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0) throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => {};\n\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters: number, tick: number, cb: (i: number) => void) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick) continue;\n await nextTick();\n ts += diff;\n }\n}\n\n// Global symbols in both browsers and Node.js since v11\n// See https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\n\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n if (typeof str !== 'string') throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\nexport type Input = Uint8Array | string;\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data: Input): Uint8Array {\n if (typeof data === 'string') data = utf8ToBytes(data);\n if (!u8a(data)) throw new Error(`expected Uint8Array, got ${typeof data}`);\n return data;\n}\n\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n const r = new Uint8Array(arrays.reduce((sum, a) => sum + a.length, 0));\n let pad = 0; // walk through each item, ensure they have proper type\n arrays.forEach((a) => {\n if (!u8a(a)) throw new Error('Uint8Array expected');\n r.set(a, pad);\n pad += a.length;\n });\n return r;\n}\n\n// For runtime check if class implements interface\nexport abstract class Hash<T extends Hash<T>> {\n abstract blockLen: number; // Bytes per block\n abstract outputLen: number; // Bytes in output\n abstract update(buf: Input): this;\n // Writes digest into buf\n abstract digestInto(buf: Uint8Array): void;\n abstract digest(): Uint8Array;\n /**\n * Resets internal state. Makes Hash instance unusable.\n * Reset is impossible for keyed hashes if key is consumed into state. If digest is not consumed\n * by user, they will need to manually call `destroy()` when zeroing is necessary.\n */\n abstract destroy(): void;\n /**\n * Clones hash instance. Unsafe: doesn't check whether `to` is valid. Can be used as `clone()`\n * when no options are passed.\n * Reasons to use `_cloneInto` instead of clone: 1) performance 2) reuse instance => all internal\n * buffers are overwritten => causes buffer overwrite which is used for digest in some cases.\n * There are no guarantees for clean-up because it's impossible in JS.\n */\n abstract _cloneInto(to?: T): T;\n // Safe version that clones internal state\n clone(): T {\n return this._cloneInto();\n }\n}\n\n/**\n * XOF: streaming API to read digest in chunks.\n * Same as 'squeeze' in keccak/k12 and 'seek' in blake3, but more generic name.\n * When hash used in XOF mode it is up to user to call '.destroy' afterwards, since we cannot\n * destroy state, next call can require more bytes.\n */\nexport type HashXOF<T extends Hash<T>> = Hash<T> & {\n xof(bytes: number): Uint8Array; // Read 'bytes' bytes from digest stream\n xofInto(buf: Uint8Array): Uint8Array; // read buf.length bytes from digest stream into buf\n};\n\nconst toStr = {}.toString;\ntype EmptyObj = {};\nexport function checkOpts<T1 extends EmptyObj, T2 extends EmptyObj>(\n defaults: T1,\n opts?: T2\n): T1 & T2 {\n if (opts !== undefined && toStr.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged as T1 & T2;\n}\n\nexport type CHash = ReturnType<typeof wrapConstructor>;\n\nexport function wrapConstructor<T extends Hash<T>>(hashCons: () => Hash<T>) {\n const hashC = (msg: Input): Uint8Array => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\n\nexport function wrapConstructorWithOpts<H extends Hash<H>, T extends Object>(\n hashCons: (opts?: T) => Hash<H>\n) {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts: T) => hashCons(opts);\n return hashC;\n}\n\nexport function wrapXOFConstructorWithOpts<H extends HashXOF<H>, T extends Object>(\n hashCons: (opts?: T) => HashXOF<H>\n) {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts: T) => hashCons(opts);\n return hashC;\n}\n\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nexport function randomBytes(bytesLength = 32): Uint8Array {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n","import { bytes, exists, number, output } from './_assert.js';\nimport { rotlBH, rotlBL, rotlSH, rotlSL, split } from './_u64.js';\nimport {\n Hash,\n u32,\n Input,\n toBytes,\n wrapConstructor,\n wrapXOFConstructorWithOpts,\n HashXOF,\n} from './utils.js';\n\n// SHA3 (keccak) is based on a new design: basically, the internal state is bigger than output size.\n// It's called a sponge function.\n\n// Various per round constants calculations\nconst [SHA3_PI, SHA3_ROTL, _SHA3_IOTA]: [number[], number[], bigint[]] = [[], [], []];\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nconst _7n = /* @__PURE__ */ BigInt(7);\nconst _256n = /* @__PURE__ */ BigInt(256);\nconst _0x71n = /* @__PURE__ */ BigInt(0x71);\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n if (R & _2n) t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ split(_SHA3_IOTA, true);\n\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h: number, l: number, s: number) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));\nconst rotlL = (h: number, l: number, s: number) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));\n\n// Same as keccakf1600, but allows to skip some rounds\nexport function keccakP(s: Uint32Array, rounds: number = 24) {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta θ\n for (let x = 0; x < 10; x++) B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (ρ) and Pi (π)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++) B[x] = s[y + x];\n for (let x = 0; x < 10; x++) s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n B.fill(0);\n}\n\nexport class Keccak extends Hash<Keccak> implements HashXOF<Keccak> {\n protected state: Uint8Array;\n protected pos = 0;\n protected posOut = 0;\n protected finished = false;\n protected state32: Uint32Array;\n protected destroyed = false;\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(\n public blockLen: number,\n public suffix: number,\n public outputLen: number,\n protected enableXOF = false,\n protected rounds: number = 24\n ) {\n super();\n // Can be passed from user as dkLen\n number(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n if (0 >= this.blockLen || this.blockLen >= 200)\n throw new Error('Sha3 supports only keccak-f1600 function');\n this.state = new Uint8Array(200);\n this.state32 = u32(this.state);\n }\n protected keccak() {\n keccakP(this.state32, this.rounds);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data: Input) {\n exists(this);\n const { blockLen, state } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len; ) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++) state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen) this.keccak();\n }\n return this;\n }\n protected finish() {\n if (this.finished) return;\n this.finished = true;\n const { state, suffix, pos, blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1) this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n protected writeInto(out: Uint8Array): Uint8Array {\n exists(this, false);\n bytes(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen } = this;\n for (let pos = 0, len = out.length; pos < len; ) {\n if (this.posOut >= blockLen) this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out: Uint8Array): Uint8Array {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF) throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes: number): Uint8Array {\n number(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out: Uint8Array) {\n output(out, this);\n if (this.finished) throw new Error('digest() was already called');\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest() {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy() {\n this.destroyed = true;\n this.state.fill(0);\n }\n _cloneInto(to?: Keccak): Keccak {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to ||= new Keccak(blockLen, suffix, outputLen, enableXOF, rounds);\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\n\nconst gen = (suffix: number, blockLen: number, outputLen: number) =>\n wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));\n\nexport const sha3_224 = /* @__PURE__ */ gen(0x06, 144, 224 / 8);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */\nexport const sha3_256 = /* @__PURE__ */ gen(0x06, 136, 256 / 8);\nexport const sha3_384 = /* @__PURE__ */ gen(0x06, 104, 384 / 8);\nexport const sha3_512 = /* @__PURE__ */ gen(0x06, 72, 512 / 8);\nexport const keccak_224 = /* @__PURE__ */ gen(0x01, 144, 224 / 8);\n/**\n * keccak-256 hash function. Different from SHA3-256.\n * @param message - that would be hashed\n */\nexport const keccak_256 = /* @__PURE__ */ gen(0x01, 136, 256 / 8);\nexport const keccak_384 = /* @__PURE__ */ gen(0x01, 104, 384 / 8);\nexport const keccak_512 = /* @__PURE__ */ gen(0x01, 72, 512 / 8);\n\nexport type ShakeOpts = { dkLen?: number };\n\nconst genShake = (suffix: number, blockLen: number, outputLen: number) =>\n wrapXOFConstructorWithOpts<HashXOF<Keccak>, ShakeOpts>(\n (opts: ShakeOpts = {}) =>\n new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true)\n );\n\nexport const shake128 = /* @__PURE__ */ genShake(0x1f, 168, 128 / 8);\nexport const shake256 = /* @__PURE__ */ genShake(0x1f, 136, 256 / 8);\n","/* global global, window, module */\nconst { sha3_512: sha3 } = require(\"@noble/hashes/sha3\");\n\nconst defaultLength = 24;\nconst bigLength = 32;\n\nconst createEntropy = (length = 4, random = Math.random) => {\n let entropy = \"\";\n\n while (entropy.length < length) {\n entropy = entropy + Math.floor(random() * 36).toString(36);\n }\n return entropy;\n};\n\n/*\n * Adapted from https://github.com/juanelas/bigint-conversion\n * MIT License Copyright (c) 2018 Juan Hernández Serrano\n */\nfunction bufToBigInt(buf) {\n let bits = 8n;\n\n let value = 0n;\n for (const i of buf.values()) {\n const bi = BigInt(i);\n value = (value << bits) + bi;\n }\n return value;\n}\n\nconst hash = (input = \"\") => {\n // Drop the first character because it will bias the histogram\n // to the left.\n return bufToBigInt(sha3(input)).toString(36).slice(1);\n};\n\nconst alphabet = Array.from({ length: 26 }, (x, i) =>\n String.fromCharCode(i + 97)\n);\n\nconst randomLetter = (random) =>\n alphabet[Math.floor(random() * alphabet.length)];\n\n/*\nThis is a fingerprint of the host environment. It is used to help\nprevent collisions when generating ids in a distributed system.\nIf no global object is available, you can pass in your own, or fall back\non a random string.\n*/\nconst createFingerprint = ({\n globalObj = typeof global !== \"undefined\"\n ? global\n : typeof window !== \"undefined\"\n ? window\n : {},\n random = Math.random,\n} = {}) => {\n const globals = Object.keys(globalObj).toString();\n const sourceString = globals.length\n ? globals + createEntropy(bigLength, random)\n : createEntropy(bigLength, random);\n\n return hash(sourceString).substring(0, bigLength);\n};\n\nconst createCounter = (count) => () => {\n return count++;\n};\n\n// ~22k hosts before 50% chance of initial counter collision\n// with a remaining counter range of 9.0e+15 in JavaScript.\nconst initialCountMax = 476782367;\n\nconst init = ({\n // Fallback if the user does not pass in a CSPRNG. This should be OK\n // because we don't rely solely on the random number generator for entropy.\n // We also use the host fingerprint, current time, and a session counter.\n random = Math.random,\n counter = createCounter(Math.floor(random() * initialCountMax)),\n length = defaultLength,\n fingerprint = createFingerprint({ random }),\n} = {}) => {\n return function cuid2() {\n const firstLetter = randomLetter(random);\n\n // If we're lucky, the `.toString(36)` calls may reduce hashing rounds\n // by shortening the input to the hash function a little.\n const time = Date.now().toString(36);\n const count = counter().toString(36);\n\n // The salt should be long enough to be globally unique across the full\n // length of the hash. For simplicity, we use the same length as the\n // intended id output.\n const salt = createEntropy(length, random);\n const hashInput = `${time + salt + count + fingerprint}`;\n\n return `${firstLetter + hash(hashInput).substring(1, length)}`;\n };\n};\n\nconst createId = init();\n\nconst isCuid = (id, { minLength = 2, maxLength = bigLength } = {}) => {\n const length = id.length;\n const regex = /^[0-9a-z]+$/;\n\n try {\n if (\n typeof id === \"string\" &&\n length >= minLength &&\n length <= maxLength &&\n regex.test(id)\n )\n return true;\n } finally {\n }\n\n return false;\n};\n\nmodule.exports.getConstants = () => ({ defaultLength, bigLength });\nmodule.exports.init = init;\nmodule.exports.createId = createId;\nmodule.exports.bufToBigInt = bufToBigInt;\nmodule.exports.createCounter = createCounter;\nmodule.exports.createFingerprint = createFingerprint;\nmodule.exports.isCuid = isCuid;\n","const { createId, init, getConstants, isCuid } = require(\"./src/index\");\n\nmodule.exports.createId = createId;\nmodule.exports.init = init;\nmodule.exports.getConstants = getConstants;\nmodule.exports.isCuid = isCuid;\n","import type { AnyOrama, SearchParams, TypedDocument, OramaPluginAsync } from '@orama/orama'\nimport { OramaProxy, EmbeddingModel } from '@oramacloud/client'\n\nexport type SecureProxyPluginOptions = {\n apiKey: string\n defaultProperty: string\n model: EmbeddingModel\n}\n\nexport async function pluginSecureProxy(pluginParams: SecureProxyPluginOptions): Promise<OramaPluginAsync> {\n if (!pluginParams.apiKey) throw new Error('Missing \"apiKey\" parameter for plugin-telemetry')\n if (!pluginParams.defaultProperty) throw new Error('Missing \"defaultProperty\" parameter for plugin-telemetry')\n if (!pluginParams.model) throw new Error('Missing \"model\" parameter for plugin-telemetry')\n\n const proxy = new OramaProxy({\n api_key: pluginParams.apiKey,\n })\n\n return {\n name: 'secure-proxy',\n\n async beforeSearch<T extends AnyOrama>(_db: AnyOrama, params: SearchParams<T, TypedDocument<any>>) {\n if (params.mode !== 'vector' && params.mode !== 'hybrid') {\n return\n }\n\n if (params?.vector?.value) {\n return\n }\n\n if (!params.term) {\n throw new Error('Neither \"term\" nor \"vector\" parameters were provided')\n }\n\n const term = params.term\n const embeddings = await proxy.generateEmbeddings(term, pluginParams.model)\n\n if (!params.vector) {\n params.vector = {\n // eslint-disable-next-line\n // @ts-ignore\n property: params?.vector?.property ?? pluginParams.defaultProperty,\n value: embeddings\n }\n }\n\n params.vector.value = embeddings\n }\n }\n}\n","import type { Endpoint, IOramaClient, Method, OramaInitResponse, HeartBeatConfig, OramaError } from './types.js'\nimport type { SearchParams, Results, AnyDocument, AnyOrama } from '@orama/orama'\nimport { formatElapsedTime } from '@orama/orama/components'\nimport { createId } from '@paralleldrive/cuid2'\n\nimport { Cache } from './cache.js'\nimport * as CONST from './constants.js'\nimport { Collector } from './collector.js'\nimport { HeartBeat } from './heartbeat.js'\nimport { version } from '../package.json'\n\nexport interface SearchConfig {\n abortController?: AbortController\n fresh?: boolean\n}\n\nexport type SearchMode =\n | 'fulltext'\n | 'vector'\n | 'hybrid' \n\nexport type ClientSearchParams = SearchParams<AnyOrama> & { mode: SearchMode }\n\nexport class OramaClient {\n private readonly id = createId()\n private readonly api_key: string\n private readonly endpoint: string\n private readonly collector?: Collector\n private readonly cache?: Cache<Results<AnyDocument>>\n\n private heartbeat?: HeartBeat\n private initPromise?: Promise<OramaInitResponse | null>\n\n constructor(params: IOramaClient) {\n this.api_key = params.api_key\n this.endpoint = params.endpoint\n\n // Telemetry is enabled by default\n if (params.telemetry !== false) {\n const telementryConfig = {\n id: this.id,\n api_key: this.api_key,\n flushInterval: params.telemetry?.flushInterval ?? CONST.DEFAULT_TELEMETRY_FLUSH_INTERVAL,\n flushSize: params.telemetry?.flushSize ?? CONST.DEFAULT_TELEMETRY_FLUSH_SIZE\n }\n this.collector = Collector.create(telementryConfig)\n }\n\n // Cache is enabled by default\n if (params.cache !== false) {\n const cacheParams = {}\n this.cache = new Cache<Results<AnyDocument>>(cacheParams)\n }\n\n this.init()\n }\n\n public async search(query: ClientSearchParams, config?: SearchConfig): Promise<Results<AnyDocument>> {\n await this.initPromise\n\n const cacheKey = `search-${JSON.stringify(query)}`\n\n let roundTripTime: number\n let searchResults: Results<AnyDocument>\n let cached = false\n\n const shouldUseCache = config?.fresh !== true && this.cache?.has(cacheKey)\n if (shouldUseCache === true && this.cache != null) {\n roundTripTime = 0\n searchResults = this.cache.get(cacheKey) as Results<AnyDocument>\n cached = true\n } else {\n const timeStart = Date.now()\n searchResults = await this.fetch<Results<AnyDocument>>('search', 'POST', { q: query }, config?.abortController)\n const timeEnd = Date.now()\n\n searchResults.elapsed = await formatElapsedTime(BigInt(timeEnd * CONST.MICROSECONDS_BASE - timeStart * CONST.MICROSECONDS_BASE))\n roundTripTime = timeEnd - timeStart\n\n this.cache?.set(cacheKey, searchResults)\n }\n\n if (this.collector != null) {\n this.collector.add({\n rawSearchString: query.term,\n resultsCount: searchResults.hits.length,\n roundTripTime,\n query,\n cached,\n searchedAt: new Date()\n })\n }\n\n return searchResults\n }\n\n public async vectorSearch(\n query: ClientSearchParams,\n config?: SearchConfig\n ): Promise<Pick<Results<AnyDocument>, 'hits' | 'elapsed'>> {\n await this.initPromise\n\n const cacheKey = `vectorSearch-${JSON.stringify(query)}`\n\n let roundTripTime: number\n let searchResults: Results<AnyDocument>\n let cached = false\n\n const shouldUseCache = config?.fresh !== true && this.cache?.has(cacheKey)\n if (shouldUseCache === true && this.cache != null) {\n roundTripTime = 0\n searchResults = this.cache.get(cacheKey) as Results<AnyDocument>\n cached = true\n } else {\n const timeStart = Date.now()\n searchResults = await this.fetch<Results<AnyDocument>>('vector-search2', 'POST', { q: query }, config?.abortController)\n const timeEnd = Date.now()\n\n searchResults.elapsed = await formatElapsedTime(BigInt(timeEnd * CONST.MICROSECONDS_BASE - timeStart * CONST.MICROSECONDS_BASE))\n roundTripTime = timeEnd - timeStart\n\n this.cache?.set(cacheKey, searchResults)\n }\n\n if (this.collector != null) {\n this.collector.add({\n rawSearchString: query.term,\n resultsCount: searchResults.hits.length,\n roundTripTime,\n query,\n cached,\n searchedAt: new Date()\n })\n }\n\n return searchResults\n }\n\n public startHeartBeat(config: HeartBeatConfig): void {\n this.heartbeat?.stop()\n this.heartbeat = new HeartBeat({\n ...config,\n endpoint: this.endpoint + `/health?api-key=${this.api_key}`\n })\n this.heartbeat.start()\n }\n\n public stopHeartBeat(): void {\n this.heartbeat?.stop()\n }\n\n public async getPop(): Promise<string> {\n const g = await this.initPromise\n return g?.pop ?? ''\n }\n\n private init(): void {\n this.initPromise = this.fetch<OramaInitResponse>('init', 'GET')\n .then((b) => {\n this.collector?.setParams({\n endpoint: b.collectUrl,\n deploymentID: b.deploymentID,\n index: b.index\n })\n\n return b\n })\n .catch((err) => {\n console.log(err)\n return null\n })\n }\n\n private async fetch<T = unknown>(path: Endpoint, method: Method, body?: object, abortController?: AbortController): Promise<T> {\n if (abortController?.signal.aborted === true) {\n throw new Error('Request aborted')\n }\n\n const requestOptions: RequestInit = {\n method,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n // Unfortunatelly we can't send this headers otherwise we should pay CORS preflight request\n // 'x-orama-instance-id': this.id,\n // 'x-orama-version': version\n },\n signal: abortController?.signal\n }\n\n if (method === 'POST' && body !== undefined) {\n // biome-ignore lint/suspicious/noExplicitAny: keep any for now\n const b = body as any\n b.version = version\n b.id = this.id\n\n requestOptions.body = Object.entries(b)\n .map(([key, value]) => `${key}=${encodeURIComponent(JSON.stringify(value))}`)\n .join('&')\n }\n\n const res: Response = await fetch(`${this.endpoint}/${path}?api-key=${this.api_key}`, requestOptions)\n\n if (!res.ok) {\n const error = new Error() as OramaError\n error.httpResponse = res\n throw error\n }\n\n return await res.json()\n }\n}\n","export const DEFAULT_THROTTLE_FREQUENCY = 50\n\nexport const MICROSECONDS_BASE = 1_000_000\n\nexport const DEFAULT_TELEMETRY_FLUSH_INTERVAL = 5000\n\nexport const DEFAULT_TELEMETRY_FLUSH_SIZE = 25\n\nexport const ORAMA_CACHE_LOCALSTORAGE_KEY = '___orama_cache___'\nexport const DEFAULT_CACHE_REHIDRATE = true\nexport const DEFAULT_CACHE_SAVE_INTERVAL_MS = 5000\n\nexport const ORAMA_PROXY_ENDPOINT = 'https://secure-proxy.orama.run'\nexport const ORAMA_PROXY_INIT_ENDPOINT = '/init'\nexport const ORAMA_PROXY_CHAT_ENDPOINT = '/chat'\nexport const ORAMA_PROXY_EMBEDDINGS_ENDPOINT = '/query'\n","import type { OpenAI } from 'openai'\nimport type { IOramaProxy } from './types.js'\nimport * as CONST from './constants.js'\n\nexport type EmbeddingModel = keyof typeof embeddingsModels\nexport type ChatModel = keyof typeof chatModels\nexport type ChatMessage = OpenAI.ChatCompletionMessageParam\n\nexport type ChatParams = {\n messages: ChatMessage[]\n model: ChatModel\n}\n\nconst OPENAI_EMBEDDINGS_MODEL_ADA = 'text-embedding-ada-002'\nconst ORAMA_EMBEDDINGS_MODEL_GTE_SMALL = 'gte-small'\n\nconst OPENAI_CHAT_MODEL_GPT4_1106_PREVIEW = 'gpt-4-1106-preview'\nconst OPENAI_CHAT_MODEL_GPT4 = 'gpt-4'\nconst OPENAI_CHAT_MODEL_GPT3_5_TURBO = 'gpt-3.5-turbo'\nconst OPENAI_CHAT_MODEL_GPT3_3_5_TURBO_16K = 'gpt-3.5-turbo-16k'\n\nconst embeddingsModels = {\n [`openai/${OPENAI_EMBEDDINGS_MODEL_ADA}`]: `openai/${OPENAI_EMBEDDINGS_MODEL_ADA}`,\n [`orama/${ORAMA_EMBEDDINGS_MODEL_GTE_SMALL}`]: `orama/${ORAMA_EMBEDDINGS_MODEL_GTE_SMALL}`,\n}\n\nconst chatModels = {\n [`openai/${OPENAI_CHAT_MODEL_GPT3_5_TURBO}`]: OPENAI_CHAT_MODEL_GPT3_5_TURBO,\n [`openai/${OPENAI_CHAT_MODEL_GPT4}`]: OPENAI_CHAT_MODEL_GPT4,\n [`openai/${OPENAI_CHAT_MODEL_GPT3_3_5_TURBO_16K}`]: OPENAI_CHAT_MODEL_GPT3_3_5_TURBO_16K,\n [`openai/${OPENAI_CHAT_MODEL_GPT4_1106_PREVIEW}`]: OPENAI_CHAT_MODEL_GPT4_1106_PREVIEW\n}\n\nexport class OramaProxy {\n private CSRFToken = ''\n private ready: Promise<boolean>\n private readonly api_key: string\n private publicKey?: CryptoKey\n\n constructor(params: IOramaProxy) {\n this.api_key = params.api_key\n\n this.ready = this.init()\n .then(() => true)\n .catch((err) => {\n console.log(err)\n return false\n })\n }\n\n public async generateEmbeddings(text: string, model: EmbeddingModel): Promise<number[]> {\n const isReady = await this.ready\n\n if (!isReady) {\n console.log('OramaProxy had an error during the initialization')\n return []\n }\n\n const endpoint = `${CONST.ORAMA_PROXY_ENDPOINT}${CONST.ORAMA_PROXY_EMBEDDINGS_ENDPOINT}?apiKey=${this.api_key}`\n const response = await fetch(endpoint, {\n method: 'POST',\n headers: this.getHeaders(),\n body: new URLSearchParams({\n query: text,\n csrf: this.CSRFToken,\n model: embeddingsModels[model],\n }).toString()\n })\n\n let embeddings = await response.json()\n\n if (embeddings.length === 1) {\n embeddings = embeddings[0]\n }\n\n return embeddings\n }\n\n public async chat(params: ChatParams): Promise<string> {\n const isReady = await this.ready\n\n if (!isReady) {\n console.log('OramaProxy had an error during the initialization')\n return ''\n }\n\n let response = ''\n\n for await (const msg of this.chatStream(params)) {\n response += msg\n }\n\n return response\n }\n\n public async *chatStream(params: ChatParams): AsyncGenerator<string> {\n const endpoint = `${CONST.ORAMA_PROXY_ENDPOINT}${CONST.ORAMA_PROXY_CHAT_ENDPOINT}?apiKey=${this.api_key}`\n\n let messages = params.messages\n if (this.publicKey) {\n messages = await Promise.all(messages.map(async (message) => {\n if (!message.content) {\n return message\n }\n if (typeof message.content !== 'string') {\n return message\n }\n return {\n ...message,\n content: await encryptData(this.publicKey!, message.content)\n }\n })) as any // Too hard to type this\n }\n\n const response = await fetch(endpoint, {\n method: 'POST',\n headers: this.getHeaders(),\n body: new URLSearchParams({\n messages: JSON.stringify(messages),\n csrf: this.CSRFToken,\n model: chatModels[params.model]\n }).toString()\n })\n\n if (!response.ok || response.body == null) {\n throw response.statusText\n }\n\n const reader = response.body.getReader()\n const decoder = new TextDecoder()\n\n while (true) {\n const { value, done } = await reader.read()\n if (done) {\n break\n }\n\n const decodedChunk = decoder.decode(value, { stream: true })\n yield decodedChunk\n }\n }\n\n private async init() {\n const endpoint = `${CONST.ORAMA_PROXY_ENDPOINT}${CONST.ORAMA_PROXY_INIT_ENDPOINT}?apiKey=${this.api_key}`\n const response = await fetch(endpoint, {\n headers: {\n referer: this.getReferrer()\n }\n })\n\n const data = await response.json()\n this.CSRFToken = data.csrfToken\n if (data.encryption?.enabled === true) {\n this.publicKey = await importPublicKey(restoreKey(data.encryption.publicKey))\n }\n }\n\n private isServer() {\n return typeof window === 'undefined'\n }\n\n private getHeaders() {\n return {\n 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n referer: this.getReferrer()\n }\n }\n\n private getReferrer() {\n return this.isServer() ? 'http://localhost' : window.location.href\n }\n}\n\nasync function importPublicKey(keyData: ArrayBuffer) {\n const key = await crypto.subtle.importKey(\n \"spki\",\n keyData,\n { name: \"RSA-OAEP\", hash: { name: \"SHA-256\" } },\n true,\n [\"encrypt\"]\n );\n return key;\n}\n\nasync function encryptPieceData(publicKey: CryptoKey, encodedData: Uint8Array) {\n const encryptedData = await crypto.subtle.encrypt(\n { name: \"RSA-OAEP\" },\n publicKey,\n encodedData\n );\n return new Uint8Array(encryptedData);\n}\n\nfunction restoreKey(s: number[]): Uint8Array {\n return Uint8Array.from(s)\n}\n\nconst BATCH_SIZE = 50\nasync function encryptData(publicKey: CryptoKey, data: string) {\n const encodedData = new TextEncoder().encode(data);\n\n const arr = []\n for (let i = 0; i < encodedData.length; i += BATCH_SIZE) {\n const item = encodedData.subarray(i, i + BATCH_SIZE)\n const encryptedData = await encryptPieceData(publicKey, item)\n arr.push(Array.from(encryptedData))\n }\n\n return arr\n}"]}
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- function e(e,r,t,n,o,i,u){try{var a=e[i](u);var c=a.value}catch(e){t(e);return}if(a.done){r(c)}else{Promise.resolve(c).then(n,o)}}function r(r){return function(){var t=this,n=arguments;return new Promise(function(o,i){var u=r.apply(t,n);function a(r){e(u,o,i,a,c,"next",r)}function c(r){e(u,o,i,a,c,"throw",r)}a(undefined)})}}var t=function(e){"@swc/helpers - typeof";return e&&typeof Symbol!=="undefined"&&e.constructor===Symbol?"symbol":typeof e};var n=this&&this.__generator||function(e,r){var t,n,o,i,u={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]};return i={next:a(0),"throw":a(1),"return":a(2)},typeof Symbol==="function"&&(i[Symbol.iterator]=function(){return this}),i;function a(e){return function(r){return c([e,r])}}function c(i){if(t)throw new TypeError("Generator is already executing.");while(u)try{if(t=1,n&&(o=i[0]&2?n["return"]:i[0]?n["throw"]||((o=n["return"])&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;if(n=0,o)i=[i[0]&2,o.value];switch(i[0]){case 0:case 1:o=i;break;case 4:u.label++;return{value:i[1],done:false};case 5:u.label++;n=i[1];i=[0];continue;case 7:i=u.ops.pop();u.trys.pop();continue;default:if(!(o=u.trys,o=o.length>0&&o[o.length-1])&&(i[0]===6||i[0]===2)){u=0;continue}if(i[0]===3&&(!o||i[1]>o[0]&&i[1]<o[3])){u.label=i[1];break}if(i[0]===6&&u.label<o[1]){u.label=o[1];o=i;break}if(o&&u.label<o[2]){u.label=o[2];u.ops.push(i);break}if(o[2])u.ops.pop();u.trys.pop();continue}i=r.call(e,u)}catch(e){i=[6,e];n=0}finally{t=o=0}if(i[0]&5)throw i[1];return{value:i[0]?i[1]:void 0,done:true}}};var o="https://secure-proxy.orama.run",i="".concat(o,"/init"),u="".concat(o,"/query");function a(){return(typeof window==="undefined"?"undefined":t(window))>"u"}function c(){return a()?"http://localhost":window.location.href}function l(e){return s.apply(this,arguments)}function s(){s=r(function(e){return n(this,function(r){switch(r.label){case 0:return[4,fetch("".concat(i,"?apiKey=").concat(e),{headers:{Referer:c()}})];case 1:return[2,r.sent().json()]}})});return s.apply(this,arguments)}function f(e,r,t){return p.apply(this,arguments)}function p(){p=r(function(e,r,t){var o;return n(this,function(n){switch(n.label){case 0:o=new URLSearchParams({query:r,csrf:t}).toString();return[4,fetch("".concat(u,"?apiKey=").concat(e),{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",Referer:c()},body:o})];case 1:return[2,n.sent().json()]}})});return p.apply(this,arguments)}function h(e){return y.apply(this,arguments)}function y(){y=r(function(e){var t,o;return n(this,function(i){switch(i.label){case 0:if(!e.apiKey)throw new Error('Missing "apiKey" parameter for plugin-telemetry');if(!e.defaultProperty)throw new Error('Missing "defaultProperty" parameter for plugin-telemetry');return[4,l(e.apiKey)];case 1:t=i.sent(),o=t.csrfToken;return[2,{name:"secure-proxy",beforeSearch:function t(t,i){return r(function(){var r,t,u,a,c;return n(this,function(n){switch(n.label){case 0:if(i.mode!=="vector"&&i.mode!=="hybrid"||(i===null||i===void 0?void 0:(r=i.vector)===null||r===void 0?void 0:r.value))return[2];if(!i.term)throw new Error('Neither "term" nor "vector" parameters were provided');u=i.term;return[4,f(e.apiKey,u,o)];case 1:a=n.sent();i.vector||(i.vector={property:(c=i===null||i===void 0?void 0:(t=i.vector)===null||t===void 0?void 0:t.property)!==null&&c!==void 0?c:e.defaultProperty,value:a}),i.vector.value=a;return[2]}})})()}}]}})});return y.apply(this,arguments)}export{h as pluginSecureProxy};//# sourceMappingURL=index.js.map
1
+ function e(e,r,t,n,o,i,a){try{var u=e[i](a);var l=u.value}catch(e){t(e);return}if(u.done){r(l)}else{Promise.resolve(l).then(n,o)}}function r(r){return function(){var t=this,n=arguments;return new Promise(function(o,i){var a=r.apply(t,n);function u(r){e(a,o,i,u,l,"next",r)}function l(r){e(a,o,i,u,l,"throw",r)}u(undefined)})}}var t=this&&this.__generator||function(e,r){var t,n,o,i,a={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),"throw":u(1),"return":u(2)},typeof Symbol==="function"&&(i[Symbol.iterator]=function(){return this}),i;function u(e){return function(r){return l([e,r])}}function l(i){if(t)throw new TypeError("Generator is already executing.");while(a)try{if(t=1,n&&(o=i[0]&2?n["return"]:i[0]?n["throw"]||((o=n["return"])&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;if(n=0,o)i=[i[0]&2,o.value];switch(i[0]){case 0:case 1:o=i;break;case 4:a.label++;return{value:i[1],done:false};case 5:a.label++;n=i[1];i=[0];continue;case 7:i=a.ops.pop();a.trys.pop();continue;default:if(!(o=a.trys,o=o.length>0&&o[o.length-1])&&(i[0]===6||i[0]===2)){a=0;continue}if(i[0]===3&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(i[0]===6&&a.label<o[1]){a.label=o[1];o=i;break}if(o&&a.label<o[2]){a.label=o[2];a.ops.push(i);break}if(o[2])a.ops.pop();a.trys.pop();continue}i=r.call(e,a)}catch(e){i=[6,e];n=0}finally{t=o=0}if(i[0]&5)throw i[1];return{value:i[0]?i[1]:void 0,done:true}}};import{OramaProxy as n}from"@oramacloud/client";function o(e){return i.apply(this,arguments)}function i(){i=r(function(e){var o;return t(this,function(i){if(!e.apiKey)throw new Error('Missing "apiKey" parameter for plugin-telemetry');if(!e.defaultProperty)throw new Error('Missing "defaultProperty" parameter for plugin-telemetry');if(!e.model)throw new Error('Missing "model" parameter for plugin-telemetry');o=new n({api_key:e.apiKey});return[2,{name:"secure-proxy",beforeSearch:function n(n,i){return r(function(){var r,n,a,u,l;return t(this,function(t){switch(t.label){case 0:if(i.mode!=="vector"&&i.mode!=="hybrid"||(i===null||i===void 0?void 0:(r=i.vector)===null||r===void 0?void 0:r.value))return[2];if(!i.term)throw new Error('Neither "term" nor "vector" parameters were provided');a=i.term;return[4,o.generateEmbeddings(a,e.model)];case 1:u=t.sent();i.vector||(i.vector={property:(l=i===null||i===void 0?void 0:(n=i.vector)===null||n===void 0?void 0:n.property)!==null&&l!==void 0?l:e.defaultProperty,value:u}),i.vector.value=u;return[2]}})})()}}]})});return i.apply(this,arguments)}export{o as pluginSecureProxy};//# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["SECURE_PROXY_ENDPOINT","INIT_URL","SEARCH_URL","isServer","getReferer","getCSRFToken","apiKey","getEmbeddings","query","csrfToken","body","pluginSecureProxy","pluginParams","_db","params","term","embeddings"],"mappings":"AAeA,IAAMA,EAAwB,iCACxBC,EAAW,GAAGD,CAAqB,QACnCE,EAAa,GAAGF,CAAqB,SAE3C,SAASG,GAAW,CAClB,OAAO,OAAO,OAAW,GAC3B,CAEA,SAASC,GAAa,CACpB,OAAOD,EAAS,EAAI,mBAAqB,OAAO,SAAS,IAC3D,CAEA,eAAeE,EAAaC,EAAuC,CAOjE,OANiB,MAAM,MAAM,GAAGL,CAAQ,WAAWK,CAAM,GAAI,CAC3D,QAAS,CACP,QAASF,EAAW,CACtB,CACF,CAAC,GAEe,KAAK,CACvB,CAEA,eAAeG,EAAcD,EAAgBE,EAAeC,EAAgD,CAC1G,IAAMC,EAAO,IAAI,gBAAgB,CAAE,MAAAF,EAAO,KAAMC,CAAU,CAAC,EAAE,SAAS,EAWtE,OATiB,MAAM,MAAM,GAAGP,CAAU,WAAWI,CAAM,GAAI,CAC7D,OAAQ,OACR,QAAS,CACP,eAAgB,mDAChB,QAASF,EAAW,CACtB,EACA,KAAAM,CACF,CAAC,GAEe,KAAK,CACvB,CAEA,eAAsBC,EAAkBC,EAA0D,CAChG,GAAI,CAACA,EAAa,OAAQ,MAAM,IAAI,MAAM,iDAAiD,EAC3F,GAAI,CAACA,EAAa,gBAAiB,MAAM,IAAI,MAAM,0DAA0D,EAE7G,GAAM,CAAE,UAAAH,CAAU,EAAI,MAAMJ,EAAaO,EAAa,MAAM,EAE5D,MAAO,CACL,KAAM,eAEN,MAAM,aAAiCC,EAAeC,EAA6C,CAKjG,GAJIA,EAAO,OAAS,UAAYA,EAAO,OAAS,UAI5CA,GAAQ,QAAQ,MAClB,OAGF,GAAI,CAACA,EAAO,KACV,MAAM,IAAI,MAAM,sDAAsD,EAGxE,IAAMC,EAAOD,EAAO,KACdE,EAAa,MAAMT,EAAcK,EAAa,OAAQG,EAAMN,CAAS,EAEtEK,EAAO,SACVA,EAAO,OAAS,CAEd,SAAUA,GAAQ,QAAQ,UAAYF,EAAa,gBACnD,MAAOI,CACT,GAGFF,EAAO,OAAO,MAAQE,CACxB,CACF,CACF","sourcesContent":["import type { AnyOrama, SearchParams, TypedDocument, OramaPluginAsync } from '@orama/orama'\n\ntype InitResponse = {\n clientID: string\n ttl: number\n csrfToken: string\n}\n\ntype EmbeddingsResponse = number[]\n\nexport type SecureProxyPluginOptions = {\n apiKey: string\n defaultProperty: string\n}\n\nconst SECURE_PROXY_ENDPOINT = 'https://secure-proxy.orama.run'\nconst INIT_URL = `${SECURE_PROXY_ENDPOINT}/init`\nconst SEARCH_URL = `${SECURE_PROXY_ENDPOINT}/query`\n\nfunction isServer() {\n return typeof window === 'undefined'\n}\n\nfunction getReferer() {\n return isServer() ? 'http://localhost' : window.location.href\n}\n\nasync function getCSRFToken(apiKey: string): Promise<InitResponse> {\n const response = await fetch(`${INIT_URL}?apiKey=${apiKey}`, {\n headers: {\n Referer: getReferer()\n }\n })\n\n return response.json()\n}\n\nasync function getEmbeddings(apiKey: string, query: string, csrfToken: string): Promise<EmbeddingsResponse> {\n const body = new URLSearchParams({ query, csrf: csrfToken }).toString()\n\n const response = await fetch(`${SEARCH_URL}?apiKey=${apiKey}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n Referer: getReferer()\n },\n body\n })\n\n return response.json()\n}\n\nexport async function pluginSecureProxy(pluginParams: SecureProxyPluginOptions): OramaPluginAsync {\n if (!pluginParams.apiKey) throw new Error('Missing \"apiKey\" parameter for plugin-telemetry')\n if (!pluginParams.defaultProperty) throw new Error('Missing \"defaultProperty\" parameter for plugin-telemetry')\n\n const { csrfToken } = await getCSRFToken(pluginParams.apiKey)\n\n return {\n name: 'secure-proxy',\n\n async beforeSearch<T extends AnyOrama>(_db: AnyOrama, params: SearchParams<T, TypedDocument<any>>) {\n if (params.mode !== 'vector' && params.mode !== 'hybrid') {\n return\n }\n\n if (params?.vector?.value) {\n return\n }\n\n if (!params.term) {\n throw new Error('Neither \"term\" nor \"vector\" parameters were provided')\n }\n\n const term = params.term\n const embeddings = await getEmbeddings(pluginParams.apiKey, term, csrfToken)\n\n if (!params.vector) {\n params.vector = {\n // @ts-expect-error - vector param is not present in full-text search\n property: params?.vector?.property ?? pluginParams.defaultProperty,\n value: embeddings\n }\n }\n\n params.vector.value = embeddings\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":["OramaProxy","pluginSecureProxy","pluginParams","proxy","_db","params","term","embeddings"],"mappings":"AACA,OAAS,cAAAA,MAAkC,qBAQ3C,eAAsBC,EAAkBC,EAAmE,CACzG,GAAI,CAACA,EAAa,OAAQ,MAAM,IAAI,MAAM,iDAAiD,EAC3F,GAAI,CAACA,EAAa,gBAAiB,MAAM,IAAI,MAAM,0DAA0D,EAC7G,GAAI,CAACA,EAAa,MAAO,MAAM,IAAI,MAAM,gDAAgD,EAEzF,IAAMC,EAAQ,IAAIH,EAAW,CAC3B,QAASE,EAAa,MACxB,CAAC,EAED,MAAO,CACL,KAAM,eAEN,MAAM,aAAiCE,EAAeC,EAA6C,CAKjG,GAJIA,EAAO,OAAS,UAAYA,EAAO,OAAS,UAI5CA,GAAQ,QAAQ,MAClB,OAGF,GAAI,CAACA,EAAO,KACV,MAAM,IAAI,MAAM,sDAAsD,EAGxE,IAAMC,EAAOD,EAAO,KACdE,EAAa,MAAMJ,EAAM,mBAAmBG,EAAMJ,EAAa,KAAK,EAErEG,EAAO,SACVA,EAAO,OAAS,CAGd,SAAUA,GAAQ,QAAQ,UAAYH,EAAa,gBACnD,MAAOK,CACT,GAGFF,EAAO,OAAO,MAAQE,CACxB,CACF,CACF","sourcesContent":["import type { AnyOrama, SearchParams, TypedDocument, OramaPluginAsync } from '@orama/orama'\nimport { OramaProxy, EmbeddingModel } from '@oramacloud/client'\n\nexport type SecureProxyPluginOptions = {\n apiKey: string\n defaultProperty: string\n model: EmbeddingModel\n}\n\nexport async function pluginSecureProxy(pluginParams: SecureProxyPluginOptions): Promise<OramaPluginAsync> {\n if (!pluginParams.apiKey) throw new Error('Missing \"apiKey\" parameter for plugin-telemetry')\n if (!pluginParams.defaultProperty) throw new Error('Missing \"defaultProperty\" parameter for plugin-telemetry')\n if (!pluginParams.model) throw new Error('Missing \"model\" parameter for plugin-telemetry')\n\n const proxy = new OramaProxy({\n api_key: pluginParams.apiKey,\n })\n\n return {\n name: 'secure-proxy',\n\n async beforeSearch<T extends AnyOrama>(_db: AnyOrama, params: SearchParams<T, TypedDocument<any>>) {\n if (params.mode !== 'vector' && params.mode !== 'hybrid') {\n return\n }\n\n if (params?.vector?.value) {\n return\n }\n\n if (!params.term) {\n throw new Error('Neither \"term\" nor \"vector\" parameters were provided')\n }\n\n const term = params.term\n const embeddings = await proxy.generateEmbeddings(term, pluginParams.model)\n\n if (!params.vector) {\n params.vector = {\n // eslint-disable-next-line\n // @ts-ignore\n property: params?.vector?.property ?? pluginParams.defaultProperty,\n value: embeddings\n }\n }\n\n params.vector.value = embeddings\n }\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orama/plugin-secure-proxy",
3
- "version": "2.0.1",
3
+ "version": "2.0.2",
4
4
  "description": "Orama plugin for generating embeddings securely on the front-end",
5
5
  "keywords": [
6
6
  "orama",
@@ -45,11 +45,14 @@
45
45
  "ts-standard": "^12.0.2",
46
46
  "tsup": "^7.2.0",
47
47
  "typescript": "^5.0.0",
48
- "@orama/orama": "2.0.1"
48
+ "@orama/orama": "2.0.2"
49
49
  },
50
50
  "tap": {
51
51
  "extends": "src/tests/config/tap.yml"
52
52
  },
53
+ "dependencies": {
54
+ "@oramacloud/client": "^1.0.4"
55
+ },
53
56
  "scripts": {
54
57
  "build": "tsup --config tsup.lib.js",
55
58
  "lint": "exit 0",