gemi 0.4.23 → 0.4.24
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createFlatViewRoutes.d.ts","sourceRoot":"","sources":["../../app/createFlatViewRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEjE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY;UAG7C,aAAa,EAAE;gBAAc,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"createFlatViewRoutes.d.ts","sourceRoot":"","sources":["../../app/createFlatViewRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEjE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY;UAG7C,aAAa,EAAE;gBAAc,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE;GA+CxD"}
|
package/dist/app/index.js
CHANGED
|
@@ -139,4 +139,4 @@ decimal.js/decimal.mjs:
|
|
|
139
139
|
* Copyright (c) 2022 Michael Mclaughlin <M8ch88l@gmail.com>
|
|
140
140
|
* MIT Licence
|
|
141
141
|
*)
|
|
142
|
-
*/});var i5=l1((z3)=>{var __dirname="/Users/enes.tuefekci/personal/projects/gemi/node_modules/.prisma/client";Object.defineProperty(z3,"__esModule",{value:!0});var{PrismaClientKnownRequestError:eX,PrismaClientUnknownRequestError:wA,PrismaClientRustPanicError:HA,PrismaClientInitializationError:XA,PrismaClientValidationError:AA,NotFoundError:VA,getPrismaClient:WA,sqltag:$A,empty:JA,join:YA,raw:ZA,Decimal:KA,Debug:HW,objectEnumValues:o0,makeStrictEnum:zA,Extensions:o5,warnOnce:XW,defineDmmfProperty:jA,Public:GA,getRuntime:AW}=K3(),d={};z3.Prisma=d;z3.$Enums={};d.prismaVersion={client:"5.14.0",engine:"34ace0eb2704183d2c05b60b52fba5c43c13f303"};d.PrismaClientKnownRequestError=eX;d.PrismaClientUnknownRequestError=wA;d.PrismaClientRustPanicError=HA;d.PrismaClientInitializationError=XA;d.PrismaClientValidationError=AA;d.NotFoundError=VA;d.Decimal=KA;d.sql=$A;d.empty=JA;d.join=YA;d.raw=ZA;d.validator=GA.validator;d.getExtensionContext=o5.getExtensionContext;d.defineExtension=o5.defineExtension;d.DbNull=o0.instances.DbNull;d.JsonNull=o0.instances.JsonNull;d.AnyNull=o0.instances.AnyNull;d.NullTypes={DbNull:o0.classes.DbNull,JsonNull:o0.classes.JsonNull,AnyNull:o0.classes.AnyNull};var D0=import.meta.require("path");z3.Prisma.TransactionIsolationLevel=zA({Serializable:"Serializable"});z3.Prisma.UserScalarFieldEnum={id:"id",email:"email",name:"name"};z3.Prisma.PostScalarFieldEnum={id:"id",publicId:"publicId",title:"title",content:"content",published:"published",authorId:"authorId"};z3.Prisma.SortOrder={asc:"asc",desc:"desc"};z3.Prisma.NullsOrder={first:"first",last:"last"};z3.Prisma.ModelName={User:"User",Post:"Post"};var e={generator:{name:"client",provider:{fromEnvVar:null,value:"prisma-client-js"},output:{value:"/Users/enes.tuefekci/personal/projects/gemi/node_modules/@prisma/client",fromEnvVar:null},config:{engineType:"library"},binaryTargets:[{fromEnvVar:null,value:"darwin-arm64",native:!0}],previewFeatures:["driverAdapters"],sourceFilePath:"/Users/enes.tuefekci/personal/projects/gemi/templates/saas-starter/prisma/schema.prisma"},relativeEnvPaths:{rootEnvPath:null,schemaEnvPath:"../../../templates/saas-starter/.env"},relativePath:"../../../templates/saas-starter/prisma",clientVersion:"5.14.0",engineVersion:"34ace0eb2704183d2c05b60b52fba5c43c13f303",datasourceNames:["db"],activeProvider:"sqlite",postinstall:!1,inlineDatasources:{db:{url:{fromEnvVar:"DATABASE_URL",value:null}}},inlineSchema:"// This is your Prisma schema file,\n// learn more about it in the docs: https://pris.ly/d/prisma-schema\n\ngenerator client {\n provider = \"prisma-client-js\"\n previewFeatures = [\"driverAdapters\"]\n}\n\ndatasource db {\n provider = \"sqlite\"\n url = env(\"DATABASE_URL\")\n}\n\nmodel User {\n id Int @id @default(autoincrement())\n email String @unique\n name String?\n posts Post[]\n}\n\nmodel Post {\n id Int @id @default(autoincrement())\n publicId String @unique @default(cuid())\n title String\n content String?\n published Boolean @default(false)\n author User? @relation(fields: [authorId], references: [id])\n authorId Int?\n}\n",inlineSchemaHash:"0fdc645180adab0c748b9fa16f9aca5de0687497c0b03b12504201d9f6937ff9",copyEngine:!0},a5=import.meta.require("fs");e.dirname=__dirname;if(!a5.existsSync(D0.join(__dirname,"schema.prisma"))){const w=["../../node_modules/.prisma/client","../node_modules/.prisma/client"],H=w.find((X)=>{return a5.existsSync(D0.join(process.cwd(),X,"schema.prisma"))})??w[0];e.dirname=D0.join(process.cwd(),H),e.isBundled=!0}e.runtimeDataModel=JSON.parse("{\"models\":{\"User\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"posts\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Post\",\"relationName\":\"PostToUser\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Post\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"publicId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"content\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"published\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"author\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"User\",\"relationName\":\"PostToUser\",\"relationFromFields\":[\"authorId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"authorId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false}},\"enums\":{},\"types\":{}}");jA(z3.Prisma,e.runtimeDataModel);e.engineWasm=void 0;var{warnEnvConflicts:BA}=K3();BA({rootEnvPath:e.relativeEnvPaths.rootEnvPath&&D0.resolve(e.dirname,e.relativeEnvPaths.rootEnvPath),schemaEnvPath:e.relativeEnvPaths.schemaEnvPath&&D0.resolve(e.dirname,e.relativeEnvPaths.schemaEnvPath)});var FA=WA(e);z3.PrismaClient=FA;Object.assign(z3,d);D0.join(__dirname,"libquery_engine-darwin-arm64.dylib.node");D0.join(process.cwd(),"../../node_modules/.prisma/client/libquery_engine-darwin-arm64.dylib.node");D0.join(__dirname,"schema.prisma");D0.join(process.cwd(),"../../node_modules/.prisma/client/schema.prisma")});var r5=l1((WW,n5)=>{n5.exports={...i5()}});var e5=l1(($W,t5)=>{t5.exports={...r5()}});function V2(w){let H=[];for(let[X,A]of w)H.push(X,...V2(A).flat());return Array.from(new Set(H))}function Q1(w){const H=[];for(let[X,A]of Object.entries(w))if("prepare"in A){const{viewPath:V,children:W}=A.prepare();if(Object.entries(W).length>0){const $=Q1(W);H.push([V,$])}else H.push([V,[]])}else{const V=new A,W=Q1(V.routes);H.push(...W)}return H}function U1(w){const H={};for(let[X,A]of Object.entries(w))if("prepare"in A){const V=A.prepare();if(Object.entries(V.children).length>0){const W=U1(V.children);if(V.kind==="view")H[X]={exec:[V.exec],middleware:V.middlewares};for(let[$,{exec:J,middleware:Y}]of Object.entries(W)){const Z=X==="/"?$:`${X}${$}`,K=$==="/"&&X!=="/"?X:Z;H[K]={exec:J,middleware:[...V.middlewares,...Y]}}}else H[X]={exec:[V.exec],middleware:V.middlewares}}else{const V=new A,W=U1(V.routes);for(let[$,{exec:J,middleware:Y}]of Object.entries(W)){const Z=X==="/"?$:`${X}${$}`,K=$==="/"&&X!=="/"?X:Z;H[K]={exec:J,middleware:[...V.middlewares,...Y]}}}return H}function x1(w){const H={};for(let[X,A]of Object.entries(w))if("prepare"in A){const{viewPath:V,children:W,kind:$}=A.prepare();if($==="view")H[X]=[V];if(Object.entries(W).length>0){const J=x1(W);for(let[Y,Z]of Object.entries(J)){const K=X==="/"?Y:`${X}${Y}`,z=Y==="/"&&X!=="/"?X:K;H[z]=[V,...Z]}}else H[X]=[V]}else{const V=new A,W=x1(V.routes);for(let[$,J]of Object.entries(W)){const Y=X==="/"?$:`${X}${$}`,Z=$==="/"&&X!=="/"?X:Y;H[Z]=J}}return H}var V6=function(w){return D1(w)};function W2(w){const H={};for(let[X,A]of Object.entries(w))if("run"in A){const V=A;if(!H[X])H[X]={};const{method:W,middlewares:$}=V,J=V.run.bind(V);H[X][W]={exec:J,middleware:[...$]}}else if(V6(A)){const V=new A,W=W2(V.routes);for(let[$,J]of Object.entries(W)){const Y=$==="/"?"":$,Z=X==="/"?"":X,K=`${Z}${Y}`===""?"/":`${Z}${Y}`;if(!H[K])H[K]={};for(let[z,j]of Object.entries(J))H[K][z]={exec:j.exec,middleware:[V.middleware,...V.middlewares,...j.middleware]}}}else for(let V of Object.values(A)){if(!H[X])H[X]={};const{method:W,middlewares:$}=V,J=V.run.bind(V);H[X][W]={exec:J,middleware:$}}return H}import{renderToReadableStream as W6} from"react-dom/server.browser";import{createElement as j3,Fragment as $6} from"react";class B3{renderParams={styles:[],manifest:{},serverManifest:{},bootstrapModules:[]};flatViewRoutes={};flatApiRoutes={};routeManifest={};name="APP";appId;componentTree;middlewareAliases={};devVersion=0;params;apiRouter;viewRouter;Root;kernel;constructor(w){this.params=w,this.apiRouter=w.apiRouter,this.viewRouter=w.viewRouter,this.Root=w.root,this.kernel=new w.kernel,this.prepare(),this.appId=G3(Date.now())}prepare(){const w=this.params;this.middlewareAliases=w.middlewareAliases??{};const H=this.kernel.getServices.call(this.kernel),X=H.authenticationServiceProvider.basePath;let A={"/":this.viewRouter,[X]:H.authenticationServiceProvider.routers.view},V={"/":this.apiRouter,[X]:H.authenticationServiceProvider.routers.api};for(let W of w.plugins??[]){const $=new W;if($.viewRouter)A={...A,[$.viewRoutesBasePath]:$.viewRouter};if($.apiRouter)V={...V,[$.apiRoutesBasePath]:$.apiRouter}}this.flatViewRoutes=U1(A),this.componentTree=Q1(A),this.routeManifest=x1(A),this.flatApiRoutes=W2(V)}getComponentTree(){return this.componentTree}setRenderParams(w){this.renderParams=w}runMiddleware(w){return w.map((H)=>{if(typeof H==="string"){const X=H,V=this.kernel.getServices.call(this.kernel).middlewareServiceProvider.aliases[X];if(V)return new V().run}else{if(D1(H))return new H().run;return H}}).filter(Boolean).reduce((H,X)=>{return async(A,V)=>{return{...await H(A,V),...await X(A,V)}}},(H)=>Promise.resolve({}))}async handleApiRequest(w){const X=new URL(w.url).pathname.replace("/api","");for(let[A,V]of Object.entries(this.flatApiRoutes)){const W=new J2({pathname:A});if(W.test({pathname:X})){const $=W.exec({pathname:X})?.pathname.groups;if(!V[w.method])return new Response(JSON.stringify({error:{message:"Not found"}}));const J=V[w.method].exec,Y=V[w.method].middleware,Z=this.runMiddleware(Y);return await i0.run(async()=>{const K=new $2(w,$),z=i0.getStore();z.setRequest(K);let j=J?()=>J(K,$):()=>Promise.resolve({});try{await Z(K)}catch(F){if(F.kind===I1){const{status:U=400,data:I,headers:L}=F.payload.api;return new Response(JSON.stringify(I),{status:U,headers:{"Content-Type":"application/json",...L}})}else throw console.error(F),F}let G={};try{G=await j()}catch(F){if(F.kind===I1){const{status:U=400,data:I,headers:L}=F.payload.api;return new Response(JSON.stringify(I),{status:U,headers:{"Content-Type":"application/json",...L}})}else throw console.error(F),F}const O=new Headers;return O.append("Content-Type","application/json"),z.cookies.forEach((F)=>O.append("Set-Cookie",F.toString())),new Response(JSON.stringify(G),{headers:O})})}}return new Response(JSON.stringify({error:{message:"Not found"}}),{status:404})}async handleViewRequest(w){const H=new URL(w.url);let X=null;try{let T=[],C=[],t=null,b={};const u=Object.entries(this.flatViewRoutes).sort(([w0],[y])=>y.length-w0.length);for(let[w0,y]of u){const M=new J2({pathname:w0});if(M.test({pathname:H.pathname}))t=w0,b=M.exec({pathname:H.pathname})?.pathname.groups,T=y.exec,C=y.middleware}const W0=this.runMiddleware(C),{data:c,cookies:I0,user:m0}=await i0.run(async()=>{const w0=new $2(w,b),y=i0.getStore();return y.setRequest(w0),await W0(w0),{data:await Promise.all(T.map((A6)=>A6(w0))),cookies:y.cookies,user:y.user}});X={data:c,currentPathName:t,user:m0,params:b,cookies:I0}}catch(T){if(T.kind===I1)return new Response(null,{...T.payload.view});else throw T}const{data:A,params:V,currentPathName:W,user:$,cookies:J}=X,Y=A.reduce((T,C)=>{return{...T,...C}},{});if(H.searchParams.get("json")){const T=new Headers;return T.set("Content-Type","application/json"),J.forEach((C)=>T.append("Set-Cookie",C.toString())),new Response(JSON.stringify({data:{[H.pathname]:Y},is404:!W}),{headers:T})}const{styles:Z,manifest:K,serverManifest:z,bootstrapModules:j}=this.renderParams,G={};let O=null;const F=(T,C)=>`"${T}": () => import("${C}")`,U=[];for(let T of["404",...V2(this.componentTree)])if(!K){O=`${process.env.APP_DIR}`;const C=await import(`${O}/views/${T}.tsx`);G[T]=C.default,U.push(F(T,`${O}/views/${T}.tsx`))}else{const C=z[`app/views/${T}.tsx`],t=await import(`${process.env.DIST_DIR}/server/${C?.file}`);G[T]=t.default;const b=K[`app/views/${T}.tsx`];if(b)U.push(F(T,`/${b?.file}`))}const I=`{${U.join(",")}}`,L=new Headers;L.set("Content-Type","text/html"),L.set("Cache-Control",$?"private, no-cache, no-store, max-age=0, must-revalidate":"public, max-age=864000, must-revalidate"),L.set("ETag",this.appId),X.cookies.forEach((T)=>L.append("Set-Cookie",T.toString()));const x={kind:"view",data:{pageData:{[H.pathname]:Y},auth:{user:$},routeManifest:this.routeManifest,router:{pathname:W,params:V,currentPath:H.pathname,searchParams:H.search,is404:!W?!0:!1},componentTree:[["404",[]],...this.componentTree]},head:{}},P=await W6(j3($6,{children:[Z,j3(this.Root,{data:x.data,viewImportMap:G})]}),{bootstrapScriptContent:`window.__GEMI_DATA__ = ${JSON.stringify(x.data)}; window.loaders=${I}`,bootstrapModules:j});return new Response(P,{status:!W?404:200,headers:L})}async fetch(w){const H=new URL(w.url);return this.kernel.run.bind(this.kernel)(async()=>{if(H.pathname.startsWith("/api"))return await this.handleApiRequest(w);else return await this.handleViewRequest(w)})}handleWebSocketMessage=(w,H)=>{};handleWebSocketOpen=(w)=>{console.log("socket opened")};handleWebSocketClose=(w,H,X)=>{console.log("socket closed")};websocket={message:this.handleWebSocketMessage,open:this.handleWebSocketOpen,close:this.handleWebSocketClose}}var X6=_A(e5(),1);var QA=X6.Prisma.defineExtension({name:"Gemi Policies",query:{async $allOperations({args:w,operation:H,query:X,model:A}){const W=H6.getStore().policiesServiceProvider.policiesList[`${A}Policies`];if(!W)return await X(w);if(!await W.all.call(W,H,w))throw new w6;return await X(w)}}});export{QA as prismaExtension,B3 as App};
|
|
142
|
+
*/});var i5=l1((z3)=>{var __dirname="/Users/enes.tuefekci/personal/projects/gemi/node_modules/.prisma/client";Object.defineProperty(z3,"__esModule",{value:!0});var{PrismaClientKnownRequestError:eX,PrismaClientUnknownRequestError:wA,PrismaClientRustPanicError:HA,PrismaClientInitializationError:XA,PrismaClientValidationError:AA,NotFoundError:VA,getPrismaClient:WA,sqltag:$A,empty:JA,join:YA,raw:ZA,Decimal:KA,Debug:HW,objectEnumValues:o0,makeStrictEnum:zA,Extensions:o5,warnOnce:XW,defineDmmfProperty:jA,Public:GA,getRuntime:AW}=K3(),d={};z3.Prisma=d;z3.$Enums={};d.prismaVersion={client:"5.14.0",engine:"34ace0eb2704183d2c05b60b52fba5c43c13f303"};d.PrismaClientKnownRequestError=eX;d.PrismaClientUnknownRequestError=wA;d.PrismaClientRustPanicError=HA;d.PrismaClientInitializationError=XA;d.PrismaClientValidationError=AA;d.NotFoundError=VA;d.Decimal=KA;d.sql=$A;d.empty=JA;d.join=YA;d.raw=ZA;d.validator=GA.validator;d.getExtensionContext=o5.getExtensionContext;d.defineExtension=o5.defineExtension;d.DbNull=o0.instances.DbNull;d.JsonNull=o0.instances.JsonNull;d.AnyNull=o0.instances.AnyNull;d.NullTypes={DbNull:o0.classes.DbNull,JsonNull:o0.classes.JsonNull,AnyNull:o0.classes.AnyNull};var D0=import.meta.require("path");z3.Prisma.TransactionIsolationLevel=zA({Serializable:"Serializable"});z3.Prisma.UserScalarFieldEnum={id:"id",email:"email",name:"name"};z3.Prisma.PostScalarFieldEnum={id:"id",publicId:"publicId",title:"title",content:"content",published:"published",authorId:"authorId"};z3.Prisma.SortOrder={asc:"asc",desc:"desc"};z3.Prisma.NullsOrder={first:"first",last:"last"};z3.Prisma.ModelName={User:"User",Post:"Post"};var e={generator:{name:"client",provider:{fromEnvVar:null,value:"prisma-client-js"},output:{value:"/Users/enes.tuefekci/personal/projects/gemi/node_modules/@prisma/client",fromEnvVar:null},config:{engineType:"library"},binaryTargets:[{fromEnvVar:null,value:"darwin-arm64",native:!0}],previewFeatures:["driverAdapters"],sourceFilePath:"/Users/enes.tuefekci/personal/projects/gemi/templates/saas-starter/prisma/schema.prisma"},relativeEnvPaths:{rootEnvPath:null,schemaEnvPath:"../../../templates/saas-starter/.env"},relativePath:"../../../templates/saas-starter/prisma",clientVersion:"5.14.0",engineVersion:"34ace0eb2704183d2c05b60b52fba5c43c13f303",datasourceNames:["db"],activeProvider:"sqlite",postinstall:!1,inlineDatasources:{db:{url:{fromEnvVar:"DATABASE_URL",value:null}}},inlineSchema:"// This is your Prisma schema file,\n// learn more about it in the docs: https://pris.ly/d/prisma-schema\n\ngenerator client {\n provider = \"prisma-client-js\"\n previewFeatures = [\"driverAdapters\"]\n}\n\ndatasource db {\n provider = \"sqlite\"\n url = env(\"DATABASE_URL\")\n}\n\nmodel User {\n id Int @id @default(autoincrement())\n email String @unique\n name String?\n posts Post[]\n}\n\nmodel Post {\n id Int @id @default(autoincrement())\n publicId String @unique @default(cuid())\n title String\n content String?\n published Boolean @default(false)\n author User? @relation(fields: [authorId], references: [id])\n authorId Int?\n}\n",inlineSchemaHash:"0fdc645180adab0c748b9fa16f9aca5de0687497c0b03b12504201d9f6937ff9",copyEngine:!0},a5=import.meta.require("fs");e.dirname=__dirname;if(!a5.existsSync(D0.join(__dirname,"schema.prisma"))){const w=["../../node_modules/.prisma/client","../node_modules/.prisma/client"],H=w.find((X)=>{return a5.existsSync(D0.join(process.cwd(),X,"schema.prisma"))})??w[0];e.dirname=D0.join(process.cwd(),H),e.isBundled=!0}e.runtimeDataModel=JSON.parse("{\"models\":{\"User\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"posts\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Post\",\"relationName\":\"PostToUser\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Post\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"publicId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"content\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"published\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"author\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"User\",\"relationName\":\"PostToUser\",\"relationFromFields\":[\"authorId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"authorId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false}},\"enums\":{},\"types\":{}}");jA(z3.Prisma,e.runtimeDataModel);e.engineWasm=void 0;var{warnEnvConflicts:BA}=K3();BA({rootEnvPath:e.relativeEnvPaths.rootEnvPath&&D0.resolve(e.dirname,e.relativeEnvPaths.rootEnvPath),schemaEnvPath:e.relativeEnvPaths.schemaEnvPath&&D0.resolve(e.dirname,e.relativeEnvPaths.schemaEnvPath)});var FA=WA(e);z3.PrismaClient=FA;Object.assign(z3,d);D0.join(__dirname,"libquery_engine-darwin-arm64.dylib.node");D0.join(process.cwd(),"../../node_modules/.prisma/client/libquery_engine-darwin-arm64.dylib.node");D0.join(__dirname,"schema.prisma");D0.join(process.cwd(),"../../node_modules/.prisma/client/schema.prisma")});var r5=l1((WW,n5)=>{n5.exports={...i5()}});var e5=l1(($W,t5)=>{t5.exports={...r5()}});function V2(w){let H=[];for(let[X,A]of w)H.push(X,...V2(A).flat());return Array.from(new Set(H))}function Q1(w){const H=[];for(let[X,A]of Object.entries(w))if("prepare"in A){const{viewPath:V,children:W}=A.prepare();if(Object.entries(W).length>0){const $=Q1(W);H.push([V,$])}else H.push([V,[]])}else{const V=new A,W=Q1(V.routes);H.push(...W)}return H}function U1(w){const H={};for(let[X,A]of Object.entries(w))if("prepare"in A){const V=A.prepare();if(Object.entries(V.children).length>0){const W=U1(V.children);if(V.kind==="view")H[X]={exec:[V.exec],middleware:V.middlewares};for(let[$,{exec:J,middleware:Y}]of Object.entries(W)){const Z=X==="/"?$:`${X}${$}`,K=$==="/"&&X!=="/"?X:Z;H[K]={exec:[V.exec,...J],middleware:[...V.middlewares,...Y]}}}else H[X]={exec:[V.exec],middleware:V.middlewares}}else{const V=new A,W=U1(V.routes);for(let[$,{exec:J,middleware:Y}]of Object.entries(W)){const Z=X==="/"?$:`${X}${$}`,K=$==="/"&&X!=="/"?X:Z;H[K]={exec:J,middleware:[...V.middlewares,...Y]}}}return H}function x1(w){const H={};for(let[X,A]of Object.entries(w))if("prepare"in A){const{viewPath:V,children:W,kind:$}=A.prepare();if($==="view")H[X]=[V];if(Object.entries(W).length>0){const J=x1(W);for(let[Y,Z]of Object.entries(J)){const K=X==="/"?Y:`${X}${Y}`,z=Y==="/"&&X!=="/"?X:K;H[z]=[V,...Z]}}else H[X]=[V]}else{const V=new A,W=x1(V.routes);for(let[$,J]of Object.entries(W)){const Y=X==="/"?$:`${X}${$}`,Z=$==="/"&&X!=="/"?X:Y;H[Z]=J}}return H}var V6=function(w){return D1(w)};function W2(w){const H={};for(let[X,A]of Object.entries(w))if("run"in A){const V=A;if(!H[X])H[X]={};const{method:W,middlewares:$}=V,J=V.run.bind(V);H[X][W]={exec:J,middleware:[...$]}}else if(V6(A)){const V=new A,W=W2(V.routes);for(let[$,J]of Object.entries(W)){const Y=$==="/"?"":$,Z=X==="/"?"":X,K=`${Z}${Y}`===""?"/":`${Z}${Y}`;if(!H[K])H[K]={};for(let[z,j]of Object.entries(J))H[K][z]={exec:j.exec,middleware:[V.middleware,...V.middlewares,...j.middleware]}}}else for(let V of Object.values(A)){if(!H[X])H[X]={};const{method:W,middlewares:$}=V,J=V.run.bind(V);H[X][W]={exec:J,middleware:$}}return H}import{renderToReadableStream as W6} from"react-dom/server.browser";import{createElement as j3,Fragment as $6} from"react";class B3{renderParams={styles:[],manifest:{},serverManifest:{},bootstrapModules:[]};flatViewRoutes={};flatApiRoutes={};routeManifest={};name="APP";appId;componentTree;middlewareAliases={};devVersion=0;params;apiRouter;viewRouter;Root;kernel;constructor(w){this.params=w,this.apiRouter=w.apiRouter,this.viewRouter=w.viewRouter,this.Root=w.root,this.kernel=new w.kernel,this.prepare(),this.appId=G3(Date.now())}prepare(){const w=this.params;this.middlewareAliases=w.middlewareAliases??{};const H=this.kernel.getServices.call(this.kernel),X=H.authenticationServiceProvider.basePath;let A={"/":this.viewRouter,[X]:H.authenticationServiceProvider.routers.view},V={"/":this.apiRouter,[X]:H.authenticationServiceProvider.routers.api};for(let W of w.plugins??[]){const $=new W;if($.viewRouter)A={...A,[$.viewRoutesBasePath]:$.viewRouter};if($.apiRouter)V={...V,[$.apiRoutesBasePath]:$.apiRouter}}this.flatViewRoutes=U1(A),this.componentTree=Q1(A),this.routeManifest=x1(A),this.flatApiRoutes=W2(V)}getComponentTree(){return this.componentTree}setRenderParams(w){this.renderParams=w}runMiddleware(w){return w.map((H)=>{if(typeof H==="string"){const X=H,V=this.kernel.getServices.call(this.kernel).middlewareServiceProvider.aliases[X];if(V)return new V().run}else{if(D1(H))return new H().run;return H}}).filter(Boolean).reduce((H,X)=>{return async(A,V)=>{return{...await H(A,V),...await X(A,V)}}},(H)=>Promise.resolve({}))}async handleApiRequest(w){const X=new URL(w.url).pathname.replace("/api","");for(let[A,V]of Object.entries(this.flatApiRoutes)){const W=new J2({pathname:A});if(W.test({pathname:X})){const $=W.exec({pathname:X})?.pathname.groups;if(!V[w.method])return new Response(JSON.stringify({error:{message:"Not found"}}));const J=V[w.method].exec,Y=V[w.method].middleware,Z=this.runMiddleware(Y);return await i0.run(async()=>{const K=new $2(w,$),z=i0.getStore();z.setRequest(K);let j=J?()=>J(K,$):()=>Promise.resolve({});try{await Z(K)}catch(F){if(F.kind===I1){const{status:U=400,data:I,headers:L}=F.payload.api;return new Response(JSON.stringify(I),{status:U,headers:{"Content-Type":"application/json",...L}})}else throw console.error(F),F}let G={};try{G=await j()}catch(F){if(F.kind===I1){const{status:U=400,data:I,headers:L}=F.payload.api;return new Response(JSON.stringify(I),{status:U,headers:{"Content-Type":"application/json",...L}})}else throw console.error(F),F}const O=new Headers;return O.append("Content-Type","application/json"),z.cookies.forEach((F)=>O.append("Set-Cookie",F.toString())),new Response(JSON.stringify(G),{headers:O})})}}return new Response(JSON.stringify({error:{message:"Not found"}}),{status:404})}async handleViewRequest(w){const H=new URL(w.url);let X=null;try{let T=[],C=[],t=null,b={};const u=Object.entries(this.flatViewRoutes).sort(([w0],[y])=>y.length-w0.length);for(let[w0,y]of u){const M=new J2({pathname:w0});if(M.test({pathname:H.pathname}))t=w0,b=M.exec({pathname:H.pathname})?.pathname.groups,T=y.exec,C=y.middleware}const W0=this.runMiddleware(C),{data:c,cookies:I0,user:m0}=await i0.run(async()=>{const w0=new $2(w,b),y=i0.getStore();return y.setRequest(w0),await W0(w0),{data:await Promise.all(T.map((A6)=>A6(w0))),cookies:y.cookies,user:y.user}});X={data:c,currentPathName:t,user:m0,params:b,cookies:I0}}catch(T){if(T.kind===I1)return new Response(null,{...T.payload.view});else throw T}const{data:A,params:V,currentPathName:W,user:$,cookies:J}=X,Y=A.reduce((T,C)=>{return{...T,...C}},{});if(H.searchParams.get("json")){const T=new Headers;return T.set("Content-Type","application/json"),J.forEach((C)=>T.append("Set-Cookie",C.toString())),new Response(JSON.stringify({data:{[H.pathname]:Y},is404:!W}),{headers:T})}const{styles:Z,manifest:K,serverManifest:z,bootstrapModules:j}=this.renderParams,G={};let O=null;const F=(T,C)=>`"${T}": () => import("${C}")`,U=[];for(let T of["404",...V2(this.componentTree)])if(!K){O=`${process.env.APP_DIR}`;const C=await import(`${O}/views/${T}.tsx`);G[T]=C.default,U.push(F(T,`${O}/views/${T}.tsx`))}else{const C=z[`app/views/${T}.tsx`],t=await import(`${process.env.DIST_DIR}/server/${C?.file}`);G[T]=t.default;const b=K[`app/views/${T}.tsx`];if(b)U.push(F(T,`/${b?.file}`))}const I=`{${U.join(",")}}`,L=new Headers;L.set("Content-Type","text/html"),L.set("Cache-Control",$?"private, no-cache, no-store, max-age=0, must-revalidate":"public, max-age=864000, must-revalidate"),L.set("ETag",this.appId),X.cookies.forEach((T)=>L.append("Set-Cookie",T.toString()));const x={kind:"view",data:{pageData:{[H.pathname]:Y},auth:{user:$},routeManifest:this.routeManifest,router:{pathname:W,params:V,currentPath:H.pathname,searchParams:H.search,is404:!W?!0:!1},componentTree:[["404",[]],...this.componentTree]},head:{}},P=await W6(j3($6,{children:[Z,j3(this.Root,{data:x.data,viewImportMap:G})]}),{bootstrapScriptContent:`window.__GEMI_DATA__ = ${JSON.stringify(x.data)}; window.loaders=${I}`,bootstrapModules:j});return new Response(P,{status:!W?404:200,headers:L})}async fetch(w){const H=new URL(w.url);return this.kernel.run.bind(this.kernel)(async()=>{if(H.pathname.startsWith("/api"))return await this.handleApiRequest(w);else return await this.handleViewRequest(w)})}handleWebSocketMessage=(w,H)=>{};handleWebSocketOpen=(w)=>{console.log("socket opened")};handleWebSocketClose=(w,H,X)=>{console.log("socket closed")};websocket={message:this.handleWebSocketMessage,open:this.handleWebSocketOpen,close:this.handleWebSocketClose}}var X6=_A(e5(),1);var QA=X6.Prisma.defineExtension({name:"Gemi Policies",query:{async $allOperations({args:w,operation:H,query:X,model:A}){const W=H6.getStore().policiesServiceProvider.policiesList[`${A}Policies`];if(!W)return await X(w);if(!await W.all.call(W,H,w))throw new w6;return await X(w)}}});export{QA as prismaExtension,B3 as App};
|
|
@@ -26,8 +26,8 @@ export declare class ViewRouter {
|
|
|
26
26
|
protected layout<T extends new () => Controller>(viewPath: string, children: ViewChildren): ViewConfig;
|
|
27
27
|
protected layout<T extends new () => Controller>(viewPath: string, handler: ViewHandler<T>): ViewConfig;
|
|
28
28
|
protected view<T extends new () => Controller>(viewPath: string): ViewConfig;
|
|
29
|
-
protected view<T extends new () => Controller>(viewPath: string, children: ViewChildren): ViewConfig;
|
|
30
|
-
protected view<T extends new () => Controller>(viewPath: string, handler: ViewHandler<T
|
|
29
|
+
protected view<T extends new () => Controller>(viewPath: string, children: ViewChildren, _children: never): ViewConfig;
|
|
30
|
+
protected view<T extends new () => Controller>(viewPath: string, handler: ViewHandler<T>, children?: ViewChildren): ViewConfig;
|
|
31
31
|
}
|
|
32
32
|
export {};
|
|
33
33
|
//# sourceMappingURL=ViewRouter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewRouter.d.ts","sourceRoot":"","sources":["../../http/ViewRouter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,KAAK,iBAAiB,CAAC,CAAC,SAAS,UAAU,UAAU,IAAI;KACtD,CAAC,IAAI,MAAM,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,GAAG,CAAC,GAAG,KAAK;CAC9E,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzB,KAAK,WAAW,CAAC,CAAC,SAAS,UAAU,UAAU,IAC3C,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAC7C,CAAC,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAE/C,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,GAAG,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;IACvB,WAAW,EAAE,GAAG,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,KAAK,WAAW,CAAC;IAC/C,UAAU,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,KAAK,UAAU,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,CAAC,UAAU,UAAU,CAAC,CAAC,CAAC;AAE/E,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,WAAW,KAAK,GAAG,CAAC;AAEtD,qBAAa,UAAU;IACd,MAAM,EAAE,YAAY,CAAM;IAC1B,WAAW,EAAE,MAAM,EAAE,CAAM;IAE3B,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,oBAAoB;IAErD,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,UAAU,UAAU,EAC7C,QAAQ,EAAE,MAAM,GACf,UAAU;IACb,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,UAAU,UAAU,EAC7C,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,YAAY,GACrB,UAAU;IACb,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,UAAU,UAAU,EAC7C,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,GACtB,UAAU;IA+Cb,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,UAAU,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU;IAC5E,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,UAAU,UAAU,EAC3C,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"ViewRouter.d.ts","sourceRoot":"","sources":["../../http/ViewRouter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,KAAK,iBAAiB,CAAC,CAAC,SAAS,UAAU,UAAU,IAAI;KACtD,CAAC,IAAI,MAAM,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,GAAG,CAAC,GAAG,KAAK;CAC9E,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzB,KAAK,WAAW,CAAC,CAAC,SAAS,UAAU,UAAU,IAC3C,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAC7C,CAAC,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAE/C,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,GAAG,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;IACvB,WAAW,EAAE,GAAG,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,KAAK,WAAW,CAAC;IAC/C,UAAU,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,KAAK,UAAU,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,CAAC,UAAU,UAAU,CAAC,CAAC,CAAC;AAE/E,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,WAAW,KAAK,GAAG,CAAC;AAEtD,qBAAa,UAAU;IACd,MAAM,EAAE,YAAY,CAAM;IAC1B,WAAW,EAAE,MAAM,EAAE,CAAM;IAE3B,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,oBAAoB;IAErD,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,UAAU,UAAU,EAC7C,QAAQ,EAAE,MAAM,GACf,UAAU;IACb,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,UAAU,UAAU,EAC7C,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,YAAY,GACrB,UAAU;IACb,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,UAAU,UAAU,EAC7C,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,GACtB,UAAU;IA+Cb,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,UAAU,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU;IAC5E,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,UAAU,UAAU,EAC3C,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,KAAK,GACf,UAAU;IACb,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,UAAU,UAAU,EAC3C,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EACvB,QAAQ,CAAC,EAAE,YAAY,GACtB,UAAU;CA8Cd"}
|