modelence 0.23.0-setup.dev.3 → 0.23.0-setup.dev.5
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/bin/modelence.js +5 -5
- package/dist/bin/modelence.js.map +1 -1
- package/dist/{chunk-JQ7HKLQZ.js → chunk-7FIQ2GMI.js} +3 -3
- package/dist/chunk-7FIQ2GMI.js.map +1 -0
- package/dist/chunk-JGU3ZVX3.js +40 -0
- package/dist/chunk-JGU3ZVX3.js.map +1 -0
- package/dist/{chunk-QMKQ7DUD.js → chunk-KDOTVIEY.js} +3 -3
- package/dist/{chunk-QMKQ7DUD.js.map → chunk-KDOTVIEY.js.map} +1 -1
- package/dist/{chunk-UHER7BLC.js → chunk-UJ2WYHH7.js} +2 -2
- package/dist/{chunk-UHER7BLC.js.map → chunk-UJ2WYHH7.js.map} +1 -1
- package/dist/chunk-UW37F3GV.js +2 -0
- package/dist/chunk-UW37F3GV.js.map +1 -0
- package/dist/{package-A4RGADVP.js → package-H4HEZ37S.js} +2 -2
- package/dist/{package-A4RGADVP.js.map → package-H4HEZ37S.js.map} +1 -1
- package/dist/{render-V4SWSKPW.js → render-FRLQDLXI.js} +2 -2
- package/dist/{render-V4SWSKPW.js.map → render-FRLQDLXI.js.map} +1 -1
- package/dist/server-KDERUGRC.js +2 -0
- package/dist/{server-D7FBXWTW.js.map → server-KDERUGRC.js.map} +1 -1
- package/dist/server.d.ts +50 -0
- package/dist/server.js +1 -1
- package/dist/telemetry.js +1 -1
- package/dist/transport-LWVQ4TUY.js +2 -0
- package/dist/{transport-OSL4EWWD.js.map → transport-LWVQ4TUY.js.map} +1 -1
- package/package.json +1 -3
- package/dist/chunk-7XZDALJZ.js +0 -37
- package/dist/chunk-7XZDALJZ.js.map +0 -1
- package/dist/chunk-B5WLEHNH.js +0 -3
- package/dist/chunk-B5WLEHNH.js.map +0 -1
- package/dist/chunk-JQ7HKLQZ.js.map +0 -1
- package/dist/server-D7FBXWTW.js +0 -2
- package/dist/transport-OSL4EWWD.js +0 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {a,b as b$1,n,j as j$1}from'./chunk-
|
|
1
|
+
import {a,b as b$1,n,j as j$1}from'./chunk-UW37F3GV.js';import {a as a$2,b as b$2}from'./chunk-5M6FUMUK.js';import {a as a$1}from'./chunk-DO5TZLF5.js';import {isDeepStrictEqual}from'util';import {MongoError,ObjectId,MongoServerError}from'mongodb';import {z}from'zod';import {createHash,randomBytes}from'crypto';var Z=class{constructor(e,{stores:t=[],queries:i={},mutations:r={},routes:a=[],cronJobs:c={},configSchema:d={},rateLimits:m=[],channels:g=[]}={}){this.name=e,this.stores=t,this.queries=i,this.mutations=r,this.routes=a,this.cronJobs=c,this.configSchema=d,this.rateLimits=m,this.channels=g;}getConfig(e){return a(`${this.name}.${e}`)}};function ie(){return process.env.NODE_ENV==="development"&&!process.env.MODELENCE_SERVICE_ENDPOINT&&!a("_system.mongodbUri")}function w(n){let e=n._def;if(e.typeName==="ZodString")return {type:"string"};if(e.typeName==="ZodNumber")return {type:"number"};if(e.typeName==="ZodBoolean")return {type:"boolean"};if(e.typeName==="ZodDate")return {type:"date"};if(e.typeName==="ZodArray")return {type:"array",items:w(e.type)};if(e.typeName==="ZodObject"){let i=e.shape(),r={};for(let[a,c]of Object.entries(i))r[a]=w(c);return {type:"object",items:r}}if(e.typeName==="ZodOptional")return {...w(e.innerType),optional:true};if(e.typeName==="ZodNullable")return {...w(e.innerType),optional:true};if(e.typeName==="ZodEnum")return {type:"enum",items:e.values};if(e.typeName==="ZodUnion")return {type:"union",items:e.options.map(w)};if(e.typeName==="ZodEffects"){let t=e;return t.description?{type:"custom",typeName:t.description}:w(t.schema)}return {type:"custom",typeName:e.typeName}}function N(n){let e={};for(let[t,i]of Object.entries(n))Array.isArray(i)?e[t]=i.map(r=>typeof r=="object"&&"_def"in r?w(r):N(r)):typeof i=="object"&&"_def"in i?e[t]=w(i):e[t]=N(i);return e}var j=n=>typeof n=="object"&&n!==null&&!Array.isArray(n),re=n=>j(n)&&"_def"in n,K=n=>n._def,oe=n=>{let e=K(n);if(e.typeName==="ZodOptional"||e.typeName==="ZodNullable"||e.typeName==="ZodDefault"||e.typeName==="ZodCatch"||e.typeName==="ZodReadonly")return e.innerType;if(e.typeName==="ZodEffects")return e.schema;if(e.typeName==="ZodBranded")return e.type;if(e.typeName==="ZodPipeline")return e.out},se=n=>{let e=K(n);if(e.typeName==="ZodDefault")return {hasDefault:true,value:e.defaultValue()};let t=oe(n);return t?se(t):{hasDefault:false}},Q=(n,e)=>{let t=K(n);if(t.typeName==="ZodObject"&&j(e))return $(t.shape(),e);if(t.typeName==="ZodArray"&&Array.isArray(e))return e.map(r=>Q(t.type,r));let i=oe(n);return i?Q(i,e):e},F=(n,e)=>re(n)?Q(n,e):Array.isArray(n)&&Array.isArray(e)?n.length===1?e.map(t=>F(n[0],t)):e.map((t,i)=>F(n[i],t)):j(n)&&j(e)?$(n,e):e,$=(n,e)=>{let t={...e};for(let[i,r]of Object.entries(n)){let a=t[i];if(a===void 0){if(re(r)){let c=se(r);c.hasDefault&&(t[i]=F(r,c.value));}continue}t[i]=F(r,a);}return t};var De="[modelence:index-error]";function ae(n){return n instanceof MongoServerError?n.code===11e3||n.message.includes("E11000"):false}function ce(n,e,t){let i={problem:"unique-index-violation",collection:n,index:{name:e.name??null,key:e.key,collation:e.collation??null,partialFilterExpression:e.partialFilterExpression??null},duplicateKey:t.keyValue??null,serverError:t.errmsg??t.message},r=e.collation?{collation:e.collation}:void 0,a=`db.getCollection(${JSON.stringify(n)}).aggregate(${JSON.stringify(we(e))}`+(r?`, ${JSON.stringify(r)}`:"")+")";return [`${De} Unique index '${e.name??JSON.stringify(e.key)}' on collection '${n}' could not be created because existing documents already violate it. Until this is resolved the constraint is NOT enforced, so new duplicates can still be written.`,`Details: ${JSON.stringify(i)}`,"Find the conflicting documents with:",` ${a}`,"Fix: merge, delete, or update the conflicting documents so each indexed value is unique, then restart the app \u2014 the index build is retried on startup."].join(`
|
|
2
2
|
`)}function we(n){let e=Object.keys(n.key),t=e.flatMap(r=>Ie(r).map(a=>({$unwind:{path:`$${a}`,preserveNullAndEmptyArrays:true}}))),i=Object.fromEntries(e.map(r=>[r.replace(/\./g,"_"),`$${r}`]));return [...n.partialFilterExpression?[{$match:n.partialFilterExpression}]:[],...t,{$group:{_id:i,ids:{$addToSet:"$_id"}}},{$match:{$expr:{$gt:[{$size:"$ids"},1]}}},{$limit:100}]}function Ie(n){let e=n.split(".");return e.map((t,i)=>e.slice(0,i+1).join("."))}var Oe=["background","bits","bucketSize","collation","default_language","expireAfterSeconds","hidden","language_override","max","min","partialFilterExpression","sparse","storageEngine","textIndexVersion","unique","weights","wildcardProjection","2dsphereIndexVersion"],J=n=>typeof n=="object"&&n!==null&&!Array.isArray(n),Ce=n=>n.startsWith("_modelence_"),H=n=>{let e={};for(let t of Oe){let i=n[t];i!==void 0&&(e[t]=i);}return e},ke=(n,e)=>{if(!J(n)||!J(e))return false;let t=Object.entries(n),i=Object.entries(e);return t.length!==i.length?false:t.every(([r,a],c)=>{let[d,m]=i[c]||[];return r===d&&isDeepStrictEqual(a,m)})},de=(n,e)=>ke(n.key,e.key)?isDeepStrictEqual(H(n),H(e)):false,V=n=>J(n)?Object.entries(n).map(([e,t])=>`${e}:${JSON.stringify(t)}`).join("|"):null,_e=async n=>{try{return await n.listIndexes().toArray()}catch(e){if(e instanceof MongoError&&e.code===26)return [];throw e}},Ae=n=>Object.entries(n).map(([e,t])=>`${e}_${t}`).join("_"),Me=n=>{if(n.name){let t=n.name.startsWith("_modelence_")?n.name:`_modelence_${n.name}`;return {...n,name:t}}let e=Ae(n.key);return {...n,name:`_modelence_${e}`}},f=class n{constructor(e,t){this._chainParent=null;this._chainChild=null;this.name=e,this.schema=t.schema,this.methods=t.methods,this.indexes=t.indexes.map(Me),this.searchIndexes=t.searchIndexes||[],this.indexCreationMode=t.indexCreationMode??"background";}getName(){return this.name}getIndexCreationMode(){return this.indexCreationMode}getSchema(){return this.schema}getSerializedSchema(){return N(this.schema)}getIndexes(){return this.indexes}getSearchIndexes(){return this.searchIndexes}getChainTail(){let e=this;for(;e._chainChild;)e=e._chainChild;return e}getChainRoot(){let e=this;for(;e._chainParent;)e=e._chainParent;return e}extend(e){let t=this.getChainTail();if(this.client||t.client)throw new Error(`Store.extend() must be called before startApp(). Store '${this.name}' has already been initialized and cannot be extended.`);let i={...t.schema,...e.schema||{}},r=[...t.indexes,...e.indexes||[]],a=[...t.searchIndexes,...e.searchIndexes||[]],c={...t.methods||{},...e.methods||{}},d=new n(this.name,{schema:i,methods:c,indexes:r,searchIndexes:a,indexCreationMode:e.indexCreationMode??t.indexCreationMode});return t._chainChild=d,d._chainParent=t,d}init(e){if(this.collection)throw new Error(`Collection ${this.name} is already initialized`);this.client=e,this.collection=this.client.db().collection(this.name);}async createIndexes(e="full"){let t=this.requireCollection(),i=e!=="create-only",r=e!=="drop-only",a=await _e(t),c=new Map,d=new Map,m=new Set,g=s=>{c.set(s.name,s);let l=V(s.key);if(!l)return;let u=d.get(l);u?u.add(s.name):d.set(l,new Set([s.name]));},D=s=>{let l=c.get(s);if(!l)return;c.delete(s);let u=V(l.key);if(!u)return;let T=d.get(u);T&&(T.delete(s),T.size===0&&d.delete(u));};for(let s of a)typeof s.name=="string"&&g({...s,name:s.name});let y=async s=>{if(!(s==="_id_"||m.has(s))){try{await t.dropIndex(s);}catch(l){if(!(l instanceof MongoError&&l.code===27))throw l}m.add(s),D(s);}};if(i){let s=new Set(this.indexes.map(u=>u.name).filter(u=>typeof u=="string")),l=[...c.values()].filter(u=>Ce(u.name)&&!s.has(u.name));for(let u of l)await y(u.name);}if(this.indexes.length>0)for(let s of this.indexes){if(!s.name)continue;let l=false,u=c.get(s.name);u&&!de(u,s)&&(i?await y(u.name):l=true);let T=V(s.key);if(T){let x=[...d.get(T)||[]];for(let O of x)O!==s.name&&(i?await y(O):l=true);}let v=c.get(s.name);if(!(!!v&&de(v,s))&&r&&!l){try{await t.createIndexes([s]);}catch(x){throw s.unique&&ae(x)&&console.error(ce(this.name,s,x)),x}g({name:s.name,key:s.key,...H(s)});}}if(r&&this.searchIndexes.length>0)for(let s of this.searchIndexes)try{await t.createSearchIndexes([s]);}catch(l){if(l instanceof MongoError&&l.code===68&&s.name)await t.dropSearchIndex(s.name),await t.createSearchIndexes([s]);else throw l}}wrapDocument(e){return this.methods?Object.create(null,Object.getOwnPropertyDescriptors({...e,...this.methods})):e}getSelector(e){return typeof e=="string"?{_id:new ObjectId(e)}:e instanceof ObjectId?{_id:e}:e}requireCollection(){if(!this.collection)throw new Error(`Collection ${this.name} is not provisioned`);return this.collection}requireClient(){if(!this.client)throw new Error("Database is not connected");return this.client}async findOne(e,t){let i=await this.requireCollection().findOne(e,t);return i?this.wrapDocument(i):null}async requireOne(e,t,i){let r=await this.findOne(e,t);if(!r)throw i?i():new Error(`Record not found in ${this.name}`);return r}find(e,t){let i=this.requireCollection().find(e,t?.projection?{projection:t.projection}:void 0);return t?.sort&&i.sort(t.sort),t?.limit&&i.limit(t.limit),t?.skip&&i.skip(t.skip),i}async findById(e){let t=typeof e=="string"?{_id:new ObjectId(e)}:{_id:e};return await this.findOne(t)}async requireById(e,t){let i=await this.findById(e);if(!i)throw t?t():new Error(`Record with id ${e} not found in ${this.name}`);return i}countDocuments(e){return this.requireCollection().countDocuments(e)}async fetch(e,t){return (await this.find(e,t).toArray()).map(this.wrapDocument.bind(this))}async insertOne(e,t){return await this.requireCollection().insertOne(e,t)}async create(e,t){let i=$(this.schema,{_id:new ObjectId,...e});return await this.requireCollection().insertOne(i,t),this.wrapDocument(i)}async insertMany(e,t){return await this.requireCollection().insertMany(e,t)}async updateOne(e,t,i){return await this.requireCollection().updateOne(this.getSelector(e),t,i)}async upsertOne(e,t,i){return await this.requireCollection().updateOne(this.getSelector(e),t,{upsert:true,...i})}async updateMany(e,t,i){return await this.requireCollection().updateMany(e,t,i)}async upsertMany(e,t,i){return await this.requireCollection().updateMany(e,t,{upsert:true,...i})}async deleteOne(e,t){return await this.requireCollection().deleteOne(this.getSelector(e),t)}async deleteMany(e,t){return await this.requireCollection().deleteMany(e,t)}async findOneAndUpdate(e,t,i){let r=await this.requireCollection().findOneAndUpdate(this.getSelector(e),t,i??{});return r?this.wrapDocument(r):null}async findOneAndUpsert(e,t,i){let r=await this.requireCollection().findOneAndUpdate(this.getSelector(e),t,{upsert:true,...i,returnDocument:"after",includeResultMetadata:true});return {doc:r.value?this.wrapDocument(r.value):null,isNew:!!r.lastErrorObject?.upserted}}async findOneAndDelete(e,t){let i=await this.requireCollection().findOneAndDelete(this.getSelector(e),t??{});return i?this.wrapDocument(i):null}async findOneAndReplace(e,t,i){let r=await this.requireCollection().findOneAndReplace(this.getSelector(e),t,i??{});return r?this.wrapDocument(r):null}async replaceOne(e,t,i){return await this.requireCollection().replaceOne(this.getSelector(e),t,i)}async distinct(e,t,i){let r=t??{};return i!==void 0?await this.requireCollection().distinct(e,r,i):await this.requireCollection().distinct(e,r)}watch(e,t){return this.requireCollection().watch(e,t)}aggregate(e,t){return this.requireCollection().aggregate(e,t)}bulkWrite(e){return this.requireCollection().bulkWrite(e)}getDatabase(){return this.requireClient().db()}rawCollection(){return this.requireCollection()}async renameFrom(e,t){let i=this.getDatabase();if(!this.collection||!i)throw new Error(`Store ${this.name} is not provisioned`);if((await i.listCollections({name:e}).toArray()).length===0)throw new Error(`Collection ${e} not found`);if((await i.listCollections({name:this.name}).toArray()).length>0)throw new Error(`Collection ${this.name} already exists`);await i.collection(e).rename(this.name,t);}async vectorSearch({field:e,embedding:t,numCandidates:i,limit:r,projection:a,indexName:c}){return this.aggregate([{$vectorSearch:{index:c||e+"VectorSearch",path:e,queryVector:t,numCandidates:i||100,limit:r||10}},{$project:{_id:1,score:{$meta:"vectorSearchScore"},...a}}])}static vectorIndex({field:e,dimensions:t,similarity:i="cosine",indexName:r}){return {type:"vectorSearch",name:r||e+"VectorSearch",definition:{fields:[{type:"vector",path:e,numDimensions:t,similarity:i}]}}}};var ve=z.string.bind(z),Ee=z.number.bind(z),Re=z.date.bind(z),Ze=z.boolean.bind(z),Ne=z.array.bind(z),je=z.object.bind(z),Fe=z.enum.bind(z),o={string:ve,number:Ee,date:Re,boolean:Ze,array:Ne,object:je,enum:Fe,embedding(){return z.array(z.number())},objectId(){return z.instanceof(ObjectId).describe("ObjectId")},userId(){return z.instanceof(ObjectId).describe("UserId")},ref(n){return z.instanceof(ObjectId).describe("Ref")},union:z.union.bind(z),infer(n){return {}}};function C(n){return createHash("sha256").update(n).digest("hex")}var G=new f("_modelenceLinkNonces",{schema:{nonce:o.string(),userId:o.string(),expiresAt:o.date()},indexes:[{key:{nonce:1},unique:true},{key:{expiresAt:1},expireAfterSeconds:0}]});async function nn(n){let e=randomBytes(32).toString("hex");return await G.insertOne({nonce:e,userId:n,expiresAt:new Date(Date.now()+a$1.minutes(10))}),e}async function rn(n){let e=await G.findOneAndDelete({nonce:n});return e?e.userId:null}var b=new f("_modelenceSessions",{schema:{authToken:o.string(),createdAt:o.date(),expiresAt:o.date(),userId:o.userId().nullable()},indexes:[{key:{authToken:1},unique:true},{key:{expiresAt:1},expireAfterSeconds:0},{key:{userId:1}}]});async function pe(n){if(n){let e=C(n),t=await b.findOne({authToken:e}),i=/^[0-9a-f]{64}$/i.test(n);if(!t&&!i&&(t=await b.findOne({authToken:n}),t&&await b.updateOne({_id:t._id},{$set:{authToken:e}})),t)return {authToken:n,expiresAt:new Date(t.expiresAt),userId:t.userId??null}}return await ze()}async function on(n,e){await b.updateOne({authToken:C(n)},{$set:{userId:e}});}async function sn(n){await b.updateOne({authToken:C(n)},{$set:{userId:null}});}async function an(n){await b.deleteMany({userId:n});}async function ze(n=null){let e=randomBytes(32).toString("base64url"),t=Date.now(),i=new Date(t+a$1.days(7));return await b.insertOne({authToken:C(e),createdAt:new Date(t),expiresAt:i,userId:n}),{authToken:e,expiresAt:i,userId:n}}async function Pe(n){let e=Date.now(),t=new Date(e+a$1.days(7));await b.updateOne({authToken:C(n.authToken)},{$set:{lastActiveDate:new Date(e),expiresAt:t}});}function qe(n,e){n.cookie("authToken",e,{httpOnly:true,secure:process.env.NODE_ENV==="production",sameSite:"lax",path:"/",maxAge:a$1.days(7)});}function cn(n){n.clearCookie("authToken",{httpOnly:true,secure:process.env.NODE_ENV==="production",sameSite:"lax",path:"/"});}var dn=new Z("_system.session",{stores:[b,G],mutations:{init:async function(n,{session:e,user:t,res:i}){return i&&e?.userId&&qe(i,e.authToken),{session:e,user:t,configs:b$1(),...ie()?{setupRequired:true}:{}}},heartbeat:async function(n,{session:e}){e&&await Pe(e);}}});var he=new f("_modelenceUsers",{schema:{handle:o.string(),emails:o.array(o.object({address:o.string(),verified:o.boolean()})).optional(),status:o.enum(["active","disabled","deleted"]).optional(),firstName:o.string().optional(),lastName:o.string().optional(),avatarUrl:o.string().optional(),createdAt:o.date(),disabledAt:o.date().optional(),deletedAt:o.date().optional(),roles:o.array(o.string()).optional(),authMethods:o.object({password:o.object({hash:o.string()}).optional(),google:o.object({id:o.string()}).optional(),github:o.object({id:o.string()}).optional()})},indexes:[{key:{handle:1},unique:true,collation:{locale:"en",strength:2}},{key:{"emails.address":1,status:1}},{key:{"emails.address":1},unique:true,collation:{locale:"en",strength:2},partialFilterExpression:{"emails.address":{$exists:true}}},{key:{"authMethods.google.id":1},sparse:true,unique:true},{key:{"authMethods.github.id":1},sparse:true,unique:true}]}),hn=new f("_modelenceDisposableEmailDomains",{schema:{domain:o.string(),addedAt:o.date()},indexes:[{key:{domain:1},unique:true}]}),mn=new f("_modelenceEmailVerificationTokens",{schema:{userId:o.objectId(),email:o.string().optional(),token:o.string(),createdAt:o.date(),expiresAt:o.date()},indexes:[{key:{token:1},unique:true},{key:{expiresAt:1},expireAfterSeconds:0}]}),yn=new f("_modelenceResetPasswordTokens",{schema:{userId:o.objectId(),email:o.string().optional(),token:o.string(),createdAt:o.date(),expiresAt:o.date()},indexes:[{key:{token:1},unique:true},{key:{expiresAt:1},expireAfterSeconds:0}]}),fn=new f("_modelenceMagicLinkTokens",{schema:{email:o.string(),token:o.string(),code:o.string(),attempts:o.number(),createdAt:o.date(),expiresAt:o.date()},indexes:[{key:{token:1},unique:true},{key:{email:1}},{key:{expiresAt:1},expireAfterSeconds:0}]});var me=new Map,k={authenticated:null,unauthenticated:null};function Tn(n,e){k.authenticated=e.authenticated,k.unauthenticated=e.unauthenticated;for(let[t,i]of Object.entries(n))me.set(t,i);}function ye(){return k.unauthenticated?[k.unauthenticated]:[]}function fe(){return k.authenticated?[k.authenticated]:[]}function Y(n,e){let t=e.find(i=>!Le(n,i));if(t)throw new Error(`Access denied - missing permission: '${t}'`)}function Le(n,e){for(let t of n)if(me.get(t)?.permissions?.includes(e))return true;return false}async function ge(n){let e=await pe(n),t=e.userId?await he.findOne({_id:new ObjectId(e.userId),status:{$nin:["deleted","disabled"]}}):null,i=t?{id:t._id.toString(),handle:t.handle,roles:t.roles||[],hasRole:a=>(t.roles||[]).includes(a),requireRole:a=>{if(!(t.roles||[]).includes(a))throw new Error(`Access denied - role '${a}' required`)},firstName:t.firstName??void 0,lastName:t.lastName??void 0,avatarUrl:t.avatarUrl??void 0}:null,r=i?fe():ye();return {user:i,session:e,roles:r}}var A=class{constructor(e){this.fetch=e.fetch,this.watch=e.watch;}};function We(){return typeof window!="object"}function I(){if(!We())throw new Error("This function can only be called on the server")}function Cn(n){return n.replace(/<[^>]*>/g,"").replace(/\s+/g," ").trim()}var M=new Map;function Qe(n){let e=M.get(n.id);return e||(e=new Map,M.set(n.id,e)),e}async function Ke(n,e){let t=z.object({subscriptionId:z.string().min(1),method:z.string().min(1),args:z.record(z.unknown()).default({}),authToken:z.string().nullish(),clientInfo:z.object({screenWidth:z.number(),screenHeight:z.number(),windowWidth:z.number(),windowHeight:z.number(),pixelRatio:z.number(),orientation:z.string().nullable()}).optional()}).safeParse(e);if(!t.success){n.emit("liveQueryError",{subscriptionId:null,error:`Invalid payload: ${t.error.message}`});return}let{subscriptionId:i,method:r,args:a,authToken:c,clientInfo:d}=t.data,m=Qe(n),g=m.get(i);if(g)if(g.cleanup)try{g.cleanup();}catch(y){console.error("[LiveQuery] Error cleaning up existing subscription:",y);}else g.aborted=true;let D={cleanup:null};m.set(i,D);try{let{session:y,user:s,roles:l}=await ge(c??null),u={session:y,user:s,roles:l,clientInfo:d??{screenWidth:0,screenHeight:0,windowWidth:0,windowHeight:0,pixelRatio:1,orientation:null},connectionInfo:{ip:n.handshake.address,userAgent:n.handshake.headers["user-agent"]},req:null,res:null},T=await Te(r,a,u),v=async()=>{let S=a$2(await T.fetch());D.aborted||n.emit("liveQueryData",{subscriptionId:i,data:S,typeMap:b$2(S)});},E=!0,x=!1,O=()=>{D.aborted||!E||x||(E=!1,x=!0,v().catch(S=>{D.aborted||(console.error(`[LiveQuery] Error fetching data for ${r}:`,S),n.emit("liveQueryError",{subscriptionId:i,error:S instanceof Error?S.message:String(S)}));}).finally(()=>{x=!1,O();}));},L=T.watch({publish:()=>{E=!0,O();}});if(D.aborted){if(L)try{L();}catch(S){console.error("[LiveQuery] Error cleaning up after disconnect during setup:",S);}return}D.cleanup=L||null,O();}catch(y){m.delete(i),console.error(`[LiveQuery] Error in ${r}:`,y),n.emit("liveQueryError",{subscriptionId:i,error:y instanceof Error?y.message:String(y)});}}function Ve(n,e){let t=z.object({subscriptionId:z.string().min(1)}).safeParse(e);if(!t.success){console.warn(`[LiveQuery] Invalid unsubscribe payload: ${t.error.message}`);return}let{subscriptionId:i}=t.data,r=M.get(n.id);if(!r)return;let a=r.get(i);if(a){if(a.cleanup)try{a.cleanup();}catch(c){console.error("[LiveQuery] Error in cleanup:",c);}else a.aborted=true;r.delete(i);}}function Be(n){let e=M.get(n.id);if(e){for(let t of e.values())if(t.cleanup)try{t.cleanup();}catch(i){console.error("[LiveQuery] Error in cleanup on disconnect:",i);}else t.aborted=true;M.delete(n.id);}}var P={};function Pn(n,e){return I(),xe(n),q("query",n,e)}function qn(n,e){return I(),xe(n),q("mutation",n,e)}function Ln(n,e){return I(),Se(n),q("query",n,e)}function Un(n,e){return I(),Se(n),q("mutation",n,e)}function xe(n){if(n.toLowerCase().startsWith("_system."))throw new Error(`Method name cannot start with a reserved prefix: '_system.' (${n})`)}function Se(n){if(!n.toLowerCase().startsWith("_system."))throw new Error(`System method name must start with a prefix: '_system.' (${n})`)}function q(n,e,t){if(I(),P[e])throw new Error(`Method with name '${e}' is already defined.`);let i=typeof t=="function"?t:t.handler,r=typeof t=="function"?[]:t.permissions??[];P[e]={type:n,name:e,handler:i,permissions:r};}async function Wn(n$1,e,t){I();let i=P[n$1];if(!i)throw new Error(`Method with name '${n$1}' is not defined.`);let{type:r,handler:a}=i,c=n("method",`method:${n$1}`,{type:r,args:j$1(e)}),d;try{Y(t.roles,i.permissions),d=await a(e,t);}catch(m){throw c.end("error"),m}return c.end(),d}async function Te(n$1,e,t){I();let i=P[n$1];if(!i)throw new Error(`Method with name '${n$1}' is not defined.`);let{type:r,handler:a}=i;if(r!=="query")throw new Error("Live methods are only supported for queries");let c=n("method",`method:${n$1}:live`,{type:r,args:j$1(e)}),d;try{if(Y(t.roles,i.permissions),d=await a(e,t),!(d instanceof A))throw new Error(`Live query handler for '${n$1}' must return a LiveData object with fetch and watch functions. See https://docs.modelence.com/live-queries`)}catch(m){throw c.end("error"),m}return c.end(),d}
|
|
3
|
-
export{Pn as A,qn as B,Ln as C,Un as D,Wn as E,Ke as F,Ve as G,Be as H,Z as a,ie as b,f as c,o as d,C as e,nn as f,rn as g,b as h,pe as i,on as j,sn as k,an as l,ze as m,qe as n,cn as o,dn as p,he as q,hn as r,mn as s,yn as t,fn as u,Tn as v,ye as w,ge as x,A as y,Cn as z};//# sourceMappingURL=chunk-
|
|
4
|
-
//# sourceMappingURL=chunk-
|
|
3
|
+
export{Pn as A,qn as B,Ln as C,Un as D,Wn as E,Ke as F,Ve as G,Be as H,Z as a,ie as b,f as c,o as d,C as e,nn as f,rn as g,b as h,pe as i,on as j,sn as k,an as l,ze as m,qe as n,cn as o,dn as p,he as q,hn as r,mn as s,yn as t,fn as u,Tn as v,ye as w,ge as x,A as y,Cn as z};//# sourceMappingURL=chunk-KDOTVIEY.js.map
|
|
4
|
+
//# sourceMappingURL=chunk-KDOTVIEY.js.map
|