@prisma/extension-optimize 0.0.0-dev.202411222327 → 0.0.0-dev.202411230101
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/index.js +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var te=Object.create;var S=Object.defineProperty;var ne=Object.getOwnPropertyDescriptor;var re=Object.getOwnPropertyNames;var se=Object.getPrototypeOf,ie=Object.prototype.hasOwnProperty;var oe=(t,e)=>{for(var n in e)S(t,n,{get:e[n],enumerable:!0})},v=(t,e,n,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of re(e))!ie.call(t,r)&&r!==n&&S(t,r,{get:()=>e[r],enumerable:!(s=ne(e,r))||s.enumerable});return t};var ae=(t,e,n)=>(n=t!=null?te(se(t)):{},v(e||!t||!t.__esModule?S(n,"default",{value:t,enumerable:!0}):n,t)),pe=t=>v(S({},"__esModule",{value:!0}),t);var be={};oe(be,{PROD_DASHBOARD_URL:()=>B,PROD_INGESTION_URL:()=>V,withOptimize:()=>ge});module.exports=pe(be);var J=require("@opentelemetry/api"),Q=require("@prisma/client/extension");function ce(t,e){let n;return async function(s,r,o){let a=new URL(s,t),p=new Headers({"Content-Type":"application/json",Authorization:`Bearer ${e}`});n&&p.set("prisma-optimize-jwt",n);let c=await fetch(a,{method:r,headers:p,body:JSON.stringify(o)});if(!c.ok){let f=await c.text().catch(()=>"<unreadable>");console.error(`[optimize] HTTP ${c.status} ${c.statusText}: ${f}`)}let h=c.headers.get("prisma-optimize-jwt");return h&&(n=h),c}}function w(t,e){let n=ce(t,e);return{request:n,post:(s,r)=>n(s,"POST",r)}}var q=ae(require("kleur"));var{bold:le,underline:me}=q.default;function P(t){let e="See your Optimize dashboard at:",n=e.length,s=`${me(le(t))}`,r=t.length,o=Math.max(n,r)+2;console.log("\u250C"+"\u2500".repeat(o)+"\u2510"),console.log("\u2502 "+e+" ".repeat(o-n-2)+" \u2502"),console.log("\u2502 "+s+" ".repeat(o-r-2)+" \u2502"),console.log("\u2514"+"\u2500".repeat(o)+"\u2518")}var j=require("@opentelemetry/api"),_=require("@opentelemetry/context-async-hooks"),z=require("@opentelemetry/instrumentation"),k=require("@opentelemetry/resources"),F=require("@opentelemetry/sdk-trace-base"),T=require("@opentelemetry/semantic-conventions"),M=require("@prisma/instrumentation");var i=require("zod");async function A(t,e){e.length>0&&await t.post("/ingest",e)}async function E(t,e){return await(await t.post("/schema",e)).text()}function l(t){return t[0]*1e3+t[1]/1e6}var m=require("zod"),g=class{spans={};rootSpans={};waitSpans={};treeShape;collectedSpans;collectedRootSpans;sendTimeout;sendInterval;pendingSend;constructor(e){this.treeShape=e.treeShape,this.sendTimeout=e.sendTimeout,this.sendInterval=e.sendInterval,this.collectedSpans=e.collectedSpans,this.collectedRootSpans=e.collectedRootSpans,this.onEnd=ue(()=>void this.forceFlush(),this.sendInterval)}onStart(e){let{parentSpanId:n,name:s}=e,{spanId:r}=e.spanContext();if(!this.collectedSpans.includes(s))return this.cleanSpan(this.spans[r]);this.spans[r]&&this.spans[r].kind==="future"?Object.assign(this.spans[r],{kind:"present",value:e}):this.spans[r]={spanId:r,kind:"present",children:[],value:e,retries:0},this.collectedRootSpans.includes(s)&&(this.rootSpans[r]={...this.spans[r],done:!1},this.waitSpans[r]=this.spans[r]),n!==void 0&&(this.spans[n]?this.spans[n].children.push(this.spans[r]):(this.spans[n]={spanId:n,kind:"future",children:[this.spans[r]],retries:0},this.waitSpans[n]=this.spans[n]))}cleanSpan(e){if(e===void 0)return;let n=e.spanId;for(let s of e.children)this.cleanSpan(s);delete this.spans[n],delete this.rootSpans[n],delete this.waitSpans[n],this.onClean(e)}async forceFlush(){await this.pendingSend;let e=Object.values(this.rootSpans).flatMap(n=>{if(n.done)return[];let{data:s}=this.treeShape.safeParse(n);return s?(n.done=!0,[{original:n,pruned:s}]):[]});e.length>0&&(this.pendingSend=this.onFlush(e).finally(()=>{e.forEach(({original:n})=>this.cleanSpan(n))}));for(let n of Object.values(this.waitSpans))++n.retries*this.sendInterval>this.sendTimeout&&this.cleanSpan(n)}async shutdown(){await this.forceFlush(),this.spans={},this.rootSpans={},this.waitSpans={}}onEnd(){}};function ue(t,e){let n=!1;return()=>{n===!1&&(n=!0,setTimeout(()=>(n=!1)||t(),e))}}var u={ended:m.z.literal(!0),_spanContext:m.z.custom(),spanContext:m.z.custom(),startTime:m.z.custom(),endTime:m.z.custom(),attributes:m.z.custom()};var de=i.z.object({value:i.z.object({name:i.z.literal("prisma:engine:db_query"),...u})}),C=i.z.object({value:i.z.object({name:i.z.literal("prisma:engine"),...u}),children:i.z.array(de).nonempty()}),O=i.z.object({value:i.z.object({name:i.z.literal("prisma:client:connect"),...u})}),he=i.z.object({value:i.z.object({name:i.z.literal("prisma:client:operation"),...u}),children:i.z.union([i.z.tuple([C]),i.z.tuple([O,C]),i.z.tuple([C,O])])}),b=class extends g{requests={};errors={};schemaHash;apiClient;constructor(e){super({treeShape:he,sendTimeout:e.sendTimeout,sendInterval:e.sendInterval,collectedSpans:["prisma:client:operation","prisma:client:connect","prisma:engine","prisma:engine:db_query"],collectedRootSpans:["prisma:client:operation"]}),this.apiClient=e.apiClient,this.schemaHash=E(this.apiClient,e.schemaRequest)}setRequest(e){this.requests[e.spanId]=e}setError(e){this.errors[e.spanId]=e}onClean({spanId:e}){delete this.requests[e],delete this.errors[e]}async onFlush(e){let n=await this.schemaHash,s=[];for(let{pruned:r}of e){let{value:o}=r,a=o.spanContext().spanId;this.requests[a]&&s.push({hash:n,sql:fe(r),ts:l(o.startTime),connect:Se(r),error:this.errors[a]?.error??null,model:this.requests[a].model??null,operation:this.requests[a].operation,args:this.requests[a].args??{},latency:l(o.endTime)-l(o.startTime)})}await A(this.apiClient,s)}};function fe(t){return t.children.find(({value:r})=>r.name==="prisma:engine").children.filter(({value:r})=>r.name==="prisma:engine:db_query").sort((r,o)=>l(r.value.startTime)-l(o.value.startTime)).reduce((r,o)=>{let a=o.value.attributes["db.statement"];return typeof a=="string"?`${r}${a}
|
|
1
|
+
"use strict";var te=Object.create;var S=Object.defineProperty;var ne=Object.getOwnPropertyDescriptor;var re=Object.getOwnPropertyNames;var se=Object.getPrototypeOf,ie=Object.prototype.hasOwnProperty;var oe=(t,e)=>{for(var n in e)S(t,n,{get:e[n],enumerable:!0})},v=(t,e,n,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of re(e))!ie.call(t,r)&&r!==n&&S(t,r,{get:()=>e[r],enumerable:!(s=ne(e,r))||s.enumerable});return t};var ae=(t,e,n)=>(n=t!=null?te(se(t)):{},v(e||!t||!t.__esModule?S(n,"default",{value:t,enumerable:!0}):n,t)),pe=t=>v(S({},"__esModule",{value:!0}),t);var be={};oe(be,{PROD_DASHBOARD_URL:()=>B,PROD_INGESTION_URL:()=>V,withOptimize:()=>ge});module.exports=pe(be);var J=require("@opentelemetry/api"),Q=require("@prisma/client/extension");function ce(t,e){let n;return async function(s,r,o){let a=new URL(s,t),p=new Headers({"Content-Type":"application/json",Authorization:`Bearer ${e}`});n&&p.set("prisma-optimize-jwt",n);let c=await fetch(a,{method:r,headers:p,body:JSON.stringify(o)});if(!c.ok){let f=await c.clone().text().catch(()=>"<unreadable>");console.error(`[optimize] HTTP ${c.status} ${c.statusText}: ${f}`)}let h=c.headers.get("prisma-optimize-jwt");return h&&(n=h),c}}function w(t,e){let n=ce(t,e);return{request:n,post:(s,r)=>n(s,"POST",r)}}var q=ae(require("kleur"));var{bold:le,underline:me}=q.default;function P(t){let e="See your Optimize dashboard at:",n=e.length,s=`${me(le(t))}`,r=t.length,o=Math.max(n,r)+2;console.log("\u250C"+"\u2500".repeat(o)+"\u2510"),console.log("\u2502 "+e+" ".repeat(o-n-2)+" \u2502"),console.log("\u2502 "+s+" ".repeat(o-r-2)+" \u2502"),console.log("\u2514"+"\u2500".repeat(o)+"\u2518")}var j=require("@opentelemetry/api"),_=require("@opentelemetry/context-async-hooks"),z=require("@opentelemetry/instrumentation"),k=require("@opentelemetry/resources"),F=require("@opentelemetry/sdk-trace-base"),T=require("@opentelemetry/semantic-conventions"),M=require("@prisma/instrumentation");var i=require("zod");async function A(t,e){e.length>0&&await t.post("/ingest",e)}async function E(t,e){return await(await t.post("/schema",e)).text()}function l(t){return t[0]*1e3+t[1]/1e6}var m=require("zod"),g=class{spans={};rootSpans={};waitSpans={};treeShape;collectedSpans;collectedRootSpans;sendTimeout;sendInterval;pendingSend;constructor(e){this.treeShape=e.treeShape,this.sendTimeout=e.sendTimeout,this.sendInterval=e.sendInterval,this.collectedSpans=e.collectedSpans,this.collectedRootSpans=e.collectedRootSpans,this.onEnd=ue(()=>void this.forceFlush(),this.sendInterval)}onStart(e){let{parentSpanId:n,name:s}=e,{spanId:r}=e.spanContext();if(!this.collectedSpans.includes(s))return this.cleanSpan(this.spans[r]);this.spans[r]&&this.spans[r].kind==="future"?Object.assign(this.spans[r],{kind:"present",value:e}):this.spans[r]={spanId:r,kind:"present",children:[],value:e,retries:0},this.collectedRootSpans.includes(s)&&(this.rootSpans[r]={...this.spans[r],done:!1},this.waitSpans[r]=this.spans[r]),n!==void 0&&(this.spans[n]?this.spans[n].children.push(this.spans[r]):(this.spans[n]={spanId:n,kind:"future",children:[this.spans[r]],retries:0},this.waitSpans[n]=this.spans[n]))}cleanSpan(e){if(e===void 0)return;let n=e.spanId;for(let s of e.children)this.cleanSpan(s);delete this.spans[n],delete this.rootSpans[n],delete this.waitSpans[n],this.onClean(e)}async forceFlush(){await this.pendingSend;let e=Object.values(this.rootSpans).flatMap(n=>{if(n.done)return[];let{data:s}=this.treeShape.safeParse(n);return s?(n.done=!0,[{original:n,pruned:s}]):[]});e.length>0&&(this.pendingSend=this.onFlush(e).finally(()=>{e.forEach(({original:n})=>this.cleanSpan(n))}));for(let n of Object.values(this.waitSpans))++n.retries*this.sendInterval>this.sendTimeout&&this.cleanSpan(n)}async shutdown(){await this.forceFlush(),this.spans={},this.rootSpans={},this.waitSpans={}}onEnd(){}};function ue(t,e){let n=!1;return()=>{n===!1&&(n=!0,setTimeout(()=>(n=!1)||t(),e))}}var u={ended:m.z.literal(!0),_spanContext:m.z.custom(),spanContext:m.z.custom(),startTime:m.z.custom(),endTime:m.z.custom(),attributes:m.z.custom()};var de=i.z.object({value:i.z.object({name:i.z.literal("prisma:engine:db_query"),...u})}),C=i.z.object({value:i.z.object({name:i.z.literal("prisma:engine"),...u}),children:i.z.array(de).nonempty()}),O=i.z.object({value:i.z.object({name:i.z.literal("prisma:client:connect"),...u})}),he=i.z.object({value:i.z.object({name:i.z.literal("prisma:client:operation"),...u}),children:i.z.union([i.z.tuple([C]),i.z.tuple([O,C]),i.z.tuple([C,O])])}),b=class extends g{requests={};errors={};schemaHash;apiClient;constructor(e){super({treeShape:he,sendTimeout:e.sendTimeout,sendInterval:e.sendInterval,collectedSpans:["prisma:client:operation","prisma:client:connect","prisma:engine","prisma:engine:db_query"],collectedRootSpans:["prisma:client:operation"]}),this.apiClient=e.apiClient,this.schemaHash=E(this.apiClient,e.schemaRequest)}setRequest(e){this.requests[e.spanId]=e}setError(e){this.errors[e.spanId]=e}onClean({spanId:e}){delete this.requests[e],delete this.errors[e]}async onFlush(e){let n=await this.schemaHash,s=[];for(let{pruned:r}of e){let{value:o}=r,a=o.spanContext().spanId;this.requests[a]&&s.push({hash:n,sql:fe(r),ts:l(o.startTime),connect:Se(r),error:this.errors[a]?.error??null,model:this.requests[a].model??null,operation:this.requests[a].operation,args:this.requests[a].args??{},latency:l(o.endTime)-l(o.startTime)})}await A(this.apiClient,s)}};function fe(t){return t.children.find(({value:r})=>r.name==="prisma:engine").children.filter(({value:r})=>r.name==="prisma:engine:db_query").sort((r,o)=>l(r.value.startTime)-l(o.value.startTime)).reduce((r,o)=>{let a=o.value.attributes["db.statement"];return typeof a=="string"?`${r}${a}
|
|
2
2
|
`:r},"")}function Se(t){let{value:e}=t.children.find(({value:n})=>n.name==="prisma:client:connect")??{};return e?l(e.endTime)-l(e.startTime):!1}var d;function H(t){if(d)return d;let e=new _.AsyncHooksContextManager().enable();j.context.setGlobalContextManager(e);let n=new F.BasicTracerProvider({resource:new k.Resource({[T.SEMRESATTRS_SERVICE_NAME]:"extension-optimize",[T.SEMRESATTRS_SERVICE_VERSION]:"0.0.0"})});return d=new b(t),n.addSpanProcessor(d),(0,z.registerInstrumentations)({tracerProvider:n,instrumentations:[new M.PrismaInstrumentation]}),n.register(),d}function L(t){return t._previewFeatures?.includes("tracing")}function U(t){return t._engineConfig.inlineSchema}function $(t){if(t instanceof Error)return t.stack??t.message;switch(typeof t){case"undefined":return"undefined";case"object":{let e;return t!==null&&typeof t.toString=="function"&&(e=t.toString()),typeof e=="string"&&e!=="[object Object]"?e:JSON.stringify(t)}default:return String(t)}}var D=require("@prisma/client/extension"),N=D.Prisma.defineExtension(t=>t.$extends({}));var V="https://optimize-ingestion.datacdn.workers.dev/",B="https://optimize.prisma.io";function ge({enable:t=!0,ingestionUrl:e=V,dashboardUrl:n=B,sendInterval:s=500,sendTimeout:r=1e4,showNotification:o=!0,apiKey:a}){return t?(o&&P(n),Q.Prisma.defineExtension(p=>{let c=U(p),h=Reflect.get(p,"_activeProvider"),f=Reflect.get(p,"_accelerateEngineConfig"),{protocol:G}=new URL(f.accelerateUtils.resolveDatasourceUrl(f)),K={schema:c,provider:h,protocol:G},Z=w(e,a),I=H({schemaRequest:K,apiClient:Z,sendInterval:s,sendTimeout:r});if(!L(p))throw new Error('Please enable the "tracing" preview feature and regenerate the client.');return p.$extends({query:{async $allOperations({query:W,model:X,operation:Y,args:R}){let y=J.trace.getActiveSpan()?.spanContext().spanId;if(!y)throw new Error("prisma:client:operation span is expected to be entered in the client extension when tracing is enabled");I.setRequest({spanId:y,model:X,operation:Y,args:R});try{return await W(R)}catch(x){let ee=$(x);throw I.setError({spanId:y,error:ee}),x}}}})})):N}0&&(module.exports={PROD_DASHBOARD_URL,PROD_INGESTION_URL,withOptimize});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prisma/extension-optimize",
|
|
3
|
-
"version": "0.0.0-dev.
|
|
3
|
+
"version": "0.0.0-dev.202411230101",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"description": "",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"hono": "4.4.6",
|
|
26
26
|
"tsup": "8.0.2",
|
|
27
27
|
"vitest": "1.4.0",
|
|
28
|
-
"common": "0.0.0-dev.
|
|
28
|
+
"common": "0.0.0-dev.202411230101"
|
|
29
29
|
},
|
|
30
30
|
"peerDependencies": {
|
|
31
31
|
"@prisma/client": "5.x"
|