@rushdb/javascript-sdk 2.5.1 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/api.d.ts +9 -9
- package/dist/common/constants.d.ts +1 -2
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/sdk/record.d.ts +6 -0
- package/dist/types/expressions.d.ts +1 -2
- package/dist/types/value.d.ts +3 -3
- package/package.json +1 -1
package/dist/api/api.d.ts
CHANGED
|
@@ -260,15 +260,15 @@ export declare class RestAPI {
|
|
|
260
260
|
*/
|
|
261
261
|
relationships: {
|
|
262
262
|
/**
|
|
263
|
-
* Reviews and manages relationship patterns inferred from the current project
|
|
263
|
+
* Reviews and manages relationship patterns inferred from the current project schema.
|
|
264
264
|
*/
|
|
265
265
|
patterns: {
|
|
266
266
|
/**
|
|
267
|
-
* Lists inferred relationship patterns,
|
|
267
|
+
* Lists inferred relationship patterns, schema relationships, and analysis status.
|
|
268
268
|
*/
|
|
269
269
|
list: () => Promise<ApiResponse<RelationshipPatternListResponse>>;
|
|
270
270
|
/**
|
|
271
|
-
* Queues
|
|
271
|
+
* Queues schema analysis to generate relationship pattern suggestions.
|
|
272
272
|
*/
|
|
273
273
|
analyze: () => Promise<ApiResponse<{
|
|
274
274
|
queued: true;
|
|
@@ -470,7 +470,7 @@ export declare class RestAPI {
|
|
|
470
470
|
*/
|
|
471
471
|
ai: {
|
|
472
472
|
/**
|
|
473
|
-
* Returns the full graph
|
|
473
|
+
* Returns the full graph schema as structured JSON.
|
|
474
474
|
* Each item contains the label name, record count, properties with value ranges/samples,
|
|
475
475
|
* and cross-label relationships with direction.
|
|
476
476
|
* Properties may include a `vectorIndexes` array when one or more embedding indexes
|
|
@@ -479,25 +479,25 @@ export declare class RestAPI {
|
|
|
479
479
|
* status, and modelKey.
|
|
480
480
|
* Use property `id` fields to pass to db.properties.values() for deeper drill-down.
|
|
481
481
|
* @param params - Optional filter. `labels` scopes to specific labels only.
|
|
482
|
-
* `force: true` bypasses the 1-hour
|
|
482
|
+
* `force: true` bypasses the 1-hour schema cache and triggers a full recalculation.
|
|
483
483
|
* @param transaction - Optional transaction for atomic operations
|
|
484
484
|
*/
|
|
485
|
-
|
|
485
|
+
getSchema: (params?: {
|
|
486
486
|
labels?: string[];
|
|
487
487
|
force?: boolean;
|
|
488
488
|
}, transaction?: Transaction | string) => Promise<ApiResponse<unknown[]>>;
|
|
489
489
|
/**
|
|
490
|
-
* Returns the full graph
|
|
490
|
+
* Returns the full graph schema as compact Markdown tables.
|
|
491
491
|
* Token-efficient — intended for direct LLM consumption.
|
|
492
492
|
* Includes: labels with counts, properties with types and value ranges/samples,
|
|
493
493
|
* cross-label relationship map, and a "Semantic Search" column per property that shows
|
|
494
494
|
* `sourceType similarityFunction dimensionsd [status]` (e.g. `managed cosine 1536d [ready]`)
|
|
495
495
|
* for indexed properties, or `—` when no embedding index exists.
|
|
496
496
|
* @param params - Optional filter. `labels` scopes to specific labels only.
|
|
497
|
-
* `force: true` bypasses the 1-hour
|
|
497
|
+
* `force: true` bypasses the 1-hour schema cache and triggers a full recalculation.
|
|
498
498
|
* @param transaction - Optional transaction for atomic operations
|
|
499
499
|
*/
|
|
500
|
-
|
|
500
|
+
getSchemaMarkdown: (params?: {
|
|
501
501
|
labels?: string[];
|
|
502
502
|
force?: boolean;
|
|
503
503
|
}, transaction?: Transaction | string) => Promise<ApiResponse<string>>;
|
|
@@ -4,5 +4,4 @@ export declare const PROPERTY_TYPE_STRING: "string";
|
|
|
4
4
|
export declare const PROPERTY_TYPE_DATETIME: "datetime";
|
|
5
5
|
export declare const PROPERTY_TYPE_BOOLEAN: "boolean";
|
|
6
6
|
export declare const PROPERTY_TYPE_NUMBER: "number";
|
|
7
|
-
export declare const
|
|
8
|
-
export declare const PROPERTY_TYPES: ("string" | "number" | "boolean" | "datetime" | "null")[];
|
|
7
|
+
export declare const PROPERTY_TYPES: ("string" | "number" | "boolean" | "datetime")[];
|
package/dist/index.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
"use strict";var Te=Object.create;var H=Object.defineProperty;var be=Object.getOwnPropertyDescriptor;var we=Object.getOwnPropertyNames;var De=Object.getPrototypeOf,Ie=Object.prototype.hasOwnProperty;var xe=(i,e)=>{for(var t in e)H(i,t,{get:e[t],enumerable:!0})},oe=(i,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of we(e))!Ie.call(i,r)&&r!==t&&H(i,r,{get:()=>e[r],enumerable:!(s=be(e,r))||s.enumerable});return i};var ie=(i,e,t)=>(t=i!=null?Te(De(i)):{},oe(e||!i||!i.__esModule?H(t,"default",{value:i,enumerable:!0}):t,i)),Pe=i=>oe(H({},"__esModule",{value:!0}),i);var
|
|
1
|
+
"use strict";var Te=Object.create;var H=Object.defineProperty;var be=Object.getOwnPropertyDescriptor;var we=Object.getOwnPropertyNames;var De=Object.getPrototypeOf,Ie=Object.prototype.hasOwnProperty;var xe=(i,e)=>{for(var t in e)H(i,t,{get:e[t],enumerable:!0})},oe=(i,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of we(e))!Ie.call(i,r)&&r!==t&&H(i,r,{get:()=>e[r],enumerable:!(s=be(e,r))||s.enumerable});return i};var ie=(i,e,t)=>(t=i!=null?Te(De(i)):{},oe(e||!i||!i.__esModule?H(t,"default",{value:i,enumerable:!0}):t,i)),Pe=i=>oe(H({},"__esModule",{value:!0}),i);var Me={};xe(Me,{DBRecordInstance:()=>S,DBRecordsArrayInstance:()=>I,EmptyTargetError:()=>P,HttpClient:()=>O,HttpClientResponse:()=>Q,Model:()=>ne,NonUniqueResultError:()=>M,RestAPI:()=>U,RushDB:()=>y,Transaction:()=>q,UniquenessError:()=>A,default:()=>ve,idToDate:()=>re,idToTimestamp:()=>N,initSDK:()=>se,mergeDefaultsWithPayload:()=>F,parseConfig:()=>ee,pickUniqFieldsFromRecord:()=>W,pickUniqFieldsFromRecords:()=>X,validateInteger:()=>te});module.exports=Pe(Me);var O=class i{makeRequest(e,{headers:t,method:s,protocol:r,requestData:n,timeout:a}){throw new Error("makeRequest not implemented.")}static makeTimeoutError(){let e=new TypeError(i.TIMEOUT_ERROR_CODE);return e.code=i.TIMEOUT_ERROR_CODE,e}};O.CONNECTION_CLOSED_ERROR_CODES=["ECONNRESET","EPIPE"];O.TIMEOUT_ERROR_CODE="ETIMEDOUT";var $=class{constructor(e,t){this._statusCode=e,this._headers=t}getStatusCode(){return this._statusCode}getHeaders(){return this._headers}getRawResponse(){throw new Error("getRawResponse not implemented.")}toStream(e){throw new Error("toStream not implemented.")}toJSON(){throw new Error("toJSON not implemented.")}},Q=class{constructor(e){this._res=e}getStatusCode(){throw new Error("getStatusCode not implemented.")}getHeaders(){throw new Error("getHeaders not implemented.")}getRawResponse(){throw new Error("getRawResponse not implemented.")}toStream(e){throw new Error("toStream not implemented.")}toJSON(){throw new Error("toJSON not implemented.")}};var J=ie(require("http"),1),z=ie(require("https"),1);var Oe="string",Ee="datetime",Ae="boolean",qe="number",ce=[Oe,Ee,Ae,qe];var pe=J.default||J,le=z.default||z,_e=new pe.Agent({keepAlive:!0}),Ce=new le.Agent({keepAlive:!0}),V=class extends O{constructor(e){super(),this._agent=e}makeRequest(e,{headers:t,method:s,protocol:r,requestData:n,timeout:a}){let o=new URL(e),c=r==="http"||o.protocol==="http:",d=this._agent;return d||(d=c?_e:Ce),new Promise((p,l)=>{let h=(c?pe:le).request({agent:d,ciphers:"DEFAULT:!aNULL:!eNULL:!LOW:!EXPORT:!SSLv2:!MD5",headers:t,host:o.hostname,method:s,path:o.pathname+o.search,port:o.port});h.setTimeout(a!=null?a:8e4,()=>{h.destroy(O.makeTimeoutError())}),h.on("response",u=>{p(new K(u))}),h.on("error",u=>{l(u)}),h.once("socket",u=>{let b=n?JSON.stringify(n):"";u.connecting?u.once(c?"connect":"secureConnect",()=>{h.write(b),h.end()}):(h.write(b),h.end())})})}},K=class extends ${constructor(e){super(e.statusCode,e.headers||{}),this._res=e}getRawResponse(){return this._res}toStream(e){return this._res.once("end",()=>e()),this._res}toJSON(){return new Promise((e,t)=>{let s="";this._res.setEncoding("utf8"),this._res.on("data",r=>{s+=r}),this._res.once("end",()=>{try{e(JSON.parse(s))}catch(r){t(r)}})})}};var R=i=>typeof i=="object"&&Array.isArray(i)&&i!==null,T=i=>i!==null&&Object.prototype.toString.call(i)==="[object Object]",k=i=>T(i)&&Object.keys(i).length===0,Y=i=>typeof i=="number"||typeof i=="string"||typeof i=="boolean"||i===null;function Be(i,e){let t={...i};return e.forEach(s=>{delete t[s]}),t}var L=i=>T(i)?Be(i,["__label","__id","__proptypes"]):i,B=i=>R(i)?i.map(B):T(i)?Object.fromEntries(Object.entries(i).filter(([e,t])=>t!==void 0).map(([e,t])=>[e,B(t)])):i,G=i=>R(i)?i.every(Y):Y(i),v=i=>T(i)&&Object.values(i).every(G),je=i=>T(i)||R(i)&&!i.every(Y),he=i=>{if(R(i)||!T(i))return!0;let e=Object.values(i);return e.length===0?!0:e.some(t=>!je(t))},E=i=>typeof i=="string",w=i=>{if(typeof i=="string"){if(i.toLowerCase()==="true")return!0;if(i.toLowerCase()==="false")return!1}return R(i)&&i.length===0||T(i)&&Object.keys(i).length===0?!1:!!i};var Z=["httpClient","timeout","host","port","protocol","url","logger","options"];var A=class i extends Error{constructor(e,t){super(`Record with label "${e}" and properties ${JSON.stringify(t)} already exists`),this.name="UniquenessError",Object.setPrototypeOf(this,i.prototype)}},P=class i extends Error{constructor(e){super(e),this.name="EmptyTarget",Object.setPrototypeOf(this,i.prototype)}},M=class i extends Error{constructor(e,t){super(`Expected a unique result but found ${e} matches for the provided SearchQuery: ${JSON.stringify(t)}. Ensure your search parameters uniquely identify a single result.`),this.name="NonUniqueResultError",Object.setPrototypeOf(this,i.prototype)}};var F=async(i,e)=>{let t=Object.entries(i).map(async([n,a])=>a.default&&typeof a.default<"u"&&typeof e[n]>"u"?{key:n,value:typeof a.default=="function"?await a.default():a.default}:{key:n,value:void 0});return{...(await Promise.all(t)).reduce((n,{key:a,value:o})=>(o!==void 0&&(n[a]=o),n),{}),...e}},W=(i,e)=>Object.entries(e).filter(([t])=>{var s;return(s=i[t])==null?void 0:s.unique}).reduce((t,[s,r])=>(s in i&&(t[s]=r),t),{}),X=(i,e,t)=>{let s={},r=Object.entries(e).filter(([,n])=>n.unique).reduce((n,[a])=>(n[a]=!0,n),{});return i.forEach(n=>{Object.entries(n).forEach(([a,o])=>{if(a in r)if(s[a]){if(s[a].includes(o))throw new A(t,{[a]:o});s[a]=[...s[a],o]}else s[a]=[o]})}),s},ee=i=>{if(!i)return{};if(!T(i))throw new Error("Config must be an object");if(Object.keys(i).filter(t=>!Z.includes(t)).length>0)throw new Error(`Config object may only contain the following: ${Z.join(", ")}`);return i};function te(i,e,t){if(!Number.isInteger(e)){if(t!==void 0)return t;throw new Error(`${i} must be an integer`)}return e}function N(i){let e=i.split("-"),t=e[0]+e[1].slice(0,4);return parseInt(t,16)}function re(i){return new Date(N(i))}var S=class{constructor(e={}){this.data=e}get exists(){return w(this.data.__id)&&w(this.data.__label)}get id(){if(!w(this.data.__id))throw new Error("DBRecordInstance: Unable to access 'id'. The Record's `data.__id` is missing or incorrect.");return this.data.__id}get label(){if(!w(this.data.__label))throw new Error("DBRecordInstance: Unable to access 'label'. The Record's `data.__label` is missing or incorrect.");return this.data.__label}get proptypes(){if(!w(this.data.__proptypes))throw new Error("DBRecordInstance: Unable to access 'proptypes'. The Record's `data.__proptypes` is missing or incorrect.");return this.data.__proptypes}get date(){try{return re(this.id)}catch{throw new Error("DBRecordInstance: Unable to access 'date'. The Record's `data.__id` is missing or incorrect.")}}get timestamp(){try{return N(this.id)}catch{throw new Error("DBRecordInstance: Unable to access 'timestamp'. The Record's `data.__id` is missing or incorrect.")}}async delete(e){if(!w(this.data))throw new Error("DBRecordInstance: Unable to delete Record. The Record data is undefined.");return await y.getInstance().records.deleteById(this.id,e)}async update(e,t){if(!w(this.data))throw new Error("DBRecordInstance: Unable to update Record. The Record data is undefined.");return y.getInstance().records.update({label:this.label,target:this.id,data:e},t)}async set(e,t){if(!w(this.data))throw new Error("DBRecordInstance: Unable to set. The Record data is undefined.");return y.getInstance().records.set({label:this.label,target:this.id,data:e},t)}async attach(e,t,s){if(!w(this.data))throw new Error("DBRecordInstance: Unable to attach Record. The Record data is undefined.");return y.getInstance().records.attach({source:this.id,target:e,options:t},s)}async detach(e,t,s){if(!w(this.data))throw new Error("DBRecordInstance: Unable to detach Record. The Record data is undefined.");return y.getInstance().records.detach({source:this.id,target:e,options:t},s)}},I=class{constructor(e=[],t=0,s){this.data=e,this.total=t,this.searchQuery=s}async deleteAll(e){let t=this.data.map(r=>r.id);return t.length?await y.getInstance().records.deleteById(t,e):{success:!0}}async next(e){var o,c;if(!this.searchQuery)throw new Error("DBRecordsArrayInstance: Cannot paginate \u2014 no searchQuery was provided.");let t=(o=this.searchQuery.skip)!=null?o:0,s=(c=this.searchQuery.limit)!=null?c:100,r={...this.searchQuery,skip:t+s},a=await y.getInstance().records.find(r,void 0);return e!=null&&e.preserveData?(this.data=[...this.data,...a.data],this.total=a.total,this.searchQuery=r,this):a}exportCsv(){if(!this.data.length)return"";let e=new Set(["__id","__label","__proptypes"]),t=Object.keys(this.data[0].data).filter(n=>!e.has(n)),s=n=>{let a=n==null?"":String(n);return a.includes(",")||a.includes('"')||a.includes(`
|
|
2
2
|
`)?`"${a.replace(/"/g,'""')}"`:a},r=this.data.map(n=>t.map(a=>s(n.data[a])).join(","));return[t.join(","),...r].join(`
|
|
3
|
-
`)}async setProperties(e,t){let r=u.getInstance();for(let n=0;n<this.data.length;n+=100){let a=this.data.slice(n,n+100);await Promise.all(a.map(o=>r.records.update({target:o.id,label:o.data.__label,data:e},t)))}}};var ke={"Content-Type":"application/json"},ge=({httpClient:i,token:e,url:t})=>async(s,{headers:r,...n})=>{let a=await i.makeRequest(`${t}${s}`,{credentials:"omit",headers:Object.assign({...ke,...r},typeof e<"u"?{Authorization:`Bearer ${e}`}:{}),...n});if(a.getStatusCode()>=200&&a.getStatusCode()<300)return await a.toJSON();throw new Error(`${a.getStatusCode()}`)};var _=class{constructor(e){this.id=e}async rollback(){return await u.getInstance().tx.rollback(this.id)}async commit(){return await u.getInstance().tx.commit(this.id)}};var ye="api.rushdb.com";var ue="https",me="/api/v1";var f=i=>i?{"x-transaction-id":i}:void 0,ve=i=>E(i)||i instanceof _,m=i=>ve(i)?i instanceof _?i.id:i:void 0,fe=i=>/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/.test(i),x=i=>{if(E(i)&&fe(i))return i;if(i instanceof S&&i.data)return i.data.__id;if(T(i)&&"__id"in i&&fe(i.__id))return i.__id},j=i=>!(!T(i)||T(i)&&"name"in i&&!E(i.name)||T(i)&&"type"in i&&(!E(i.type)||!ce.includes(i.type))||!("value"in i)||!G(i.value)||"metadata"in i&&!E(i.metadata)||"valueSeparator"in i&&!E(i.valueSeparator)),Se=i=>{let e=ue,t=ye,s=443,r=me;if("url"in i){let a=new URL(i.url);e=a.protocol.replace(":",""),t=a.hostname,s=parseInt(a.port||(e==="http"?"80":e==="https"?"443":""))}"host"in i&&"port"in i&&"protocol"in i&&(e=i.protocol.replace(":",""),t=i.host,s=i.port),r&&!r.startsWith("/")&&(r="/"+r);let n="";return e==="http"&&s===80||e==="https"&&s===443||(n=":"+s),`${e}://${t}${n}${r}`},g=(i=8)=>{let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",t="";for(let s=0;s<i;s++){let r=Math.floor(Math.random()*e.length);t+=e[r]}return t};var U=class{constructor(e,t){this.records={attach:async({source:e,target:t,options:s},r)=>{var l,h;let n=m(r),o=`/relationships/${x(e)}`,c={headers:Object.assign({},f(n)),method:"POST",requestData:{targetIds:this._extractTargetIds(t,"Attach"),...(s==null?void 0:s.type)&&{type:s.type},...(s==null?void 0:s.direction)&&{direction:s.direction},...(s==null?void 0:s.properties)&&{properties:s.properties}}},d=typeof this.logger=="function"?g():"";(l=this.logger)==null||l.call(this,{requestId:d,path:o,...c});let p=await this.fetcher(o,c);return(h=this.logger)==null||h.call(this,{requestId:d,path:o,...c,responseData:p.data}),p},detach:async({source:e,target:t,options:s},r)=>{var l,h;let n=m(r),o=`/relationships/${x(e)}`,c={headers:Object.assign({},f(n)),method:"PUT",requestData:{targetIds:this._extractTargetIds(t,"Detach"),...(s==null?void 0:s.typeOrTypes)&&{typeOrTypes:s.typeOrTypes},...(s==null?void 0:s.direction)&&{direction:s.direction}}},d=typeof this.logger=="function"?g():"";(l=this.logger)==null||l.call(this,{requestId:d,path:o,...c});let p=await this.fetcher(o,c);return(h=this.logger)==null||h.call(this,{requestId:d,path:o,...c,responseData:p.data}),p},create:async({label:e,data:t,options:s,vectors:r},n)=>{var h,y;let a=m(n),o="/records",c={headers:Object.assign({},f(a)),method:"POST",requestData:{}},d=typeof this.logger=="function"?g():"",p=L(B(t));if(R(p)&&p.every(j))c.requestData={label:e,properties:p,options:s,...(r==null?void 0:r.length)&&{vectors:r}};else if(v(p))c.requestData={label:e,data:p,options:s,...(r==null?void 0:r.length)&&{vectors:r}};else throw T(p)?new Error("Provided data is not a flat object. Consider using the `importJson` method for nested objects or arrays of nested objects, or use `createMany` for arrays of flat objects."):new Error("Provided data is not valid.");(h=this.logger)==null||h.call(this,{requestId:d,path:o,...c});let l=await this.fetcher(o,c);return(y=this.logger)==null||y.call(this,{requestId:d,path:o,...c,responseData:l.data}),l!=null&&l.success&&(l!=null&&l.data)?new S(l.data):new S},createMany:async(e,t)=>{var l,h,y,b;let s=R(e.data)?e.data:[e.data];if(!s.every(D=>v(D)))throw new Error("records.createMany supports only flat records (no nested objects/arrays). Use records.importJson for nested JSON.");if(e.vectors&&e.vectors.length>s.length)throw new Error(`records.createMany: vectors length (${e.vectors.length}) exceeds the number of data rows (${s.length}).`);let n=(l=e.vectors)!=null&&l.length?s.map((D,C)=>{var ae;return(ae=e.vectors[C])!=null&&ae.length?{...D,$vectors:e.vectors[C]}:D}):s,a=m(t),o="/records/import/json",c={headers:Object.assign({},f(a)),method:"POST",requestData:{label:e.label,data:n,options:e.options}},d=typeof this.logger=="function"?g():"";(h=this.logger)==null||h.call(this,{requestId:d,path:o,...c});let p=await this.fetcher(o,c);if((y=this.logger)==null||y.call(this,{requestId:d,path:o,...c,responseData:p.data}),p!=null&&p.success&&(p!=null&&p.data)){let D=R(p.data)?(b=p.data)==null?void 0:b.map(C=>new S(C)):[];return new I(D,p.total)}return new I([])},importJson:async(e,t)=>{var h,y,b;let{data:s,options:r}=e,{label:n}=e,a=s;if(!n){let D=T(s)&&!R(s)?L(s):s;if(he(D))throw new Error("records.importJson: Missing `label`. Provide `label` for top-level arrays or objects with primitive top-level properties, or pass a container object whose top-level values are objects or arrays, e.g. { ITEM: [...], USER: [...] }.")}let o=m(t),c="/records/import/json",d={headers:Object.assign({},f(o)),method:"POST",requestData:{label:n,data:a,options:r}},p=typeof this.logger=="function"?g():"";(h=this.logger)==null||h.call(this,{requestId:p,path:c,...d});let l=await this.fetcher(c,d);if((y=this.logger)==null||y.call(this,{requestId:p,path:c,...d,responseData:l.data}),l!=null&&l.success&&(l!=null&&l.data)){let D=R(l.data)?(b=l.data)==null?void 0:b.map(C=>new S(C)):[];return new I(D,l.total)}return new I([])},importCsv:async(e,t)=>{var c,d;let s=m(t),r="/records/import/csv",n={headers:Object.assign({},f(s)),method:"POST",requestData:e},a=typeof this.logger=="function"?g():"";(c=this.logger)==null||c.call(this,{requestId:a,path:r,...n});let o=await this.fetcher(r,n);if((d=this.logger)==null||d.call(this,{requestId:a,path:r,...n,responseData:o.data}),o!=null&&o.success&&(o!=null&&o.data)){let p=R(o.data)?o.data.map(l=>new S(l)):[];return new I(p,o.total)}return new I([])},delete:async(e,t)=>{var c,d,p;if(k(e.where)&&!((c=this==null?void 0:this.options)!=null&&c.allowForceDelete))throw new P("You must specify criteria to delete records. Empty criteria are not allowed. If this was intentional, use the Dashboard instead.");let s=m(t),r="/records/delete",n={headers:Object.assign({},f(s)),method:"POST",requestData:e!=null?e:{}},a=typeof this.logger=="function"?g():"";(d=this.logger)==null||d.call(this,{requestId:a,path:r,...n});let o=await this.fetcher(r,n);return(p=this.logger)==null||p.call(this,{requestId:a,path:r,...n,responseData:o.data}),o},deleteById:async(e,t)=>{var d,p;let s=m(t),r=R(e),n=r?"/records/delete":`/records/${e}`,a={headers:Object.assign({},f(s)),method:r?"POST":"DELETE",requestData:r?{limit:1e3,where:{$id:{$in:e}}}:void 0},o=typeof this.logger=="function"?g():"";(d=this.logger)==null||d.call(this,{requestId:o,path:n,...a});let c=await this.fetcher(n,a);return(p=this.logger)==null||p.call(this,{requestId:o,path:n,...a,responseData:c.data}),c},export:async(e,t)=>{var c,d;let s=m(t),r="/records/export/csv",n={headers:Object.assign({},f(s)),method:"POST",requestData:e!=null?e:{}},a=typeof this.logger=="function"?g():"";(c=this.logger)==null||c.call(this,{requestId:a,path:r,...n});let o=await this.fetcher(r,n);return(d=this.logger)==null||d.call(this,{requestId:a,path:r,...n,responseData:o.data}),o},find:async(e,t)=>{var l,h;let{id:s,...r}=e,n=m(t),a=s?`/records/${s}/search`:"/records/search",o={headers:Object.assign({},f(n)),method:"POST",requestData:r!=null?r:{}},c=typeof this.logger=="function"?g():"";(l=this.logger)==null||l.call(this,{requestId:c,path:a,...o});let d=await this.fetcher(a,o);(h=this.logger)==null||h.call(this,{requestId:c,path:a,...o,responseData:d.data});let p=d.data.map(y=>new S(y));return new I(p,d.total,e)},findById:async(e,t)=>{var c,d;let s=m(t),r=R(e)?"/records":`/records/${e}`,n={headers:Object.assign({},f(s)),method:R(e)?"POST":"GET",requestData:R(e)?{ids:e}:void 0},a=typeof this.logger=="function"?g():"";(c=this.logger)==null||c.call(this,{requestId:a,path:r,...n});let o=await this.fetcher(r,n);if((d=this.logger)==null||d.call(this,{requestId:a,path:r,...n,responseData:o.data}),R(e)){let p=o.data.map(l=>new S(l));return new I(p,o.total)}else return new S(o.data)},findOne:async(e,t)=>{var d,p;let s=m(t),r="/records/search",n={headers:Object.assign({},f(s)),method:"POST",requestData:{...e,limit:1,skip:0}},a=typeof this.logger=="function"?g():"";(d=this.logger)==null||d.call(this,{requestId:a,path:r,...n});let o=await this.fetcher(r,n);(p=this.logger)==null||p.call(this,{requestId:a,path:r,...n,responseData:o.data});let[c]=o.data;return new S(c)},findUniq:async(e,t)=>{var d,p;let s=m(t),r="/records/search",n={headers:Object.assign({},f(s)),method:"POST",requestData:{...e,limit:1,skip:0}},a=typeof this.logger=="function"?g():"";(d=this.logger)==null||d.call(this,{requestId:a,path:r,...n});let o=await this.fetcher(r,n);if((p=this.logger)==null||p.call(this,{requestId:a,path:r,...n,responseData:o.data}),typeof o.total<"u"&&o.total>1)throw new M(o.total,e);let[c]=o.data;return new S(c)},set:async({target:e,label:t,data:s,options:r,vectors:n},a)=>{var b,D;let o=m(a),d=`/records/${x(e)}`,p={headers:Object.assign({},f(o)),method:"PUT",requestData:{}},l=typeof this.logger=="function"?g():"",h=L(B(s));if(R(h)&&h.every(j))p.requestData={label:t,properties:h,...(n==null?void 0:n.length)&&{vectors:n}};else if(v(h))p.requestData={label:t,data:h,options:r,...(n==null?void 0:n.length)&&{vectors:n}};else throw T(h)?new Error("Provided data is not a flat object. Consider to use `importJson` method."):new Error("Provided data is not valid.");(b=this.logger)==null||b.call(this,{requestId:l,path:d,...p});let y=await this.fetcher(d,p);return(D=this.logger)==null||D.call(this,{requestId:l,path:d,...p,responseData:y.data}),y!=null&&y.success&&(y!=null&&y.data)?new S(y.data):new S},update:async({target:e,label:t,data:s,options:r},n)=>{var y,b;let a=m(n),c=`/records/${x(e)}`,d={headers:Object.assign({},f(a)),method:"PATCH",requestData:{}},p=typeof this.logger=="function"?g():"",l=L(B(s));if(R(l)&&l.every(j))d.requestData={label:t,properties:l};else if(v(l))d.requestData={label:t,data:l,options:r};else throw T(l)?new Error("Provided data is not a flat object. Consider to use `importJson` method."):new Error("Provided data is not valid.");(y=this.logger)==null||y.call(this,{requestId:p,path:c,...d});let h=await this.fetcher(c,d);return(b=this.logger)==null||b.call(this,{requestId:p,path:c,...d,responseData:h.data}),h!=null&&h.success&&(h!=null&&h.data)?new S(h.data):new S},upsert:async({label:e,data:t,options:s,vectors:r},n)=>{var y,b,D;let a=m(n),o="/records",c={headers:Object.assign({},f(a)),method:"POST",requestData:{}},d=typeof this.logger=="function"?g():"",p=L(B(t)),l={...s,mergeBy:(y=s==null?void 0:s.mergeBy)!=null?y:[]};if(R(p)&&p.every(j))c.requestData={label:e,properties:p,options:l,...(r==null?void 0:r.length)&&{vectors:r}};else if(v(p))c.requestData={label:e,data:p,options:l,...(r==null?void 0:r.length)&&{vectors:r}};else throw T(p)?new Error("Provided data is not a flat object. Upsert supports flat objects or property drafts array."):new Error("Provided data is not valid.");(b=this.logger)==null||b.call(this,{requestId:d,path:o,...c});let h=await this.fetcher(o,c);return(D=this.logger)==null||D.call(this,{requestId:d,path:o,...c,responseData:h.data}),h!=null&&h.success&&(h!=null&&h.data)?new S(h.data):new S}};this.relationships={patterns:{list:async()=>{var n,a;let e="/relationships/patterns",t={method:"GET",headers:{}},s=typeof this.logger=="function"?g():"";(n=this.logger)==null||n.call(this,{requestId:s,path:e,...t});let r=await this.fetcher(e,t);return(a=this.logger)==null||a.call(this,{requestId:s,path:e,...t,responseData:r.data}),r},analyze:async()=>{var n,a;let e="/relationships/patterns/analyze",t={method:"POST",headers:{},requestData:{}},s=typeof this.logger=="function"?g():"";(n=this.logger)==null||n.call(this,{requestId:s,path:e,...t});let r=await this.fetcher(e,t);return(a=this.logger)==null||a.call(this,{requestId:s,path:e,...t,responseData:r.data}),r},approve:async e=>{var a,o;let t=`/relationships/patterns/${encodeURIComponent(e)}/approve`,s={method:"POST",headers:{},requestData:{}},r=typeof this.logger=="function"?g():"";(a=this.logger)==null||a.call(this,{requestId:r,path:t,...s});let n=await this.fetcher(t,s);return(o=this.logger)==null||o.call(this,{requestId:r,path:t,...s,responseData:n.data}),n},ignore:async e=>{var a,o;let t=`/relationships/patterns/${encodeURIComponent(e)}/ignore`,s={method:"POST",headers:{},requestData:{}},r=typeof this.logger=="function"?g():"";(a=this.logger)==null||a.call(this,{requestId:r,path:t,...s});let n=await this.fetcher(t,s);return(o=this.logger)==null||o.call(this,{requestId:r,path:t,...s,responseData:n.data}),n},delete:async(e,t)=>{var c,d;let s=t!=null&&t.deleteExisting?"?deleteExisting=true":"",r=`/relationships/patterns/${encodeURIComponent(e)}${s}`,n={method:"DELETE",headers:{}},a=typeof this.logger=="function"?g():"";(c=this.logger)==null||c.call(this,{requestId:a,path:r,...n});let o=await this.fetcher(r,n);return(d=this.logger)==null||d.call(this,{requestId:a,path:r,...n,responseData:o.data}),o}},createMany:async(e,t)=>{var c,d;let s=m(t),r="/relationships/create-many",n={headers:Object.assign({},f(s)),method:"POST",requestData:e!=null?e:{}},a=typeof this.logger=="function"?g():"";(c=this.logger)==null||c.call(this,{requestId:a,path:r,...n});let o=await this.fetcher(r,n);return(d=this.logger)==null||d.call(this,{requestId:a,path:r,...n,responseData:o.data}),o},deleteMany:async(e,t)=>{var c,d;let s=m(t),r="/relationships/delete-many",n={headers:Object.assign({},f(s)),method:"POST",requestData:e!=null?e:{}},a=typeof this.logger=="function"?g():"";(c=this.logger)==null||c.call(this,{requestId:a,path:r,...n});let o=await this.fetcher(r,n);return(d=this.logger)==null||d.call(this,{requestId:a,path:r,...n,responseData:o.data}),o},find:async(e={},t)=>{var c,d;let s=m(t),r="/relationships/search",n={headers:Object.assign({},f(s)),method:"POST",requestData:e!=null?e:{}},a=typeof this.logger=="function"?g():"";(c=this.logger)==null||c.call(this,{requestId:a,path:r,...n});let o=await this.fetcher(r,n);return(d=this.logger)==null||d.call(this,{requestId:a,path:r,...n,responseData:o.data}),o}};this.properties={delete:async(e,t)=>{var c,d;let s=m(t),r=`/properties/${e}`,n={headers:Object.assign({},f(s)),method:"DELETE"},a=typeof this.logger=="function"?g():"";(c=this.logger)==null||c.call(this,{requestId:a,path:r,...n});let o=await this.fetcher(r,n);return(d=this.logger)==null||d.call(this,{requestId:a,path:r,...n,responseData:o.data}),o},find:async(e,t)=>{var c,d;let s=m(t),r="/properties/search",n={headers:Object.assign({},f(s)),method:"POST",requestData:e!=null?e:{}},a=typeof this.logger=="function"?g():"";(c=this.logger)==null||c.call(this,{requestId:a,path:r,...n});let o=await this.fetcher(r,n);return(d=this.logger)==null||d.call(this,{requestId:a,path:r,...n,responseData:o.data}),o},findById:async(e,t)=>{var c,d;let s=m(t),r=`/properties/${e}`,n={headers:Object.assign({},f(s)),method:"GET"},a=typeof this.logger=="function"?g():"";(c=this.logger)==null||c.call(this,{requestId:a,path:r,...n});let o=await this.fetcher(r,n);return(d=this.logger)==null||d.call(this,{requestId:a,path:r,...n,responseData:o.data}),o},values:async(e,t,s)=>{var d,p;let r=m(s),n=`/properties/${e}/values`,a={headers:Object.assign({},f(r)),method:"POST",requestData:t!=null?t:{}},o=typeof this.logger=="function"?g():"";(d=this.logger)==null||d.call(this,{requestId:o,path:n,...a});let c=await this.fetcher(n,a);return(p=this.logger)==null||p.call(this,{requestId:o,path:n,...a,responseData:c.data}),c}};this.labels={find:async(e,t)=>{var c,d;let s=m(t),r="/labels/search",n={headers:Object.assign({},f(s)),method:"POST",requestData:e!=null?e:{}},a=typeof this.logger=="function"?g():"";(c=this.logger)==null||c.call(this,{requestId:a,path:r,...n});let o=await this.fetcher(r,n);return(d=this.logger)==null||d.call(this,{requestId:a,path:r,...n,responseData:o.data}),o}};this.tx={begin:async e=>{var a,o;let t="/tx",s={method:"POST",requestData:T(e)&&"ttl"in e?e:{}},r=typeof this.logger=="function"?g():"";(a=this.logger)==null||a.call(this,{requestId:r,path:t,...s});let n=await this.fetcher(t,s);return(o=this.logger)==null||o.call(this,{requestId:r,path:t,...s,responseData:n.data}),new _(n.data.id)},commit:async e=>{var o,c;let s=`/tx/${m(e)}/commit`,r={method:"POST",requestData:{}},n=typeof this.logger=="function"?g():"";(o=this.logger)==null||o.call(this,{requestId:n,path:s,...r});let a=await this.fetcher(s,r);return(c=this.logger)==null||c.call(this,{requestId:n,path:s,...r,responseData:a.data}),a},get:async e=>{var o,c;let s=`/tx/${m(e)}`,r={method:"GET"},n=typeof this.logger=="function"?g():"";(o=this.logger)==null||o.call(this,{requestId:n,path:s,...r});let a=await this.fetcher(s,r);return(c=this.logger)==null||c.call(this,{requestId:n,path:s,...r,responseData:a.data}),new _(a.data.id)},rollback:async e=>{var o,c;let s=`/tx/${m(e)}/rollback`,r={method:"POST",requestData:{}},n=typeof this.logger=="function"?g():"";(o=this.logger)==null||o.call(this,{requestId:n,path:s,...r});let a=await this.fetcher(s,r);return(c=this.logger)==null||c.call(this,{requestId:n,path:s,...r,responseData:a.data}),a}};this.settings={get:async()=>{var n,a;let e="/sdk/settings",t={method:"GET"},s=typeof this.logger=="function"?g():"";(n=this.logger)==null||n.call(this,{requestId:s,path:e,...t});let r=await this.fetcher(e,t);return(a=this.logger)==null||a.call(this,{requestId:s,path:e,...t,responseData:r.data}),r}};this.query={raw:async({query:e,params:t},s)=>{var d,p;let r=m(s),n="/query/raw",a={headers:Object.assign({},f(r)),method:"POST",requestData:{query:e,params:t}},o=typeof this.logger=="function"?g():"";(d=this.logger)==null||d.call(this,{requestId:o,path:n,...a});let c=await this.fetcher(n,a);return(p=this.logger)==null||p.call(this,{requestId:o,path:n,...a,responseData:c.data}),c}};this.ai={getOntology:async(e,t)=>{var c,d;let s=m(t),r="/ai/ontology",n={headers:Object.assign({},f(s)),method:"POST",requestData:e!=null?e:{}},a=typeof this.logger=="function"?g():"";(c=this.logger)==null||c.call(this,{requestId:a,path:r,...n});let o=await this.fetcher(r,n);return(d=this.logger)==null||d.call(this,{requestId:a,path:r,...n,responseData:o.data}),o},getOntologyMarkdown:async(e,t)=>{var c,d;let s=m(t),r="/ai/ontology/md",n={headers:Object.assign({},f(s)),method:"POST",requestData:e!=null?e:{}},a=typeof this.logger=="function"?g():"";(c=this.logger)==null||c.call(this,{requestId:a,path:r,...n});let o=await this.fetcher(r,n);return(d=this.logger)==null||d.call(this,{requestId:a,path:r,...n,responseData:o.data}),o},indexes:{find:async()=>{var n,a;let e="/ai/indexes",t={method:"GET",headers:{}},s=typeof this.logger=="function"?g():"";(n=this.logger)==null||n.call(this,{requestId:s,path:e,...t});let r=await this.fetcher(e,t);return(a=this.logger)==null||a.call(this,{requestId:s,path:e,...t,responseData:r.data}),r},create:async e=>{var d,p;let t="/ai/indexes",{external:s,...r}=e,n=s===!0?{...r,sourceType:"external"}:r,a={method:"POST",headers:{},requestData:n},o=typeof this.logger=="function"?g():"";(d=this.logger)==null||d.call(this,{requestId:o,path:t,...a});let c=await this.fetcher(t,a);return(p=this.logger)==null||p.call(this,{requestId:o,path:t,...a,responseData:c.data}),c},upsertVectors:async(e,t)=>{var o,c;let s=`/ai/indexes/${e}/vectors/upsert`,r={method:"POST",headers:{},requestData:t},n=typeof this.logger=="function"?g():"";(o=this.logger)==null||o.call(this,{requestId:n,path:s,...r});let a=await this.fetcher(s,r);return(c=this.logger)==null||c.call(this,{requestId:n,path:s,...r,responseData:a.data}),a},delete:async e=>{var a,o;let t=`/ai/indexes/${e}`,s={method:"DELETE",headers:{}},r=typeof this.logger=="function"?g():"";(a=this.logger)==null||a.call(this,{requestId:r,path:t,...s});let n=await this.fetcher(t,s);return(o=this.logger)==null||o.call(this,{requestId:r,path:t,...s,responseData:n.data}),n},stats:async e=>{var a,o;let t=`/ai/indexes/${e}/stats`,s={method:"GET",headers:{}},r=typeof this.logger=="function"?g():"";(a=this.logger)==null||a.call(this,{requestId:r,path:t,...s});let n=await this.fetcher(t,s);return(o=this.logger)==null||o.call(this,{requestId:r,path:t,...s,responseData:n.data}),n}},search:async e=>{var o,c,d,p;let t="/ai/search",s={method:"POST",headers:{},requestData:e},r=typeof this.logger=="function"?g():"";(o=this.logger)==null||o.call(this,{requestId:r,path:t,...s});let n=await this.fetcher(t,s);(c=this.logger)==null||c.call(this,{requestId:r,path:t,...s,responseData:n.data});let a=((d=n.data)!=null?d:[]).map(l=>new S(l));return new I(a,(p=n.total)!=null?p:0)}};if(this.fetcher=null,t!=null&&t.httpClient){let s=Se(t);this.fetcher=ge({httpClient:t.httpClient,token:e,url:s})}t!=null&&t.options&&(this.options=t==null?void 0:t.options),t!=null&&t.logger&&(this.logger=t==null?void 0:t.logger)}_extractTargetIds(e,t){var s;if(e instanceof S){let r=x(e);if(!r)throw new P(`${t} error: Target id is empty`);return[r]}if(R(e)&&e.every(r=>r instanceof S)){let r=e.map(x).filter(w);if(!r.length)throw new P(`${t} error: Target ids are empty`);return r}if(e instanceof I){let r=(s=e.data)==null?void 0:s.map(x).filter(w);if(!(r!=null&&r.length))throw new P(`${t} error: Target ids are empty`);return r}if(T(e)&&"__id"in e)return[e.__id];if(R(e)&&e.every(r=>T(r)&&"__id"in r)){let r=e.map(x).filter(w);if(!r.length)throw new P(`${t} error: Target ids are empty`);return r}return R(e)?e:E(e)?[e]:[]}};var Re,q=class q extends U{constructor(e,t){var n,a;let s=e!=null?e:typeof process<"u"?(n=process.env)==null?void 0:n.RUSHDB_API_KEY:void 0,r=ee(t);super(s,{...r,httpClient:(a=r.httpClient)!=null?a:Re}),q.instance=this,this.initializeSync(s,r)}initializeSync(e,t){q.state={initialized:!0,debug:!1,timeout:te("timeout",t==null?void 0:t.timeout,8e4),token:e}}static getInstance(){if(q.instance)return q.instance;throw new Error('RushDB not initialized. Please create a RushDB instance first: new RushDB("RUSHDB_API_KEY")')}static isInitialized(){return w(q.instance)}toDBRecordInstance(e){return new S(e)}};q.instance=null,q.state={initialized:!1,debug:!1,timeout:8e4};var u=q,se=i=>{Re=i};var ne=class{constructor(e,t,s){this.label=e,this.schema=t,this.config=s!=null?s:{}}getLabel(){return this.label}async toDBRecordInstance(e){try{return u.getInstance().toDBRecordInstance(e)}catch{throw new Error("No RushDB instance was provided during model initialization.")}}async find(e,t){let s=e!=null?e:{};return u.getInstance().records.find({...s,labels:[this.label]},t)}async findOne(e,t){let s=e!=null?e:{};return u.getInstance().records.findOne({...s,labels:[this.label]},t)}async findById(e,t){return this.findOne({where:{$id:e}},t)}async findUniq(e,t){let s=e!=null?e:{};return u.getInstance().records.findUniq({...s,labels:[this.label]},t)}async create(e,t,s){var c,d;let r=await F(this.schema,e),n=W(this.schema,r),a=w(n),o=u.getInstance();if(a){let p=t!=null?t:await o.tx.begin(),l=await this.find({where:n},p),h=typeof t<"u";if(!((c=l==null?void 0:l.data)!=null&&c.length)){let b=await o.records.create({label:this.label,data:r},p);return h||await p.commit(),b}else switch((d=s==null?void 0:s.onConflict)!=null?d:"throw"){case"upsert":{let D=l.data[0],C=await o.records.set({target:D.id,label:this.label,data:r},p);return h||await p.commit(),C}case"skip":return h||await p.commit(),null;default:throw h||await p.commit(),new A(this.label,n)}}return await o.records.create({label:this.label,data:r},t)}async attach({source:e,target:t,options:s},r){return await u.getInstance().records.attach({source:e,target:t,options:s},r)}async detach({source:e,target:t,options:s},r){return await u.getInstance().records.detach({source:e,target:t,options:s},r)}async validateTargetLabel(e,t){let s=x(e);if(!s)return;let n=await u.getInstance().records.findById(s,t);if(!n)throw new Error(`Record with id "${s}" not found.`);if(n.data.__label!==this.label)throw new TypeError(`Target record label "${n.data.__label}" does not match model label "${this.label}".`)}async handleSetOrUpdate(e,t,s,r){var c,d;if(this.config.validateTargetLabel&&await this.validateTargetLabel(e,r),R(t)&&t.every(j))return await u.getInstance().records[s]({label:this.label,target:e,data:t},r);let n=u.getInstance(),a=await F(this.schema,t),o=W(this.schema,a);if(!k(o)){let p=r!=null?r:await n.tx.begin(),l=await this.find({where:o},p),h=typeof r<"u";if(!((c=l==null?void 0:l.data)!=null&&c.length)||l.data.length===1&&((d=l.data[0])==null?void 0:d.id)===x(e)){let b=await n.records[s]({target:e,label:this.label,data:a},p);return h||await p.commit(),b}else throw h||await p.commit(),new A(this.label,o)}return await n.records[s]({label:this.label,target:e,data:a},r)}async set(e,t,s){return await this.handleSetOrUpdate(e,t,"set",s)}async update(e,t,s){return await this.handleSetOrUpdate(e,t,"update",s)}async createMany(e,t){var a;let s=u.getInstance(),r=typeof t<"u",n=t!=null?t:await s.tx.begin();try{let o=await Promise.all(e.map(async p=>await F(this.schema,p))),c=X(o,this.schema,this.label);if(!k(c)){let p=Object.entries(c).map(([h,y])=>({[h]:{$in:y}})),l=await this.find({where:{$or:p}},n);if((a=l==null?void 0:l.data)!=null&&a.length)throw new A(this.label,Object.keys(c))}let d=await s.records.createMany({label:this.label,data:o},n);return r||await n.commit(),d}catch(o){throw r||await n.rollback(),o}}async delete(e,t){if(k(e.where))throw new P(`You must specify criteria to delete records of type '${this.label}'. Empty criteria are not allowed. If this was intentional, use the Dashboard instead.`);return await u.getInstance().records.delete({...e,labels:[this.label]},t)}async deleteById(e,t){return await u.getInstance().records.deleteById(e,t)}};se(new V);var Me=u;0&&(module.exports={DBRecordInstance,DBRecordsArrayInstance,EmptyTargetError,HttpClient,HttpClientResponse,Model,NonUniqueResultError,RestAPI,RushDB,Transaction,UniquenessError,idToDate,idToTimestamp,initSDK,mergeDefaultsWithPayload,parseConfig,pickUniqFieldsFromRecord,pickUniqFieldsFromRecords,validateInteger});
|
|
3
|
+
`)}async setProperties(e,t){let r=y.getInstance();for(let n=0;n<this.data.length;n+=100){let a=this.data.slice(n,n+100);await Promise.all(a.map(o=>r.records.update({target:o.id,label:o.data.__label,data:e},t)))}}};var Ue={"Content-Type":"application/json"},ge=({httpClient:i,token:e,url:t})=>async(s,{headers:r,...n})=>{let a=await i.makeRequest(`${t}${s}`,{credentials:"omit",headers:Object.assign({...Ue,...r},typeof e<"u"?{Authorization:`Bearer ${e}`}:{}),...n});if(a.getStatusCode()>=200&&a.getStatusCode()<300)return await a.toJSON();throw new Error(`${a.getStatusCode()}`)};var q=class{constructor(e){this.id=e}async rollback(){return await y.getInstance().tx.rollback(this.id)}async commit(){return await y.getInstance().tx.commit(this.id)}};var ue="api.rushdb.com";var ye="https",me="/api/v1";var f=i=>i?{"x-transaction-id":i}:void 0,Le=i=>E(i)||i instanceof q,m=i=>Le(i)?i instanceof q?i.id:i:void 0,fe=i=>/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/.test(i),x=i=>{if(E(i)&&fe(i))return i;if(i instanceof S&&i.data)return i.data.__id;if(T(i)&&"__id"in i&&fe(i.__id))return i.__id},j=i=>!(!T(i)||T(i)&&"name"in i&&!E(i.name)||T(i)&&"type"in i&&(!E(i.type)||!ce.includes(i.type))||!("value"in i)||!G(i.value)||"metadata"in i&&!E(i.metadata)||"valueSeparator"in i&&!E(i.valueSeparator)),Se=i=>{let e=ye,t=ue,s=443,r=me;if("url"in i){let a=new URL(i.url);e=a.protocol.replace(":",""),t=a.hostname,s=parseInt(a.port||(e==="http"?"80":e==="https"?"443":""))}"host"in i&&"port"in i&&"protocol"in i&&(e=i.protocol.replace(":",""),t=i.host,s=i.port),r&&!r.startsWith("/")&&(r="/"+r);let n="";return e==="http"&&s===80||e==="https"&&s===443||(n=":"+s),`${e}://${t}${n}${r}`},g=(i=8)=>{let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",t="";for(let s=0;s<i;s++){let r=Math.floor(Math.random()*e.length);t+=e[r]}return t};var U=class{constructor(e,t){this.records={attach:async({source:e,target:t,options:s},r)=>{var l,h;let n=m(r),o=`/relationships/${x(e)}`,c={headers:Object.assign({},f(n)),method:"POST",requestData:{targetIds:this._extractTargetIds(t,"Attach"),...(s==null?void 0:s.type)&&{type:s.type},...(s==null?void 0:s.direction)&&{direction:s.direction},...(s==null?void 0:s.properties)&&{properties:s.properties}}},d=typeof this.logger=="function"?g():"";(l=this.logger)==null||l.call(this,{requestId:d,path:o,...c});let p=await this.fetcher(o,c);return(h=this.logger)==null||h.call(this,{requestId:d,path:o,...c,responseData:p.data}),p},detach:async({source:e,target:t,options:s},r)=>{var l,h;let n=m(r),o=`/relationships/${x(e)}`,c={headers:Object.assign({},f(n)),method:"PUT",requestData:{targetIds:this._extractTargetIds(t,"Detach"),...(s==null?void 0:s.typeOrTypes)&&{typeOrTypes:s.typeOrTypes},...(s==null?void 0:s.direction)&&{direction:s.direction}}},d=typeof this.logger=="function"?g():"";(l=this.logger)==null||l.call(this,{requestId:d,path:o,...c});let p=await this.fetcher(o,c);return(h=this.logger)==null||h.call(this,{requestId:d,path:o,...c,responseData:p.data}),p},create:async({label:e,data:t,options:s,vectors:r},n)=>{var h,u;let a=m(n),o="/records",c={headers:Object.assign({},f(a)),method:"POST",requestData:{}},d=typeof this.logger=="function"?g():"",p=L(B(t));if(R(p)&&p.every(j))c.requestData={label:e,properties:p,options:s,...(r==null?void 0:r.length)&&{vectors:r}};else if(v(p))c.requestData={label:e,data:p,options:s,...(r==null?void 0:r.length)&&{vectors:r}};else throw T(p)?new Error("Provided data is not a flat object. Consider using the `importJson` method for nested objects or arrays of nested objects, or use `createMany` for arrays of flat objects."):new Error("Provided data is not valid.");(h=this.logger)==null||h.call(this,{requestId:d,path:o,...c});let l=await this.fetcher(o,c);return(u=this.logger)==null||u.call(this,{requestId:d,path:o,...c,responseData:l.data}),l!=null&&l.success&&(l!=null&&l.data)?new S(l.data):new S},createMany:async(e,t)=>{var l,h,u,b;let s=R(e.data)?e.data:[e.data];if(!s.every(D=>v(D)))throw new Error("records.createMany supports only flat records (no nested objects/arrays). Use records.importJson for nested JSON.");if(e.vectors&&e.vectors.length>s.length)throw new Error(`records.createMany: vectors length (${e.vectors.length}) exceeds the number of data rows (${s.length}).`);let n=(l=e.vectors)!=null&&l.length?s.map((D,C)=>{var ae;return(ae=e.vectors[C])!=null&&ae.length?{...D,$vectors:e.vectors[C]}:D}):s,a=m(t),o="/records/import/json",c={headers:Object.assign({},f(a)),method:"POST",requestData:{label:e.label,data:n,options:e.options}},d=typeof this.logger=="function"?g():"";(h=this.logger)==null||h.call(this,{requestId:d,path:o,...c});let p=await this.fetcher(o,c);if((u=this.logger)==null||u.call(this,{requestId:d,path:o,...c,responseData:p.data}),p!=null&&p.success&&(p!=null&&p.data)){let D=R(p.data)?(b=p.data)==null?void 0:b.map(C=>new S(C)):[];return new I(D,p.total)}return new I([])},importJson:async(e,t)=>{var h,u,b;let{data:s,options:r}=e,{label:n}=e,a=s;if(!n){let D=T(s)&&!R(s)?L(s):s;if(he(D))throw new Error("records.importJson: Missing `label`. Provide `label` for top-level arrays or objects with primitive top-level properties, or pass a container object whose top-level values are objects or arrays, e.g. { ITEM: [...], USER: [...] }.")}let o=m(t),c="/records/import/json",d={headers:Object.assign({},f(o)),method:"POST",requestData:{label:n,data:a,options:r}},p=typeof this.logger=="function"?g():"";(h=this.logger)==null||h.call(this,{requestId:p,path:c,...d});let l=await this.fetcher(c,d);if((u=this.logger)==null||u.call(this,{requestId:p,path:c,...d,responseData:l.data}),l!=null&&l.success&&(l!=null&&l.data)){let D=R(l.data)?(b=l.data)==null?void 0:b.map(C=>new S(C)):[];return new I(D,l.total)}return new I([])},importCsv:async(e,t)=>{var c,d;let s=m(t),r="/records/import/csv",n={headers:Object.assign({},f(s)),method:"POST",requestData:e},a=typeof this.logger=="function"?g():"";(c=this.logger)==null||c.call(this,{requestId:a,path:r,...n});let o=await this.fetcher(r,n);if((d=this.logger)==null||d.call(this,{requestId:a,path:r,...n,responseData:o.data}),o!=null&&o.success&&(o!=null&&o.data)){let p=R(o.data)?o.data.map(l=>new S(l)):[];return new I(p,o.total)}return new I([])},delete:async(e,t)=>{var c,d,p;if(k(e.where)&&!((c=this==null?void 0:this.options)!=null&&c.allowForceDelete))throw new P("You must specify criteria to delete records. Empty criteria are not allowed. If this was intentional, use the Dashboard instead.");let s=m(t),r="/records/delete",n={headers:Object.assign({},f(s)),method:"POST",requestData:e!=null?e:{}},a=typeof this.logger=="function"?g():"";(d=this.logger)==null||d.call(this,{requestId:a,path:r,...n});let o=await this.fetcher(r,n);return(p=this.logger)==null||p.call(this,{requestId:a,path:r,...n,responseData:o.data}),o},deleteById:async(e,t)=>{var d,p;let s=m(t),r=R(e),n=r?"/records/delete":`/records/${e}`,a={headers:Object.assign({},f(s)),method:r?"POST":"DELETE",requestData:r?{limit:1e3,where:{$id:{$in:e}}}:void 0},o=typeof this.logger=="function"?g():"";(d=this.logger)==null||d.call(this,{requestId:o,path:n,...a});let c=await this.fetcher(n,a);return(p=this.logger)==null||p.call(this,{requestId:o,path:n,...a,responseData:c.data}),c},export:async(e,t)=>{var c,d;let s=m(t),r="/records/export/csv",n={headers:Object.assign({},f(s)),method:"POST",requestData:e!=null?e:{}},a=typeof this.logger=="function"?g():"";(c=this.logger)==null||c.call(this,{requestId:a,path:r,...n});let o=await this.fetcher(r,n);return(d=this.logger)==null||d.call(this,{requestId:a,path:r,...n,responseData:o.data}),o},find:async(e,t)=>{var l,h;let{id:s,...r}=e,n=m(t),a=s?`/records/${s}/search`:"/records/search",o={headers:Object.assign({},f(n)),method:"POST",requestData:r!=null?r:{}},c=typeof this.logger=="function"?g():"";(l=this.logger)==null||l.call(this,{requestId:c,path:a,...o});let d=await this.fetcher(a,o);(h=this.logger)==null||h.call(this,{requestId:c,path:a,...o,responseData:d.data});let p=d.data.map(u=>new S(u));return new I(p,d.total,e)},findById:async(e,t)=>{var c,d;let s=m(t),r=R(e)?"/records":`/records/${e}`,n={headers:Object.assign({},f(s)),method:R(e)?"POST":"GET",requestData:R(e)?{ids:e}:void 0},a=typeof this.logger=="function"?g():"";(c=this.logger)==null||c.call(this,{requestId:a,path:r,...n});let o=await this.fetcher(r,n);if((d=this.logger)==null||d.call(this,{requestId:a,path:r,...n,responseData:o.data}),R(e)){let p=o.data.map(l=>new S(l));return new I(p,o.total)}else return new S(o.data)},findOne:async(e,t)=>{var d,p;let s=m(t),r="/records/search",n={headers:Object.assign({},f(s)),method:"POST",requestData:{...e,limit:1,skip:0}},a=typeof this.logger=="function"?g():"";(d=this.logger)==null||d.call(this,{requestId:a,path:r,...n});let o=await this.fetcher(r,n);(p=this.logger)==null||p.call(this,{requestId:a,path:r,...n,responseData:o.data});let[c]=o.data;return new S(c)},findUniq:async(e,t)=>{var d,p;let s=m(t),r="/records/search",n={headers:Object.assign({},f(s)),method:"POST",requestData:{...e,limit:1,skip:0}},a=typeof this.logger=="function"?g():"";(d=this.logger)==null||d.call(this,{requestId:a,path:r,...n});let o=await this.fetcher(r,n);if((p=this.logger)==null||p.call(this,{requestId:a,path:r,...n,responseData:o.data}),typeof o.total<"u"&&o.total>1)throw new M(o.total,e);let[c]=o.data;return new S(c)},set:async({target:e,label:t,data:s,options:r,vectors:n},a)=>{var b,D;let o=m(a),d=`/records/${x(e)}`,p={headers:Object.assign({},f(o)),method:"PUT",requestData:{}},l=typeof this.logger=="function"?g():"",h=L(B(s));if(R(h)&&h.every(j))p.requestData={label:t,properties:h,...(n==null?void 0:n.length)&&{vectors:n}};else if(v(h))p.requestData={label:t,data:h,options:r,...(n==null?void 0:n.length)&&{vectors:n}};else throw T(h)?new Error("Provided data is not a flat object. Consider to use `importJson` method."):new Error("Provided data is not valid.");(b=this.logger)==null||b.call(this,{requestId:l,path:d,...p});let u=await this.fetcher(d,p);return(D=this.logger)==null||D.call(this,{requestId:l,path:d,...p,responseData:u.data}),u!=null&&u.success&&(u!=null&&u.data)?new S(u.data):new S},update:async({target:e,label:t,data:s,options:r},n)=>{var u,b;let a=m(n),c=`/records/${x(e)}`,d={headers:Object.assign({},f(a)),method:"PATCH",requestData:{}},p=typeof this.logger=="function"?g():"",l=L(B(s));if(R(l)&&l.every(j))d.requestData={label:t,properties:l};else if(v(l))d.requestData={label:t,data:l,options:r};else throw T(l)?new Error("Provided data is not a flat object. Consider to use `importJson` method."):new Error("Provided data is not valid.");(u=this.logger)==null||u.call(this,{requestId:p,path:c,...d});let h=await this.fetcher(c,d);return(b=this.logger)==null||b.call(this,{requestId:p,path:c,...d,responseData:h.data}),h!=null&&h.success&&(h!=null&&h.data)?new S(h.data):new S},upsert:async({label:e,data:t,options:s,vectors:r},n)=>{var u,b,D;let a=m(n),o="/records",c={headers:Object.assign({},f(a)),method:"POST",requestData:{}},d=typeof this.logger=="function"?g():"",p=L(B(t)),l={...s,mergeBy:(u=s==null?void 0:s.mergeBy)!=null?u:[]};if(R(p)&&p.every(j))c.requestData={label:e,properties:p,options:l,...(r==null?void 0:r.length)&&{vectors:r}};else if(v(p))c.requestData={label:e,data:p,options:l,...(r==null?void 0:r.length)&&{vectors:r}};else throw T(p)?new Error("Provided data is not a flat object. Upsert supports flat objects or property drafts array."):new Error("Provided data is not valid.");(b=this.logger)==null||b.call(this,{requestId:d,path:o,...c});let h=await this.fetcher(o,c);return(D=this.logger)==null||D.call(this,{requestId:d,path:o,...c,responseData:h.data}),h!=null&&h.success&&(h!=null&&h.data)?new S(h.data):new S}};this.relationships={patterns:{list:async()=>{var n,a;let e="/relationships/patterns",t={method:"GET",headers:{}},s=typeof this.logger=="function"?g():"";(n=this.logger)==null||n.call(this,{requestId:s,path:e,...t});let r=await this.fetcher(e,t);return(a=this.logger)==null||a.call(this,{requestId:s,path:e,...t,responseData:r.data}),r},analyze:async()=>{var n,a;let e="/relationships/patterns/analyze",t={method:"POST",headers:{},requestData:{}},s=typeof this.logger=="function"?g():"";(n=this.logger)==null||n.call(this,{requestId:s,path:e,...t});let r=await this.fetcher(e,t);return(a=this.logger)==null||a.call(this,{requestId:s,path:e,...t,responseData:r.data}),r},approve:async e=>{var a,o;let t=`/relationships/patterns/${encodeURIComponent(e)}/approve`,s={method:"POST",headers:{},requestData:{}},r=typeof this.logger=="function"?g():"";(a=this.logger)==null||a.call(this,{requestId:r,path:t,...s});let n=await this.fetcher(t,s);return(o=this.logger)==null||o.call(this,{requestId:r,path:t,...s,responseData:n.data}),n},ignore:async e=>{var a,o;let t=`/relationships/patterns/${encodeURIComponent(e)}/ignore`,s={method:"POST",headers:{},requestData:{}},r=typeof this.logger=="function"?g():"";(a=this.logger)==null||a.call(this,{requestId:r,path:t,...s});let n=await this.fetcher(t,s);return(o=this.logger)==null||o.call(this,{requestId:r,path:t,...s,responseData:n.data}),n},delete:async(e,t)=>{var c,d;let s=t!=null&&t.deleteExisting?"?deleteExisting=true":"",r=`/relationships/patterns/${encodeURIComponent(e)}${s}`,n={method:"DELETE",headers:{}},a=typeof this.logger=="function"?g():"";(c=this.logger)==null||c.call(this,{requestId:a,path:r,...n});let o=await this.fetcher(r,n);return(d=this.logger)==null||d.call(this,{requestId:a,path:r,...n,responseData:o.data}),o}},createMany:async(e,t)=>{var c,d;let s=m(t),r="/relationships/create-many",n={headers:Object.assign({},f(s)),method:"POST",requestData:e!=null?e:{}},a=typeof this.logger=="function"?g():"";(c=this.logger)==null||c.call(this,{requestId:a,path:r,...n});let o=await this.fetcher(r,n);return(d=this.logger)==null||d.call(this,{requestId:a,path:r,...n,responseData:o.data}),o},deleteMany:async(e,t)=>{var c,d;let s=m(t),r="/relationships/delete-many",n={headers:Object.assign({},f(s)),method:"POST",requestData:e!=null?e:{}},a=typeof this.logger=="function"?g():"";(c=this.logger)==null||c.call(this,{requestId:a,path:r,...n});let o=await this.fetcher(r,n);return(d=this.logger)==null||d.call(this,{requestId:a,path:r,...n,responseData:o.data}),o},find:async(e={},t)=>{var c,d;let s=m(t),r="/relationships/search",n={headers:Object.assign({},f(s)),method:"POST",requestData:e!=null?e:{}},a=typeof this.logger=="function"?g():"";(c=this.logger)==null||c.call(this,{requestId:a,path:r,...n});let o=await this.fetcher(r,n);return(d=this.logger)==null||d.call(this,{requestId:a,path:r,...n,responseData:o.data}),o}};this.properties={delete:async(e,t)=>{var c,d;let s=m(t),r=`/properties/${e}`,n={headers:Object.assign({},f(s)),method:"DELETE"},a=typeof this.logger=="function"?g():"";(c=this.logger)==null||c.call(this,{requestId:a,path:r,...n});let o=await this.fetcher(r,n);return(d=this.logger)==null||d.call(this,{requestId:a,path:r,...n,responseData:o.data}),o},find:async(e,t)=>{var c,d;let s=m(t),r="/properties/search",n={headers:Object.assign({},f(s)),method:"POST",requestData:e!=null?e:{}},a=typeof this.logger=="function"?g():"";(c=this.logger)==null||c.call(this,{requestId:a,path:r,...n});let o=await this.fetcher(r,n);return(d=this.logger)==null||d.call(this,{requestId:a,path:r,...n,responseData:o.data}),o},findById:async(e,t)=>{var c,d;let s=m(t),r=`/properties/${e}`,n={headers:Object.assign({},f(s)),method:"GET"},a=typeof this.logger=="function"?g():"";(c=this.logger)==null||c.call(this,{requestId:a,path:r,...n});let o=await this.fetcher(r,n);return(d=this.logger)==null||d.call(this,{requestId:a,path:r,...n,responseData:o.data}),o},values:async(e,t,s)=>{var d,p;let r=m(s),n=`/properties/${e}/values`,a={headers:Object.assign({},f(r)),method:"POST",requestData:t!=null?t:{}},o=typeof this.logger=="function"?g():"";(d=this.logger)==null||d.call(this,{requestId:o,path:n,...a});let c=await this.fetcher(n,a);return(p=this.logger)==null||p.call(this,{requestId:o,path:n,...a,responseData:c.data}),c}};this.labels={find:async(e,t)=>{var c,d;let s=m(t),r="/labels/search",n={headers:Object.assign({},f(s)),method:"POST",requestData:e!=null?e:{}},a=typeof this.logger=="function"?g():"";(c=this.logger)==null||c.call(this,{requestId:a,path:r,...n});let o=await this.fetcher(r,n);return(d=this.logger)==null||d.call(this,{requestId:a,path:r,...n,responseData:o.data}),o}};this.tx={begin:async e=>{var a,o;let t="/tx",s={method:"POST",requestData:T(e)&&"ttl"in e?e:{}},r=typeof this.logger=="function"?g():"";(a=this.logger)==null||a.call(this,{requestId:r,path:t,...s});let n=await this.fetcher(t,s);return(o=this.logger)==null||o.call(this,{requestId:r,path:t,...s,responseData:n.data}),new q(n.data.id)},commit:async e=>{var o,c;let s=`/tx/${m(e)}/commit`,r={method:"POST",requestData:{}},n=typeof this.logger=="function"?g():"";(o=this.logger)==null||o.call(this,{requestId:n,path:s,...r});let a=await this.fetcher(s,r);return(c=this.logger)==null||c.call(this,{requestId:n,path:s,...r,responseData:a.data}),a},get:async e=>{var o,c;let s=`/tx/${m(e)}`,r={method:"GET"},n=typeof this.logger=="function"?g():"";(o=this.logger)==null||o.call(this,{requestId:n,path:s,...r});let a=await this.fetcher(s,r);return(c=this.logger)==null||c.call(this,{requestId:n,path:s,...r,responseData:a.data}),new q(a.data.id)},rollback:async e=>{var o,c;let s=`/tx/${m(e)}/rollback`,r={method:"POST",requestData:{}},n=typeof this.logger=="function"?g():"";(o=this.logger)==null||o.call(this,{requestId:n,path:s,...r});let a=await this.fetcher(s,r);return(c=this.logger)==null||c.call(this,{requestId:n,path:s,...r,responseData:a.data}),a}};this.settings={get:async()=>{var n,a;let e="/sdk/settings",t={method:"GET"},s=typeof this.logger=="function"?g():"";(n=this.logger)==null||n.call(this,{requestId:s,path:e,...t});let r=await this.fetcher(e,t);return(a=this.logger)==null||a.call(this,{requestId:s,path:e,...t,responseData:r.data}),r}};this.query={raw:async({query:e,params:t},s)=>{var d,p;let r=m(s),n="/query/raw",a={headers:Object.assign({},f(r)),method:"POST",requestData:{query:e,params:t}},o=typeof this.logger=="function"?g():"";(d=this.logger)==null||d.call(this,{requestId:o,path:n,...a});let c=await this.fetcher(n,a);return(p=this.logger)==null||p.call(this,{requestId:o,path:n,...a,responseData:c.data}),c}};this.ai={getSchema:async(e,t)=>{var c,d;let s=m(t),r="/ai/schema",n={headers:Object.assign({},f(s)),method:"POST",requestData:e!=null?e:{}},a=typeof this.logger=="function"?g():"";(c=this.logger)==null||c.call(this,{requestId:a,path:r,...n});let o=await this.fetcher(r,n);return(d=this.logger)==null||d.call(this,{requestId:a,path:r,...n,responseData:o.data}),o},getSchemaMarkdown:async(e,t)=>{var c,d;let s=m(t),r="/ai/schema/md",n={headers:Object.assign({},f(s)),method:"POST",requestData:e!=null?e:{}},a=typeof this.logger=="function"?g():"";(c=this.logger)==null||c.call(this,{requestId:a,path:r,...n});let o=await this.fetcher(r,n);return(d=this.logger)==null||d.call(this,{requestId:a,path:r,...n,responseData:o.data}),o},indexes:{find:async()=>{var n,a;let e="/ai/indexes",t={method:"GET",headers:{}},s=typeof this.logger=="function"?g():"";(n=this.logger)==null||n.call(this,{requestId:s,path:e,...t});let r=await this.fetcher(e,t);return(a=this.logger)==null||a.call(this,{requestId:s,path:e,...t,responseData:r.data}),r},create:async e=>{var d,p;let t="/ai/indexes",{external:s,...r}=e,n=s===!0?{...r,sourceType:"external"}:r,a={method:"POST",headers:{},requestData:n},o=typeof this.logger=="function"?g():"";(d=this.logger)==null||d.call(this,{requestId:o,path:t,...a});let c=await this.fetcher(t,a);return(p=this.logger)==null||p.call(this,{requestId:o,path:t,...a,responseData:c.data}),c},upsertVectors:async(e,t)=>{var o,c;let s=`/ai/indexes/${e}/vectors/upsert`,r={method:"POST",headers:{},requestData:t},n=typeof this.logger=="function"?g():"";(o=this.logger)==null||o.call(this,{requestId:n,path:s,...r});let a=await this.fetcher(s,r);return(c=this.logger)==null||c.call(this,{requestId:n,path:s,...r,responseData:a.data}),a},delete:async e=>{var a,o;let t=`/ai/indexes/${e}`,s={method:"DELETE",headers:{}},r=typeof this.logger=="function"?g():"";(a=this.logger)==null||a.call(this,{requestId:r,path:t,...s});let n=await this.fetcher(t,s);return(o=this.logger)==null||o.call(this,{requestId:r,path:t,...s,responseData:n.data}),n},stats:async e=>{var a,o;let t=`/ai/indexes/${e}/stats`,s={method:"GET",headers:{}},r=typeof this.logger=="function"?g():"";(a=this.logger)==null||a.call(this,{requestId:r,path:t,...s});let n=await this.fetcher(t,s);return(o=this.logger)==null||o.call(this,{requestId:r,path:t,...s,responseData:n.data}),n}},search:async e=>{var o,c,d,p;let t="/ai/search",s={method:"POST",headers:{},requestData:e},r=typeof this.logger=="function"?g():"";(o=this.logger)==null||o.call(this,{requestId:r,path:t,...s});let n=await this.fetcher(t,s);(c=this.logger)==null||c.call(this,{requestId:r,path:t,...s,responseData:n.data});let a=((d=n.data)!=null?d:[]).map(l=>new S(l));return new I(a,(p=n.total)!=null?p:0)}};if(this.fetcher=null,t!=null&&t.httpClient){let s=Se(t);this.fetcher=ge({httpClient:t.httpClient,token:e,url:s})}t!=null&&t.options&&(this.options=t==null?void 0:t.options),t!=null&&t.logger&&(this.logger=t==null?void 0:t.logger)}_extractTargetIds(e,t){var s;if(e instanceof S){let r=x(e);if(!r)throw new P(`${t} error: Target id is empty`);return[r]}if(R(e)&&e.every(r=>r instanceof S)){let r=e.map(x).filter(w);if(!r.length)throw new P(`${t} error: Target ids are empty`);return r}if(e instanceof I){let r=(s=e.data)==null?void 0:s.map(x).filter(w);if(!(r!=null&&r.length))throw new P(`${t} error: Target ids are empty`);return r}if(T(e)&&"__id"in e)return[e.__id];if(R(e)&&e.every(r=>T(r)&&"__id"in r)){let r=e.map(x).filter(w);if(!r.length)throw new P(`${t} error: Target ids are empty`);return r}return R(e)?e:E(e)?[e]:[]}};var Re,_=class _ extends U{constructor(e,t){var n,a;let s=e!=null?e:typeof process<"u"?(n=process.env)==null?void 0:n.RUSHDB_API_KEY:void 0,r=ee(t);super(s,{...r,httpClient:(a=r.httpClient)!=null?a:Re}),_.instance=this,this.initializeSync(s,r)}initializeSync(e,t){_.state={initialized:!0,debug:!1,timeout:te("timeout",t==null?void 0:t.timeout,8e4),token:e}}static getInstance(){if(_.instance)return _.instance;throw new Error('RushDB not initialized. Please create a RushDB instance first: new RushDB("RUSHDB_API_KEY")')}static isInitialized(){return w(_.instance)}toDBRecordInstance(e){return new S(e)}};_.instance=null,_.state={initialized:!1,debug:!1,timeout:8e4};var y=_,se=i=>{Re=i};var ne=class{constructor(e,t,s){this.label=e,this.schema=t,this.config=s!=null?s:{}}getLabel(){return this.label}async toDBRecordInstance(e){try{return y.getInstance().toDBRecordInstance(e)}catch{throw new Error("No RushDB instance was provided during model initialization.")}}async find(e,t){let s=e!=null?e:{};return y.getInstance().records.find({...s,labels:[this.label]},t)}async findOne(e,t){let s=e!=null?e:{};return y.getInstance().records.findOne({...s,labels:[this.label]},t)}async findById(e,t){return this.findOne({where:{$id:e}},t)}async findUniq(e,t){let s=e!=null?e:{};return y.getInstance().records.findUniq({...s,labels:[this.label]},t)}async create(e,t,s){var c,d;let r=await F(this.schema,e),n=W(this.schema,r),a=w(n),o=y.getInstance();if(a){let p=t!=null?t:await o.tx.begin(),l=await this.find({where:n},p),h=typeof t<"u";if(!((c=l==null?void 0:l.data)!=null&&c.length)){let b=await o.records.create({label:this.label,data:r},p);return h||await p.commit(),b}else switch((d=s==null?void 0:s.onConflict)!=null?d:"throw"){case"upsert":{let D=l.data[0],C=await o.records.set({target:D.id,label:this.label,data:r},p);return h||await p.commit(),C}case"skip":return h||await p.commit(),null;default:throw h||await p.commit(),new A(this.label,n)}}return await o.records.create({label:this.label,data:r},t)}async attach({source:e,target:t,options:s},r){return await y.getInstance().records.attach({source:e,target:t,options:s},r)}async detach({source:e,target:t,options:s},r){return await y.getInstance().records.detach({source:e,target:t,options:s},r)}async validateTargetLabel(e,t){let s=x(e);if(!s)return;let n=await y.getInstance().records.findById(s,t);if(!n)throw new Error(`Record with id "${s}" not found.`);if(n.data.__label!==this.label)throw new TypeError(`Target record label "${n.data.__label}" does not match model label "${this.label}".`)}async handleSetOrUpdate(e,t,s,r){var c,d;if(this.config.validateTargetLabel&&await this.validateTargetLabel(e,r),R(t)&&t.every(j))return await y.getInstance().records[s]({label:this.label,target:e,data:t},r);let n=y.getInstance(),a=await F(this.schema,t),o=W(this.schema,a);if(!k(o)){let p=r!=null?r:await n.tx.begin(),l=await this.find({where:o},p),h=typeof r<"u";if(!((c=l==null?void 0:l.data)!=null&&c.length)||l.data.length===1&&((d=l.data[0])==null?void 0:d.id)===x(e)){let b=await n.records[s]({target:e,label:this.label,data:a},p);return h||await p.commit(),b}else throw h||await p.commit(),new A(this.label,o)}return await n.records[s]({label:this.label,target:e,data:a},r)}async set(e,t,s){return await this.handleSetOrUpdate(e,t,"set",s)}async update(e,t,s){return await this.handleSetOrUpdate(e,t,"update",s)}async createMany(e,t){var a;let s=y.getInstance(),r=typeof t<"u",n=t!=null?t:await s.tx.begin();try{let o=await Promise.all(e.map(async p=>await F(this.schema,p))),c=X(o,this.schema,this.label);if(!k(c)){let p=Object.entries(c).map(([h,u])=>({[h]:{$in:u}})),l=await this.find({where:{$or:p}},n);if((a=l==null?void 0:l.data)!=null&&a.length)throw new A(this.label,Object.keys(c))}let d=await s.records.createMany({label:this.label,data:o},n);return r||await n.commit(),d}catch(o){throw r||await n.rollback(),o}}async delete(e,t){if(k(e.where))throw new P(`You must specify criteria to delete records of type '${this.label}'. Empty criteria are not allowed. If this was intentional, use the Dashboard instead.`);return await y.getInstance().records.delete({...e,labels:[this.label]},t)}async deleteById(e,t){return await y.getInstance().records.deleteById(e,t)}};se(new V);var ve=y;0&&(module.exports={DBRecordInstance,DBRecordsArrayInstance,EmptyTargetError,HttpClient,HttpClientResponse,Model,NonUniqueResultError,RestAPI,RushDB,Transaction,UniquenessError,idToDate,idToTimestamp,initSDK,mergeDefaultsWithPayload,parseConfig,pickUniqFieldsFromRecord,pickUniqFieldsFromRecords,validateInteger});
|
package/dist/index.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var be=Object.defineProperty,we=Object.defineProperties;var De=Object.getOwnPropertyDescriptors;var W=Object.getOwnPropertySymbols;var se=Object.prototype.hasOwnProperty,ne=Object.prototype.propertyIsEnumerable;var re=(o,e,t)=>e in o?be(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,c=(o,e)=>{for(var t in e||(e={}))se.call(e,t)&&re(o,t,e[t]);if(W)for(var t of W(e))ne.call(e,t)&&re(o,t,e[t]);return o},u=(o,e)=>we(o,De(e));var Q=(o,e)=>{var t={};for(var r in o)se.call(o,r)&&e.indexOf(r)<0&&(t[r]=o[r]);if(o!=null&&W)for(var r of W(o))e.indexOf(r)<0&&ne.call(o,r)&&(t[r]=o[r]);return t};var h=(o,e,t)=>new Promise((r,s)=>{var n=d=>{try{i(t.next(d))}catch(p){s(p)}},a=d=>{try{i(t.throw(d))}catch(p){s(p)}},i=d=>d.done?r(d.value):Promise.resolve(d.value).then(n,a);i((t=t.apply(o,e)).next())});var Ie="string",
|
|
1
|
+
var be=Object.defineProperty,we=Object.defineProperties;var De=Object.getOwnPropertyDescriptors;var W=Object.getOwnPropertySymbols;var se=Object.prototype.hasOwnProperty,ne=Object.prototype.propertyIsEnumerable;var re=(o,e,t)=>e in o?be(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,c=(o,e)=>{for(var t in e||(e={}))se.call(e,t)&&re(o,t,e[t]);if(W)for(var t of W(e))ne.call(e,t)&&re(o,t,e[t]);return o},u=(o,e)=>we(o,De(e));var Q=(o,e)=>{var t={};for(var r in o)se.call(o,r)&&e.indexOf(r)<0&&(t[r]=o[r]);if(o!=null&&W)for(var r of W(o))e.indexOf(r)<0&&ne.call(o,r)&&(t[r]=o[r]);return t};var h=(o,e,t)=>new Promise((r,s)=>{var n=d=>{try{i(t.next(d))}catch(p){s(p)}},a=d=>{try{i(t.throw(d))}catch(p){s(p)}},i=d=>d.done?r(d.value):Promise.resolve(d.value).then(n,a);i((t=t.apply(o,e)).next())});var Ie="string",xe="datetime",Pe="boolean",Oe="number",ae=[Ie,xe,Pe,Oe];var q=class o{makeRequest(e,{headers:t,method:r,protocol:s,requestData:n,timeout:a}){throw new Error("makeRequest not implemented.")}static makeTimeoutError(){let e=new TypeError(o.TIMEOUT_ERROR_CODE);return e.code=o.TIMEOUT_ERROR_CODE,e}};q.CONNECTION_CLOSED_ERROR_CODES=["ECONNRESET","EPIPE"];q.TIMEOUT_ERROR_CODE="ETIMEDOUT";var V=class{constructor(e,t){this._statusCode=e,this._headers=t}getStatusCode(){return this._statusCode}getHeaders(){return this._headers}getRawResponse(){throw new Error("getRawResponse not implemented.")}toStream(e){throw new Error("toStream not implemented.")}toJSON(){throw new Error("toJSON not implemented.")}},Y=class{constructor(e){this._res=e}getStatusCode(){throw new Error("getStatusCode not implemented.")}getHeaders(){throw new Error("getHeaders not implemented.")}getRawResponse(){throw new Error("getRawResponse not implemented.")}toStream(e){throw new Error("toStream not implemented.")}toJSON(){throw new Error("toJSON not implemented.")}};var N=class o extends q{constructor(e){if(super(),!e){if(!globalThis.fetch)throw new Error("fetch() function not provided and is not defined in the global scope. You must provide a fetch implementation.");e=globalThis.fetch}globalThis.AbortController?this._fetchFn=o.makeFetchWithAbortTimeout(e):this._fetchFn=o.makeFetchWithRaceTimeout(e)}static makeFetchWithRaceTimeout(e){return(t,r,s)=>{let n,a=new Promise((d,p)=>{n=setTimeout(()=>{n=null,p(q.makeTimeoutError())},s)}),i=e(t,r);return Promise.race([i,a]).finally(()=>{n&&clearTimeout(n)})}}static makeFetchWithAbortTimeout(e){return(t,r,s)=>h(this,null,function*(){let n=new AbortController,a=setTimeout(()=>{a=null,n.abort(q.makeTimeoutError())},s);try{return yield e(t,u(c({},r),{signal:n.signal}))}catch(i){throw i.name==="AbortError"?q.makeTimeoutError():i}finally{a&&clearTimeout(a)}})}makeRequest(i,d){return h(this,arguments,function*(e,{headers:t,method:r,protocol:s,requestData:n,timeout:a}){let p=r=="POST"||r=="PUT"||r=="PATCH",l=JSON.stringify(n)||(p?"":void 0),g=yield this._fetchFn(e,{body:l,headers:t,method:r},a!=null?a:8e4);return new z(g)})}},z=class o extends V{constructor(e){super(e.status,o._transformHeadersToObject(e.headers)),this._res=e}getRawResponse(){return this._res}toStream(e){return e(),this._res.body}toJSON(){return this._res.json()}static _transformHeadersToObject(e){let t={};for(let r of e){if(!Array.isArray(r)||r.length!=2)throw new Error("Response objects produced by the fetch function given to FetchHttpClient do not have an iterable headers map. Response#headers should be an iterable object.");t[r[0]]=r[1]}return t}};var I=o=>typeof o=="object"&&Array.isArray(o)&&o!==null,x=o=>o!==null&&Object.prototype.toString.call(o)==="[object Object]",H=o=>x(o)&&Object.keys(o).length===0,G=o=>typeof o=="number"||typeof o=="string"||typeof o=="boolean"||o===null;function Ee(o,e){let t=c({},o);return e.forEach(r=>{delete t[r]}),t}var M=o=>x(o)?Ee(o,["__label","__id","__proptypes"]):o,v=o=>I(o)?o.map(v):x(o)?Object.fromEntries(Object.entries(o).filter(([e,t])=>t!==void 0).map(([e,t])=>[e,v(t)])):o,Z=o=>I(o)?o.every(G):G(o),$=o=>x(o)&&Object.values(o).every(Z),Ae=o=>x(o)||I(o)&&!o.every(G),ie=o=>{if(I(o)||!x(o))return!0;let e=Object.values(o);return e.length===0?!0:e.some(t=>!Ae(t))},B=o=>typeof o=="string",P=o=>{if(typeof o=="string"){if(o.toLowerCase()==="true")return!0;if(o.toLowerCase()==="false")return!1}return I(o)&&o.length===0||x(o)&&Object.keys(o).length===0?!1:!!o};var X=["httpClient","timeout","host","port","protocol","url","logger","options"];var k=class o extends Error{constructor(e,t){super(`Record with label "${e}" and properties ${JSON.stringify(t)} already exists`),this.name="UniquenessError",Object.setPrototypeOf(this,o.prototype)}},C=class o extends Error{constructor(e){super(e),this.name="EmptyTarget",Object.setPrototypeOf(this,o.prototype)}},K=class o extends Error{constructor(e,t){super(`Expected a unique result but found ${e} matches for the provided SearchQuery: ${JSON.stringify(t)}. Ensure your search parameters uniquely identify a single result.`),this.name="NonUniqueResultError",Object.setPrototypeOf(this,o.prototype)}};var J=(o,e)=>h(void 0,null,function*(){let t=Object.entries(o).map(i=>h(void 0,[i],function*([n,a]){return a.default&&typeof a.default!="undefined"&&typeof e[n]=="undefined"?{key:n,value:typeof a.default=="function"?yield a.default():a.default}:{key:n,value:void 0}})),s=(yield Promise.all(t)).reduce((n,{key:a,value:i})=>(i!==void 0&&(n[a]=i),n),{});return c(c({},s),e)}),ee=(o,e)=>Object.entries(e).filter(([t])=>{var r;return(r=o[t])==null?void 0:r.unique}).reduce((t,[r,s])=>(r in o&&(t[r]=s),t),{}),ce=(o,e,t)=>{let r={},s=Object.entries(e).filter(([,n])=>n.unique).reduce((n,[a])=>(n[a]=!0,n),{});return o.forEach(n=>{Object.entries(n).forEach(([a,i])=>{if(a in s)if(r[a]){if(r[a].includes(i))throw new k(t,{[a]:i});r[a]=[...r[a],i]}else r[a]=[i]})}),r},de=o=>{if(!o)return{};if(!x(o))throw new Error("Config must be an object");if(Object.keys(o).filter(t=>!X.includes(t)).length>0)throw new Error(`Config object may only contain the following: ${X.join(", ")}`);return o};function pe(o,e,t){if(!Number.isInteger(e)){if(t!==void 0)return t;throw new Error(`${o} must be an integer`)}return e}function te(o){let e=o.split("-"),t=e[0]+e[1].slice(0,4);return parseInt(t,16)}function le(o){return new Date(te(o))}var D=class{constructor(e={}){this.data=e}get exists(){return P(this.data.__id)&&P(this.data.__label)}get id(){if(!P(this.data.__id))throw new Error("DBRecordInstance: Unable to access 'id'. The Record's `data.__id` is missing or incorrect.");return this.data.__id}get label(){if(!P(this.data.__label))throw new Error("DBRecordInstance: Unable to access 'label'. The Record's `data.__label` is missing or incorrect.");return this.data.__label}get proptypes(){if(!P(this.data.__proptypes))throw new Error("DBRecordInstance: Unable to access 'proptypes'. The Record's `data.__proptypes` is missing or incorrect.");return this.data.__proptypes}get date(){try{return le(this.id)}catch(e){throw new Error("DBRecordInstance: Unable to access 'date'. The Record's `data.__id` is missing or incorrect.")}}get timestamp(){try{return te(this.id)}catch(e){throw new Error("DBRecordInstance: Unable to access 'timestamp'. The Record's `data.__id` is missing or incorrect.")}}delete(e){return h(this,null,function*(){if(!P(this.data))throw new Error("DBRecordInstance: Unable to delete Record. The Record data is undefined.");return yield b.getInstance().records.deleteById(this.id,e)})}update(e,t){return h(this,null,function*(){if(!P(this.data))throw new Error("DBRecordInstance: Unable to update Record. The Record data is undefined.");return b.getInstance().records.update({label:this.label,target:this.id,data:e},t)})}set(e,t){return h(this,null,function*(){if(!P(this.data))throw new Error("DBRecordInstance: Unable to set. The Record data is undefined.");return b.getInstance().records.set({label:this.label,target:this.id,data:e},t)})}attach(e,t,r){return h(this,null,function*(){if(!P(this.data))throw new Error("DBRecordInstance: Unable to attach Record. The Record data is undefined.");return b.getInstance().records.attach({source:this.id,target:e,options:t},r)})}detach(e,t,r){return h(this,null,function*(){if(!P(this.data))throw new Error("DBRecordInstance: Unable to detach Record. The Record data is undefined.");return b.getInstance().records.detach({source:this.id,target:e,options:t},r)})}},E=class{constructor(e=[],t=0,r){this.data=e,this.total=t,this.searchQuery=r}deleteAll(e){return h(this,null,function*(){let t=this.data.map(s=>s.id);return t.length?yield b.getInstance().records.deleteById(t,e):{success:!0}})}next(e){return h(this,null,function*(){var i,d;if(!this.searchQuery)throw new Error("DBRecordsArrayInstance: Cannot paginate \u2014 no searchQuery was provided.");let t=(i=this.searchQuery.skip)!=null?i:0,r=(d=this.searchQuery.limit)!=null?d:100,s=u(c({},this.searchQuery),{skip:t+r}),a=yield b.getInstance().records.find(s,void 0);return e!=null&&e.preserveData?(this.data=[...this.data,...a.data],this.total=a.total,this.searchQuery=s,this):a})}exportCsv(){if(!this.data.length)return"";let e=new Set(["__id","__label","__proptypes"]),t=Object.keys(this.data[0].data).filter(n=>!e.has(n)),r=n=>{let a=n==null?"":String(n);return a.includes(",")||a.includes('"')||a.includes(`
|
|
2
2
|
`)?`"${a.replace(/"/g,'""')}"`:a},s=this.data.map(n=>t.map(a=>r(n.data[a])).join(","));return[t.join(","),...s].join(`
|
|
3
|
-
`)}setProperties(e,t){return h(this,null,function*(){let s=b.getInstance();for(let n=0;n<this.data.length;n+=100){let a=this.data.slice(n,n+100);yield Promise.all(a.map(i=>s.records.update({target:i.id,label:i.data.__label,data:e},t)))}})}};var Ce={"Content-Type":"application/json"},he=({httpClient:o,token:e,url:t})=>(r,a)=>h(void 0,null,function*(){var i=a,{headers:s}=i,n=Q(i,["headers"]);let d=yield o.makeRequest(`${t}${r}`,c({credentials:"omit",headers:Object.assign(c(c({},Ce),s),typeof e!="undefined"?{Authorization:`Bearer ${e}`}:{})},n));if(d.getStatusCode()>=200&&d.getStatusCode()<300)return yield d.toJSON();throw new Error(`${d.getStatusCode()}`)});var k=class{constructor(e){this.id=e}rollback(){return h(this,null,function*(){return yield b.getInstance().tx.rollback(this.id)})}commit(){return h(this,null,function*(){return yield b.getInstance().tx.commit(this.id)})}};var ge="api.rushdb.com";var ue="https",ye="/api/v1";var w=o=>o?{"x-transaction-id":o}:void 0,_e=o=>B(o)||o instanceof k,R=o=>_e(o)?o instanceof k?o.id:o:void 0,me=o=>/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/.test(o),A=o=>{if(B(o)&&me(o))return o;if(o instanceof D&&o.data)return o.data.__id;if(P(o)&&"__id"in o&&me(o.__id))return o.__id},F=o=>!(!P(o)||P(o)&&"name"in o&&!B(o.name)||P(o)&&"type"in o&&(!B(o.type)||!ae.includes(o.type))||!("value"in o)||!Z(o.value)||"metadata"in o&&!B(o.metadata)||"valueSeparator"in o&&!B(o.valueSeparator)),fe=o=>{let e=ue,t=ge,r=443,s=ye;if("url"in o){let a=new URL(o.url);e=a.protocol.replace(":",""),t=a.hostname,r=parseInt(a.port||(e==="http"?"80":e==="https"?"443":""))}"host"in o&&"port"in o&&"protocol"in o&&(e=o.protocol.replace(":",""),t=o.host,r=o.port),s&&!s.startsWith("/")&&(s="/"+s);let n="";return e==="http"&&r===80||e==="https"&&r===443||(n=":"+r),`${e}://${t}${n}${s}`},f=(o=8)=>{let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",t="";for(let r=0;r<o;r++){let s=Math.floor(Math.random()*e.length);t+=e[s]}return t};var $=class{constructor(e,t){this.records={attach:(n,a)=>h(this,[n,a],function*({source:e,target:t,options:r},s){var S,m;let i=R(s),p=`/relationships/${A(e)}`,l={headers:Object.assign({},w(i)),method:"POST",requestData:c(c(c({targetIds:this._extractTargetIds(t,"Attach")},(r==null?void 0:r.type)&&{type:r.type}),(r==null?void 0:r.direction)&&{direction:r.direction}),(r==null?void 0:r.properties)&&{properties:r.properties})},g=typeof this.logger=="function"?f():"";(S=this.logger)==null||S.call(this,c({requestId:g,path:p},l));let y=yield this.fetcher(p,l);return(m=this.logger)==null||m.call(this,u(c({requestId:g,path:p},l),{responseData:y.data})),y}),detach:(n,a)=>h(this,[n,a],function*({source:e,target:t,options:r},s){var S,m;let i=R(s),p=`/relationships/${A(e)}`,l={headers:Object.assign({},w(i)),method:"PUT",requestData:c(c({targetIds:this._extractTargetIds(t,"Detach")},(r==null?void 0:r.typeOrTypes)&&{typeOrTypes:r.typeOrTypes}),(r==null?void 0:r.direction)&&{direction:r.direction})},g=typeof this.logger=="function"?f():"";(S=this.logger)==null||S.call(this,c({requestId:g,path:p},l));let y=yield this.fetcher(p,l);return(m=this.logger)==null||m.call(this,u(c({requestId:g,path:p},l),{responseData:y.data})),y}),create:(a,i)=>h(this,[a,i],function*({label:e,data:t,options:r,vectors:s},n){var m,T;let d=R(n),p="/records",l={headers:Object.assign({},w(d)),method:"POST",requestData:{}},g=typeof this.logger=="function"?f():"",y=L(v(t));if(I(y)&&y.every(F))l.requestData=c({label:e,properties:y,options:r},(s==null?void 0:s.length)&&{vectors:s});else if(M(y))l.requestData=c({label:e,data:y,options:r},(s==null?void 0:s.length)&&{vectors:s});else throw P(y)?new Error("Provided data is not a flat object. Consider using the `importJson` method for nested objects or arrays of nested objects, or use `createMany` for arrays of flat objects."):new Error("Provided data is not valid.");(m=this.logger)==null||m.call(this,c({requestId:g,path:p},l));let S=yield this.fetcher(p,l);return(T=this.logger)==null||T.call(this,u(c({requestId:g,path:p},l),{responseData:S.data})),S!=null&&S.success&&(S!=null&&S.data)?new D(S.data):new D}),createMany:(e,t)=>h(this,null,function*(){var g,y,S,m;let r=I(e.data)?e.data:[e.data];if(!r.every(T=>M(T)))throw new Error("records.createMany supports only flat records (no nested objects/arrays). Use records.importJson for nested JSON.");if(e.vectors&&e.vectors.length>r.length)throw new Error(`records.createMany: vectors length (${e.vectors.length}) exceeds the number of data rows (${r.length}).`);let n=(g=e.vectors)!=null&&g.length?r.map((T,O)=>{var j;return(j=e.vectors[O])!=null&&j.length?u(c({},T),{$vectors:e.vectors[O]}):T}):r,a=R(t),i="/records/import/json",d={headers:Object.assign({},w(a)),method:"POST",requestData:{label:e.label,data:n,options:e.options}},p=typeof this.logger=="function"?f():"";(y=this.logger)==null||y.call(this,c({requestId:p,path:i},d));let l=yield this.fetcher(i,d);if((S=this.logger)==null||S.call(this,u(c({requestId:p,path:i},d),{responseData:l.data})),l!=null&&l.success&&(l!=null&&l.data)){let T=I(l.data)?(m=l.data)==null?void 0:m.map(O=>new D(O)):[];return new E(T,l.total)}return new E([])}),importJson:(e,t)=>h(this,null,function*(){var y,S,m;let{data:r,options:s}=e,{label:n}=e,a=r;if(!n){let T=P(r)&&!I(r)?L(r):r;if(ie(T))throw new Error("records.importJson: Missing `label`. Provide `label` for top-level arrays or objects with primitive top-level properties, or pass a container object whose top-level values are objects or arrays, e.g. { ITEM: [...], USER: [...] }.")}let i=R(t),d="/records/import/json",p={headers:Object.assign({},w(i)),method:"POST",requestData:{label:n,data:a,options:s}},l=typeof this.logger=="function"?f():"";(y=this.logger)==null||y.call(this,c({requestId:l,path:d},p));let g=yield this.fetcher(d,p);if((S=this.logger)==null||S.call(this,u(c({requestId:l,path:d},p),{responseData:g.data})),g!=null&&g.success&&(g!=null&&g.data)){let T=I(g.data)?(m=g.data)==null?void 0:m.map(O=>new D(O)):[];return new E(T,g.total)}return new E([])}),importCsv:(e,t)=>h(this,null,function*(){var d,p;let r=R(t),s="/records/import/csv",n={headers:Object.assign({},w(r)),method:"POST",requestData:e},a=typeof this.logger=="function"?f():"";(d=this.logger)==null||d.call(this,c({requestId:a,path:s},n));let i=yield this.fetcher(s,n);if((p=this.logger)==null||p.call(this,u(c({requestId:a,path:s},n),{responseData:i.data})),i!=null&&i.success&&(i!=null&&i.data)){let l=I(i.data)?i.data.map(g=>new D(g)):[];return new E(l,i.total)}return new E([])}),delete:(e,t)=>h(this,null,function*(){var d,p,l;if(H(e.where)&&!((d=this==null?void 0:this.options)!=null&&d.allowForceDelete))throw new C("You must specify criteria to delete records. Empty criteria are not allowed. If this was intentional, use the Dashboard instead.");let r=R(t),s="/records/delete",n={headers:Object.assign({},w(r)),method:"POST",requestData:e!=null?e:{}},a=typeof this.logger=="function"?f():"";(p=this.logger)==null||p.call(this,c({requestId:a,path:s},n));let i=yield this.fetcher(s,n);return(l=this.logger)==null||l.call(this,u(c({requestId:a,path:s},n),{responseData:i.data})),i}),deleteById:(e,t)=>h(this,null,function*(){var p,l;let r=R(t),s=I(e),n=s?"/records/delete":`/records/${e}`,a={headers:Object.assign({},w(r)),method:s?"POST":"DELETE",requestData:s?{limit:1e3,where:{$id:{$in:e}}}:void 0},i=typeof this.logger=="function"?f():"";(p=this.logger)==null||p.call(this,c({requestId:i,path:n},a));let d=yield this.fetcher(n,a);return(l=this.logger)==null||l.call(this,u(c({requestId:i,path:n},a),{responseData:d.data})),d}),export:(e,t)=>h(this,null,function*(){var d,p;let r=R(t),s="/records/export/csv",n={headers:Object.assign({},w(r)),method:"POST",requestData:e!=null?e:{}},a=typeof this.logger=="function"?f():"";(d=this.logger)==null||d.call(this,c({requestId:a,path:s},n));let i=yield this.fetcher(s,n);return(p=this.logger)==null||p.call(this,u(c({requestId:a,path:s},n),{responseData:i.data})),i}),find:(e,t)=>h(this,null,function*(){var y,S;let g=e,{id:r}=g,s=Q(g,["id"]),n=R(t),a=r?`/records/${r}/search`:"/records/search",i={headers:Object.assign({},w(n)),method:"POST",requestData:s!=null?s:{}},d=typeof this.logger=="function"?f():"";(y=this.logger)==null||y.call(this,c({requestId:d,path:a},i));let p=yield this.fetcher(a,i);(S=this.logger)==null||S.call(this,u(c({requestId:d,path:a},i),{responseData:p.data}));let l=p.data.map(m=>new D(m));return new E(l,p.total,e)}),findById:(e,t)=>h(this,null,function*(){var d,p;let r=R(t),s=I(e)?"/records":`/records/${e}`,n={headers:Object.assign({},w(r)),method:I(e)?"POST":"GET",requestData:I(e)?{ids:e}:void 0},a=typeof this.logger=="function"?f():"";(d=this.logger)==null||d.call(this,c({requestId:a,path:s},n));let i=yield this.fetcher(s,n);if((p=this.logger)==null||p.call(this,u(c({requestId:a,path:s},n),{responseData:i.data})),I(e)){let l=i.data.map(g=>new D(g));return new E(l,i.total)}else return new D(i.data)}),findOne:(e,t)=>h(this,null,function*(){var p,l;let r=R(t),s="/records/search",n={headers:Object.assign({},w(r)),method:"POST",requestData:u(c({},e),{limit:1,skip:0})},a=typeof this.logger=="function"?f():"";(p=this.logger)==null||p.call(this,c({requestId:a,path:s},n));let i=yield this.fetcher(s,n);(l=this.logger)==null||l.call(this,u(c({requestId:a,path:s},n),{responseData:i.data}));let[d]=i.data;return new D(d)}),findUniq:(e,t)=>h(this,null,function*(){var p,l;let r=R(t),s="/records/search",n={headers:Object.assign({},w(r)),method:"POST",requestData:u(c({},e),{limit:1,skip:0})},a=typeof this.logger=="function"?f():"";(p=this.logger)==null||p.call(this,c({requestId:a,path:s},n));let i=yield this.fetcher(s,n);if((l=this.logger)==null||l.call(this,u(c({requestId:a,path:s},n),{responseData:i.data})),typeof i.total!="undefined"&&i.total>1)throw new K(i.total,e);let[d]=i.data;return new D(d)}),set:(i,d)=>h(this,[i,d],function*({target:e,label:t,data:r,options:s,vectors:n},a){var O,j;let p=R(a),g=`/records/${A(e)}`,y={headers:Object.assign({},w(p)),method:"PUT",requestData:{}},S=typeof this.logger=="function"?f():"",m=L(v(r));if(I(m)&&m.every(F))y.requestData=c({label:t,properties:m},(n==null?void 0:n.length)&&{vectors:n});else if(M(m))y.requestData=c({label:t,data:m,options:s},(n==null?void 0:n.length)&&{vectors:n});else throw P(m)?new Error("Provided data is not a flat object. Consider to use `importJson` method."):new Error("Provided data is not valid.");(O=this.logger)==null||O.call(this,c({requestId:S,path:g},y));let T=yield this.fetcher(g,y);return(j=this.logger)==null||j.call(this,u(c({requestId:S,path:g},y),{responseData:T.data})),T!=null&&T.success&&(T!=null&&T.data)?new D(T.data):new D}),update:(a,i)=>h(this,[a,i],function*({target:e,label:t,data:r,options:s},n){var T,O;let d=R(n),l=`/records/${A(e)}`,g={headers:Object.assign({},w(d)),method:"PATCH",requestData:{}},y=typeof this.logger=="function"?f():"",S=L(v(r));if(I(S)&&S.every(F))g.requestData={label:t,properties:S};else if(M(S))g.requestData={label:t,data:S,options:s};else throw P(S)?new Error("Provided data is not a flat object. Consider to use `importJson` method."):new Error("Provided data is not valid.");(T=this.logger)==null||T.call(this,c({requestId:y,path:l},g));let m=yield this.fetcher(l,g);return(O=this.logger)==null||O.call(this,u(c({requestId:y,path:l},g),{responseData:m.data})),m!=null&&m.success&&(m!=null&&m.data)?new D(m.data):new D}),upsert:(a,i)=>h(this,[a,i],function*({label:e,data:t,options:r,vectors:s},n){var T,O,j;let d=R(n),p="/records",l={headers:Object.assign({},w(d)),method:"POST",requestData:{}},g=typeof this.logger=="function"?f():"",y=L(v(t)),S=u(c({},r),{mergeBy:(T=r==null?void 0:r.mergeBy)!=null?T:[]});if(I(y)&&y.every(F))l.requestData=c({label:e,properties:y,options:S},(s==null?void 0:s.length)&&{vectors:s});else if(M(y))l.requestData=c({label:e,data:y,options:S},(s==null?void 0:s.length)&&{vectors:s});else throw P(y)?new Error("Provided data is not a flat object. Upsert supports flat objects or property drafts array."):new Error("Provided data is not valid.");(O=this.logger)==null||O.call(this,c({requestId:g,path:p},l));let m=yield this.fetcher(p,l);return(j=this.logger)==null||j.call(this,u(c({requestId:g,path:p},l),{responseData:m.data})),m!=null&&m.success&&(m!=null&&m.data)?new D(m.data):new D})};this.relationships={patterns:{list:()=>h(this,null,function*(){var n,a;let e="/relationships/patterns",t={method:"GET",headers:{}},r=typeof this.logger=="function"?f():"";(n=this.logger)==null||n.call(this,c({requestId:r,path:e},t));let s=yield this.fetcher(e,t);return(a=this.logger)==null||a.call(this,u(c({requestId:r,path:e},t),{responseData:s.data})),s}),analyze:()=>h(this,null,function*(){var n,a;let e="/relationships/patterns/analyze",t={method:"POST",headers:{},requestData:{}},r=typeof this.logger=="function"?f():"";(n=this.logger)==null||n.call(this,c({requestId:r,path:e},t));let s=yield this.fetcher(e,t);return(a=this.logger)==null||a.call(this,u(c({requestId:r,path:e},t),{responseData:s.data})),s}),approve:e=>h(this,null,function*(){var a,i;let t=`/relationships/patterns/${encodeURIComponent(e)}/approve`,r={method:"POST",headers:{},requestData:{}},s=typeof this.logger=="function"?f():"";(a=this.logger)==null||a.call(this,c({requestId:s,path:t},r));let n=yield this.fetcher(t,r);return(i=this.logger)==null||i.call(this,u(c({requestId:s,path:t},r),{responseData:n.data})),n}),ignore:e=>h(this,null,function*(){var a,i;let t=`/relationships/patterns/${encodeURIComponent(e)}/ignore`,r={method:"POST",headers:{},requestData:{}},s=typeof this.logger=="function"?f():"";(a=this.logger)==null||a.call(this,c({requestId:s,path:t},r));let n=yield this.fetcher(t,r);return(i=this.logger)==null||i.call(this,u(c({requestId:s,path:t},r),{responseData:n.data})),n}),delete:(e,t)=>h(this,null,function*(){var d,p;let r=t!=null&&t.deleteExisting?"?deleteExisting=true":"",s=`/relationships/patterns/${encodeURIComponent(e)}${r}`,n={method:"DELETE",headers:{}},a=typeof this.logger=="function"?f():"";(d=this.logger)==null||d.call(this,c({requestId:a,path:s},n));let i=yield this.fetcher(s,n);return(p=this.logger)==null||p.call(this,u(c({requestId:a,path:s},n),{responseData:i.data})),i})},createMany:(e,t)=>h(this,null,function*(){var d,p;let r=R(t),s="/relationships/create-many",n={headers:Object.assign({},w(r)),method:"POST",requestData:e!=null?e:{}},a=typeof this.logger=="function"?f():"";(d=this.logger)==null||d.call(this,c({requestId:a,path:s},n));let i=yield this.fetcher(s,n);return(p=this.logger)==null||p.call(this,u(c({requestId:a,path:s},n),{responseData:i.data})),i}),deleteMany:(e,t)=>h(this,null,function*(){var d,p;let r=R(t),s="/relationships/delete-many",n={headers:Object.assign({},w(r)),method:"POST",requestData:e!=null?e:{}},a=typeof this.logger=="function"?f():"";(d=this.logger)==null||d.call(this,c({requestId:a,path:s},n));let i=yield this.fetcher(s,n);return(p=this.logger)==null||p.call(this,u(c({requestId:a,path:s},n),{responseData:i.data})),i}),find:(...r)=>h(this,[...r],function*(e={},t){var p,l;let s=R(t),n="/relationships/search",a={headers:Object.assign({},w(s)),method:"POST",requestData:e!=null?e:{}},i=typeof this.logger=="function"?f():"";(p=this.logger)==null||p.call(this,c({requestId:i,path:n},a));let d=yield this.fetcher(n,a);return(l=this.logger)==null||l.call(this,u(c({requestId:i,path:n},a),{responseData:d.data})),d})};this.properties={delete:(e,t)=>h(this,null,function*(){var d,p;let r=R(t),s=`/properties/${e}`,n={headers:Object.assign({},w(r)),method:"DELETE"},a=typeof this.logger=="function"?f():"";(d=this.logger)==null||d.call(this,c({requestId:a,path:s},n));let i=yield this.fetcher(s,n);return(p=this.logger)==null||p.call(this,u(c({requestId:a,path:s},n),{responseData:i.data})),i}),find:(e,t)=>h(this,null,function*(){var d,p;let r=R(t),s="/properties/search",n={headers:Object.assign({},w(r)),method:"POST",requestData:e!=null?e:{}},a=typeof this.logger=="function"?f():"";(d=this.logger)==null||d.call(this,c({requestId:a,path:s},n));let i=yield this.fetcher(s,n);return(p=this.logger)==null||p.call(this,u(c({requestId:a,path:s},n),{responseData:i.data})),i}),findById:(e,t)=>h(this,null,function*(){var d,p;let r=R(t),s=`/properties/${e}`,n={headers:Object.assign({},w(r)),method:"GET"},a=typeof this.logger=="function"?f():"";(d=this.logger)==null||d.call(this,c({requestId:a,path:s},n));let i=yield this.fetcher(s,n);return(p=this.logger)==null||p.call(this,u(c({requestId:a,path:s},n),{responseData:i.data})),i}),values:(e,t,r)=>h(this,null,function*(){var p,l;let s=R(r),n=`/properties/${e}/values`,a={headers:Object.assign({},w(s)),method:"POST",requestData:t!=null?t:{}},i=typeof this.logger=="function"?f():"";(p=this.logger)==null||p.call(this,c({requestId:i,path:n},a));let d=yield this.fetcher(n,a);return(l=this.logger)==null||l.call(this,u(c({requestId:i,path:n},a),{responseData:d.data})),d})};this.labels={find:(e,t)=>h(this,null,function*(){var d,p;let r=R(t),s="/labels/search",n={headers:Object.assign({},w(r)),method:"POST",requestData:e!=null?e:{}},a=typeof this.logger=="function"?f():"";(d=this.logger)==null||d.call(this,c({requestId:a,path:s},n));let i=yield this.fetcher(s,n);return(p=this.logger)==null||p.call(this,u(c({requestId:a,path:s},n),{responseData:i.data})),i})};this.tx={begin:e=>h(this,null,function*(){var a,i;let t="/tx",r={method:"POST",requestData:P(e)&&"ttl"in e?e:{}},s=typeof this.logger=="function"?f():"";(a=this.logger)==null||a.call(this,c({requestId:s,path:t},r));let n=yield this.fetcher(t,r);return(i=this.logger)==null||i.call(this,u(c({requestId:s,path:t},r),{responseData:n.data})),new k(n.data.id)}),commit:e=>h(this,null,function*(){var i,d;let r=`/tx/${R(e)}/commit`,s={method:"POST",requestData:{}},n=typeof this.logger=="function"?f():"";(i=this.logger)==null||i.call(this,c({requestId:n,path:r},s));let a=yield this.fetcher(r,s);return(d=this.logger)==null||d.call(this,u(c({requestId:n,path:r},s),{responseData:a.data})),a}),get:e=>h(this,null,function*(){var i,d;let r=`/tx/${R(e)}`,s={method:"GET"},n=typeof this.logger=="function"?f():"";(i=this.logger)==null||i.call(this,c({requestId:n,path:r},s));let a=yield this.fetcher(r,s);return(d=this.logger)==null||d.call(this,u(c({requestId:n,path:r},s),{responseData:a.data})),new k(a.data.id)}),rollback:e=>h(this,null,function*(){var i,d;let r=`/tx/${R(e)}/rollback`,s={method:"POST",requestData:{}},n=typeof this.logger=="function"?f():"";(i=this.logger)==null||i.call(this,c({requestId:n,path:r},s));let a=yield this.fetcher(r,s);return(d=this.logger)==null||d.call(this,u(c({requestId:n,path:r},s),{responseData:a.data})),a})};this.settings={get:()=>h(this,null,function*(){var n,a;let e="/sdk/settings",t={method:"GET"},r=typeof this.logger=="function"?f():"";(n=this.logger)==null||n.call(this,c({requestId:r,path:e},t));let s=yield this.fetcher(e,t);return(a=this.logger)==null||a.call(this,u(c({requestId:r,path:e},t),{responseData:s.data})),s})};this.query={raw:(s,n)=>h(this,[s,n],function*({query:e,params:t},r){var g,y;let a=R(r),i="/query/raw",d={headers:Object.assign({},w(a)),method:"POST",requestData:{query:e,params:t}},p=typeof this.logger=="function"?f():"";(g=this.logger)==null||g.call(this,c({requestId:p,path:i},d));let l=yield this.fetcher(i,d);return(y=this.logger)==null||y.call(this,u(c({requestId:p,path:i},d),{responseData:l.data})),l})};this.ai={getOntology:(e,t)=>h(this,null,function*(){var d,p;let r=R(t),s="/ai/ontology",n={headers:Object.assign({},w(r)),method:"POST",requestData:e!=null?e:{}},a=typeof this.logger=="function"?f():"";(d=this.logger)==null||d.call(this,c({requestId:a,path:s},n));let i=yield this.fetcher(s,n);return(p=this.logger)==null||p.call(this,u(c({requestId:a,path:s},n),{responseData:i.data})),i}),getOntologyMarkdown:(e,t)=>h(this,null,function*(){var d,p;let r=R(t),s="/ai/ontology/md",n={headers:Object.assign({},w(r)),method:"POST",requestData:e!=null?e:{}},a=typeof this.logger=="function"?f():"";(d=this.logger)==null||d.call(this,c({requestId:a,path:s},n));let i=yield this.fetcher(s,n);return(p=this.logger)==null||p.call(this,u(c({requestId:a,path:s},n),{responseData:i.data})),i}),indexes:{find:()=>h(this,null,function*(){var n,a;let e="/ai/indexes",t={method:"GET",headers:{}},r=typeof this.logger=="function"?f():"";(n=this.logger)==null||n.call(this,c({requestId:r,path:e},t));let s=yield this.fetcher(e,t);return(a=this.logger)==null||a.call(this,u(c({requestId:r,path:e},t),{responseData:s.data})),s}),create:e=>h(this,null,function*(){var l,g;let t="/ai/indexes",p=e,{external:r}=p,s=Q(p,["external"]),n=r===!0?u(c({},s),{sourceType:"external"}):s,a={method:"POST",headers:{},requestData:n},i=typeof this.logger=="function"?f():"";(l=this.logger)==null||l.call(this,c({requestId:i,path:t},a));let d=yield this.fetcher(t,a);return(g=this.logger)==null||g.call(this,u(c({requestId:i,path:t},a),{responseData:d.data})),d}),upsertVectors:(e,t)=>h(this,null,function*(){var i,d;let r=`/ai/indexes/${e}/vectors/upsert`,s={method:"POST",headers:{},requestData:t},n=typeof this.logger=="function"?f():"";(i=this.logger)==null||i.call(this,c({requestId:n,path:r},s));let a=yield this.fetcher(r,s);return(d=this.logger)==null||d.call(this,u(c({requestId:n,path:r},s),{responseData:a.data})),a}),delete:e=>h(this,null,function*(){var a,i;let t=`/ai/indexes/${e}`,r={method:"DELETE",headers:{}},s=typeof this.logger=="function"?f():"";(a=this.logger)==null||a.call(this,c({requestId:s,path:t},r));let n=yield this.fetcher(t,r);return(i=this.logger)==null||i.call(this,u(c({requestId:s,path:t},r),{responseData:n.data})),n}),stats:e=>h(this,null,function*(){var a,i;let t=`/ai/indexes/${e}/stats`,r={method:"GET",headers:{}},s=typeof this.logger=="function"?f():"";(a=this.logger)==null||a.call(this,c({requestId:s,path:t},r));let n=yield this.fetcher(t,r);return(i=this.logger)==null||i.call(this,u(c({requestId:s,path:t},r),{responseData:n.data})),n})},search:e=>h(this,null,function*(){var i,d,p,l;let t="/ai/search",r={method:"POST",headers:{},requestData:e},s=typeof this.logger=="function"?f():"";(i=this.logger)==null||i.call(this,c({requestId:s,path:t},r));let n=yield this.fetcher(t,r);(d=this.logger)==null||d.call(this,u(c({requestId:s,path:t},r),{responseData:n.data}));let a=((p=n.data)!=null?p:[]).map(g=>new D(g));return new E(a,(l=n.total)!=null?l:0)})};if(this.fetcher=null,t!=null&&t.httpClient){let r=fe(t);this.fetcher=he({httpClient:t.httpClient,token:e,url:r})}t!=null&&t.options&&(this.options=t==null?void 0:t.options),t!=null&&t.logger&&(this.logger=t==null?void 0:t.logger)}_extractTargetIds(e,t){var r;if(e instanceof D){let s=A(e);if(!s)throw new C(`${t} error: Target id is empty`);return[s]}if(I(e)&&e.every(s=>s instanceof D)){let s=e.map(A).filter(x);if(!s.length)throw new C(`${t} error: Target ids are empty`);return s}if(e instanceof E){let s=(r=e.data)==null?void 0:r.map(A).filter(x);if(!(s!=null&&s.length))throw new C(`${t} error: Target ids are empty`);return s}if(P(e)&&"__id"in e)return[e.__id];if(I(e)&&e.every(s=>P(s)&&"__id"in s)){let s=e.map(A).filter(x);if(!s.length)throw new C(`${t} error: Target ids are empty`);return s}return I(e)?e:B(e)?[e]:[]}};var Se,_=class _ extends ${constructor(e,t){var n,a;let r=e!=null?e:typeof process!="undefined"?(n=process.env)==null?void 0:n.RUSHDB_API_KEY:void 0,s=de(t);super(r,u(c({},s),{httpClient:(a=s.httpClient)!=null?a:Se})),_.instance=this,this.initializeSync(r,s)}initializeSync(e,t){_.state={initialized:!0,debug:!1,timeout:pe("timeout",t==null?void 0:t.timeout,8e4),token:e}}static getInstance(){if(_.instance)return _.instance;throw new Error('RushDB not initialized. Please create a RushDB instance first: new RushDB("RUSHDB_API_KEY")')}static isInitialized(){return x(_.instance)}toDBRecordInstance(e){return new D(e)}};_.instance=null,_.state={initialized:!1,debug:!1,timeout:8e4};var b=_,Re=o=>{Se=o};var Te=class{constructor(e,t,r){this.label=e,this.schema=t,this.config=r!=null?r:{}}getLabel(){return this.label}toDBRecordInstance(e){return h(this,null,function*(){try{return b.getInstance().toDBRecordInstance(e)}catch(t){throw new Error("No RushDB instance was provided during model initialization.")}})}find(e,t){return h(this,null,function*(){let r=e!=null?e:{};return b.getInstance().records.find(u(c({},r),{labels:[this.label]}),t)})}findOne(e,t){return h(this,null,function*(){let r=e!=null?e:{};return b.getInstance().records.findOne(u(c({},r),{labels:[this.label]}),t)})}findById(e,t){return h(this,null,function*(){return this.findOne({where:{$id:e}},t)})}findUniq(e,t){return h(this,null,function*(){let r=e!=null?e:{};return b.getInstance().records.findUniq(u(c({},r),{labels:[this.label]}),t)})}create(e,t,r){return h(this,null,function*(){var d,p;let s=yield J(this.schema,e),n=ee(this.schema,s),a=x(n),i=b.getInstance();if(a){let l=t!=null?t:yield i.tx.begin(),g=yield this.find({where:n},l),y=typeof t!="undefined";if(!((d=g==null?void 0:g.data)!=null&&d.length)){let m=yield i.records.create({label:this.label,data:s},l);return y||(yield l.commit()),m}else switch((p=r==null?void 0:r.onConflict)!=null?p:"throw"){case"upsert":{let T=g.data[0],O=yield i.records.set({target:T.id,label:this.label,data:s},l);return y||(yield l.commit()),O}case"skip":return y||(yield l.commit()),null;default:throw y||(yield l.commit()),new U(this.label,n)}}return yield i.records.create({label:this.label,data:s},t)})}attach(n,a){return h(this,arguments,function*({source:e,target:t,options:r},s){return yield b.getInstance().records.attach({source:e,target:t,options:r},s)})}detach(n,a){return h(this,arguments,function*({source:e,target:t,options:r},s){return yield b.getInstance().records.detach({source:e,target:t,options:r},s)})}validateTargetLabel(e,t){return h(this,null,function*(){let r=A(e);if(!r)return;let n=yield b.getInstance().records.findById(r,t);if(!n)throw new Error(`Record with id "${r}" not found.`);if(n.data.__label!==this.label)throw new TypeError(`Target record label "${n.data.__label}" does not match model label "${this.label}".`)})}handleSetOrUpdate(e,t,r,s){return h(this,null,function*(){var d,p;if(this.config.validateTargetLabel&&(yield this.validateTargetLabel(e,s)),I(t)&&t.every(F))return yield b.getInstance().records[r]({label:this.label,target:e,data:t},s);let n=b.getInstance(),a=yield J(this.schema,t),i=ee(this.schema,a);if(!H(i)){let l=s!=null?s:yield n.tx.begin(),g=yield this.find({where:i},l),y=typeof s!="undefined";if(!((d=g==null?void 0:g.data)!=null&&d.length)||g.data.length===1&&((p=g.data[0])==null?void 0:p.id)===A(e)){let m=yield n.records[r]({target:e,label:this.label,data:a},l);return y||(yield l.commit()),m}else throw y||(yield l.commit()),new U(this.label,i)}return yield n.records[r]({label:this.label,target:e,data:a},s)})}set(e,t,r){return h(this,null,function*(){return yield this.handleSetOrUpdate(e,t,"set",r)})}update(e,t,r){return h(this,null,function*(){return yield this.handleSetOrUpdate(e,t,"update",r)})}createMany(e,t){return h(this,null,function*(){var a;let r=b.getInstance(),s=typeof t!="undefined",n=t!=null?t:yield r.tx.begin();try{let i=yield Promise.all(e.map(l=>h(this,null,function*(){return yield J(this.schema,l)}))),d=ce(i,this.schema,this.label);if(!H(d)){let l=Object.entries(d).map(([y,S])=>({[y]:{$in:S}})),g=yield this.find({where:{$or:l}},n);if((a=g==null?void 0:g.data)!=null&&a.length)throw new U(this.label,Object.keys(d))}let p=yield r.records.createMany({label:this.label,data:i},n);return s||(yield n.commit()),p}catch(i){throw s||(yield n.rollback()),i}})}delete(e,t){return h(this,null,function*(){if(H(e.where))throw new C(`You must specify criteria to delete records of type '${this.label}'. Empty criteria are not allowed. If this was intentional, use the Dashboard instead.`);return yield b.getInstance().records.delete(u(c({},e),{labels:[this.label]}),t)})}deleteById(e,t){return h(this,null,function*(){return yield b.getInstance().records.deleteById(e,t)})}};Re(new N);var Ht=b;export{D as DBRecordInstance,E as DBRecordsArrayInstance,C as EmptyTargetError,q as HttpClient,Y as HttpClientResponse,Te as Model,K as NonUniqueResultError,$ as RestAPI,b as RushDB,k as Transaction,U as UniquenessError,Ht as default,le as idToDate,te as idToTimestamp,Re as initSDK,J as mergeDefaultsWithPayload,de as parseConfig,ee as pickUniqFieldsFromRecord,ce as pickUniqFieldsFromRecords,pe as validateInteger};
|
|
3
|
+
`)}setProperties(e,t){return h(this,null,function*(){let s=b.getInstance();for(let n=0;n<this.data.length;n+=100){let a=this.data.slice(n,n+100);yield Promise.all(a.map(i=>s.records.update({target:i.id,label:i.data.__label,data:e},t)))}})}};var qe={"Content-Type":"application/json"},he=({httpClient:o,token:e,url:t})=>(r,a)=>h(void 0,null,function*(){var i=a,{headers:s}=i,n=Q(i,["headers"]);let d=yield o.makeRequest(`${t}${r}`,c({credentials:"omit",headers:Object.assign(c(c({},qe),s),typeof e!="undefined"?{Authorization:`Bearer ${e}`}:{})},n));if(d.getStatusCode()>=200&&d.getStatusCode()<300)return yield d.toJSON();throw new Error(`${d.getStatusCode()}`)});var U=class{constructor(e){this.id=e}rollback(){return h(this,null,function*(){return yield b.getInstance().tx.rollback(this.id)})}commit(){return h(this,null,function*(){return yield b.getInstance().tx.commit(this.id)})}};var ge="api.rushdb.com";var ue="https",ye="/api/v1";var w=o=>o?{"x-transaction-id":o}:void 0,Be=o=>B(o)||o instanceof U,R=o=>Be(o)?o instanceof U?o.id:o:void 0,me=o=>/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/.test(o),A=o=>{if(B(o)&&me(o))return o;if(o instanceof D&&o.data)return o.data.__id;if(x(o)&&"__id"in o&&me(o.__id))return o.__id},F=o=>!(!x(o)||x(o)&&"name"in o&&!B(o.name)||x(o)&&"type"in o&&(!B(o.type)||!ae.includes(o.type))||!("value"in o)||!Z(o.value)||"metadata"in o&&!B(o.metadata)||"valueSeparator"in o&&!B(o.valueSeparator)),fe=o=>{let e=ue,t=ge,r=443,s=ye;if("url"in o){let a=new URL(o.url);e=a.protocol.replace(":",""),t=a.hostname,r=parseInt(a.port||(e==="http"?"80":e==="https"?"443":""))}"host"in o&&"port"in o&&"protocol"in o&&(e=o.protocol.replace(":",""),t=o.host,r=o.port),s&&!s.startsWith("/")&&(s="/"+s);let n="";return e==="http"&&r===80||e==="https"&&r===443||(n=":"+r),`${e}://${t}${n}${s}`},f=(o=8)=>{let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",t="";for(let r=0;r<o;r++){let s=Math.floor(Math.random()*e.length);t+=e[s]}return t};var L=class{constructor(e,t){this.records={attach:(n,a)=>h(this,[n,a],function*({source:e,target:t,options:r},s){var S,m;let i=R(s),p=`/relationships/${A(e)}`,l={headers:Object.assign({},w(i)),method:"POST",requestData:c(c(c({targetIds:this._extractTargetIds(t,"Attach")},(r==null?void 0:r.type)&&{type:r.type}),(r==null?void 0:r.direction)&&{direction:r.direction}),(r==null?void 0:r.properties)&&{properties:r.properties})},g=typeof this.logger=="function"?f():"";(S=this.logger)==null||S.call(this,c({requestId:g,path:p},l));let y=yield this.fetcher(p,l);return(m=this.logger)==null||m.call(this,u(c({requestId:g,path:p},l),{responseData:y.data})),y}),detach:(n,a)=>h(this,[n,a],function*({source:e,target:t,options:r},s){var S,m;let i=R(s),p=`/relationships/${A(e)}`,l={headers:Object.assign({},w(i)),method:"PUT",requestData:c(c({targetIds:this._extractTargetIds(t,"Detach")},(r==null?void 0:r.typeOrTypes)&&{typeOrTypes:r.typeOrTypes}),(r==null?void 0:r.direction)&&{direction:r.direction})},g=typeof this.logger=="function"?f():"";(S=this.logger)==null||S.call(this,c({requestId:g,path:p},l));let y=yield this.fetcher(p,l);return(m=this.logger)==null||m.call(this,u(c({requestId:g,path:p},l),{responseData:y.data})),y}),create:(a,i)=>h(this,[a,i],function*({label:e,data:t,options:r,vectors:s},n){var m,T;let d=R(n),p="/records",l={headers:Object.assign({},w(d)),method:"POST",requestData:{}},g=typeof this.logger=="function"?f():"",y=M(v(t));if(I(y)&&y.every(F))l.requestData=c({label:e,properties:y,options:r},(s==null?void 0:s.length)&&{vectors:s});else if($(y))l.requestData=c({label:e,data:y,options:r},(s==null?void 0:s.length)&&{vectors:s});else throw x(y)?new Error("Provided data is not a flat object. Consider using the `importJson` method for nested objects or arrays of nested objects, or use `createMany` for arrays of flat objects."):new Error("Provided data is not valid.");(m=this.logger)==null||m.call(this,c({requestId:g,path:p},l));let S=yield this.fetcher(p,l);return(T=this.logger)==null||T.call(this,u(c({requestId:g,path:p},l),{responseData:S.data})),S!=null&&S.success&&(S!=null&&S.data)?new D(S.data):new D}),createMany:(e,t)=>h(this,null,function*(){var g,y,S,m;let r=I(e.data)?e.data:[e.data];if(!r.every(T=>$(T)))throw new Error("records.createMany supports only flat records (no nested objects/arrays). Use records.importJson for nested JSON.");if(e.vectors&&e.vectors.length>r.length)throw new Error(`records.createMany: vectors length (${e.vectors.length}) exceeds the number of data rows (${r.length}).`);let n=(g=e.vectors)!=null&&g.length?r.map((T,O)=>{var j;return(j=e.vectors[O])!=null&&j.length?u(c({},T),{$vectors:e.vectors[O]}):T}):r,a=R(t),i="/records/import/json",d={headers:Object.assign({},w(a)),method:"POST",requestData:{label:e.label,data:n,options:e.options}},p=typeof this.logger=="function"?f():"";(y=this.logger)==null||y.call(this,c({requestId:p,path:i},d));let l=yield this.fetcher(i,d);if((S=this.logger)==null||S.call(this,u(c({requestId:p,path:i},d),{responseData:l.data})),l!=null&&l.success&&(l!=null&&l.data)){let T=I(l.data)?(m=l.data)==null?void 0:m.map(O=>new D(O)):[];return new E(T,l.total)}return new E([])}),importJson:(e,t)=>h(this,null,function*(){var y,S,m;let{data:r,options:s}=e,{label:n}=e,a=r;if(!n){let T=x(r)&&!I(r)?M(r):r;if(ie(T))throw new Error("records.importJson: Missing `label`. Provide `label` for top-level arrays or objects with primitive top-level properties, or pass a container object whose top-level values are objects or arrays, e.g. { ITEM: [...], USER: [...] }.")}let i=R(t),d="/records/import/json",p={headers:Object.assign({},w(i)),method:"POST",requestData:{label:n,data:a,options:s}},l=typeof this.logger=="function"?f():"";(y=this.logger)==null||y.call(this,c({requestId:l,path:d},p));let g=yield this.fetcher(d,p);if((S=this.logger)==null||S.call(this,u(c({requestId:l,path:d},p),{responseData:g.data})),g!=null&&g.success&&(g!=null&&g.data)){let T=I(g.data)?(m=g.data)==null?void 0:m.map(O=>new D(O)):[];return new E(T,g.total)}return new E([])}),importCsv:(e,t)=>h(this,null,function*(){var d,p;let r=R(t),s="/records/import/csv",n={headers:Object.assign({},w(r)),method:"POST",requestData:e},a=typeof this.logger=="function"?f():"";(d=this.logger)==null||d.call(this,c({requestId:a,path:s},n));let i=yield this.fetcher(s,n);if((p=this.logger)==null||p.call(this,u(c({requestId:a,path:s},n),{responseData:i.data})),i!=null&&i.success&&(i!=null&&i.data)){let l=I(i.data)?i.data.map(g=>new D(g)):[];return new E(l,i.total)}return new E([])}),delete:(e,t)=>h(this,null,function*(){var d,p,l;if(H(e.where)&&!((d=this==null?void 0:this.options)!=null&&d.allowForceDelete))throw new C("You must specify criteria to delete records. Empty criteria are not allowed. If this was intentional, use the Dashboard instead.");let r=R(t),s="/records/delete",n={headers:Object.assign({},w(r)),method:"POST",requestData:e!=null?e:{}},a=typeof this.logger=="function"?f():"";(p=this.logger)==null||p.call(this,c({requestId:a,path:s},n));let i=yield this.fetcher(s,n);return(l=this.logger)==null||l.call(this,u(c({requestId:a,path:s},n),{responseData:i.data})),i}),deleteById:(e,t)=>h(this,null,function*(){var p,l;let r=R(t),s=I(e),n=s?"/records/delete":`/records/${e}`,a={headers:Object.assign({},w(r)),method:s?"POST":"DELETE",requestData:s?{limit:1e3,where:{$id:{$in:e}}}:void 0},i=typeof this.logger=="function"?f():"";(p=this.logger)==null||p.call(this,c({requestId:i,path:n},a));let d=yield this.fetcher(n,a);return(l=this.logger)==null||l.call(this,u(c({requestId:i,path:n},a),{responseData:d.data})),d}),export:(e,t)=>h(this,null,function*(){var d,p;let r=R(t),s="/records/export/csv",n={headers:Object.assign({},w(r)),method:"POST",requestData:e!=null?e:{}},a=typeof this.logger=="function"?f():"";(d=this.logger)==null||d.call(this,c({requestId:a,path:s},n));let i=yield this.fetcher(s,n);return(p=this.logger)==null||p.call(this,u(c({requestId:a,path:s},n),{responseData:i.data})),i}),find:(e,t)=>h(this,null,function*(){var y,S;let g=e,{id:r}=g,s=Q(g,["id"]),n=R(t),a=r?`/records/${r}/search`:"/records/search",i={headers:Object.assign({},w(n)),method:"POST",requestData:s!=null?s:{}},d=typeof this.logger=="function"?f():"";(y=this.logger)==null||y.call(this,c({requestId:d,path:a},i));let p=yield this.fetcher(a,i);(S=this.logger)==null||S.call(this,u(c({requestId:d,path:a},i),{responseData:p.data}));let l=p.data.map(m=>new D(m));return new E(l,p.total,e)}),findById:(e,t)=>h(this,null,function*(){var d,p;let r=R(t),s=I(e)?"/records":`/records/${e}`,n={headers:Object.assign({},w(r)),method:I(e)?"POST":"GET",requestData:I(e)?{ids:e}:void 0},a=typeof this.logger=="function"?f():"";(d=this.logger)==null||d.call(this,c({requestId:a,path:s},n));let i=yield this.fetcher(s,n);if((p=this.logger)==null||p.call(this,u(c({requestId:a,path:s},n),{responseData:i.data})),I(e)){let l=i.data.map(g=>new D(g));return new E(l,i.total)}else return new D(i.data)}),findOne:(e,t)=>h(this,null,function*(){var p,l;let r=R(t),s="/records/search",n={headers:Object.assign({},w(r)),method:"POST",requestData:u(c({},e),{limit:1,skip:0})},a=typeof this.logger=="function"?f():"";(p=this.logger)==null||p.call(this,c({requestId:a,path:s},n));let i=yield this.fetcher(s,n);(l=this.logger)==null||l.call(this,u(c({requestId:a,path:s},n),{responseData:i.data}));let[d]=i.data;return new D(d)}),findUniq:(e,t)=>h(this,null,function*(){var p,l;let r=R(t),s="/records/search",n={headers:Object.assign({},w(r)),method:"POST",requestData:u(c({},e),{limit:1,skip:0})},a=typeof this.logger=="function"?f():"";(p=this.logger)==null||p.call(this,c({requestId:a,path:s},n));let i=yield this.fetcher(s,n);if((l=this.logger)==null||l.call(this,u(c({requestId:a,path:s},n),{responseData:i.data})),typeof i.total!="undefined"&&i.total>1)throw new K(i.total,e);let[d]=i.data;return new D(d)}),set:(i,d)=>h(this,[i,d],function*({target:e,label:t,data:r,options:s,vectors:n},a){var O,j;let p=R(a),g=`/records/${A(e)}`,y={headers:Object.assign({},w(p)),method:"PUT",requestData:{}},S=typeof this.logger=="function"?f():"",m=M(v(r));if(I(m)&&m.every(F))y.requestData=c({label:t,properties:m},(n==null?void 0:n.length)&&{vectors:n});else if($(m))y.requestData=c({label:t,data:m,options:s},(n==null?void 0:n.length)&&{vectors:n});else throw x(m)?new Error("Provided data is not a flat object. Consider to use `importJson` method."):new Error("Provided data is not valid.");(O=this.logger)==null||O.call(this,c({requestId:S,path:g},y));let T=yield this.fetcher(g,y);return(j=this.logger)==null||j.call(this,u(c({requestId:S,path:g},y),{responseData:T.data})),T!=null&&T.success&&(T!=null&&T.data)?new D(T.data):new D}),update:(a,i)=>h(this,[a,i],function*({target:e,label:t,data:r,options:s},n){var T,O;let d=R(n),l=`/records/${A(e)}`,g={headers:Object.assign({},w(d)),method:"PATCH",requestData:{}},y=typeof this.logger=="function"?f():"",S=M(v(r));if(I(S)&&S.every(F))g.requestData={label:t,properties:S};else if($(S))g.requestData={label:t,data:S,options:s};else throw x(S)?new Error("Provided data is not a flat object. Consider to use `importJson` method."):new Error("Provided data is not valid.");(T=this.logger)==null||T.call(this,c({requestId:y,path:l},g));let m=yield this.fetcher(l,g);return(O=this.logger)==null||O.call(this,u(c({requestId:y,path:l},g),{responseData:m.data})),m!=null&&m.success&&(m!=null&&m.data)?new D(m.data):new D}),upsert:(a,i)=>h(this,[a,i],function*({label:e,data:t,options:r,vectors:s},n){var T,O,j;let d=R(n),p="/records",l={headers:Object.assign({},w(d)),method:"POST",requestData:{}},g=typeof this.logger=="function"?f():"",y=M(v(t)),S=u(c({},r),{mergeBy:(T=r==null?void 0:r.mergeBy)!=null?T:[]});if(I(y)&&y.every(F))l.requestData=c({label:e,properties:y,options:S},(s==null?void 0:s.length)&&{vectors:s});else if($(y))l.requestData=c({label:e,data:y,options:S},(s==null?void 0:s.length)&&{vectors:s});else throw x(y)?new Error("Provided data is not a flat object. Upsert supports flat objects or property drafts array."):new Error("Provided data is not valid.");(O=this.logger)==null||O.call(this,c({requestId:g,path:p},l));let m=yield this.fetcher(p,l);return(j=this.logger)==null||j.call(this,u(c({requestId:g,path:p},l),{responseData:m.data})),m!=null&&m.success&&(m!=null&&m.data)?new D(m.data):new D})};this.relationships={patterns:{list:()=>h(this,null,function*(){var n,a;let e="/relationships/patterns",t={method:"GET",headers:{}},r=typeof this.logger=="function"?f():"";(n=this.logger)==null||n.call(this,c({requestId:r,path:e},t));let s=yield this.fetcher(e,t);return(a=this.logger)==null||a.call(this,u(c({requestId:r,path:e},t),{responseData:s.data})),s}),analyze:()=>h(this,null,function*(){var n,a;let e="/relationships/patterns/analyze",t={method:"POST",headers:{},requestData:{}},r=typeof this.logger=="function"?f():"";(n=this.logger)==null||n.call(this,c({requestId:r,path:e},t));let s=yield this.fetcher(e,t);return(a=this.logger)==null||a.call(this,u(c({requestId:r,path:e},t),{responseData:s.data})),s}),approve:e=>h(this,null,function*(){var a,i;let t=`/relationships/patterns/${encodeURIComponent(e)}/approve`,r={method:"POST",headers:{},requestData:{}},s=typeof this.logger=="function"?f():"";(a=this.logger)==null||a.call(this,c({requestId:s,path:t},r));let n=yield this.fetcher(t,r);return(i=this.logger)==null||i.call(this,u(c({requestId:s,path:t},r),{responseData:n.data})),n}),ignore:e=>h(this,null,function*(){var a,i;let t=`/relationships/patterns/${encodeURIComponent(e)}/ignore`,r={method:"POST",headers:{},requestData:{}},s=typeof this.logger=="function"?f():"";(a=this.logger)==null||a.call(this,c({requestId:s,path:t},r));let n=yield this.fetcher(t,r);return(i=this.logger)==null||i.call(this,u(c({requestId:s,path:t},r),{responseData:n.data})),n}),delete:(e,t)=>h(this,null,function*(){var d,p;let r=t!=null&&t.deleteExisting?"?deleteExisting=true":"",s=`/relationships/patterns/${encodeURIComponent(e)}${r}`,n={method:"DELETE",headers:{}},a=typeof this.logger=="function"?f():"";(d=this.logger)==null||d.call(this,c({requestId:a,path:s},n));let i=yield this.fetcher(s,n);return(p=this.logger)==null||p.call(this,u(c({requestId:a,path:s},n),{responseData:i.data})),i})},createMany:(e,t)=>h(this,null,function*(){var d,p;let r=R(t),s="/relationships/create-many",n={headers:Object.assign({},w(r)),method:"POST",requestData:e!=null?e:{}},a=typeof this.logger=="function"?f():"";(d=this.logger)==null||d.call(this,c({requestId:a,path:s},n));let i=yield this.fetcher(s,n);return(p=this.logger)==null||p.call(this,u(c({requestId:a,path:s},n),{responseData:i.data})),i}),deleteMany:(e,t)=>h(this,null,function*(){var d,p;let r=R(t),s="/relationships/delete-many",n={headers:Object.assign({},w(r)),method:"POST",requestData:e!=null?e:{}},a=typeof this.logger=="function"?f():"";(d=this.logger)==null||d.call(this,c({requestId:a,path:s},n));let i=yield this.fetcher(s,n);return(p=this.logger)==null||p.call(this,u(c({requestId:a,path:s},n),{responseData:i.data})),i}),find:(...r)=>h(this,[...r],function*(e={},t){var p,l;let s=R(t),n="/relationships/search",a={headers:Object.assign({},w(s)),method:"POST",requestData:e!=null?e:{}},i=typeof this.logger=="function"?f():"";(p=this.logger)==null||p.call(this,c({requestId:i,path:n},a));let d=yield this.fetcher(n,a);return(l=this.logger)==null||l.call(this,u(c({requestId:i,path:n},a),{responseData:d.data})),d})};this.properties={delete:(e,t)=>h(this,null,function*(){var d,p;let r=R(t),s=`/properties/${e}`,n={headers:Object.assign({},w(r)),method:"DELETE"},a=typeof this.logger=="function"?f():"";(d=this.logger)==null||d.call(this,c({requestId:a,path:s},n));let i=yield this.fetcher(s,n);return(p=this.logger)==null||p.call(this,u(c({requestId:a,path:s},n),{responseData:i.data})),i}),find:(e,t)=>h(this,null,function*(){var d,p;let r=R(t),s="/properties/search",n={headers:Object.assign({},w(r)),method:"POST",requestData:e!=null?e:{}},a=typeof this.logger=="function"?f():"";(d=this.logger)==null||d.call(this,c({requestId:a,path:s},n));let i=yield this.fetcher(s,n);return(p=this.logger)==null||p.call(this,u(c({requestId:a,path:s},n),{responseData:i.data})),i}),findById:(e,t)=>h(this,null,function*(){var d,p;let r=R(t),s=`/properties/${e}`,n={headers:Object.assign({},w(r)),method:"GET"},a=typeof this.logger=="function"?f():"";(d=this.logger)==null||d.call(this,c({requestId:a,path:s},n));let i=yield this.fetcher(s,n);return(p=this.logger)==null||p.call(this,u(c({requestId:a,path:s},n),{responseData:i.data})),i}),values:(e,t,r)=>h(this,null,function*(){var p,l;let s=R(r),n=`/properties/${e}/values`,a={headers:Object.assign({},w(s)),method:"POST",requestData:t!=null?t:{}},i=typeof this.logger=="function"?f():"";(p=this.logger)==null||p.call(this,c({requestId:i,path:n},a));let d=yield this.fetcher(n,a);return(l=this.logger)==null||l.call(this,u(c({requestId:i,path:n},a),{responseData:d.data})),d})};this.labels={find:(e,t)=>h(this,null,function*(){var d,p;let r=R(t),s="/labels/search",n={headers:Object.assign({},w(r)),method:"POST",requestData:e!=null?e:{}},a=typeof this.logger=="function"?f():"";(d=this.logger)==null||d.call(this,c({requestId:a,path:s},n));let i=yield this.fetcher(s,n);return(p=this.logger)==null||p.call(this,u(c({requestId:a,path:s},n),{responseData:i.data})),i})};this.tx={begin:e=>h(this,null,function*(){var a,i;let t="/tx",r={method:"POST",requestData:x(e)&&"ttl"in e?e:{}},s=typeof this.logger=="function"?f():"";(a=this.logger)==null||a.call(this,c({requestId:s,path:t},r));let n=yield this.fetcher(t,r);return(i=this.logger)==null||i.call(this,u(c({requestId:s,path:t},r),{responseData:n.data})),new U(n.data.id)}),commit:e=>h(this,null,function*(){var i,d;let r=`/tx/${R(e)}/commit`,s={method:"POST",requestData:{}},n=typeof this.logger=="function"?f():"";(i=this.logger)==null||i.call(this,c({requestId:n,path:r},s));let a=yield this.fetcher(r,s);return(d=this.logger)==null||d.call(this,u(c({requestId:n,path:r},s),{responseData:a.data})),a}),get:e=>h(this,null,function*(){var i,d;let r=`/tx/${R(e)}`,s={method:"GET"},n=typeof this.logger=="function"?f():"";(i=this.logger)==null||i.call(this,c({requestId:n,path:r},s));let a=yield this.fetcher(r,s);return(d=this.logger)==null||d.call(this,u(c({requestId:n,path:r},s),{responseData:a.data})),new U(a.data.id)}),rollback:e=>h(this,null,function*(){var i,d;let r=`/tx/${R(e)}/rollback`,s={method:"POST",requestData:{}},n=typeof this.logger=="function"?f():"";(i=this.logger)==null||i.call(this,c({requestId:n,path:r},s));let a=yield this.fetcher(r,s);return(d=this.logger)==null||d.call(this,u(c({requestId:n,path:r},s),{responseData:a.data})),a})};this.settings={get:()=>h(this,null,function*(){var n,a;let e="/sdk/settings",t={method:"GET"},r=typeof this.logger=="function"?f():"";(n=this.logger)==null||n.call(this,c({requestId:r,path:e},t));let s=yield this.fetcher(e,t);return(a=this.logger)==null||a.call(this,u(c({requestId:r,path:e},t),{responseData:s.data})),s})};this.query={raw:(s,n)=>h(this,[s,n],function*({query:e,params:t},r){var g,y;let a=R(r),i="/query/raw",d={headers:Object.assign({},w(a)),method:"POST",requestData:{query:e,params:t}},p=typeof this.logger=="function"?f():"";(g=this.logger)==null||g.call(this,c({requestId:p,path:i},d));let l=yield this.fetcher(i,d);return(y=this.logger)==null||y.call(this,u(c({requestId:p,path:i},d),{responseData:l.data})),l})};this.ai={getSchema:(e,t)=>h(this,null,function*(){var d,p;let r=R(t),s="/ai/schema",n={headers:Object.assign({},w(r)),method:"POST",requestData:e!=null?e:{}},a=typeof this.logger=="function"?f():"";(d=this.logger)==null||d.call(this,c({requestId:a,path:s},n));let i=yield this.fetcher(s,n);return(p=this.logger)==null||p.call(this,u(c({requestId:a,path:s},n),{responseData:i.data})),i}),getSchemaMarkdown:(e,t)=>h(this,null,function*(){var d,p;let r=R(t),s="/ai/schema/md",n={headers:Object.assign({},w(r)),method:"POST",requestData:e!=null?e:{}},a=typeof this.logger=="function"?f():"";(d=this.logger)==null||d.call(this,c({requestId:a,path:s},n));let i=yield this.fetcher(s,n);return(p=this.logger)==null||p.call(this,u(c({requestId:a,path:s},n),{responseData:i.data})),i}),indexes:{find:()=>h(this,null,function*(){var n,a;let e="/ai/indexes",t={method:"GET",headers:{}},r=typeof this.logger=="function"?f():"";(n=this.logger)==null||n.call(this,c({requestId:r,path:e},t));let s=yield this.fetcher(e,t);return(a=this.logger)==null||a.call(this,u(c({requestId:r,path:e},t),{responseData:s.data})),s}),create:e=>h(this,null,function*(){var l,g;let t="/ai/indexes",p=e,{external:r}=p,s=Q(p,["external"]),n=r===!0?u(c({},s),{sourceType:"external"}):s,a={method:"POST",headers:{},requestData:n},i=typeof this.logger=="function"?f():"";(l=this.logger)==null||l.call(this,c({requestId:i,path:t},a));let d=yield this.fetcher(t,a);return(g=this.logger)==null||g.call(this,u(c({requestId:i,path:t},a),{responseData:d.data})),d}),upsertVectors:(e,t)=>h(this,null,function*(){var i,d;let r=`/ai/indexes/${e}/vectors/upsert`,s={method:"POST",headers:{},requestData:t},n=typeof this.logger=="function"?f():"";(i=this.logger)==null||i.call(this,c({requestId:n,path:r},s));let a=yield this.fetcher(r,s);return(d=this.logger)==null||d.call(this,u(c({requestId:n,path:r},s),{responseData:a.data})),a}),delete:e=>h(this,null,function*(){var a,i;let t=`/ai/indexes/${e}`,r={method:"DELETE",headers:{}},s=typeof this.logger=="function"?f():"";(a=this.logger)==null||a.call(this,c({requestId:s,path:t},r));let n=yield this.fetcher(t,r);return(i=this.logger)==null||i.call(this,u(c({requestId:s,path:t},r),{responseData:n.data})),n}),stats:e=>h(this,null,function*(){var a,i;let t=`/ai/indexes/${e}/stats`,r={method:"GET",headers:{}},s=typeof this.logger=="function"?f():"";(a=this.logger)==null||a.call(this,c({requestId:s,path:t},r));let n=yield this.fetcher(t,r);return(i=this.logger)==null||i.call(this,u(c({requestId:s,path:t},r),{responseData:n.data})),n})},search:e=>h(this,null,function*(){var i,d,p,l;let t="/ai/search",r={method:"POST",headers:{},requestData:e},s=typeof this.logger=="function"?f():"";(i=this.logger)==null||i.call(this,c({requestId:s,path:t},r));let n=yield this.fetcher(t,r);(d=this.logger)==null||d.call(this,u(c({requestId:s,path:t},r),{responseData:n.data}));let a=((p=n.data)!=null?p:[]).map(g=>new D(g));return new E(a,(l=n.total)!=null?l:0)})};if(this.fetcher=null,t!=null&&t.httpClient){let r=fe(t);this.fetcher=he({httpClient:t.httpClient,token:e,url:r})}t!=null&&t.options&&(this.options=t==null?void 0:t.options),t!=null&&t.logger&&(this.logger=t==null?void 0:t.logger)}_extractTargetIds(e,t){var r;if(e instanceof D){let s=A(e);if(!s)throw new C(`${t} error: Target id is empty`);return[s]}if(I(e)&&e.every(s=>s instanceof D)){let s=e.map(A).filter(P);if(!s.length)throw new C(`${t} error: Target ids are empty`);return s}if(e instanceof E){let s=(r=e.data)==null?void 0:r.map(A).filter(P);if(!(s!=null&&s.length))throw new C(`${t} error: Target ids are empty`);return s}if(x(e)&&"__id"in e)return[e.__id];if(I(e)&&e.every(s=>x(s)&&"__id"in s)){let s=e.map(A).filter(P);if(!s.length)throw new C(`${t} error: Target ids are empty`);return s}return I(e)?e:B(e)?[e]:[]}};var Se,_=class _ extends L{constructor(e,t){var n,a;let r=e!=null?e:typeof process!="undefined"?(n=process.env)==null?void 0:n.RUSHDB_API_KEY:void 0,s=de(t);super(r,u(c({},s),{httpClient:(a=s.httpClient)!=null?a:Se})),_.instance=this,this.initializeSync(r,s)}initializeSync(e,t){_.state={initialized:!0,debug:!1,timeout:pe("timeout",t==null?void 0:t.timeout,8e4),token:e}}static getInstance(){if(_.instance)return _.instance;throw new Error('RushDB not initialized. Please create a RushDB instance first: new RushDB("RUSHDB_API_KEY")')}static isInitialized(){return P(_.instance)}toDBRecordInstance(e){return new D(e)}};_.instance=null,_.state={initialized:!1,debug:!1,timeout:8e4};var b=_,Re=o=>{Se=o};var Te=class{constructor(e,t,r){this.label=e,this.schema=t,this.config=r!=null?r:{}}getLabel(){return this.label}toDBRecordInstance(e){return h(this,null,function*(){try{return b.getInstance().toDBRecordInstance(e)}catch(t){throw new Error("No RushDB instance was provided during model initialization.")}})}find(e,t){return h(this,null,function*(){let r=e!=null?e:{};return b.getInstance().records.find(u(c({},r),{labels:[this.label]}),t)})}findOne(e,t){return h(this,null,function*(){let r=e!=null?e:{};return b.getInstance().records.findOne(u(c({},r),{labels:[this.label]}),t)})}findById(e,t){return h(this,null,function*(){return this.findOne({where:{$id:e}},t)})}findUniq(e,t){return h(this,null,function*(){let r=e!=null?e:{};return b.getInstance().records.findUniq(u(c({},r),{labels:[this.label]}),t)})}create(e,t,r){return h(this,null,function*(){var d,p;let s=yield J(this.schema,e),n=ee(this.schema,s),a=P(n),i=b.getInstance();if(a){let l=t!=null?t:yield i.tx.begin(),g=yield this.find({where:n},l),y=typeof t!="undefined";if(!((d=g==null?void 0:g.data)!=null&&d.length)){let m=yield i.records.create({label:this.label,data:s},l);return y||(yield l.commit()),m}else switch((p=r==null?void 0:r.onConflict)!=null?p:"throw"){case"upsert":{let T=g.data[0],O=yield i.records.set({target:T.id,label:this.label,data:s},l);return y||(yield l.commit()),O}case"skip":return y||(yield l.commit()),null;default:throw y||(yield l.commit()),new k(this.label,n)}}return yield i.records.create({label:this.label,data:s},t)})}attach(n,a){return h(this,arguments,function*({source:e,target:t,options:r},s){return yield b.getInstance().records.attach({source:e,target:t,options:r},s)})}detach(n,a){return h(this,arguments,function*({source:e,target:t,options:r},s){return yield b.getInstance().records.detach({source:e,target:t,options:r},s)})}validateTargetLabel(e,t){return h(this,null,function*(){let r=A(e);if(!r)return;let n=yield b.getInstance().records.findById(r,t);if(!n)throw new Error(`Record with id "${r}" not found.`);if(n.data.__label!==this.label)throw new TypeError(`Target record label "${n.data.__label}" does not match model label "${this.label}".`)})}handleSetOrUpdate(e,t,r,s){return h(this,null,function*(){var d,p;if(this.config.validateTargetLabel&&(yield this.validateTargetLabel(e,s)),I(t)&&t.every(F))return yield b.getInstance().records[r]({label:this.label,target:e,data:t},s);let n=b.getInstance(),a=yield J(this.schema,t),i=ee(this.schema,a);if(!H(i)){let l=s!=null?s:yield n.tx.begin(),g=yield this.find({where:i},l),y=typeof s!="undefined";if(!((d=g==null?void 0:g.data)!=null&&d.length)||g.data.length===1&&((p=g.data[0])==null?void 0:p.id)===A(e)){let m=yield n.records[r]({target:e,label:this.label,data:a},l);return y||(yield l.commit()),m}else throw y||(yield l.commit()),new k(this.label,i)}return yield n.records[r]({label:this.label,target:e,data:a},s)})}set(e,t,r){return h(this,null,function*(){return yield this.handleSetOrUpdate(e,t,"set",r)})}update(e,t,r){return h(this,null,function*(){return yield this.handleSetOrUpdate(e,t,"update",r)})}createMany(e,t){return h(this,null,function*(){var a;let r=b.getInstance(),s=typeof t!="undefined",n=t!=null?t:yield r.tx.begin();try{let i=yield Promise.all(e.map(l=>h(this,null,function*(){return yield J(this.schema,l)}))),d=ce(i,this.schema,this.label);if(!H(d)){let l=Object.entries(d).map(([y,S])=>({[y]:{$in:S}})),g=yield this.find({where:{$or:l}},n);if((a=g==null?void 0:g.data)!=null&&a.length)throw new k(this.label,Object.keys(d))}let p=yield r.records.createMany({label:this.label,data:i},n);return s||(yield n.commit()),p}catch(i){throw s||(yield n.rollback()),i}})}delete(e,t){return h(this,null,function*(){if(H(e.where))throw new C(`You must specify criteria to delete records of type '${this.label}'. Empty criteria are not allowed. If this was intentional, use the Dashboard instead.`);return yield b.getInstance().records.delete(u(c({},e),{labels:[this.label]}),t)})}deleteById(e,t){return h(this,null,function*(){return yield b.getInstance().records.deleteById(e,t)})}};Re(new N);var Ft=b;export{D as DBRecordInstance,E as DBRecordsArrayInstance,C as EmptyTargetError,q as HttpClient,Y as HttpClientResponse,Te as Model,K as NonUniqueResultError,L as RestAPI,b as RushDB,U as Transaction,k as UniquenessError,Ft as default,le as idToDate,te as idToTimestamp,Re as initSDK,J as mergeDefaultsWithPayload,de as parseConfig,ee as pickUniqFieldsFromRecord,ce as pickUniqFieldsFromRecords,pe as validateInteger};
|
package/dist/sdk/record.d.ts
CHANGED
|
@@ -84,6 +84,12 @@ export type DBRecordCreationOptions = {
|
|
|
84
84
|
suggestTypes?: boolean;
|
|
85
85
|
convertNumericValuesToNumbers?: boolean;
|
|
86
86
|
capitalizeLabels?: boolean;
|
|
87
|
+
/**
|
|
88
|
+
* When true, empty strings ('') and empty arrays ([]) are treated as unset and skipped
|
|
89
|
+
* (no property is created). Zero (0) and false are real values and are never affected.
|
|
90
|
+
* Defaults to false.
|
|
91
|
+
*/
|
|
92
|
+
skipEmptyValues?: boolean;
|
|
87
93
|
relationshipType?: string;
|
|
88
94
|
mergeStrategy?: 'append' | 'rewrite';
|
|
89
95
|
mergeBy?: string[];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { PROPERTY_TYPE_BOOLEAN, PROPERTY_TYPE_DATETIME,
|
|
1
|
+
import type { PROPERTY_TYPE_BOOLEAN, PROPERTY_TYPE_DATETIME, PROPERTY_TYPE_NUMBER, PROPERTY_TYPE_STRING } from '../common/constants.js';
|
|
2
2
|
import type { MaybeArray, RequireAtLeastOne } from './utils.js';
|
|
3
3
|
import type { BooleanValue, DatetimeObject, DatetimeValue, NullValue, NumberValue, PropertyType, StringValue } from './value.js';
|
|
4
4
|
export type DatetimeExpression = DatetimeValue | RequireAtLeastOne<Record<'$eq' | '$gt' | '$gte' | '$lt' | '$lte' | '$ne', DatetimeObject | DatetimeValue> & Record<'$in' | '$nin', Array<DatetimeObject | DatetimeValue>> & Record<'$exists', BooleanValue>>;
|
|
@@ -13,7 +13,6 @@ export type PropertyExpression = BooleanExpression | DatetimeExpression | NullEx
|
|
|
13
13
|
export type PropertyExpressionByType = {
|
|
14
14
|
[PROPERTY_TYPE_BOOLEAN]: BooleanExpression | TypeExpression;
|
|
15
15
|
[PROPERTY_TYPE_DATETIME]: DatetimeExpression | TypeExpression;
|
|
16
|
-
[PROPERTY_TYPE_NULL]: NullExpression | TypeExpression;
|
|
17
16
|
[PROPERTY_TYPE_NUMBER]: NumberExpression | TypeExpression;
|
|
18
17
|
[PROPERTY_TYPE_STRING]: StringExpression | TypeExpression;
|
|
19
18
|
};
|
package/dist/types/value.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { PROPERTY_TYPE_BOOLEAN, PROPERTY_TYPE_DATETIME,
|
|
1
|
+
import type { PROPERTY_TYPE_BOOLEAN, PROPERTY_TYPE_DATETIME, PROPERTY_TYPE_NUMBER, PROPERTY_TYPE_STRING } from '../common/constants.js';
|
|
2
2
|
import type { MaybeArray } from './utils.js';
|
|
3
3
|
export type DatetimeObject = {
|
|
4
4
|
$day?: number;
|
|
@@ -16,7 +16,7 @@ export type BooleanValue = boolean;
|
|
|
16
16
|
export type NullValue = null;
|
|
17
17
|
export type NumberValue = number;
|
|
18
18
|
export type StringValue = string;
|
|
19
|
-
export type PropertyType = typeof PROPERTY_TYPE_BOOLEAN | typeof PROPERTY_TYPE_DATETIME | typeof
|
|
19
|
+
export type PropertyType = typeof PROPERTY_TYPE_BOOLEAN | typeof PROPERTY_TYPE_DATETIME | typeof PROPERTY_TYPE_NUMBER | typeof PROPERTY_TYPE_STRING;
|
|
20
20
|
type WithId<T> = T & {
|
|
21
21
|
id: string;
|
|
22
22
|
};
|
|
@@ -38,6 +38,6 @@ export type PropertyValuesData = {
|
|
|
38
38
|
export type PropertyDraft = Omit<PropertyWithValue, 'id'> & {
|
|
39
39
|
valueSeparator?: string;
|
|
40
40
|
};
|
|
41
|
-
export type PropertySingleValue<TType extends PropertyType = PropertyType> = TType extends typeof PROPERTY_TYPE_DATETIME ? DatetimeValue : TType extends typeof PROPERTY_TYPE_NUMBER ? NumberValue : TType extends typeof PROPERTY_TYPE_STRING ? StringValue : TType extends typeof
|
|
41
|
+
export type PropertySingleValue<TType extends PropertyType = PropertyType> = TType extends typeof PROPERTY_TYPE_DATETIME ? DatetimeValue : TType extends typeof PROPERTY_TYPE_NUMBER ? NumberValue : TType extends typeof PROPERTY_TYPE_STRING ? StringValue : TType extends typeof PROPERTY_TYPE_BOOLEAN ? BooleanValue : StringValue;
|
|
42
42
|
export type PropertyValue<TType extends PropertyType = PropertyType> = MaybeArray<PropertySingleValue<TType>>;
|
|
43
43
|
export {};
|