prisma 7.3.0-integration-prisma6-fix-cloudflare-engine.2 → 7.3.0-integration-prisma6-fix-cloudflare-engine.3

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,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../helpers/compile/plugins/fill-plugin/fillers/process.ts", "../../../helpers/compile/plugins/fill-plugin/fillers/perf_hooks.ts", "../../../helpers/compile/plugins/fill-plugin/fillers/function.ts", "../../../helpers/compile/plugins/fill-plugin/fillers/weakref.ts", "../../../../../../../../tmp/esbuild/buffer6f96acfa.js", "../../../helpers/compile/plugins/fill-plugin/fillers/buffer.ts", "../../../helpers/compile/plugins/fill-plugin/fillers/fs.ts", "../../internals/package.json", "../../../helpers/compile/plugins/fill-plugin/fillers/path.ts", "../../../node_modules/.pnpm/min-indent@1.0.1/node_modules/min-indent/index.js", "../../../node_modules/.pnpm/indent-string@4.0.0/node_modules/indent-string/index.js", "../../../node_modules/.pnpm/new-github-issue-url@0.2.1/node_modules/new-github-issue-url/index.js", "../../../node_modules/.pnpm/js-levenshtein@1.1.6/node_modules/js-levenshtein/index.js", "../../ts-builders/src/TypeBuilder.ts", "../../ts-builders/src/KeyType.ts", "../../../node_modules/.pnpm/@prisma+engines-version@7.1.1-3.c2990dca591cba766e3b7ef5d9e8a84796e47ab7/node_modules/@prisma/engines-version/package.json", "../../../helpers/compile/plugins/fill-plugin/fillers/events.ts", "../src/runtime/index.ts", "../src/runtime/core/extensions/index.ts", "../src/runtime/core/extensions/defineExtension.ts", "../src/runtime/core/extensions/getExtensionContext.ts", "../src/runtime/core/public/index.ts", "../src/runtime/core/public/validator.ts", "../src/runtime/core/errors/PrismaClientInitializationError.ts", "../../internals/src/index.ts", "../../../node_modules/.pnpm/kleur@4.1.5/node_modules/kleur/colors.mjs", "../../debug/src/index.ts", "../../get-platform/src/index.ts", "../../get-platform/src/binaryTargets.ts", "../../internals/src/utils/getVersionFromPackageJson.ts", "../../internals/src/client/getClientEngineType.ts", "../../driver-adapter-utils/src/index.ts", "../../driver-adapter-utils/src/binder.ts", "../../driver-adapter-utils/src/debug.ts", "../../driver-adapter-utils/src/error.ts", "../../driver-adapter-utils/src/result.ts", "../../../node_modules/.pnpm/strip-indent@4.0.0/node_modules/strip-indent/index.js", "../../internals/src/utils/prismaPostgres.ts", "../../internals/src/logger.ts", "../../internals/src/utils/assertAlways.ts", "../../internals/src/utils/assertNever.ts", "../../../node_modules/.pnpm/strip-ansi@7.1.0/node_modules/strip-ansi/index.js", "../../../node_modules/.pnpm/ansi-regex@6.1.0/node_modules/ansi-regex/index.js", "../../internals/src/utils/path.ts", "../../internals/src/utils/hasOwnProperty.ts", "../../internals/src/utils/mapObjectValues.ts", "../../internals/src/utils/max.ts", "../../internals/src/utils/setClassName.ts", "../../internals/src/warnOnce.ts", "../src/runtime/core/errors/PrismaClientKnownRequestError.ts", "../src/runtime/core/errors/PrismaClientRustPanicError.ts", "../src/runtime/core/errors/PrismaClientUnknownRequestError.ts", "../src/runtime/core/errors/PrismaClientValidationError.ts", "../src/runtime/core/jsonProtocol/serializeJsonQuery.ts", "../../client-common/src/index.ts", "../../client-common/src/Cache.ts", "../../client-common/src/casing.ts", "../../client-common/src/Dictionary.ts", "../../client-common/src/lazyProperty.ts", "../../client-common/src/runtimeDataModel.ts", "../src/runtime/utils/date.ts", "../src/runtime/utils/decimalJsLike.ts", "../../../node_modules/.pnpm/decimal.js@10.5.0/node_modules/decimal.js/decimal.mjs", "../src/runtime/core/errorRendering/throwValidationException.ts", "../src/runtime/utils/createErrorMessageWithContext.ts", "../../dmmf/src/index.ts", "../../dmmf/src/convert.ts", "../../dmmf/src/dmmf.ts", "../src/runtime/utils/SourceFileSlice.ts", "../src/runtime/highlight/highlight.ts", "../src/runtime/highlight/prism.ts", "../src/runtime/highlight/theme.ts", "../src/runtime/utils/dedent.ts", "../src/runtime/core/errorRendering/applyValidationError.ts", "../src/runtime/core/errorRendering/applyUnionError.ts", "../src/runtime/core/errorRendering/ObjectFieldSuggestion.ts", "../src/runtime/core/errorRendering/ObjectValue.ts", "../../ts-builders/src/index.ts", "../../ts-builders/src/Writer.ts", "../src/runtime/core/errorRendering/ArrayValue.ts", "../src/runtime/core/errorRendering/ArrayField.ts", "../src/runtime/core/errorRendering/base.ts", "../src/runtime/core/errorRendering/FormattedString.ts", "../src/runtime/core/errorRendering/Value.ts", "../src/runtime/core/errorRendering/ScalarValue.ts", "../src/runtime/core/errorRendering/SuggestionObjectValue.ts", "../src/runtime/core/errorRendering/ArgumentsRenderingTree.ts", "../src/runtime/core/model/FieldRef.ts", "../src/runtime/core/types/exported/ObjectEnums.ts", "../src/runtime/core/errorRendering/ObjectField.ts", "../src/runtime/core/extensions/MergedExtensionsList.ts", "../src/runtime/core/model/utils/dmmfToJSModelName.ts", "../src/runtime/core/extensions/resultUtils.ts", "../src/runtime/core/model/Param.ts", "../src/runtime/core/types/index.ts", "../src/runtime/core/types/exported/Skip.ts", "../src/runtime/core/metrics/MetricsClient.ts", "../src/runtime/core/runtimeDataModel.ts", "../src/runtime/core/types/exported/TypedSql.ts", "../src/runtime/getPrismaClient.ts", "fill-plugin-20189k:async_hooks", "../../../node_modules/.pnpm/sql-template-tag@5.2.1/node_modules/sql-template-tag/src/index.ts", "../src/runtime/core/compositeProxy/index.ts", "../src/runtime/core/compositeProxy/addObjectProperties.ts", "../src/runtime/core/compositeProxy/addProperty.ts", "../src/runtime/core/compositeProxy/cacheProperties.ts", "../src/runtime/core/compositeProxy/createCompositeProxy.ts", "../src/runtime/core/model/utils/defaultProxyHandlers.ts", "../src/runtime/core/compositeProxy/removeProperties.ts", "../src/runtime/core/engines/common/utils/getBatchRequestPayload.ts", "../src/runtime/core/errorRendering/prettyPrintArguments.ts", "../src/runtime/core/errors/utils/prismaGraphQLToJSError.ts", "../src/runtime/core/extensions/$extends.ts", "../src/runtime/core/model/applyModelsAndClientExtensions.ts", "../src/runtime/core/model/applyModel.ts", "../src/runtime/utils/CallSite.ts", "../../../node_modules/.pnpm/stacktrace-parser@0.1.11/node_modules/stacktrace-parser/dist/stack-trace-parser.esm.js", "../src/runtime/core/model/applyAggregates.ts", "../src/runtime/core/model/aggregates/aggregate.ts", "../src/runtime/core/model/aggregates/utils/aggregateMap.ts", "../src/runtime/core/model/aggregates/count.ts", "../src/runtime/core/model/aggregates/groupBy.ts", "../src/runtime/core/model/applyFieldsProxy.ts", "../src/runtime/core/model/applyFluent.ts", "../src/runtime/utils/deep-set.ts", "../src/runtime/core/model/utils/jsToDMMFModelName.ts", "../src/runtime/core/extensions/applyAllResultExtensions.ts", "../src/runtime/core/extensions/applyResultExtensions.ts", "../src/runtime/core/extensions/visitQueryResult.ts", "../src/runtime/core/extensions/applyQueryExtensions.ts", "../src/runtime/utils/deepCloneArgs.ts", "../src/runtime/core/types/exported/itxClientDenyList.ts", "../src/runtime/core/init/checkPlatformCaching.ts", "../src/runtime/core/init/getDatasourceOverrides.ts", "../src/runtime/core/init/getEngineInstance.ts", "../src/runtime/core/engines/index.ts", "../src/runtime/core/engines/common/utils/getErrorMessageWithLink.ts", "../src/runtime/core/engines/common/utils/maskQuery.ts", "../src/runtime/core/engines/common/utils/normalizeLogs.ts", "../src/runtime/core/engines/common/utils/util.ts", "../../client-engine-runtime/src/index.ts", "../../client-engine-runtime/src/json-protocol.ts", "../../client-engine-runtime/src/utils.ts", "../package.json", "../src/runtime/core/init/resolveDatasourceUrl.ts", "../src/runtime/utils/getRuntime.ts", "../src/runtime/core/engines/library/LibraryEngine.ts", "../src/runtime/core/engines/common/utils/getInteractiveTransactionId.ts", "../src/runtime/core/engines/library/ReactNativeLibraryLoader.ts", "../src/runtime/core/init/validateEngineInstanceConfig.ts", "../src/runtime/core/init/getPreviewFeatures.ts", "../src/runtime/core/raw-query/rawCommandArgsMapper.ts", "../src/runtime/core/raw-query/rawQueryArgsMapper.ts", "../src/runtime/utils/mssqlPreparedStatement.ts", "../src/runtime/utils/serializeRawParameters.ts", "../src/runtime/core/request/createPrismaPromise.ts", "../src/runtime/core/tracing/TracingHelper.ts", "../src/runtime/core/transaction/utils/createLockCountPromise.ts", "../src/runtime/getLogLevel.ts", "../src/runtime/RequestHandler.ts", "../src/runtime/core/errors/ErrorWithBatchIndex.ts", "../src/runtime/core/jsonProtocol/getBatchId.ts", "../src/runtime/core/jsonProtocol/isWrite.ts", "../src/runtime/DataLoader.ts", "../src/runtime/utils/deserializeRawResults.ts", "../src/runtime/utils/clientVersion.ts", "../src/runtime/utils/validatePrismaClientOptions.ts", "../src/runtime/core/errors/PrismaClientConstructorValidationError.ts", "../src/runtime/utils/waitForBatch.ts", "../src/runtime/strictEnum.ts", "fill-plugin-20189k:./warnEnvConflicts"],
4
- "sourcesContent": ["export const process: Partial<NodeJS.Process> = {\n nextTick: (fn: Function, ...args: unknown[]) => {\n setTimeout(() => {\n fn(...args)\n }, 0)\n },\n env: {},\n version: '',\n cwd: () => '/',\n stderr: {} as any,\n argv: ['/bin/node'],\n pid: 10000,\n}\n\nexport const { cwd } = process\nexport default process\n", "const performance =\n globalThis['performance'] ??\n (() => {\n const origin = Date.now()\n return {\n now: () => Date.now() - origin,\n }\n })()\n\nexport { performance }\nexport default { performance }\n", "export const fn = () => {}\n\nfn.prototype = fn\n", "export class WeakRef<T> {\n value: T\n\n constructor(value: T) {\n this.value = value\n }\n\n deref() {\n return this.value\n }\n}\n", "\"use strict\";var q=(i,r)=>()=>(r||i((r={exports:{}}).exports,r),r.exports);var H=q(C=>{\"use strict\";C.byteLength=sr;C.toByteArray=ar;C.fromByteArray=xr;var B=[],w=[],pr=typeof Uint8Array<\"u\"?Uint8Array:Array,N=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";for(m=0,W=N.length;m<W;++m)B[m]=N[m],w[N.charCodeAt(m)]=m;var m,W;w[45]=62;w[95]=63;function j(i){var r=i.length;if(r%4>0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var t=i.indexOf(\"=\");t===-1&&(t=r);var n=t===r?0:4-t%4;return[t,n]}function sr(i){var r=j(i),t=r[0],n=r[1];return(t+n)*3/4-n}function lr(i,r,t){return(r+t)*3/4-t}function ar(i){var r,t=j(i),n=t[0],e=t[1],o=new pr(lr(i,n,e)),u=0,f=e>0?n-4:n,c;for(c=0;c<f;c+=4)r=w[i.charCodeAt(c)]<<18|w[i.charCodeAt(c+1)]<<12|w[i.charCodeAt(c+2)]<<6|w[i.charCodeAt(c+3)],o[u++]=r>>16&255,o[u++]=r>>8&255,o[u++]=r&255;return e===2&&(r=w[i.charCodeAt(c)]<<2|w[i.charCodeAt(c+1)]>>4,o[u++]=r&255),e===1&&(r=w[i.charCodeAt(c)]<<10|w[i.charCodeAt(c+1)]<<4|w[i.charCodeAt(c+2)]>>2,o[u++]=r>>8&255,o[u++]=r&255),o}function yr(i){return B[i>>18&63]+B[i>>12&63]+B[i>>6&63]+B[i&63]}function wr(i,r,t){for(var n,e=[],o=r;o<t;o+=3)n=(i[o]<<16&16711680)+(i[o+1]<<8&65280)+(i[o+2]&255),e.push(yr(n));return e.join(\"\")}function xr(i){for(var r,t=i.length,n=t%3,e=[],o=16383,u=0,f=t-n;u<f;u+=o)e.push(wr(i,u,u+o>f?f:u+o));return n===1?(r=i[t-1],e.push(B[r>>2]+B[r<<4&63]+\"==\")):n===2&&(r=(i[t-2]<<8)+i[t-1],e.push(B[r>>10]+B[r>>4&63]+B[r<<2&63]+\"=\")),e.join(\"\")}});var V=q(M=>{M.read=function(i,r,t,n,e){var o,u,f=e*8-n-1,c=(1<<f)-1,l=c>>1,s=-7,p=t?e-1:0,F=t?-1:1,x=i[r+p];for(p+=F,o=x&(1<<-s)-1,x>>=-s,s+=f;s>0;o=o*256+i[r+p],p+=F,s-=8);for(u=o&(1<<-s)-1,o>>=-s,s+=n;s>0;u=u*256+i[r+p],p+=F,s-=8);if(o===0)o=1-l;else{if(o===c)return u?NaN:(x?-1:1)*(1/0);u=u+Math.pow(2,n),o=o-l}return(x?-1:1)*u*Math.pow(2,o-n)};M.write=function(i,r,t,n,e,o){var u,f,c,l=o*8-e-1,s=(1<<l)-1,p=s>>1,F=e===23?Math.pow(2,-24)-Math.pow(2,-77):0,x=n?0:o-1,L=n?1:-1,cr=r<0||r===0&&1/r<0?1:0;for(r=Math.abs(r),isNaN(r)||r===1/0?(f=isNaN(r)?1:0,u=s):(u=Math.floor(Math.log(r)/Math.LN2),r*(c=Math.pow(2,-u))<1&&(u--,c*=2),u+p>=1?r+=F/c:r+=F*Math.pow(2,1-p),r*c>=2&&(u++,c/=2),u+p>=s?(f=0,u=s):u+p>=1?(f=(r*c-1)*Math.pow(2,e),u=u+p):(f=r*Math.pow(2,p-1)*Math.pow(2,e),u=0));e>=8;i[t+x]=f&255,x+=L,f/=256,e-=8);for(u=u<<e|f,l+=e;l>0;i[t+x]=u&255,x+=L,u/=256,l-=8);i[t+x-L]|=cr*128}});var k=H(),U=V(),X=typeof Symbol==\"function\"&&typeof Symbol.for==\"function\"?Symbol.for(\"nodejs.util.inspect.custom\"):null;exports.Buffer=h;exports.SlowBuffer=Ir;exports.INSPECT_MAX_BYTES=50;var S=2147483647;exports.kMaxLength=S;h.TYPED_ARRAY_SUPPORT=Br();!h.TYPED_ARRAY_SUPPORT&&typeof console<\"u\"&&typeof console.error==\"function\"&&console.error(\"This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.\");function Br(){try{let i=new Uint8Array(1),r={foo:function(){return 42}};return Object.setPrototypeOf(r,Uint8Array.prototype),Object.setPrototypeOf(i,r),i.foo()===42}catch{return!1}}Object.defineProperty(h.prototype,\"parent\",{enumerable:!0,get:function(){if(h.isBuffer(this))return this.buffer}});Object.defineProperty(h.prototype,\"offset\",{enumerable:!0,get:function(){if(h.isBuffer(this))return this.byteOffset}});function d(i){if(i>S)throw new RangeError('The value \"'+i+'\" is invalid for option \"size\"');let r=new Uint8Array(i);return Object.setPrototypeOf(r,h.prototype),r}function h(i,r,t){if(typeof i==\"number\"){if(typeof r==\"string\")throw new TypeError('The \"string\" argument must be of type string. Received type number');return P(i)}return Z(i,r,t)}h.poolSize=8192;function Z(i,r,t){if(typeof i==\"string\")return dr(i,r);if(ArrayBuffer.isView(i))return gr(i);if(i==null)throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof i);if(E(i,ArrayBuffer)||i&&E(i.buffer,ArrayBuffer)||typeof SharedArrayBuffer<\"u\"&&(E(i,SharedArrayBuffer)||i&&E(i.buffer,SharedArrayBuffer)))return $(i,r,t);if(typeof i==\"number\")throw new TypeError('The \"value\" argument must not be of type number. Received type number');let n=i.valueOf&&i.valueOf();if(n!=null&&n!==i)return h.from(n,r,t);let e=mr(i);if(e)return e;if(typeof Symbol<\"u\"&&Symbol.toPrimitive!=null&&typeof i[Symbol.toPrimitive]==\"function\")return h.from(i[Symbol.toPrimitive](\"string\"),r,t);throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof i)}h.from=function(i,r,t){return Z(i,r,t)};Object.setPrototypeOf(h.prototype,Uint8Array.prototype);Object.setPrototypeOf(h,Uint8Array);function Q(i){if(typeof i!=\"number\")throw new TypeError('\"size\" argument must be of type number');if(i<0)throw new RangeError('The value \"'+i+'\" is invalid for option \"size\"')}function Er(i,r,t){return Q(i),i<=0?d(i):r!==void 0?typeof t==\"string\"?d(i).fill(r,t):d(i).fill(r):d(i)}h.alloc=function(i,r,t){return Er(i,r,t)};function P(i){return Q(i),d(i<0?0:O(i)|0)}h.allocUnsafe=function(i){return P(i)};h.allocUnsafeSlow=function(i){return P(i)};function dr(i,r){if((typeof r!=\"string\"||r===\"\")&&(r=\"utf8\"),!h.isEncoding(r))throw new TypeError(\"Unknown encoding: \"+r);let t=v(i,r)|0,n=d(t),e=n.write(i,r);return e!==t&&(n=n.slice(0,e)),n}function D(i){let r=i.length<0?0:O(i.length)|0,t=d(r);for(let n=0;n<r;n+=1)t[n]=i[n]&255;return t}function gr(i){if(E(i,Uint8Array)){let r=new Uint8Array(i);return $(r.buffer,r.byteOffset,r.byteLength)}return D(i)}function $(i,r,t){if(r<0||i.byteLength<r)throw new RangeError('\"offset\" is outside of buffer bounds');if(i.byteLength<r+(t||0))throw new RangeError('\"length\" is outside of buffer bounds');let n;return r===void 0&&t===void 0?n=new Uint8Array(i):t===void 0?n=new Uint8Array(i,r):n=new Uint8Array(i,r,t),Object.setPrototypeOf(n,h.prototype),n}function mr(i){if(h.isBuffer(i)){let r=O(i.length)|0,t=d(r);return t.length===0||i.copy(t,0,0,r),t}if(i.length!==void 0)return typeof i.length!=\"number\"||Y(i.length)?d(0):D(i);if(i.type===\"Buffer\"&&Array.isArray(i.data))return D(i.data)}function O(i){if(i>=S)throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+S.toString(16)+\" bytes\");return i|0}function Ir(i){return+i!=i&&(i=0),h.alloc(+i)}h.isBuffer=function(r){return r!=null&&r._isBuffer===!0&&r!==h.prototype};h.compare=function(r,t){if(E(r,Uint8Array)&&(r=h.from(r,r.offset,r.byteLength)),E(t,Uint8Array)&&(t=h.from(t,t.offset,t.byteLength)),!h.isBuffer(r)||!h.isBuffer(t))throw new TypeError('The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array');if(r===t)return 0;let n=r.length,e=t.length;for(let o=0,u=Math.min(n,e);o<u;++o)if(r[o]!==t[o]){n=r[o],e=t[o];break}return n<e?-1:e<n?1:0};h.isEncoding=function(r){switch(String(r).toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"latin1\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return!0;default:return!1}};h.concat=function(r,t){if(!Array.isArray(r))throw new TypeError('\"list\" argument must be an Array of Buffers');if(r.length===0)return h.alloc(0);let n;if(t===void 0)for(t=0,n=0;n<r.length;++n)t+=r[n].length;let e=h.allocUnsafe(t),o=0;for(n=0;n<r.length;++n){let u=r[n];if(E(u,Uint8Array))o+u.length>e.length?(h.isBuffer(u)||(u=h.from(u)),u.copy(e,o)):Uint8Array.prototype.set.call(e,u,o);else if(h.isBuffer(u))u.copy(e,o);else throw new TypeError('\"list\" argument must be an Array of Buffers');o+=u.length}return e};function v(i,r){if(h.isBuffer(i))return i.length;if(ArrayBuffer.isView(i)||E(i,ArrayBuffer))return i.byteLength;if(typeof i!=\"string\")throw new TypeError('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof i);let t=i.length,n=arguments.length>2&&arguments[2]===!0;if(!n&&t===0)return 0;let e=!1;for(;;)switch(r){case\"ascii\":case\"latin1\":case\"binary\":return t;case\"utf8\":case\"utf-8\":return b(i).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return t*2;case\"hex\":return t>>>1;case\"base64\":return fr(i).length;default:if(e)return n?-1:b(i).length;r=(\"\"+r).toLowerCase(),e=!0}}h.byteLength=v;function Fr(i,r,t){let n=!1;if((r===void 0||r<0)&&(r=0),r>this.length||((t===void 0||t>this.length)&&(t=this.length),t<=0)||(t>>>=0,r>>>=0,t<=r))return\"\";for(i||(i=\"utf8\");;)switch(i){case\"hex\":return Mr(this,r,t);case\"utf8\":case\"utf-8\":return tr(this,r,t);case\"ascii\":return Lr(this,r,t);case\"latin1\":case\"binary\":return Nr(this,r,t);case\"base64\":return Sr(this,r,t);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return kr(this,r,t);default:if(n)throw new TypeError(\"Unknown encoding: \"+i);i=(i+\"\").toLowerCase(),n=!0}}h.prototype._isBuffer=!0;function I(i,r,t){let n=i[r];i[r]=i[t],i[t]=n}h.prototype.swap16=function(){let r=this.length;if(r%2!==0)throw new RangeError(\"Buffer size must be a multiple of 16-bits\");for(let t=0;t<r;t+=2)I(this,t,t+1);return this};h.prototype.swap32=function(){let r=this.length;if(r%4!==0)throw new RangeError(\"Buffer size must be a multiple of 32-bits\");for(let t=0;t<r;t+=4)I(this,t,t+3),I(this,t+1,t+2);return this};h.prototype.swap64=function(){let r=this.length;if(r%8!==0)throw new RangeError(\"Buffer size must be a multiple of 64-bits\");for(let t=0;t<r;t+=8)I(this,t,t+7),I(this,t+1,t+6),I(this,t+2,t+5),I(this,t+3,t+4);return this};h.prototype.toString=function(){let r=this.length;return r===0?\"\":arguments.length===0?tr(this,0,r):Fr.apply(this,arguments)};h.prototype.toLocaleString=h.prototype.toString;h.prototype.equals=function(r){if(!h.isBuffer(r))throw new TypeError(\"Argument must be a Buffer\");return this===r?!0:h.compare(this,r)===0};h.prototype.inspect=function(){let r=\"\",t=exports.INSPECT_MAX_BYTES;return r=this.toString(\"hex\",0,t).replace(/(.{2})/g,\"$1 \").trim(),this.length>t&&(r+=\" ... \"),\"<Buffer \"+r+\">\"};X&&(h.prototype[X]=h.prototype.inspect);h.prototype.compare=function(r,t,n,e,o){if(E(r,Uint8Array)&&(r=h.from(r,r.offset,r.byteLength)),!h.isBuffer(r))throw new TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. Received type '+typeof r);if(t===void 0&&(t=0),n===void 0&&(n=r?r.length:0),e===void 0&&(e=0),o===void 0&&(o=this.length),t<0||n>r.length||e<0||o>this.length)throw new RangeError(\"out of range index\");if(e>=o&&t>=n)return 0;if(e>=o)return-1;if(t>=n)return 1;if(t>>>=0,n>>>=0,e>>>=0,o>>>=0,this===r)return 0;let u=o-e,f=n-t,c=Math.min(u,f),l=this.slice(e,o),s=r.slice(t,n);for(let p=0;p<c;++p)if(l[p]!==s[p]){u=l[p],f=s[p];break}return u<f?-1:f<u?1:0};function rr(i,r,t,n,e){if(i.length===0)return-1;if(typeof t==\"string\"?(n=t,t=0):t>2147483647?t=2147483647:t<-2147483648&&(t=-2147483648),t=+t,Y(t)&&(t=e?0:i.length-1),t<0&&(t=i.length+t),t>=i.length){if(e)return-1;t=i.length-1}else if(t<0)if(e)t=0;else return-1;if(typeof r==\"string\"&&(r=h.from(r,n)),h.isBuffer(r))return r.length===0?-1:z(i,r,t,n,e);if(typeof r==\"number\")return r=r&255,typeof Uint8Array.prototype.indexOf==\"function\"?e?Uint8Array.prototype.indexOf.call(i,r,t):Uint8Array.prototype.lastIndexOf.call(i,r,t):z(i,[r],t,n,e);throw new TypeError(\"val must be string, number or Buffer\")}function z(i,r,t,n,e){let o=1,u=i.length,f=r.length;if(n!==void 0&&(n=String(n).toLowerCase(),n===\"ucs2\"||n===\"ucs-2\"||n===\"utf16le\"||n===\"utf-16le\")){if(i.length<2||r.length<2)return-1;o=2,u/=2,f/=2,t/=2}function c(s,p){return o===1?s[p]:s.readUInt16BE(p*o)}let l;if(e){let s=-1;for(l=t;l<u;l++)if(c(i,l)===c(r,s===-1?0:l-s)){if(s===-1&&(s=l),l-s+1===f)return s*o}else s!==-1&&(l-=l-s),s=-1}else for(t+f>u&&(t=u-f),l=t;l>=0;l--){let s=!0;for(let p=0;p<f;p++)if(c(i,l+p)!==c(r,p)){s=!1;break}if(s)return l}return-1}h.prototype.includes=function(r,t,n){return this.indexOf(r,t,n)!==-1};h.prototype.indexOf=function(r,t,n){return rr(this,r,t,n,!0)};h.prototype.lastIndexOf=function(r,t,n){return rr(this,r,t,n,!1)};function Ar(i,r,t,n){t=Number(t)||0;let e=i.length-t;n?(n=Number(n),n>e&&(n=e)):n=e;let o=r.length;n>o/2&&(n=o/2);let u;for(u=0;u<n;++u){let f=parseInt(r.substr(u*2,2),16);if(Y(f))return u;i[t+u]=f}return u}function Ur(i,r,t,n){return _(b(r,i.length-t),i,t,n)}function Rr(i,r,t,n){return _(Pr(r),i,t,n)}function Tr(i,r,t,n){return _(fr(r),i,t,n)}function Cr(i,r,t,n){return _(Or(r,i.length-t),i,t,n)}h.prototype.write=function(r,t,n,e){if(t===void 0)e=\"utf8\",n=this.length,t=0;else if(n===void 0&&typeof t==\"string\")e=t,n=this.length,t=0;else if(isFinite(t))t=t>>>0,isFinite(n)?(n=n>>>0,e===void 0&&(e=\"utf8\")):(e=n,n=void 0);else throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");let o=this.length-t;if((n===void 0||n>o)&&(n=o),r.length>0&&(n<0||t<0)||t>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");e||(e=\"utf8\");let u=!1;for(;;)switch(e){case\"hex\":return Ar(this,r,t,n);case\"utf8\":case\"utf-8\":return Ur(this,r,t,n);case\"ascii\":case\"latin1\":case\"binary\":return Rr(this,r,t,n);case\"base64\":return Tr(this,r,t,n);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return Cr(this,r,t,n);default:if(u)throw new TypeError(\"Unknown encoding: \"+e);e=(\"\"+e).toLowerCase(),u=!0}};h.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};function Sr(i,r,t){return r===0&&t===i.length?k.fromByteArray(i):k.fromByteArray(i.slice(r,t))}function tr(i,r,t){t=Math.min(i.length,t);let n=[],e=r;for(;e<t;){let o=i[e],u=null,f=o>239?4:o>223?3:o>191?2:1;if(e+f<=t){let c,l,s,p;switch(f){case 1:o<128&&(u=o);break;case 2:c=i[e+1],(c&192)===128&&(p=(o&31)<<6|c&63,p>127&&(u=p));break;case 3:c=i[e+1],l=i[e+2],(c&192)===128&&(l&192)===128&&(p=(o&15)<<12|(c&63)<<6|l&63,p>2047&&(p<55296||p>57343)&&(u=p));break;case 4:c=i[e+1],l=i[e+2],s=i[e+3],(c&192)===128&&(l&192)===128&&(s&192)===128&&(p=(o&15)<<18|(c&63)<<12|(l&63)<<6|s&63,p>65535&&p<1114112&&(u=p))}}u===null?(u=65533,f=1):u>65535&&(u-=65536,n.push(u>>>10&1023|55296),u=56320|u&1023),n.push(u),e+=f}return _r(n)}var J=4096;function _r(i){let r=i.length;if(r<=J)return String.fromCharCode.apply(String,i);let t=\"\",n=0;for(;n<r;)t+=String.fromCharCode.apply(String,i.slice(n,n+=J));return t}function Lr(i,r,t){let n=\"\";t=Math.min(i.length,t);for(let e=r;e<t;++e)n+=String.fromCharCode(i[e]&127);return n}function Nr(i,r,t){let n=\"\";t=Math.min(i.length,t);for(let e=r;e<t;++e)n+=String.fromCharCode(i[e]);return n}function Mr(i,r,t){let n=i.length;(!r||r<0)&&(r=0),(!t||t<0||t>n)&&(t=n);let e=\"\";for(let o=r;o<t;++o)e+=Gr[i[o]];return e}function kr(i,r,t){let n=i.slice(r,t),e=\"\";for(let o=0;o<n.length-1;o+=2)e+=String.fromCharCode(n[o]+n[o+1]*256);return e}h.prototype.slice=function(r,t){let n=this.length;r=~~r,t=t===void 0?n:~~t,r<0?(r+=n,r<0&&(r=0)):r>n&&(r=n),t<0?(t+=n,t<0&&(t=0)):t>n&&(t=n),t<r&&(t=r);let e=this.subarray(r,t);return Object.setPrototypeOf(e,h.prototype),e};function a(i,r,t){if(i%1!==0||i<0)throw new RangeError(\"offset is not uint\");if(i+r>t)throw new RangeError(\"Trying to access beyond buffer length\")}h.prototype.readUintLE=h.prototype.readUIntLE=function(r,t,n){r=r>>>0,t=t>>>0,n||a(r,t,this.length);let e=this[r],o=1,u=0;for(;++u<t&&(o*=256);)e+=this[r+u]*o;return e};h.prototype.readUintBE=h.prototype.readUIntBE=function(r,t,n){r=r>>>0,t=t>>>0,n||a(r,t,this.length);let e=this[r+--t],o=1;for(;t>0&&(o*=256);)e+=this[r+--t]*o;return e};h.prototype.readUint8=h.prototype.readUInt8=function(r,t){return r=r>>>0,t||a(r,1,this.length),this[r]};h.prototype.readUint16LE=h.prototype.readUInt16LE=function(r,t){return r=r>>>0,t||a(r,2,this.length),this[r]|this[r+1]<<8};h.prototype.readUint16BE=h.prototype.readUInt16BE=function(r,t){return r=r>>>0,t||a(r,2,this.length),this[r]<<8|this[r+1]};h.prototype.readUint32LE=h.prototype.readUInt32LE=function(r,t){return r=r>>>0,t||a(r,4,this.length),(this[r]|this[r+1]<<8|this[r+2]<<16)+this[r+3]*16777216};h.prototype.readUint32BE=h.prototype.readUInt32BE=function(r,t){return r=r>>>0,t||a(r,4,this.length),this[r]*16777216+(this[r+1]<<16|this[r+2]<<8|this[r+3])};h.prototype.readBigUInt64LE=g(function(r){r=r>>>0,R(r,\"offset\");let t=this[r],n=this[r+7];(t===void 0||n===void 0)&&T(r,this.length-8);let e=t+this[++r]*2**8+this[++r]*2**16+this[++r]*2**24,o=this[++r]+this[++r]*2**8+this[++r]*2**16+n*2**24;return BigInt(e)+(BigInt(o)<<BigInt(32))});h.prototype.readBigUInt64BE=g(function(r){r=r>>>0,R(r,\"offset\");let t=this[r],n=this[r+7];(t===void 0||n===void 0)&&T(r,this.length-8);let e=t*2**24+this[++r]*2**16+this[++r]*2**8+this[++r],o=this[++r]*2**24+this[++r]*2**16+this[++r]*2**8+n;return(BigInt(e)<<BigInt(32))+BigInt(o)});h.prototype.readIntLE=function(r,t,n){r=r>>>0,t=t>>>0,n||a(r,t,this.length);let e=this[r],o=1,u=0;for(;++u<t&&(o*=256);)e+=this[r+u]*o;return o*=128,e>=o&&(e-=Math.pow(2,8*t)),e};h.prototype.readIntBE=function(r,t,n){r=r>>>0,t=t>>>0,n||a(r,t,this.length);let e=t,o=1,u=this[r+--e];for(;e>0&&(o*=256);)u+=this[r+--e]*o;return o*=128,u>=o&&(u-=Math.pow(2,8*t)),u};h.prototype.readInt8=function(r,t){return r=r>>>0,t||a(r,1,this.length),this[r]&128?(255-this[r]+1)*-1:this[r]};h.prototype.readInt16LE=function(r,t){r=r>>>0,t||a(r,2,this.length);let n=this[r]|this[r+1]<<8;return n&32768?n|4294901760:n};h.prototype.readInt16BE=function(r,t){r=r>>>0,t||a(r,2,this.length);let n=this[r+1]|this[r]<<8;return n&32768?n|4294901760:n};h.prototype.readInt32LE=function(r,t){return r=r>>>0,t||a(r,4,this.length),this[r]|this[r+1]<<8|this[r+2]<<16|this[r+3]<<24};h.prototype.readInt32BE=function(r,t){return r=r>>>0,t||a(r,4,this.length),this[r]<<24|this[r+1]<<16|this[r+2]<<8|this[r+3]};h.prototype.readBigInt64LE=g(function(r){r=r>>>0,R(r,\"offset\");let t=this[r],n=this[r+7];(t===void 0||n===void 0)&&T(r,this.length-8);let e=this[r+4]+this[r+5]*2**8+this[r+6]*2**16+(n<<24);return(BigInt(e)<<BigInt(32))+BigInt(t+this[++r]*2**8+this[++r]*2**16+this[++r]*2**24)});h.prototype.readBigInt64BE=g(function(r){r=r>>>0,R(r,\"offset\");let t=this[r],n=this[r+7];(t===void 0||n===void 0)&&T(r,this.length-8);let e=(t<<24)+this[++r]*2**16+this[++r]*2**8+this[++r];return(BigInt(e)<<BigInt(32))+BigInt(this[++r]*2**24+this[++r]*2**16+this[++r]*2**8+n)});h.prototype.readFloatLE=function(r,t){return r=r>>>0,t||a(r,4,this.length),U.read(this,r,!0,23,4)};h.prototype.readFloatBE=function(r,t){return r=r>>>0,t||a(r,4,this.length),U.read(this,r,!1,23,4)};h.prototype.readDoubleLE=function(r,t){return r=r>>>0,t||a(r,8,this.length),U.read(this,r,!0,52,8)};h.prototype.readDoubleBE=function(r,t){return r=r>>>0,t||a(r,8,this.length),U.read(this,r,!1,52,8)};function y(i,r,t,n,e,o){if(!h.isBuffer(i))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(r>e||r<o)throw new RangeError('\"value\" argument is out of bounds');if(t+n>i.length)throw new RangeError(\"Index out of range\")}h.prototype.writeUintLE=h.prototype.writeUIntLE=function(r,t,n,e){if(r=+r,t=t>>>0,n=n>>>0,!e){let f=Math.pow(2,8*n)-1;y(this,r,t,n,f,0)}let o=1,u=0;for(this[t]=r&255;++u<n&&(o*=256);)this[t+u]=r/o&255;return t+n};h.prototype.writeUintBE=h.prototype.writeUIntBE=function(r,t,n,e){if(r=+r,t=t>>>0,n=n>>>0,!e){let f=Math.pow(2,8*n)-1;y(this,r,t,n,f,0)}let o=n-1,u=1;for(this[t+o]=r&255;--o>=0&&(u*=256);)this[t+o]=r/u&255;return t+n};h.prototype.writeUint8=h.prototype.writeUInt8=function(r,t,n){return r=+r,t=t>>>0,n||y(this,r,t,1,255,0),this[t]=r&255,t+1};h.prototype.writeUint16LE=h.prototype.writeUInt16LE=function(r,t,n){return r=+r,t=t>>>0,n||y(this,r,t,2,65535,0),this[t]=r&255,this[t+1]=r>>>8,t+2};h.prototype.writeUint16BE=h.prototype.writeUInt16BE=function(r,t,n){return r=+r,t=t>>>0,n||y(this,r,t,2,65535,0),this[t]=r>>>8,this[t+1]=r&255,t+2};h.prototype.writeUint32LE=h.prototype.writeUInt32LE=function(r,t,n){return r=+r,t=t>>>0,n||y(this,r,t,4,4294967295,0),this[t+3]=r>>>24,this[t+2]=r>>>16,this[t+1]=r>>>8,this[t]=r&255,t+4};h.prototype.writeUint32BE=h.prototype.writeUInt32BE=function(r,t,n){return r=+r,t=t>>>0,n||y(this,r,t,4,4294967295,0),this[t]=r>>>24,this[t+1]=r>>>16,this[t+2]=r>>>8,this[t+3]=r&255,t+4};function ir(i,r,t,n,e){hr(r,n,e,i,t,7);let o=Number(r&BigInt(4294967295));i[t++]=o,o=o>>8,i[t++]=o,o=o>>8,i[t++]=o,o=o>>8,i[t++]=o;let u=Number(r>>BigInt(32)&BigInt(4294967295));return i[t++]=u,u=u>>8,i[t++]=u,u=u>>8,i[t++]=u,u=u>>8,i[t++]=u,t}function nr(i,r,t,n,e){hr(r,n,e,i,t,7);let o=Number(r&BigInt(4294967295));i[t+7]=o,o=o>>8,i[t+6]=o,o=o>>8,i[t+5]=o,o=o>>8,i[t+4]=o;let u=Number(r>>BigInt(32)&BigInt(4294967295));return i[t+3]=u,u=u>>8,i[t+2]=u,u=u>>8,i[t+1]=u,u=u>>8,i[t]=u,t+8}h.prototype.writeBigUInt64LE=g(function(r,t=0){return ir(this,r,t,BigInt(0),BigInt(\"0xffffffffffffffff\"))});h.prototype.writeBigUInt64BE=g(function(r,t=0){return nr(this,r,t,BigInt(0),BigInt(\"0xffffffffffffffff\"))});h.prototype.writeIntLE=function(r,t,n,e){if(r=+r,t=t>>>0,!e){let c=Math.pow(2,8*n-1);y(this,r,t,n,c-1,-c)}let o=0,u=1,f=0;for(this[t]=r&255;++o<n&&(u*=256);)r<0&&f===0&&this[t+o-1]!==0&&(f=1),this[t+o]=(r/u>>0)-f&255;return t+n};h.prototype.writeIntBE=function(r,t,n,e){if(r=+r,t=t>>>0,!e){let c=Math.pow(2,8*n-1);y(this,r,t,n,c-1,-c)}let o=n-1,u=1,f=0;for(this[t+o]=r&255;--o>=0&&(u*=256);)r<0&&f===0&&this[t+o+1]!==0&&(f=1),this[t+o]=(r/u>>0)-f&255;return t+n};h.prototype.writeInt8=function(r,t,n){return r=+r,t=t>>>0,n||y(this,r,t,1,127,-128),r<0&&(r=255+r+1),this[t]=r&255,t+1};h.prototype.writeInt16LE=function(r,t,n){return r=+r,t=t>>>0,n||y(this,r,t,2,32767,-32768),this[t]=r&255,this[t+1]=r>>>8,t+2};h.prototype.writeInt16BE=function(r,t,n){return r=+r,t=t>>>0,n||y(this,r,t,2,32767,-32768),this[t]=r>>>8,this[t+1]=r&255,t+2};h.prototype.writeInt32LE=function(r,t,n){return r=+r,t=t>>>0,n||y(this,r,t,4,2147483647,-2147483648),this[t]=r&255,this[t+1]=r>>>8,this[t+2]=r>>>16,this[t+3]=r>>>24,t+4};h.prototype.writeInt32BE=function(r,t,n){return r=+r,t=t>>>0,n||y(this,r,t,4,2147483647,-2147483648),r<0&&(r=4294967295+r+1),this[t]=r>>>24,this[t+1]=r>>>16,this[t+2]=r>>>8,this[t+3]=r&255,t+4};h.prototype.writeBigInt64LE=g(function(r,t=0){return ir(this,r,t,-BigInt(\"0x8000000000000000\"),BigInt(\"0x7fffffffffffffff\"))});h.prototype.writeBigInt64BE=g(function(r,t=0){return nr(this,r,t,-BigInt(\"0x8000000000000000\"),BigInt(\"0x7fffffffffffffff\"))});function er(i,r,t,n,e,o){if(t+n>i.length)throw new RangeError(\"Index out of range\");if(t<0)throw new RangeError(\"Index out of range\")}function or(i,r,t,n,e){return r=+r,t=t>>>0,e||er(i,r,t,4,34028234663852886e22,-34028234663852886e22),U.write(i,r,t,n,23,4),t+4}h.prototype.writeFloatLE=function(r,t,n){return or(this,r,t,!0,n)};h.prototype.writeFloatBE=function(r,t,n){return or(this,r,t,!1,n)};function ur(i,r,t,n,e){return r=+r,t=t>>>0,e||er(i,r,t,8,17976931348623157e292,-17976931348623157e292),U.write(i,r,t,n,52,8),t+8}h.prototype.writeDoubleLE=function(r,t,n){return ur(this,r,t,!0,n)};h.prototype.writeDoubleBE=function(r,t,n){return ur(this,r,t,!1,n)};h.prototype.copy=function(r,t,n,e){if(!h.isBuffer(r))throw new TypeError(\"argument should be a Buffer\");if(n||(n=0),!e&&e!==0&&(e=this.length),t>=r.length&&(t=r.length),t||(t=0),e>0&&e<n&&(e=n),e===n||r.length===0||this.length===0)return 0;if(t<0)throw new RangeError(\"targetStart out of bounds\");if(n<0||n>=this.length)throw new RangeError(\"Index out of range\");if(e<0)throw new RangeError(\"sourceEnd out of bounds\");e>this.length&&(e=this.length),r.length-t<e-n&&(e=r.length-t+n);let o=e-n;return this===r&&typeof Uint8Array.prototype.copyWithin==\"function\"?this.copyWithin(t,n,e):Uint8Array.prototype.set.call(r,this.subarray(n,e),t),o};h.prototype.fill=function(r,t,n,e){if(typeof r==\"string\"){if(typeof t==\"string\"?(e=t,t=0,n=this.length):typeof n==\"string\"&&(e=n,n=this.length),e!==void 0&&typeof e!=\"string\")throw new TypeError(\"encoding must be a string\");if(typeof e==\"string\"&&!h.isEncoding(e))throw new TypeError(\"Unknown encoding: \"+e);if(r.length===1){let u=r.charCodeAt(0);(e===\"utf8\"&&u<128||e===\"latin1\")&&(r=u)}}else typeof r==\"number\"?r=r&255:typeof r==\"boolean\"&&(r=Number(r));if(t<0||this.length<t||this.length<n)throw new RangeError(\"Out of range index\");if(n<=t)return this;t=t>>>0,n=n===void 0?this.length:n>>>0,r||(r=0);let o;if(typeof r==\"number\")for(o=t;o<n;++o)this[o]=r;else{let u=h.isBuffer(r)?r:h.from(r,e),f=u.length;if(f===0)throw new TypeError('The value \"'+r+'\" is invalid for argument \"value\"');for(o=0;o<n-t;++o)this[o+t]=u[o%f]}return this};var A={};function G(i,r,t){A[i]=class extends t{constructor(){super(),Object.defineProperty(this,\"message\",{value:r.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${i}]`,this.stack,delete this.name}get code(){return i}set code(e){Object.defineProperty(this,\"code\",{configurable:!0,enumerable:!0,value:e,writable:!0})}toString(){return`${this.name} [${i}]: ${this.message}`}}}G(\"ERR_BUFFER_OUT_OF_BOUNDS\",function(i){return i?`${i} is outside of buffer bounds`:\"Attempt to access memory outside buffer bounds\"},RangeError);G(\"ERR_INVALID_ARG_TYPE\",function(i,r){return`The \"${i}\" argument must be of type number. Received type ${typeof r}`},TypeError);G(\"ERR_OUT_OF_RANGE\",function(i,r,t){let n=`The value of \"${i}\" is out of range.`,e=t;return Number.isInteger(t)&&Math.abs(t)>2**32?e=K(String(t)):typeof t==\"bigint\"&&(e=String(t),(t>BigInt(2)**BigInt(32)||t<-(BigInt(2)**BigInt(32)))&&(e=K(e)),e+=\"n\"),n+=` It must be ${r}. Received ${e}`,n},RangeError);function K(i){let r=\"\",t=i.length,n=i[0]===\"-\"?1:0;for(;t>=n+4;t-=3)r=`_${i.slice(t-3,t)}${r}`;return`${i.slice(0,t)}${r}`}function Dr(i,r,t){R(r,\"offset\"),(i[r]===void 0||i[r+t]===void 0)&&T(r,i.length-(t+1))}function hr(i,r,t,n,e,o){if(i>t||i<r){let u=typeof r==\"bigint\"?\"n\":\"\",f;throw o>3?r===0||r===BigInt(0)?f=`>= 0${u} and < 2${u} ** ${(o+1)*8}${u}`:f=`>= -(2${u} ** ${(o+1)*8-1}${u}) and < 2 ** ${(o+1)*8-1}${u}`:f=`>= ${r}${u} and <= ${t}${u}`,new A.ERR_OUT_OF_RANGE(\"value\",f,i)}Dr(n,e,o)}function R(i,r){if(typeof i!=\"number\")throw new A.ERR_INVALID_ARG_TYPE(r,\"number\",i)}function T(i,r,t){throw Math.floor(i)!==i?(R(i,t),new A.ERR_OUT_OF_RANGE(t||\"offset\",\"an integer\",i)):r<0?new A.ERR_BUFFER_OUT_OF_BOUNDS:new A.ERR_OUT_OF_RANGE(t||\"offset\",`>= ${t?1:0} and <= ${r}`,i)}var $r=/[^+/0-9A-Za-z-_]/g;function br(i){if(i=i.split(\"=\")[0],i=i.trim().replace($r,\"\"),i.length<2)return\"\";for(;i.length%4!==0;)i=i+\"=\";return i}function b(i,r){r=r||1/0;let t,n=i.length,e=null,o=[];for(let u=0;u<n;++u){if(t=i.charCodeAt(u),t>55295&&t<57344){if(!e){if(t>56319){(r-=3)>-1&&o.push(239,191,189);continue}else if(u+1===n){(r-=3)>-1&&o.push(239,191,189);continue}e=t;continue}if(t<56320){(r-=3)>-1&&o.push(239,191,189),e=t;continue}t=(e-55296<<10|t-56320)+65536}else e&&(r-=3)>-1&&o.push(239,191,189);if(e=null,t<128){if((r-=1)<0)break;o.push(t)}else if(t<2048){if((r-=2)<0)break;o.push(t>>6|192,t&63|128)}else if(t<65536){if((r-=3)<0)break;o.push(t>>12|224,t>>6&63|128,t&63|128)}else if(t<1114112){if((r-=4)<0)break;o.push(t>>18|240,t>>12&63|128,t>>6&63|128,t&63|128)}else throw new Error(\"Invalid code point\")}return o}function Pr(i){let r=[];for(let t=0;t<i.length;++t)r.push(i.charCodeAt(t)&255);return r}function Or(i,r){let t,n,e,o=[];for(let u=0;u<i.length&&!((r-=2)<0);++u)t=i.charCodeAt(u),n=t>>8,e=t%256,o.push(e),o.push(n);return o}function fr(i){return k.toByteArray(br(i))}function _(i,r,t,n){let e;for(e=0;e<n&&!(e+t>=r.length||e>=i.length);++e)r[e+t]=i[e];return e}function E(i,r){return i instanceof r||i!=null&&i.constructor!=null&&i.constructor.name!=null&&i.constructor.name===r.name}function Y(i){return i!==i}var Gr=function(){let i=\"0123456789abcdef\",r=new Array(256);for(let t=0;t<16;++t){let n=t*16;for(let e=0;e<16;++e)r[n+e]=i[t]+i[e]}return r}();function g(i){return typeof BigInt>\"u\"?Yr:i}function Yr(){throw new Error(\"BigInt not supported\")}\n/*! Bundled license information:\n\nieee754/index.js:\n (*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> *)\n\nbuffer/index.js:\n (*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n *)\n*/\n", "export { Buffer } from 'buffer'\n", "export function existsSync() {\n return false\n}\n\nexport function lstatSync() {\n return {\n dev: 0,\n ino: 0,\n mode: 0,\n nlink: 0,\n uid: 0,\n gid: 0,\n rdev: 0,\n size: 0,\n blksize: 0,\n blocks: 0,\n atimeMs: 0,\n mtimeMs: 0,\n ctimeMs: 0,\n birthtimeMs: 0,\n atime: new Date(),\n mtime: new Date(),\n ctime: new Date(),\n birthtime: new Date(),\n }\n}\n\nexport function statSync() {\n return lstatSync()\n}\n\nexport function readdirSync() {\n return []\n}\n\nexport function readdir(cb: (err: Error | null, files: string[]) => void) {\n cb(null, [])\n}\n\nexport function readFileSync() {\n return ''\n}\n\nexport function readlinkSync() {\n return ''\n}\n\nexport function realpathSync() {\n return ''\n}\n\nexport function chmodSync() {}\n\nexport function renameSync() {}\n\nexport function mkdirSync() {}\n\nexport function rmdirSync() {}\n\nexport function rmSync() {}\n\nexport function unlinkSync() {}\n\nexport function watchFile() {}\n\nexport function unwatchFile() {}\n\nexport function watch() {\n return {\n close: () => {},\n on: () => {},\n removeAllListeners: () => {},\n }\n}\n\nexport function stat(path: string, callback: (err: Error | null, stats?: any) => void) {\n callback(null, lstatSync())\n}\n\nexport const promises = {}\n\n/**\n * A stub for fs for tryLoadEnv not to attempt loading .env\n */\nconst fs = {\n existsSync,\n lstatSync,\n stat,\n statSync,\n readdirSync,\n readdir,\n readlinkSync,\n realpathSync,\n chmodSync,\n renameSync,\n mkdirSync,\n rmdirSync,\n rmSync,\n unlinkSync,\n watchFile,\n unwatchFile,\n watch,\n promises,\n}\n\nexport default fs\n", "{\n \"name\": \"@prisma/internals\",\n \"version\": \"7.3.0-integration-prisma6-fix-cloudflare-engine.2\",\n \"description\": \"This package is intended for Prisma's internal use\",\n \"main\": \"dist/index.js\",\n \"types\": \"dist/index.d.ts\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/prisma/prisma.git\",\n \"directory\": \"packages/internals\"\n },\n \"homepage\": \"https://www.prisma.io\",\n \"author\": \"Tim Suchanek <suchanek@prisma.io>\",\n \"bugs\": \"https://github.com/prisma/prisma/issues\",\n \"license\": \"Apache-2.0\",\n \"scripts\": {\n \"dev\": \"DEV=true tsx helpers/build.ts\",\n \"build\": \"tsx helpers/build.ts\",\n \"test\": \"dotenv -e ../../.db.env -- jest --silent\",\n \"prepublishOnly\": \"pnpm run build\"\n },\n \"files\": [\n \"README.md\",\n \"dist\",\n \"!**/libquery_engine*\",\n \"!dist/get-generators/engines/*\",\n \"scripts\"\n ],\n \"devDependencies\": {\n \"@babel/helper-validator-identifier\": \"7.25.9\",\n \"@opentelemetry/api\": \"1.9.0\",\n \"@swc/core\": \"1.11.5\",\n \"@swc/jest\": \"0.2.37\",\n \"@types/babel__helper-validator-identifier\": \"7.15.2\",\n \"@types/jest\": \"29.5.14\",\n \"@types/node\": \"18.19.76\",\n \"@types/resolve\": \"1.20.6\",\n \"archiver\": \"6.0.2\",\n \"checkpoint-client\": \"1.1.33\",\n \"cli-truncate\": \"4.0.0\",\n \"dotenv\": \"16.5.0\",\n \"empathic\": \"2.0.0\",\n \"escape-string-regexp\": \"5.0.0\",\n \"execa\": \"8.0.1\",\n \"fast-glob\": \"3.3.3\",\n \"find-up\": \"7.0.0\",\n \"fp-ts\": \"2.16.9\",\n \"fs-extra\": \"11.3.0\",\n \"global-directory\": \"4.0.0\",\n \"globby\": \"11.1.0\",\n \"identifier-regex\": \"1.0.0\",\n \"indent-string\": \"4.0.0\",\n \"is-windows\": \"1.0.2\",\n \"is-wsl\": \"3.1.0\",\n \"jest\": \"29.7.0\",\n \"jest-junit\": \"16.0.0\",\n \"kleur\": \"4.1.5\",\n \"mock-stdin\": \"1.0.0\",\n \"new-github-issue-url\": \"0.2.1\",\n \"node-fetch\": \"3.3.2\",\n \"npm-packlist\": \"5.1.3\",\n \"open\": \"7.4.2\",\n \"p-map\": \"4.0.0\",\n \"resolve\": \"1.22.10\",\n \"string-width\": \"7.2.0\",\n \"strip-indent\": \"4.0.0\",\n \"temp-dir\": \"2.0.0\",\n \"tempy\": \"1.0.1\",\n \"terminal-link\": \"4.0.0\",\n \"tmp\": \"0.2.3\",\n \"ts-pattern\": \"5.6.2\",\n \"ts-toolbelt\": \"9.6.0\",\n \"typescript\": \"5.4.5\",\n \"yarn\": \"1.22.22\"\n },\n \"dependencies\": {\n \"@prisma/config\": \"workspace:*\",\n \"@prisma/debug\": \"workspace:*\",\n \"@prisma/dmmf\": \"workspace:*\",\n \"@prisma/driver-adapter-utils\": \"workspace:*\",\n \"@prisma/engines\": \"workspace:*\",\n \"@prisma/fetch-engine\": \"workspace:*\",\n \"@prisma/generator\": \"workspace:*\",\n \"@prisma/generator-helper\": \"workspace:*\",\n \"@prisma/get-platform\": \"workspace:*\",\n \"@prisma/prisma-schema-wasm\": \"7.1.1-3.c2990dca591cba766e3b7ef5d9e8a84796e47ab7\",\n \"@prisma/schema-engine-wasm\": \"7.1.1-3.c2990dca591cba766e3b7ef5d9e8a84796e47ab7\",\n \"@prisma/schema-files-loader\": \"workspace:*\",\n \"arg\": \"5.0.2\",\n \"prompts\": \"2.4.2\"\n },\n \"peerDependencies\": {\n \"typescript\": \">=5.1.0\"\n },\n \"peerDependenciesMeta\": {\n \"typescript\": {\n \"optional\": true\n }\n },\n \"sideEffects\": false\n}", "export function resolve(...args: any[]) {\n return args.join('/')\n}\n\nexport function join(...args: any[]) {\n return args.join('/')\n}\n\nexport function parse(path: string) {\n const base = basename(path)\n const dir = dirname(path)\n const [name, ext] = base.split('.')\n return { root: '/', dir, base, ext, name }\n}\n\nexport function basename(path: string) {\n const parts = path.split('/')\n return parts[parts.length - 1]\n}\n\nexport function dirname(path: string) {\n const parts = path.split('/')\n return parts.slice(0, -1).join('/')\n}\n\nexport const sep = '/'\nexport const delimiter = ':'\n\nexport function normalize(path: string) {\n // Simple normalization - remove duplicate slashes and resolve . and ..\n const parts = path.split('/').filter((part) => part !== '' && part !== '.')\n const normalized: string[] = []\n\n for (const part of parts) {\n if (part === '..') {\n normalized.pop()\n } else {\n normalized.push(part)\n }\n }\n\n const result = normalized.join('/')\n return path.startsWith('/') ? '/' + result : result\n}\n\nexport const posix = {\n sep,\n}\n\n/**\n * A poor man's shim for the \"path\" module\n */\nconst path = {\n basename,\n delimiter,\n dirname,\n join,\n normalize,\n parse,\n posix,\n resolve,\n sep,\n}\n\nexport default path\n", "'use strict';\nmodule.exports = string => {\n\tconst match = string.match(/^[ \\t]*(?=\\S)/gm);\n\n\tif (!match) {\n\t\treturn 0;\n\t}\n\n\treturn match.reduce((r, a) => Math.min(r, a.length), Infinity);\n};\n", "'use strict';\n\nmodule.exports = (string, count = 1, options) => {\n\toptions = {\n\t\tindent: ' ',\n\t\tincludeEmptyLines: false,\n\t\t...options\n\t};\n\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(\n\t\t\t`Expected \\`input\\` to be a \\`string\\`, got \\`${typeof string}\\``\n\t\t);\n\t}\n\n\tif (typeof count !== 'number') {\n\t\tthrow new TypeError(\n\t\t\t`Expected \\`count\\` to be a \\`number\\`, got \\`${typeof count}\\``\n\t\t);\n\t}\n\n\tif (typeof options.indent !== 'string') {\n\t\tthrow new TypeError(\n\t\t\t`Expected \\`options.indent\\` to be a \\`string\\`, got \\`${typeof options.indent}\\``\n\t\t);\n\t}\n\n\tif (count === 0) {\n\t\treturn string;\n\t}\n\n\tconst regex = options.includeEmptyLines ? /^/gm : /^(?!\\s*$)/gm;\n\n\treturn string.replace(regex, options.indent.repeat(count));\n};\n", "'use strict';\n\nmodule.exports = (options = {}) => {\n\tlet repoUrl;\n\tif (options.repoUrl) {\n\t\trepoUrl = options.repoUrl;\n\t} else if (options.user && options.repo) {\n\t\trepoUrl = `https://github.com/${options.user}/${options.repo}`;\n\t} else {\n\t\tthrow new Error('You need to specify either the `repoUrl` option or both the `user` and `repo` options');\n\t}\n\n\tconst url = new URL(`${repoUrl}/issues/new`);\n\n\tconst types = [\n\t\t'body',\n\t\t'title',\n\t\t'labels',\n\t\t'template',\n\t\t'milestone',\n\t\t'assignee',\n\t\t'projects'\n\t];\n\n\tfor (const type of types) {\n\t\tlet value = options[type];\n\t\tif (value === undefined) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (type === 'labels' || type === 'projects') {\n\t\t\tif (!Array.isArray(value)) {\n\t\t\t\tthrow new TypeError(`The \\`${type}\\` option should be an array`);\n\t\t\t}\n\n\t\t\tvalue = value.join(',');\n\t\t}\n\n\t\turl.searchParams.set(type, value);\n\t}\n\n\treturn url.toString();\n};\n\n// TODO: Remove this for the next major release\nmodule.exports.default = module.exports;\n", "'use strict';\nmodule.exports = (function()\n{\n function _min(d0, d1, d2, bx, ay)\n {\n return d0 < d1 || d2 < d1\n ? d0 > d2\n ? d2 + 1\n : d0 + 1\n : bx === ay\n ? d1\n : d1 + 1;\n }\n\n return function(a, b)\n {\n if (a === b) {\n return 0;\n }\n\n if (a.length > b.length) {\n var tmp = a;\n a = b;\n b = tmp;\n }\n\n var la = a.length;\n var lb = b.length;\n\n while (la > 0 && (a.charCodeAt(la - 1) === b.charCodeAt(lb - 1))) {\n la--;\n lb--;\n }\n\n var offset = 0;\n\n while (offset < la && (a.charCodeAt(offset) === b.charCodeAt(offset))) {\n offset++;\n }\n\n la -= offset;\n lb -= offset;\n\n if (la === 0 || lb < 3) {\n return lb;\n }\n\n var x = 0;\n var y;\n var d0;\n var d1;\n var d2;\n var d3;\n var dd;\n var dy;\n var ay;\n var bx0;\n var bx1;\n var bx2;\n var bx3;\n\n var vector = [];\n\n for (y = 0; y < la; y++) {\n vector.push(y + 1);\n vector.push(a.charCodeAt(offset + y));\n }\n\n var len = vector.length - 1;\n\n for (; x < lb - 3;) {\n bx0 = b.charCodeAt(offset + (d0 = x));\n bx1 = b.charCodeAt(offset + (d1 = x + 1));\n bx2 = b.charCodeAt(offset + (d2 = x + 2));\n bx3 = b.charCodeAt(offset + (d3 = x + 3));\n dd = (x += 4);\n for (y = 0; y < len; y += 2) {\n dy = vector[y];\n ay = vector[y + 1];\n d0 = _min(dy, d0, d1, bx0, ay);\n d1 = _min(d0, d1, d2, bx1, ay);\n d2 = _min(d1, d2, d3, bx2, ay);\n dd = _min(d2, d3, dd, bx3, ay);\n vector[y] = dd;\n d3 = d2;\n d2 = d1;\n d1 = d0;\n d0 = dy;\n }\n }\n\n for (; x < lb;) {\n bx0 = b.charCodeAt(offset + (d0 = x));\n dd = ++x;\n for (y = 0; y < len; y += 2) {\n dy = vector[y];\n vector[y] = dd = _min(dy, d0, dd, bx0, vector[y + 1]);\n d0 = dy;\n }\n }\n\n return dd;\n };\n})();\n\n", "import { BasicBuilder } from './BasicBuilder'\nimport type { KeyType } from './KeyType'\nimport { Writer } from './Writer'\n\nexport abstract class TypeBuilder implements BasicBuilder {\n // TODO(@SevInf): this should be replaced with precedence system that would\n // automatically add parenthesis where they are needed\n needsParenthesisWhenIndexed = false\n needsParenthesisInKeyof = false\n needsParenthesisInUnion = false\n needsParenthesisInIntersection = false\n\n abstract write(writer: Writer): void\n\n subKey(key: string): KeyType {\n // TODO: since we translating ESM to CommonJS during bundling, we\n // can't handle circular dependencies the same way ESM does. We have to delay KeyType import\n // to resolve it. Once we stop doing this, we can move this import to top of the file.\n const { KeyType } = require('./KeyType')\n return new KeyType(this, key)\n }\n\n writeIndexed(writer: Writer) {\n if (this.needsParenthesisWhenIndexed) {\n writer.write('(')\n }\n\n writer.write(this)\n\n if (this.needsParenthesisWhenIndexed) {\n writer.write(')')\n }\n }\n}\n", "import { TypeBuilder } from './TypeBuilder'\nimport { Writer } from './Writer'\n\nexport class KeyType extends TypeBuilder {\n constructor(\n public baseType: TypeBuilder,\n public key: string,\n ) {\n super()\n }\n write(writer: Writer): void {\n this.baseType.writeIndexed(writer)\n\n writer.write('[').write(`\"${this.key}\"`).write(']')\n }\n}\n\nexport function keyType(baseType: TypeBuilder, key: string) {\n return new KeyType(baseType, key)\n}\n", "{\n \"name\": \"@prisma/engines-version\",\n \"version\": \"7.1.1-3.c2990dca591cba766e3b7ef5d9e8a84796e47ab7\",\n \"main\": \"index.js\",\n \"types\": \"index.d.ts\",\n \"license\": \"Apache-2.0\",\n \"author\": \"Tim Suchanek <suchanek@prisma.io>\",\n \"prisma\": {\n \"enginesVersion\": \"c2990dca591cba766e3b7ef5d9e8a84796e47ab7\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/prisma/engines-wrapper.git\",\n \"directory\": \"packages/engines-version\"\n },\n \"devDependencies\": {\n \"@types/node\": \"18.19.76\",\n \"typescript\": \"4.9.5\"\n },\n \"files\": [\n \"index.js\",\n \"index.d.ts\"\n ],\n \"scripts\": {\n \"build\": \"tsc -d\"\n }\n}", "type Listener = (...args: any[]) => void\n\nexport class EventEmitter {\n private events: Record<string, Listener[]> = {}\n\n on(event: string, listener: Listener) {\n if (!this.events[event]) {\n this.events[event] = []\n }\n\n this.events[event].push(listener)\n\n return this\n }\n\n emit(event: string, ...args: any[]) {\n if (!this.events[event]) {\n return false\n }\n\n this.events[event].forEach((listener) => {\n listener(...args)\n })\n\n return true\n }\n}\n\n/**\n * A poor man's shim for the \"events\" module\n */\nconst events = {\n EventEmitter,\n}\n\nexport default events\n", "import * as Extensions from './core/extensions'\nimport * as Public from './core/public'\nimport * as Types from './core/types'\n\nexport { type Types }\nexport { Extensions }\nexport { Public }\n\nexport { type JsonBatchQuery, type JsonQuery } from './core/engines'\nexport { PrismaClientInitializationError } from './core/errors/PrismaClientInitializationError'\nexport { PrismaClientKnownRequestError } from './core/errors/PrismaClientKnownRequestError'\nexport { PrismaClientRustPanicError } from './core/errors/PrismaClientRustPanicError'\nexport { PrismaClientUnknownRequestError } from './core/errors/PrismaClientUnknownRequestError'\nexport { PrismaClientValidationError } from './core/errors/PrismaClientValidationError'\nexport { serializeJsonQuery } from './core/jsonProtocol/serializeJsonQuery'\nexport {\n type Metric,\n type MetricHistogram,\n type MetricHistogramBucket,\n type Metrics,\n MetricsClient,\n} from './core/metrics/MetricsClient'\nexport { createParam } from './core/model/Param'\nexport { defineDmmfProperty } from './core/runtimeDataModel'\nexport type * from './core/types/exported'\nexport type { ITXClientDenyList } from './core/types/exported/itxClientDenyList'\nexport { objectEnumValues } from './core/types/exported/ObjectEnums'\nexport { skip } from './core/types/exported/Skip'\nexport { makeTypedQueryFactory } from './core/types/exported/TypedSql'\nexport type { PrismaClientOptions } from './getPrismaClient'\nexport { getPrismaClient } from './getPrismaClient'\nexport { makeStrictEnum } from './strictEnum'\nexport { deserializeRawResult } from './utils/deserializeRawResults'\nexport { getRuntime } from './utils/getRuntime'\nexport { warnEnvConflicts } from './warnEnvConflicts'\nexport {\n type BaseDMMF,\n dmmfToRuntimeDataModel,\n type GetPrismaClientConfig,\n type Operation,\n type RuntimeDataModel,\n} from '@prisma/client-common'\nexport { deserializeJsonResponse } from '@prisma/client-engine-runtime'\nexport { Debug } from '@prisma/debug'\nexport * as DMMF from '@prisma/dmmf'\nexport type { SqlDriverAdapterFactory } from '@prisma/driver-adapter-utils'\nexport { warnOnce } from '@prisma/internals'\nexport { default as Decimal } from 'decimal.js'\nexport type { RawValue, Value } from 'sql-template-tag'\nexport { empty, join, raw, Sql, default as sqltag } from 'sql-template-tag'\n", "import { defineExtension } from './defineExtension'\nimport { getExtensionContext } from './getExtensionContext'\n\nexport { defineExtension }\nexport { getExtensionContext }\n", "import { Client } from '../../getPrismaClient'\nimport { ExtensionArgs } from '../types/exported/ExtensionArgs'\n\nexport function defineExtension(ext: ExtensionArgs | ((client: Client) => Client)) {\n if (typeof ext === 'function') {\n return ext\n }\n\n return (client: Client) => client.$extends(ext)\n}\n", "/*\n * Because we use a symbol to store the context, we need to merge the context\n * with the original this type. We manage the context via `getExtensionContext`\n * to circumvent the limitations of `this` inference in TS, while also providing\n * a unified API for context management in generic and non-generic extensions.\n */\n\n/* eslint-disable prettier/prettier */\nexport type Context<T> = T extends { [K: symbol]: { ctx: infer C } }\n ? C &\n T & {\n /**\n * @deprecated Use `$name` instead.\n */\n name?: string\n $name?: string\n $parent?: unknown\n }\n : T & {\n /**\n * @deprecated Use `$name` instead.\n */\n name?: string\n $name?: string\n $parent?: unknown\n }\n\nexport function getExtensionContext<T>(that: T) {\n return that as any as Context<T>\n}\n", "import { validator } from './validator'\n\n/*\n * /!\\ These exports are exposed to the user. Proceed with caution.\n *\n * TODO: Move more hardcoded utils from generation into here\n */\n\nexport { validator }\n", "import { Args, Operation } from '../types/exported/Public'\nimport { Exact } from '../types/exported/Utils'\n\nexport function validator<V>(): <S>(select: Exact<S, V>) => S\nexport function validator<C, M extends Exclude<keyof C, `$${string}`>, O extends keyof C[M] & Operation>(\n client: C,\n model: M,\n operation: O,\n): <S>(select: Exact<S, Args<C[M], O>>) => S\nexport function validator<\n C,\n M extends Exclude<keyof C, `$${string}`>,\n O extends keyof C[M] & Operation,\n P extends keyof Args<C[M], O>,\n>(client: C, model: M, operation: O, prop: P): <S>(select: Exact<S, Args<C[M], O>[P]>) => S\nexport function validator(..._args: any[]) {\n return (args: any) => args\n}\n", "import { setClassName } from '@prisma/internals'\n\nexport class PrismaClientInitializationError extends Error {\n clientVersion: string\n errorCode?: string\n retryable?: boolean\n\n constructor(message: string, clientVersion: string, errorCode?: string) {\n super(message)\n this.name = 'PrismaClientInitializationError'\n\n this.clientVersion = clientVersion\n this.errorCode = errorCode\n Error.captureStackTrace(PrismaClientInitializationError)\n }\n get [Symbol.toStringTag]() {\n return 'PrismaClientInitializationError'\n }\n}\n\nsetClassName(PrismaClientInitializationError, 'PrismaClientInitializationError')\n", "export { checkUnsupportedDataProxy } from './cli/checkUnsupportedDataProxy'\nexport { checkUnsupportedSchemaEngineWasm } from './cli/checkUnsupportedSchemaEngineWasm'\nexport { type DirectoryConfig, inferDirectoryConfig } from './cli/directoryConfig'\nexport { getGeneratorSuccessMessage } from './cli/getGeneratorSuccessMessage'\nexport {\n type GetSchemaOptions,\n getSchemaWithPath,\n getSchemaWithPathOptional,\n printSchemaLoadedMessage,\n} from './cli/getSchema'\nexport { getTypescriptVersion } from './cli/getTypescriptVersion'\nexport { getCLIPathHash, getProjectHash } from './cli/hashes'\nexport { unknownCommand } from './cli/Help'\nexport { HelpError } from './cli/Help'\nexport { loadSchemaContext, processSchemaResult, type SchemaContext } from './cli/schemaContext'\nexport type {\n Command,\n Commands,\n CompiledGeneratorDefinition,\n Dictionary,\n GeneratorConfig,\n GeneratorDefinition,\n GeneratorDefinitionWithPackage,\n GeneratorFunction,\n GeneratorOptions,\n} from './cli/types'\nexport { arg, format, isError } from './cli/utils'\nexport { ClientEngineType, getClientEngineType } from './client/getClientEngineType'\nexport { credentialsToUri, protocolToConnectorType, uriToCredentials } from './convertCredentials'\nexport * from './engine-commands'\nexport { resolveUrl } from './engine-commands/getConfig'\nexport { relativizePathInPSLError } from './engine-commands/relativizePathInPSLError'\nexport { Generator } from './Generator'\nexport {\n type GeneratorRegistry,\n type GeneratorRegistryEntry,\n getGenerator,\n getGenerators,\n} from './get-generators/getGenerators'\nexport { fixBinaryTargets } from './get-generators/utils/fixBinaryTargets'\nexport { printGeneratorConfig } from './get-generators/utils/printGeneratorConfig'\nexport { getPackedPackage } from './getPackedPackage'\nexport { highlightDatamodel, highlightSql, highlightTS } from './highlight/highlight'\nexport * as logger from './logger'\nexport type { MigrateTypes } from './migrateTypes'\nexport { ErrorArea, getWasmError, isRustPanic, isWasmPanic, RustPanic } from './panic'\nexport { BinaryType } from './resolveBinary'\nexport { engineEnvVarMap, resolveBinary } from './resolveBinary'\nexport { resolvePkg } from './resolvePkg'\nexport type { SchemaEngineLogLine } from './schemaEngineCommands'\nexport { canConnectToDatabase, createDatabase, dropDatabase } from './schemaEngineCommands'\nexport { SchemaEngineExitCode } from './schemaEngineCommands'\nexport { sendPanic } from './sendPanic'\nexport * from './tracing/types'\nexport type { DatabaseCredentials } from './types'\nexport { assertAlways } from './utils/assertAlways'\nexport { assertNever } from './utils/assertNever'\nexport { binaryTargetRegex } from './utils/binaryTargetRegex'\nexport { default as byline } from './utils/byline'\nexport { callOnceOnSuccess } from './utils/callOnce'\nexport { canPrompt } from './utils/canPrompt'\nexport { chmodPlusX } from './utils/chmodPlusX'\nexport { locateLocalCloudflareD1 } from './utils/cloudflareD1'\nexport { drawBox } from './utils/drawBox'\nexport { extractPreviewFeatures } from './utils/extractPreviewFeatures'\nexport { formatms } from './utils/formatms'\nexport { formatTable } from './utils/formatTable'\nexport * as fsFunctional from './utils/fs-functional'\nexport * as fsUtils from './utils/fs-utils'\nexport { getCommandWithExecutor } from './utils/getCommandWithExecutor'\nexport { getEnvPaths } from './utils/getEnvPaths'\nexport { getMigrateConfigDir } from './utils/getMigrateConfigDir'\nexport { version } from './utils/getVersionFromPackageJson'\nexport { handleLibraryLoadingErrors } from './utils/handleEngineLoadingErrors'\nexport { handlePanic } from './utils/handlePanic'\nexport { hasOwnProperty } from './utils/hasOwnProperty'\nexport { isCi } from './utils/isCi'\nexport { isCurrentBinInstalledGlobally } from './utils/isCurrentBinInstalledGlobally'\nexport { isInContainer } from './utils/isInContainer'\nexport { isInNpmLifecycleHook } from './utils/isInNpmLifecycleHook'\nexport { isInteractive } from './utils/isInteractive'\nexport { isPromiseLike } from './utils/isPromiseLike'\nexport { isValidJsIdentifier } from './utils/isValidJsIdentifier'\nexport { keyBy } from './utils/keyBy'\nexport { link } from './utils/link'\nexport { loadLibrary as load } from './utils/load'\nexport { loadEnvFile } from './utils/loadEnvFile'\nexport { mapObjectValues } from './utils/mapObjectValues'\nexport { maskSchema } from './utils/maskSchema'\nexport { maxBy, maxWithComparator } from './utils/max'\nexport { maybeInGitHook } from './utils/maybeInGitHook'\nexport { missingGeneratorMessage } from './utils/missingGeneratorMessage'\nexport { parseAWSNodejsRuntimeEnvVarVersion } from './utils/parseAWSNodejsRuntimeEnvVarVersion'\nexport { parseBinaryTargetsEnvValue, parseEnvValue } from './utils/parseEnvValue'\nexport { longestCommonPathPrefix, pathToPosix } from './utils/path'\nexport { pick } from './utils/pick'\nexport { printConfigWarnings } from './utils/printConfigWarnings'\nexport {\n isPrismaPostgres,\n isPrismaPostgresDev,\n PRISMA_POSTGRES_PROTOCOL,\n PRISMA_POSTGRES_PROVIDER,\n} from './utils/prismaPostgres'\nexport { extractSchemaContent, type SchemaFileInput } from './utils/schemaFileInput'\nexport { type MultipleSchemas } from './utils/schemaFileInput'\nexport { serializeQueryEngineName } from './utils/serializeQueryEngineName'\nexport { setClassName } from './utils/setClassName'\nexport { toSchemasContainer, toSchemasWithConfigDir } from './utils/toSchemasContainer'\nexport { type LoadedEnv, tryLoadEnvs } from './utils/tryLoadEnvs'\nexport { vercelPkgPathRegex } from './utils/vercelPkgPathRegex'\nexport { warnOnce } from './warnOnce'\nexport * as wasm from './wasm'\nexport { wasmSchemaEngineLoader } from './WasmSchemaEngineLoader'\nexport type { EnvPaths } from '@prisma/generator'\nexport type { BinaryTarget } from '@prisma/get-platform'\nexport { getBinaryTargetForCurrentPlatform, getNodeAPIName } from '@prisma/get-platform'\nexport type { GetSchemaResult } from '@prisma/schema-files-loader'\n", "let FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM, isTTY=true;\nif (typeof process !== 'undefined') {\n\t({ FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM } = process.env || {});\n\tisTTY = process.stdout && process.stdout.isTTY;\n}\n\nexport const $ = {\n\tenabled: !NODE_DISABLE_COLORS && NO_COLOR == null && TERM !== 'dumb' && (\n\t\tFORCE_COLOR != null && FORCE_COLOR !== '0' || isTTY\n\t)\n}\n\nfunction init(x, y) {\n\tlet rgx = new RegExp(`\\\\x1b\\\\[${y}m`, 'g');\n\tlet open = `\\x1b[${x}m`, close = `\\x1b[${y}m`;\n\n\treturn function (txt) {\n\t\tif (!$.enabled || txt == null) return txt;\n\t\treturn open + (!!~(''+txt).indexOf(close) ? txt.replace(rgx, close + open) : txt) + close;\n\t};\n}\n\n// modifiers\nexport const reset = init(0, 0);\nexport const bold = init(1, 22);\nexport const dim = init(2, 22);\nexport const italic = init(3, 23);\nexport const underline = init(4, 24);\nexport const inverse = init(7, 27);\nexport const hidden = init(8, 28);\nexport const strikethrough = init(9, 29);\n\n// colors\nexport const black = init(30, 39);\nexport const red = init(31, 39);\nexport const green = init(32, 39);\nexport const yellow = init(33, 39);\nexport const blue = init(34, 39);\nexport const magenta = init(35, 39);\nexport const cyan = init(36, 39);\nexport const white = init(37, 39);\nexport const gray = init(90, 39);\nexport const grey = init(90, 39);\n\n// background colors\nexport const bgBlack = init(40, 49);\nexport const bgRed = init(41, 49);\nexport const bgGreen = init(42, 49);\nexport const bgYellow = init(43, 49);\nexport const bgBlue = init(44, 49);\nexport const bgMagenta = init(45, 49);\nexport const bgCyan = init(46, 49);\nexport const bgWhite = init(47, 49);\n", "import * as kleur from 'kleur/colors'\nimport { bold } from 'kleur/colors'\n\nconst MAX_ARGS_HISTORY = 100\nconst COLORS = ['green', 'yellow', 'blue', 'magenta', 'cyan', 'red']\n\nconst argsHistory: [namespace: string, ...unknown[]][] = []\nlet lastTimestamp = Date.now()\nlet lastColor = 0\n\nconst processEnv = typeof process !== 'undefined' ? process.env : {}\n\nglobalThis.DEBUG ??= processEnv.DEBUG ?? ''\nglobalThis.DEBUG_COLORS ??= processEnv.DEBUG_COLORS ? processEnv.DEBUG_COLORS === 'true' : true\n\n/**\n * Top-level utilities to configure the debug module.\n *\n * @example\n * ```ts\n * import Debug from '@prisma/debug'\n * Debug.enable('prisma:client')\n * const debug = Debug('prisma:client')\n * debug('Hello World')\n * ```\n */\nconst topProps = {\n enable(namespace: any) {\n if (typeof namespace === 'string') {\n globalThis.DEBUG = namespace\n }\n },\n disable() {\n const prev = globalThis.DEBUG\n globalThis.DEBUG = ''\n return prev\n },\n // this is the core logic to check if logging should happen or not\n enabled(namespace: string) {\n // these are the namespaces that we are listening to in DEBUG=...\n const listenedNamespaces: string[] = globalThis.DEBUG.split(',').map((s: string) => {\n return s.replace(/[.+?^${}()|[\\]\\\\]/g, '\\\\$&') // escape regex except \"*\"\n })\n\n // we take incoming namespaces and check then against listened\n const isListened = listenedNamespaces.some((listenedNamespace) => {\n if (listenedNamespace === '' || listenedNamespace[0] === '-') return false\n\n return namespace.match(RegExp(listenedNamespace.split('*').join('.*') + '$'))\n })\n\n // we take incoming namespaces and check then against excluded\n const isExcluded = listenedNamespaces.some((listenedNamespace) => {\n if (listenedNamespace === '' || listenedNamespace[0] !== '-') return false\n\n return namespace.match(RegExp(listenedNamespace.slice(1).split('*').join('.*') + '$'))\n })\n\n return isListened && !isExcluded\n },\n log: (...args: string[]) => {\n const [namespace, format, ...rest] = args\n // Note: `console.warn` / `console.log` use `util.format` internally, so they can handle\n // `printf`-style string interpolation.\n const logWithFormatting = console.warn ?? console.log\n\n // console only formats first arg, concat ns+format\n logWithFormatting(`${namespace} ${format}`, ...rest)\n },\n formatters: {}, // not implemented\n}\n\n/**\n * Create a new debug instance with the given namespace.\n *\n * @example\n * ```ts\n * import Debug from '@prisma/debug'\n * const debug = Debug('prisma:client')\n * debug('Hello World')\n * ```\n */\nfunction debugCreate(namespace: string) {\n const instanceProps = {\n color: COLORS[lastColor++ % COLORS.length],\n enabled: topProps.enabled(namespace),\n namespace: namespace,\n log: topProps.log,\n extend: () => {}, // not implemented\n }\n\n const debugCall = (...args: any[]) => {\n const { enabled, namespace, color, log } = instanceProps\n\n // we push the args to our history of args\n if (args.length !== 0) {\n argsHistory.push([namespace, ...args])\n }\n\n // if it is too big, then we remove some\n if (argsHistory.length > MAX_ARGS_HISTORY) {\n argsHistory.shift()\n }\n\n if (topProps.enabled(namespace) || enabled) {\n const stringArgs = args.map((arg) => {\n if (typeof arg === 'string') {\n return arg\n }\n\n return safeStringify(arg)\n })\n\n const ms = `+${Date.now() - lastTimestamp}ms`\n lastTimestamp = Date.now()\n\n if (globalThis.DEBUG_COLORS) {\n log(kleur[color](bold(namespace)), ...stringArgs, kleur[color](ms))\n } else {\n log(namespace, ...stringArgs, ms)\n }\n }\n }\n\n return new Proxy(debugCall, {\n get: (_, prop) => instanceProps[prop],\n set: (_, prop, value) => (instanceProps[prop] = value),\n }) as typeof debugCall & typeof instanceProps\n}\n\nconst Debug = new Proxy(debugCreate, {\n get: (_, prop) => topProps[prop],\n set: (_, prop, value) => (topProps[prop] = value),\n}) as typeof debugCreate & typeof topProps\n\nfunction safeStringify(value: any, indent = 2) {\n const cache = new Set<any>()\n\n return JSON.stringify(\n value,\n (key, value) => {\n if (typeof value === 'object' && value !== null) {\n if (cache.has(value)) {\n return `[Circular *]`\n }\n\n cache.add(value)\n } else if (typeof value === 'bigint') {\n return value.toString()\n }\n\n return value\n },\n indent,\n )\n}\n\n/**\n * We can get the logs for all the last {@link MAX_ARGS_HISTORY} ${@link debugCall} that\n * have happened in the different packages. Useful to generate error report links.\n * @see https://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-a-url-in-different-browsers\n * @param numChars\n * @returns\n */\nexport function getLogs(numChars = 7500): string {\n const logs = argsHistory\n .map(([namespace, ...args]) => {\n return `${namespace} ${args\n .map((arg) => {\n if (typeof arg === 'string') {\n return arg\n } else {\n return JSON.stringify(arg)\n }\n })\n .join(' ')}`\n })\n .join('\\n')\n\n if (logs.length < numChars) {\n return logs\n }\n\n return logs.slice(-numChars)\n}\n\nexport function clearLogs() {\n argsHistory.length = 0\n}\n\nexport { Debug }\nexport default Debug\n", "export { assertNodeAPISupported } from './assertNodeAPISupported'\nexport { type BinaryTarget, binaryTargets } from './binaryTargets'\nexport { getNodeAPIName } from './getNodeAPIName'\nexport type { PlatformInfo } from './getPlatform'\nexport { getBinaryTargetForCurrentPlatform, getos, getPlatformInfo } from './getPlatform'\nexport { link } from './link'\nexport * from './test-utils'\n", "export type BinaryTarget =\n | 'native'\n | 'darwin'\n | 'darwin-arm64'\n | 'debian-openssl-1.0.x'\n | 'debian-openssl-1.1.x'\n | 'debian-openssl-3.0.x'\n | 'rhel-openssl-1.0.x'\n | 'rhel-openssl-1.1.x'\n | 'rhel-openssl-3.0.x'\n | 'linux-arm64-openssl-1.1.x'\n | 'linux-arm64-openssl-1.0.x'\n | 'linux-arm64-openssl-3.0.x'\n | 'linux-arm-openssl-1.1.x'\n | 'linux-arm-openssl-1.0.x'\n | 'linux-arm-openssl-3.0.x'\n | 'linux-musl'\n | 'linux-musl-openssl-3.0.x'\n | 'linux-musl-arm64-openssl-1.1.x'\n | 'linux-musl-arm64-openssl-3.0.x'\n | 'linux-nixos'\n | 'linux-static-x64'\n | 'linux-static-arm64'\n | 'windows'\n | 'freebsd11'\n | 'freebsd12'\n | 'freebsd13'\n | 'freebsd14'\n | 'freebsd15'\n | 'openbsd'\n | 'netbsd'\n | 'arm'\n\nexport const binaryTargets: BinaryTarget[] = [\n 'darwin',\n 'darwin-arm64',\n 'debian-openssl-1.0.x',\n 'debian-openssl-1.1.x',\n 'debian-openssl-3.0.x',\n 'rhel-openssl-1.0.x',\n 'rhel-openssl-1.1.x',\n 'rhel-openssl-3.0.x',\n 'linux-arm64-openssl-1.1.x',\n 'linux-arm64-openssl-1.0.x',\n 'linux-arm64-openssl-3.0.x',\n 'linux-arm-openssl-1.1.x',\n 'linux-arm-openssl-1.0.x',\n 'linux-arm-openssl-3.0.x',\n 'linux-musl',\n 'linux-musl-openssl-3.0.x',\n 'linux-musl-arm64-openssl-1.1.x',\n 'linux-musl-arm64-openssl-3.0.x',\n 'linux-nixos',\n 'linux-static-x64',\n 'linux-static-arm64',\n 'windows',\n 'freebsd11',\n 'freebsd12',\n 'freebsd13',\n 'freebsd14',\n 'freebsd15',\n 'openbsd',\n 'netbsd',\n 'arm',\n]\n", "// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst packageJson = require('../../package.json')\n\nexport const version: string = packageJson.version\n", "import type { GeneratorConfig } from '@prisma/generator'\n\nexport enum ClientEngineType {\n Library = 'library',\n Binary = 'binary',\n Client = 'client',\n}\n\nexport function getClientEngineType(generatorConfig?: GeneratorConfig): ClientEngineType {\n const engineTypeFromEnvVar = getEngineTypeFromEnvVar()\n if (engineTypeFromEnvVar) return engineTypeFromEnvVar\n if (generatorConfig?.config.engineType === ClientEngineType.Library) {\n return ClientEngineType.Library\n } else if (generatorConfig?.config.engineType === ClientEngineType.Binary) {\n return ClientEngineType.Binary\n } else if (generatorConfig?.config.engineType === ClientEngineType.Client) {\n return ClientEngineType.Client\n } else {\n return getDefaultEngineType()\n }\n}\n\nfunction getEngineTypeFromEnvVar() {\n const engineType = process.env.PRISMA_CLIENT_ENGINE_TYPE\n if (engineType === ClientEngineType.Library) {\n return ClientEngineType.Library\n } else if (engineType === ClientEngineType.Binary) {\n return ClientEngineType.Binary\n } else if (engineType === ClientEngineType.Client) {\n return ClientEngineType.Client\n } else {\n return undefined\n }\n}\n\nfunction getDefaultEngineType(): ClientEngineType {\n return ClientEngineType.Library\n}\n", "export { bindAdapter, bindMigrationAwareSqlAdapterFactory, bindSqlAdapterFactory } from './binder'\nexport { ColumnTypeEnum } from './const'\nexport { Debug } from './debug'\nexport { DriverAdapterError, isDriverAdapterError } from './error'\nexport * from './mock'\nexport { err, ok, type Result } from './result'\nexport type {\n ArgScalarType,\n ArgType,\n Arity,\n ColumnType,\n ConnectionInfo,\n DriverAdapterFactory,\n Error,\n ErrorCapturingSqlDriverAdapter,\n ErrorCapturingSqlDriverAdapterFactory,\n ErrorCapturingSqlMigrationAwareDriverAdapterFactory,\n ErrorCapturingSqlQueryable,\n ErrorCapturingTransaction,\n ErrorRecord,\n ErrorRegistry,\n IsolationLevel,\n MappedError,\n OfficialDriverAdapterName,\n Provider,\n Queryable,\n ResultValue,\n SqlDriverAdapter,\n SqlDriverAdapterFactory,\n SqlMigrationAwareDriverAdapterFactory,\n SqlQuery,\n SqlQueryable,\n SqlResultSet,\n Transaction,\n TransactionOptions,\n} from './types'\n", "import { Debug } from './debug'\nimport { isDriverAdapterError } from './error'\nimport { err, ok, Result } from './result'\nimport type {\n ErrorCapturingSqlDriverAdapter,\n ErrorCapturingSqlDriverAdapterFactory,\n ErrorCapturingSqlMigrationAwareDriverAdapterFactory,\n ErrorCapturingTransaction,\n ErrorRecord,\n ErrorRegistry,\n SqlDriverAdapter,\n SqlDriverAdapterFactory,\n SqlMigrationAwareDriverAdapterFactory,\n Transaction,\n} from './types'\n\nconst debug = Debug('driver-adapter-utils')\n\nclass ErrorRegistryInternal implements ErrorRegistry {\n private registeredErrors: ErrorRecord[] = []\n\n consumeError(id: number): ErrorRecord | undefined {\n return this.registeredErrors[id]\n }\n\n registerNewError(error: unknown) {\n let i = 0\n while (this.registeredErrors[i] !== undefined) {\n i++\n }\n this.registeredErrors[i] = { error }\n return i\n }\n}\n\nfunction copySymbolsFromSource<S extends object, T extends object>(source: S, target: T) {\n const symbols = Object.getOwnPropertySymbols(source)\n const symbolObject = Object.fromEntries(symbols.map((symbol) => [symbol, true]))\n Object.assign(target, symbolObject)\n}\n\nexport const bindMigrationAwareSqlAdapterFactory = (\n adapterFactory: SqlMigrationAwareDriverAdapterFactory,\n): ErrorCapturingSqlMigrationAwareDriverAdapterFactory => {\n const errorRegistry = new ErrorRegistryInternal()\n\n const boundFactory: ErrorCapturingSqlMigrationAwareDriverAdapterFactory = {\n adapterName: adapterFactory.adapterName,\n provider: adapterFactory.provider,\n errorRegistry,\n connect: async (...args) => {\n const ctx = await wrapAsync(errorRegistry, adapterFactory.connect.bind(adapterFactory))(...args)\n return ctx.map((ctx) => bindAdapter(ctx, errorRegistry))\n },\n connectToShadowDb: async (...args) => {\n const ctx = await wrapAsync(errorRegistry, adapterFactory.connectToShadowDb.bind(adapterFactory))(...args)\n return ctx.map((ctx) => bindAdapter(ctx, errorRegistry))\n },\n }\n\n copySymbolsFromSource(adapterFactory, boundFactory)\n\n return boundFactory\n}\n\nexport const bindSqlAdapterFactory = (\n adapterFactory: SqlDriverAdapterFactory,\n): ErrorCapturingSqlDriverAdapterFactory => {\n const errorRegistry = new ErrorRegistryInternal()\n\n const boundFactory: ErrorCapturingSqlDriverAdapterFactory = {\n adapterName: adapterFactory.adapterName,\n provider: adapterFactory.provider,\n errorRegistry,\n connect: async (...args) => {\n const ctx = await wrapAsync(errorRegistry, adapterFactory.connect.bind(adapterFactory))(...args)\n return ctx.map((ctx) => bindAdapter(ctx, errorRegistry))\n },\n }\n\n copySymbolsFromSource(adapterFactory, boundFactory)\n\n return boundFactory\n}\n\n// *.bind(adapter) is required to preserve the `this` context of functions whose\n// execution is delegated to napi.rs.\nexport const bindAdapter = (\n adapter: SqlDriverAdapter,\n errorRegistry = new ErrorRegistryInternal(),\n): ErrorCapturingSqlDriverAdapter => {\n const boundAdapter: ErrorCapturingSqlDriverAdapter = {\n adapterName: adapter.adapterName,\n errorRegistry,\n queryRaw: wrapAsync(errorRegistry, adapter.queryRaw.bind(adapter)),\n executeRaw: wrapAsync(errorRegistry, adapter.executeRaw.bind(adapter)),\n executeScript: wrapAsync(errorRegistry, adapter.executeScript.bind(adapter)),\n dispose: wrapAsync(errorRegistry, adapter.dispose.bind(adapter)),\n provider: adapter.provider,\n startTransaction: async (...args) => {\n const ctx = await wrapAsync(errorRegistry, adapter.startTransaction.bind(adapter))(...args)\n return ctx.map((ctx) => bindTransaction(errorRegistry, ctx))\n },\n }\n\n if (adapter.getConnectionInfo) {\n boundAdapter.getConnectionInfo = wrapSync(errorRegistry, adapter.getConnectionInfo.bind(adapter))\n }\n\n return boundAdapter\n}\n\n// *.bind(transaction) is required to preserve the `this` context of functions whose\n// execution is delegated to napi.rs.\nconst bindTransaction = (errorRegistry: ErrorRegistryInternal, transaction: Transaction): ErrorCapturingTransaction => {\n return {\n adapterName: transaction.adapterName,\n provider: transaction.provider,\n options: transaction.options,\n queryRaw: wrapAsync(errorRegistry, transaction.queryRaw.bind(transaction)),\n executeRaw: wrapAsync(errorRegistry, transaction.executeRaw.bind(transaction)),\n commit: wrapAsync(errorRegistry, transaction.commit.bind(transaction)),\n rollback: wrapAsync(errorRegistry, transaction.rollback.bind(transaction)),\n }\n}\n\nfunction wrapAsync<A extends unknown[], R>(\n registry: ErrorRegistryInternal,\n fn: (...args: A) => Promise<R>,\n): (...args: A) => Promise<Result<R>> {\n return async (...args) => {\n try {\n return ok(await fn(...args))\n } catch (error) {\n debug('[error@wrapAsync]', error)\n\n // unwrap the cause of exceptions thrown by driver adapters if there is one\n if (isDriverAdapterError(error)) {\n return err(error.cause)\n }\n const id = registry.registerNewError(error)\n return err({ kind: 'GenericJs', id })\n }\n }\n}\n\nfunction wrapSync<A extends unknown[], R>(\n registry: ErrorRegistryInternal,\n fn: (...args: A) => R,\n): (...args: A) => Result<R> {\n return (...args) => {\n try {\n return ok(fn(...args))\n } catch (error) {\n debug('[error@wrapSync]', error)\n\n // unwrap the cause of exceptions thrown by driver adapters if there is one\n if (isDriverAdapterError(error)) {\n return err(error.cause)\n }\n const id = registry.registerNewError(error)\n return err({ kind: 'GenericJs', id })\n }\n }\n}\n", "import { Debug } from '@prisma/debug'\n\nexport { Debug }\nexport default Debug\n", "import { Error as ErrorObject } from './types'\n\nexport class DriverAdapterError extends Error {\n name = 'DriverAdapterError'\n cause: ErrorObject\n\n constructor(payload: ErrorObject) {\n super(typeof payload['message'] === 'string' ? payload['message'] : payload.kind)\n this.cause = payload\n }\n}\n\nexport function isDriverAdapterError(error: any): error is DriverAdapterError {\n return error['name'] === 'DriverAdapterError' && typeof error['cause'] === 'object'\n}\n", "import { Error } from './types'\n\nexport type Result<T> = {\n // common methods\n map<U>(fn: (value: T) => U): Result<U>\n flatMap<U>(fn: (value: T) => Result<U>): Result<U>\n} & (\n | {\n readonly ok: true\n readonly value: T\n }\n | {\n readonly ok: false\n readonly error: Error\n }\n)\n\nexport function ok<T>(value: T): Result<T> {\n return {\n ok: true,\n value,\n map(fn) {\n return ok(fn(value))\n },\n flatMap(fn) {\n return fn(value)\n },\n }\n}\n\nexport function err<T>(error: Error): Result<T> {\n return {\n ok: false,\n error,\n map() {\n return err(error)\n },\n flatMap() {\n return err(error)\n },\n }\n}\n", "import minIndent from 'min-indent';\n\nexport default function stripIndent(string) {\n\tconst indent = minIndent(string);\n\n\tif (indent === 0) {\n\t\treturn string;\n\t}\n\n\tconst regex = new RegExp(`^[ \\\\t]{${indent}}`, 'gm');\n\n\treturn string.replace(regex, '');\n}\n", "export const PRISMA_POSTGRES_PROVIDER = 'prisma+postgres'\n\nexport const PRISMA_POSTGRES_PROTOCOL = `${PRISMA_POSTGRES_PROVIDER}:`\n\ndeclare const prismaPostgresBrand: unique symbol\ndeclare const prismaPostgresDevBrand: unique symbol\n\nexport type PrismaPostgresUrl<T extends string | URL> = T & {\n readonly [prismaPostgresBrand]: true\n}\n\nexport type PrismaPostgresDevUrl<T extends string | URL> = PrismaPostgresUrl<T> & {\n readonly [prismaPostgresDevBrand]: true\n}\n\nexport function isPrismaPostgres<T extends string | URL>(\n connectionString?: T,\n): connectionString is PrismaPostgresUrl<T> {\n return connectionString?.toString().startsWith(`${PRISMA_POSTGRES_PROTOCOL}//`) ?? false\n}\n\nexport function isPrismaPostgresDev<T extends string | URL>(\n connectionString?: T,\n): connectionString is PrismaPostgresDevUrl<T> {\n if (!isPrismaPostgres(connectionString)) {\n return false\n }\n\n const { host } = new URL(connectionString)\n\n return host.includes('localhost') || host.includes('127.0.0.1') || host.includes('[::1]')\n}\n", "import { blue, cyan, red, yellow } from 'kleur/colors'\n\nexport const tags = {\n error: red('prisma:error'),\n warn: yellow('prisma:warn'),\n info: cyan('prisma:info'),\n query: blue('prisma:query'),\n}\nexport const should = {\n warn: () => !process.env.PRISMA_DISABLE_WARNINGS,\n}\nexport function log(...data: any[]) {\n console.log(...data)\n}\nexport function warn(message: any, ...optionalParams: any[]) {\n if (should.warn()) {\n console.warn(`${tags.warn} ${message}`, ...optionalParams)\n }\n}\nexport function info(message: any, ...optionalParams: any[]) {\n console.info(`${tags.info} ${message}`, ...optionalParams)\n}\nexport function error(message: any, ...optionalParams: any[]) {\n console.error(`${tags.error} ${message}`, ...optionalParams)\n}\nexport function query(message: any, ...optionalParams: any[]) {\n console.log(`${tags.query} ${message}`, ...optionalParams)\n}\n", "/**\n * Assertion function for internal consistency checks that should never fail\n * in the correct code. It's purpose is pretty much:\n * - ensuring we get more helpful error message if invariant does not hold due to a bug\n * - have a better way of dealing with overly broad type definition than typecasting to `any`\n * or more narrow type.\n *\n * This function should be for assertions only on the values where we control both the input and the output: engine to client, generator to generated client, etc.\n * Don't use this function for assertion for any external input.\n *\n * @param condition\n * @param message\n */\nexport function assertAlways(condition: unknown, message: string): asserts condition {\n if (!condition) {\n throw new Error(\n `${message}. This should never happen. If you see this error, please, open an issue at https://pris.ly/prisma-prisma-bug-report`,\n )\n }\n}\n", "/**\n * Utility function to ensure exhaustive checks for union types.\n *\n * @example\n * ```ts\n * declare const fruit: 'Apple' | 'Orange'\n *\n * switch (fruit) {\n * case 'Apple:\n * // do apple things\n * break;\n * case 'Orange:\n * // do orange things\n * break;\n * default:\n * // in case `fruit` type will expand in the future,\n * // we'll get a compile-time error here, listing all unhandled\n * // cases\n * assertNever(fruit, 'Unknown fruit')\n * }\n * ```\n * @param arg variable of the any union type. By the time `assertNever` is called\n * all possible cases of this union must already be handled\n * @param errorMessage error message to throw in runtime. Normally, should never happen\n * unless compile-time check is skipped\n */\nexport function assertNever(arg: never, errorMessage: string): never {\n throw new Error(errorMessage)\n}\n", "import ansiRegex from 'ansi-regex';\n\nconst regex = ansiRegex();\n\nexport default function stripAnsi(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\t// Even though the regex is global, we don't need to reset the `.lastIndex`\n\t// because unlike `.exec()` and `.test()`, `.replace()` does it automatically\n\t// and doing it manually has a performance penalty.\n\treturn string.replace(regex, '');\n}\n", "export default function ansiRegex({onlyFirst = false} = {}) {\n\t// Valid string terminator sequences are BEL, ESC\\, and 0x9c\n\tconst ST = '(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)';\n\tconst pattern = [\n\t\t`[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?${ST})`,\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))',\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n", "import path from 'path'\n\n/**\n * Normalize `filePath` to use forward slashes as a separator. `filePath` is\n * treated as a path specific to the current platform, so backslashes will only\n * be replaced with forward slashes on Windows. On other platforms, where a\n * backslash is a valid filename character, it will be treated as such and will\n * not be replaced.\n */\nexport function pathToPosix(filePath: string): string {\n if (path.sep === path.posix.sep) {\n return filePath\n }\n return filePath.split(path.sep).join(path.posix.sep)\n}\n\n/**\n * Returns the longest common path ancestor of the two paths (which may also be equal to one or both of them).\n * If they don't share a common ancestor (which may be the case on Windows if both paths are on different disks),\n * returns `undefined`.\n */\nexport function longestCommonPathPrefix(pathA: string, pathB: string): string | undefined {\n if (!path.isAbsolute(pathA) || !path.isAbsolute(pathB)) {\n throw new Error('longestCommonPathPrefix expects absolute paths')\n }\n\n if (process.platform === 'win32' && (pathA.startsWith('\\\\\\\\') || pathB.startsWith('\\\\\\\\'))) {\n // Make both paths namespaced if at least one of them is.\n pathA = path.toNamespacedPath(pathA)\n pathB = path.toNamespacedPath(pathB)\n }\n\n const commonPrefix = longestCommonPrefix(pathA.split(path.sep), pathB.split(path.sep)).join(path.sep)\n\n if (commonPrefix === '') {\n return process.platform === 'win32' ? undefined : '/'\n }\n\n if (process.platform === 'win32' && ['\\\\', '\\\\\\\\?', '\\\\\\\\.'].includes(commonPrefix)) {\n return undefined\n }\n\n if (process.platform === 'win32' && commonPrefix.endsWith(':')) {\n // Disk specifier without a backslash at the end is not an absolute path on windows,\n // it refers to current working directory on that disk.\n return commonPrefix + '\\\\'\n }\n\n return commonPrefix\n}\n\nfunction longestCommonPrefix<T>(sequenceA: T[], sequenceB: T[]): T[] {\n const maxLen = Math.min(sequenceA.length, sequenceB.length)\n let sliceLen = 0\n\n while (sliceLen <= maxLen && sequenceA[sliceLen] === sequenceB[sliceLen]) {\n sliceLen++\n }\n\n return sequenceA.slice(0, sliceLen)\n}\n", "export function hasOwnProperty(object: object, key: PropertyKey): boolean {\n return Object.prototype.hasOwnProperty.call(object, key)\n}\n", "export function mapObjectValues<K extends PropertyKey, T, U>(\n object: Record<K, T>,\n mapper: (value: T, key: K) => U,\n): Record<K, U> {\n const result = {} as Record<K, U>\n\n for (const key of Object.keys(object)) {\n result[key] = mapper(object[key] as T, key as K)\n }\n\n return result\n}\n", "/**\n * Accepts an array and comparator function (similar to Array.prototype.sort)\n * and returns max element of that array, ordered with that comparator.\n * Functionally, equivalent of items.sort(comparator).at(-1), but performed non-destructively\n * in O(n)\n * @param items\n * @param comparator callback specifying the relative order of two items. See `Array.prototype.sort`\n * @returns\n */\nexport function maxWithComparator<T>(items: T[], comparator: (a: T, b: T) => number): T | undefined {\n if (items.length === 0) {\n return undefined\n }\n let result = items[0]\n\n for (let i = 1; i < items.length; i++) {\n const compareValue = comparator(result, items[i])\n // comparator returning negative number means that b>a\n if (compareValue < 0) {\n result = items[i]\n }\n }\n return result\n}\n\nexport function maxBy<T>(items: T[], callback: (item: T) => number): T | undefined {\n return maxWithComparator(items, (a, b) => callback(a) - callback(b))\n}\n", "/**\n * Used for preserving class names for minified class instances\n * Useful for error objects and other classes where public name\n * actually matters\n *\n * @param classObject\n * @param name\n */\nexport function setClassName(classObject: Function, name: string) {\n Object.defineProperty(classObject, 'name', {\n value: name,\n configurable: true,\n })\n}\n", "import { warn } from './logger'\n\nconst alreadyWarned = new Set()\n\nexport const warnOnce = (key: string, message: string, ...args: unknown[]) => {\n if (!alreadyWarned.has(key)) {\n alreadyWarned.add(key)\n warn(message, ...args)\n }\n}\n", "import { setClassName } from '@prisma/internals'\n\nimport { ErrorWithBatchIndex } from './ErrorWithBatchIndex'\n\ntype KnownErrorParams = {\n code: string\n clientVersion: string\n meta?: Record<string, unknown>\n batchRequestIdx?: number\n}\n\nexport class PrismaClientKnownRequestError extends Error implements ErrorWithBatchIndex {\n code: string\n meta?: Record<string, unknown>\n clientVersion: string\n batchRequestIdx?: number\n\n constructor(message: string, { code, clientVersion, meta, batchRequestIdx }: KnownErrorParams) {\n super(message)\n this.name = 'PrismaClientKnownRequestError'\n\n this.code = code\n this.clientVersion = clientVersion\n this.meta = meta\n Object.defineProperty(this, 'batchRequestIdx', {\n value: batchRequestIdx,\n enumerable: false,\n writable: true,\n })\n }\n get [Symbol.toStringTag]() {\n return 'PrismaClientKnownRequestError'\n }\n}\n\nsetClassName(PrismaClientKnownRequestError, 'PrismaClientKnownRequestError')\n", "import { setClassName } from '@prisma/internals'\n\nexport class PrismaClientRustPanicError extends Error {\n clientVersion: string\n\n constructor(message: string, clientVersion: string) {\n super(message)\n this.name = 'PrismaClientRustPanicError'\n\n this.clientVersion = clientVersion\n }\n get [Symbol.toStringTag]() {\n return 'PrismaClientRustPanicError'\n }\n}\n\nsetClassName(PrismaClientRustPanicError, 'PrismaClientRustPanicError')\n", "import { setClassName } from '@prisma/internals'\n\nimport { ErrorWithBatchIndex } from './ErrorWithBatchIndex'\n\ntype UnknownErrorParams = {\n clientVersion: string\n batchRequestIdx?: number\n}\n\nexport class PrismaClientUnknownRequestError extends Error implements ErrorWithBatchIndex {\n clientVersion: string\n batchRequestIdx?: number\n\n constructor(message: string, { clientVersion, batchRequestIdx }: UnknownErrorParams) {\n super(message)\n this.name = 'PrismaClientUnknownRequestError'\n\n this.clientVersion = clientVersion\n Object.defineProperty(this, 'batchRequestIdx', {\n value: batchRequestIdx,\n writable: true,\n enumerable: false,\n })\n }\n get [Symbol.toStringTag]() {\n return 'PrismaClientUnknownRequestError'\n }\n}\n\nsetClassName(PrismaClientUnknownRequestError, 'PrismaClientUnknownRequestError')\n", "import { setClassName } from '@prisma/internals'\n\ntype Options = {\n clientVersion: string\n}\nexport class PrismaClientValidationError extends Error {\n name = 'PrismaClientValidationError'\n clientVersion: string\n\n constructor(message: string, { clientVersion }: Options) {\n super(message)\n this.clientVersion = clientVersion\n }\n\n get [Symbol.toStringTag]() {\n return 'PrismaClientValidationError'\n }\n}\nsetClassName(PrismaClientValidationError, 'PrismaClientValidationError')\n", "import { RuntimeDataModel, RuntimeModel, uncapitalize } from '@prisma/client-common'\nimport { assertNever } from '@prisma/internals'\n\nimport { ErrorFormat } from '../../getPrismaClient'\nimport { CallSite } from '../../utils/CallSite'\nimport { isDate, isValidDate } from '../../utils/date'\nimport { isDecimalJsLike } from '../../utils/decimalJsLike'\nimport {\n JsonArgumentValue,\n JsonFieldSelection,\n JsonQuery,\n JsonQueryAction,\n JsonSelectionSet,\n OutputTypeDescription,\n RawTaggedValue,\n} from '../engines'\nimport { throwValidationException } from '../errorRendering/throwValidationException'\nimport { MergedExtensionsList } from '../extensions/MergedExtensionsList'\nimport { computeEngineSideOmissions, computeEngineSideSelection } from '../extensions/resultUtils'\nimport { isFieldRef } from '../model/FieldRef'\nimport { isParam } from '../model/Param'\nimport { isSkip, Skip } from '../types'\nimport {\n Action,\n JsArgs,\n JsInputValue,\n JsonConvertible,\n Omission,\n RawParameters,\n Selection,\n} from '../types/exported/JsApi'\nimport { ObjectEnumValue, objectEnumValues } from '../types/exported/ObjectEnums'\nimport { ValidationError } from '../types/ValidationError'\n\nconst jsActionToProtocolAction: Record<Action, JsonQueryAction> = {\n findUnique: 'findUnique',\n findUniqueOrThrow: 'findUniqueOrThrow',\n findFirst: 'findFirst',\n findFirstOrThrow: 'findFirstOrThrow',\n findMany: 'findMany',\n count: 'aggregate',\n create: 'createOne',\n createMany: 'createMany',\n createManyAndReturn: 'createManyAndReturn',\n update: 'updateOne',\n updateMany: 'updateMany',\n updateManyAndReturn: 'updateManyAndReturn',\n upsert: 'upsertOne',\n delete: 'deleteOne',\n deleteMany: 'deleteMany',\n executeRaw: 'executeRaw',\n queryRaw: 'queryRaw',\n aggregate: 'aggregate',\n groupBy: 'groupBy',\n runCommandRaw: 'runCommandRaw',\n findRaw: 'findRaw',\n aggregateRaw: 'aggregateRaw',\n}\n\nexport type GlobalOmitOptions = {\n [modelName: string]: {\n [fieldName: string]: boolean\n }\n}\n\nexport type SerializeParams = {\n runtimeDataModel: RuntimeDataModel\n modelName?: string\n action: Action\n args?: JsArgs\n extensions?: MergedExtensionsList\n callsite?: CallSite\n clientMethod: string\n clientVersion: string\n errorFormat: ErrorFormat\n previewFeatures: string[]\n globalOmit?: GlobalOmitOptions\n}\n\nconst STRICT_UNDEFINED_ERROR_MESSAGE = 'explicitly `undefined` values are not allowed'\n\nexport function serializeJsonQuery({\n modelName,\n action,\n args,\n runtimeDataModel,\n extensions = MergedExtensionsList.empty(),\n callsite,\n clientMethod,\n errorFormat,\n clientVersion,\n previewFeatures,\n globalOmit,\n}: SerializeParams): JsonQuery {\n const context = new SerializeContext({\n runtimeDataModel,\n modelName,\n action,\n rootArgs: args,\n callsite,\n extensions,\n selectionPath: [],\n argumentPath: [],\n originalMethod: clientMethod,\n errorFormat,\n clientVersion,\n previewFeatures,\n globalOmit,\n })\n return {\n modelName,\n action: jsActionToProtocolAction[action],\n query: serializeFieldSelection(args, context),\n }\n}\n\nfunction serializeFieldSelection(\n { select, include, ...args }: JsArgs = {},\n context: SerializeContext,\n): JsonFieldSelection {\n const omit = args.omit\n delete args.omit\n return {\n arguments: serializeArgumentsObject(args, context),\n selection: serializeSelectionSet(select, include, omit, context),\n }\n}\n\nfunction serializeSelectionSet(\n select: Selection | undefined,\n include: Selection | undefined,\n omit: Omission | undefined,\n context: SerializeContext,\n): JsonSelectionSet {\n if (select) {\n if (include) {\n context.throwValidationError({\n kind: 'MutuallyExclusiveFields',\n firstField: 'include',\n secondField: 'select',\n selectionPath: context.getSelectionPath(),\n })\n } else if (omit) {\n context.throwValidationError({\n kind: 'MutuallyExclusiveFields',\n firstField: 'omit',\n secondField: 'select',\n selectionPath: context.getSelectionPath(),\n })\n }\n return createExplicitSelection(select, context)\n }\n\n return createImplicitSelection(context, include, omit)\n}\n\nfunction createImplicitSelection(\n context: SerializeContext,\n include: Selection | undefined,\n omit: Omission | undefined,\n) {\n const selectionSet: JsonSelectionSet = {}\n\n if (context.modelOrType && !context.isRawAction()) {\n selectionSet.$composites = true\n selectionSet.$scalars = true\n }\n\n if (include) {\n addIncludedRelations(selectionSet, include, context)\n }\n\n omitFields(selectionSet, omit, context)\n\n return selectionSet\n}\n\nfunction addIncludedRelations(selectionSet: JsonSelectionSet, include: Selection, context: SerializeContext) {\n for (const [key, value] of Object.entries(include)) {\n if (isSkip(value)) {\n continue\n }\n const nestedContext = context.nestSelection(key)\n validateSelectionForUndefined(value, nestedContext)\n if (value === false || value === undefined) {\n selectionSet[key] = false\n continue\n }\n\n const field = context.findField(key)\n if (field && field.kind !== 'object') {\n context.throwValidationError({\n kind: 'IncludeOnScalar',\n selectionPath: context.getSelectionPath().concat(key),\n outputType: context.getOutputTypeDescription(),\n })\n }\n if (field) {\n selectionSet[key] = serializeFieldSelection(value === true ? {} : value, nestedContext)\n continue\n }\n\n if (value === true) {\n selectionSet[key] = true\n continue\n }\n\n // value is an object, field is unknown\n // this can either be user error (in that case, qe will respond with an error)\n // or virtual field not present on datamodel (like `_count`).\n // Since we don't know which one cast is, we still attempt to serialize selection\n selectionSet[key] = serializeFieldSelection(value, nestedContext)\n }\n}\n\nfunction omitFields(selectionSet: JsonSelectionSet, localOmit: Omission | undefined, context: SerializeContext) {\n const computedFields = context.getComputedFields()\n const combinedOmits = { ...context.getGlobalOmit(), ...localOmit }\n const omitWithComputedFields = computeEngineSideOmissions(combinedOmits, computedFields)\n for (const [key, value] of Object.entries(omitWithComputedFields)) {\n if (isSkip(value)) {\n continue\n }\n validateSelectionForUndefined(value, context.nestSelection(key))\n const field = context.findField(key)\n if (computedFields?.[key] && !field) {\n continue\n }\n selectionSet[key] = !value\n }\n}\n\nfunction createExplicitSelection(select: Selection, context: SerializeContext) {\n const selectionSet: JsonSelectionSet = {}\n const computedFields = context.getComputedFields()\n const selectWithComputedFields = computeEngineSideSelection(select, computedFields)\n\n for (const [key, value] of Object.entries(selectWithComputedFields)) {\n if (isSkip(value)) {\n continue\n }\n const nestedContext = context.nestSelection(key)\n validateSelectionForUndefined(value, nestedContext)\n const field = context.findField(key)\n if (computedFields?.[key] && !field) {\n continue\n }\n if (value === false || value === undefined || isSkip(value)) {\n selectionSet[key] = false\n continue\n }\n if (value === true) {\n if (field?.kind === 'object') {\n selectionSet[key] = serializeFieldSelection({}, nestedContext)\n } else {\n selectionSet[key] = true\n }\n continue\n }\n selectionSet[key] = serializeFieldSelection(value, nestedContext)\n }\n return selectionSet\n}\n\nfunction serializeArgumentsValue(\n jsValue: Exclude<JsInputValue, undefined | Skip>,\n context: SerializeContext,\n): JsonArgumentValue {\n if (jsValue === null) {\n return null\n }\n\n if (typeof jsValue === 'string' || typeof jsValue === 'number' || typeof jsValue === 'boolean') {\n return jsValue\n }\n\n if (typeof jsValue === 'bigint') {\n return { $type: 'BigInt', value: String(jsValue) }\n }\n\n if (isDate(jsValue)) {\n if (isValidDate(jsValue)) {\n return { $type: 'DateTime', value: jsValue.toISOString() }\n } else {\n context.throwValidationError({\n kind: 'InvalidArgumentValue',\n selectionPath: context.getSelectionPath(),\n argumentPath: context.getArgumentPath(),\n argument: {\n name: context.getArgumentName(),\n typeNames: ['Date'],\n },\n underlyingError: 'Provided Date object is invalid',\n })\n }\n }\n\n if (isParam(jsValue)) {\n return { $type: 'Param', value: jsValue.name }\n }\n\n if (isFieldRef(jsValue)) {\n return { $type: 'FieldRef', value: { _ref: jsValue.name, _container: jsValue.modelName } }\n }\n\n if (Array.isArray(jsValue)) {\n return serializeArgumentsArray(jsValue, context)\n }\n\n if (ArrayBuffer.isView(jsValue)) {\n const { buffer, byteOffset, byteLength } = jsValue\n return { $type: 'Bytes', value: Buffer.from(buffer, byteOffset, byteLength).toString('base64') }\n }\n\n if (isRawParameters(jsValue)) {\n return jsValue.values\n }\n\n if (isDecimalJsLike(jsValue)) {\n return { $type: 'Decimal', value: jsValue.toFixed() }\n }\n\n if (jsValue instanceof ObjectEnumValue) {\n if (jsValue !== objectEnumValues.instances[jsValue._getName()]) {\n throw new Error('Invalid ObjectEnumValue')\n }\n return { $type: 'Enum', value: jsValue._getName() }\n }\n\n if (isJSONConvertible(jsValue)) {\n return jsValue.toJSON() as JsonArgumentValue\n }\n\n if (typeof jsValue === 'object') {\n return serializeArgumentsObject(jsValue, context)\n }\n\n context.throwValidationError({\n kind: 'InvalidArgumentValue',\n selectionPath: context.getSelectionPath(),\n argumentPath: context.getArgumentPath(),\n argument: {\n name: context.getArgumentName(),\n typeNames: [],\n },\n underlyingError: `We could not serialize ${Object.prototype.toString.call(\n jsValue,\n )} value. Serialize the object to JSON or implement a \".toJSON()\" method on it`,\n })\n}\n\nfunction serializeArgumentsObject(\n object: Record<string, JsInputValue>,\n context: SerializeContext,\n): Record<string, JsonArgumentValue> | RawTaggedValue {\n if (object['$type']) {\n return { $type: 'Raw', value: object }\n }\n const result: Record<string, JsonArgumentValue> = {}\n for (const key in object) {\n const value = object[key]\n const nestedContext = context.nestArgument(key)\n if (isSkip(value)) {\n continue\n }\n if (value !== undefined) {\n result[key] = serializeArgumentsValue(value, nestedContext)\n } else if (context.isPreviewFeatureOn('strictUndefinedChecks')) {\n context.throwValidationError({\n kind: 'InvalidArgumentValue',\n argumentPath: nestedContext.getArgumentPath(),\n selectionPath: context.getSelectionPath(),\n argument: { name: context.getArgumentName(), typeNames: [] },\n underlyingError: STRICT_UNDEFINED_ERROR_MESSAGE,\n })\n }\n }\n return result\n}\n\nfunction serializeArgumentsArray(array: JsInputValue[], context: SerializeContext): JsonArgumentValue[] {\n const result: JsonArgumentValue[] = []\n for (let i = 0; i < array.length; i++) {\n const itemContext = context.nestArgument(String(i))\n const value = array[i]\n if (value === undefined || isSkip(value)) {\n const valueName = value === undefined ? 'undefined' : `Prisma.skip`\n context.throwValidationError({\n kind: 'InvalidArgumentValue',\n selectionPath: itemContext.getSelectionPath(),\n argumentPath: itemContext.getArgumentPath(),\n argument: {\n name: `${context.getArgumentName()}[${i}]`,\n typeNames: [],\n },\n underlyingError: `Can not use \\`${valueName}\\` value within array. Use \\`null\\` or filter out \\`${valueName}\\` values`,\n })\n }\n result.push(serializeArgumentsValue(value, itemContext))\n }\n return result\n}\n\nfunction isRawParameters(value: JsInputValue): value is RawParameters {\n return typeof value === 'object' && value !== null && value['__prismaRawParameters__'] === true\n}\n\nfunction isJSONConvertible(value: JsInputValue): value is JsonConvertible {\n return typeof value === 'object' && value !== null && typeof value['toJSON'] === 'function'\n}\n\nfunction validateSelectionForUndefined(value: unknown, context: SerializeContext) {\n if (value === undefined && context.isPreviewFeatureOn('strictUndefinedChecks')) {\n context.throwValidationError({\n kind: 'InvalidSelectionValue',\n selectionPath: context.getSelectionPath(),\n underlyingError: STRICT_UNDEFINED_ERROR_MESSAGE,\n })\n }\n}\n\ntype ContextParams = {\n runtimeDataModel: RuntimeDataModel\n originalMethod: string\n rootArgs: JsArgs | undefined\n extensions: MergedExtensionsList\n selectionPath: string[]\n argumentPath: string[]\n modelName?: string\n action: Action\n callsite?: CallSite\n errorFormat: ErrorFormat\n clientVersion: string\n previewFeatures: string[]\n globalOmit?: GlobalOmitOptions\n}\n\nclass SerializeContext {\n public readonly modelOrType: RuntimeModel | undefined\n constructor(private params: ContextParams) {\n if (this.params.modelName) {\n // TODO: throw if not found\n this.modelOrType =\n this.params.runtimeDataModel.models[this.params.modelName] ??\n this.params.runtimeDataModel.types[this.params.modelName]\n }\n }\n\n throwValidationError(error: ValidationError): never {\n throwValidationException({\n errors: [error],\n originalMethod: this.params.originalMethod,\n args: this.params.rootArgs ?? {},\n callsite: this.params.callsite,\n errorFormat: this.params.errorFormat,\n clientVersion: this.params.clientVersion,\n globalOmit: this.params.globalOmit,\n })\n }\n\n getSelectionPath() {\n return this.params.selectionPath\n }\n\n getArgumentPath() {\n return this.params.argumentPath\n }\n\n getArgumentName() {\n return this.params.argumentPath[this.params.argumentPath.length - 1]\n }\n\n getOutputTypeDescription(): OutputTypeDescription | undefined {\n if (!this.params.modelName || !this.modelOrType) {\n return undefined\n }\n return {\n name: this.params.modelName,\n fields: this.modelOrType.fields.map((field) => ({\n name: field.name,\n typeName: 'boolean',\n isRelation: field.kind === 'object',\n })),\n }\n }\n\n isRawAction() {\n return ['executeRaw', 'queryRaw', 'runCommandRaw', 'findRaw', 'aggregateRaw'].includes(this.params.action)\n }\n\n isPreviewFeatureOn(previewFeature: string) {\n return this.params.previewFeatures.includes(previewFeature)\n }\n\n getComputedFields() {\n if (!this.params.modelName) {\n return undefined\n }\n\n return this.params.extensions.getAllComputedFields(this.params.modelName)\n }\n\n findField(name: string) {\n return this.modelOrType?.fields.find((field) => field.name === name)\n }\n\n nestSelection(fieldName: string) {\n const field = this.findField(fieldName)\n const modelName = field?.kind === 'object' ? field.type : undefined\n\n return new SerializeContext({\n ...this.params,\n modelName,\n selectionPath: this.params.selectionPath.concat(fieldName),\n })\n }\n\n getGlobalOmit(): Record<string, boolean> {\n if (this.params.modelName && this.shouldApplyGlobalOmit()) {\n return this.params.globalOmit?.[uncapitalize(this.params.modelName)] ?? {}\n }\n return {}\n }\n\n shouldApplyGlobalOmit(): boolean {\n switch (this.params.action) {\n case 'findFirst':\n case 'findFirstOrThrow':\n case 'findUniqueOrThrow':\n case 'findMany':\n case 'upsert':\n case 'findUnique':\n case 'createManyAndReturn':\n case 'create':\n case 'update':\n case 'updateManyAndReturn':\n case 'delete':\n return true\n case 'executeRaw':\n case 'aggregateRaw':\n case 'runCommandRaw':\n case 'findRaw':\n case 'createMany':\n case 'deleteMany':\n case 'groupBy':\n case 'updateMany':\n case 'count':\n case 'aggregate':\n case 'queryRaw':\n return false\n default:\n assertNever(this.params.action, 'Unknown action')\n }\n }\n\n nestArgument(fieldName: string) {\n return new SerializeContext({\n ...this.params,\n argumentPath: this.params.argumentPath.concat(fieldName),\n })\n }\n}\n", "export * from './Cache'\nexport * from './casing'\nexport * from './client-config'\nexport * from './Dictionary'\nexport * from './dmmf'\nexport * from './enums'\nexport * from './lazyProperty'\nexport * from './omit'\nexport * from './operations'\nexport * from './QueryCompiler'\nexport * from './QueryEngine'\nexport * from './runtimeDataModel'\nexport * from './uniqueBy'\n", "type CacheEntry<V> = {\n value: V\n}\nexport class Cache<K, V> {\n private _map = new Map<K, CacheEntry<V>>()\n\n get(key: K): V | undefined {\n return this._map.get(key)?.value\n }\n\n set(key: K, value: V): void {\n this._map.set(key, { value })\n }\n\n getOrCreate(key: K, create: () => V): V {\n const cached = this._map.get(key)\n if (cached) {\n return cached.value\n }\n const value = create()\n this.set(key, value)\n return value\n }\n}\n", "/**\n * Converts the first character of a word to upper case.\n */\nexport function capitalize<T extends string>(self: T): Capitalize<T> {\n if (self.length === 0) return self as Capitalize<T>\n\n return (self[0].toUpperCase() + self.slice(1)) as Capitalize<T>\n}\n\n/**\n * Converts the first character of a word to lower case.\n */\nexport function uncapitalize<T extends string>(self: T): Uncapitalize<T> {\n return (self.substring(0, 1).toLowerCase() + self.substring(1)) as Uncapitalize<T>\n}\n", "export interface Dictionary<T> {\n [key: string]: T\n}\n\nexport function keyBy<P extends PropertyKey, T extends { [key in P]: string }>(\n collection: readonly T[],\n prop: P,\n): Dictionary<T> {\n const acc: Dictionary<T> = {}\n\n for (const obj of collection) {\n const key = obj[prop]\n acc[key] = obj\n }\n\n return acc\n}\n", "export type LazyProperty<T> = {\n get: () => T\n}\n\nexport function lazyProperty<T>(compute: () => T): LazyProperty<T> {\n let resultContainer: undefined | { value: T }\n\n return {\n get() {\n if (resultContainer) {\n return resultContainer.value\n }\n resultContainer = { value: compute() }\n return resultContainer.value\n },\n }\n}\n", "import type * as DMMF from '@prisma/dmmf'\n\nexport type RuntimeModel = Omit<DMMF.Model, 'name'>\nexport type RuntimeEnum = Omit<DMMF.DatamodelEnum, 'name'>\n\nexport type RuntimeDataModel = {\n readonly models: Record<string, RuntimeModel>\n readonly enums: Record<string, RuntimeEnum>\n readonly types: Record<string, RuntimeModel>\n}\n\nexport type PrunedRuntimeModel = {\n readonly dbName: RuntimeModel['dbName']\n readonly fields: Pick<RuntimeModel['fields'][number], 'name' | 'kind' | 'type' | 'relationName' | 'dbName'>[]\n}\n\nexport type PrunedRuntimeDataModel = {\n readonly models: Record<string, PrunedRuntimeModel>\n readonly enums: {}\n readonly types: {}\n}\n\nexport function dmmfToRuntimeDataModel(dmmfDataModel: DMMF.Datamodel): RuntimeDataModel {\n return {\n models: buildMapForRuntime(dmmfDataModel.models),\n enums: buildMapForRuntime(dmmfDataModel.enums),\n types: buildMapForRuntime(dmmfDataModel.types),\n }\n}\n\n/**\n * Minimal version of the runtime datamodel for the Client to work\n * @param runtimeDataModel\n * @returns\n */\nexport function pruneRuntimeDataModel({ models }: RuntimeDataModel) {\n const prunedModels: PrunedRuntimeDataModel['models'] = {}\n\n for (const modelName of Object.keys(models)) {\n prunedModels[modelName] = { fields: [], dbName: models[modelName].dbName }\n\n for (const { name, kind, type, relationName, dbName } of models[modelName].fields) {\n prunedModels[modelName].fields.push({ name, kind, type, relationName, dbName })\n }\n }\n\n return { models: prunedModels, enums: {}, types: {} }\n}\n\nfunction buildMapForRuntime<T extends { name: string }>(list: readonly T[]): Record<string, Omit<T, 'name'>> {\n const result: Record<string, Omit<T, 'name'>> = {}\n for (const { name, ...rest } of list) {\n result[name] = rest\n }\n return result\n}\n", "export function isDate(value: unknown): value is Date {\n return (\n value instanceof Date ||\n // date created in other JS context (for example, worker)\n Object.prototype.toString.call(value) === '[object Date]'\n )\n}\n\nexport function isValidDate(date: Date) {\n return date.toString() !== 'Invalid Date'\n}\n", "import { Decimal } from 'decimal.js'\n\nimport { DecimalJsLike } from '../core/types/exported/DecimalJsLike'\n\nexport function isDecimalJsLike(value: unknown): value is DecimalJsLike {\n if (Decimal.isDecimal(value)) {\n return true\n }\n return (\n value !== null &&\n typeof value === 'object' &&\n typeof value['s'] === 'number' &&\n typeof value['e'] === 'number' &&\n typeof value['toFixed'] === 'function' &&\n Array.isArray(value['d'])\n )\n}\n", "/*!\r\n * decimal.js v10.5.0\r\n * An arbitrary-precision Decimal type for JavaScript.\r\n * https://github.com/MikeMcl/decimal.js\r\n * Copyright (c) 2025 Michael Mclaughlin <M8ch88l@gmail.com>\r\n * MIT Licence\r\n */\r\n\r\n\r\n// ----------------------------------- EDITABLE DEFAULTS ------------------------------------ //\r\n\r\n\r\n // The maximum exponent magnitude.\r\n // The limit on the value of `toExpNeg`, `toExpPos`, `minE` and `maxE`.\r\nvar EXP_LIMIT = 9e15, // 0 to 9e15\r\n\r\n // The limit on the value of `precision`, and on the value of the first argument to\r\n // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n MAX_DIGITS = 1e9, // 0 to 1e9\r\n\r\n // Base conversion alphabet.\r\n NUMERALS = '0123456789abcdef',\r\n\r\n // The natural logarithm of 10 (1025 digits).\r\n LN10 = '2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058',\r\n\r\n // Pi (1025 digits).\r\n PI = '3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789',\r\n\r\n\r\n // The initial configuration properties of the Decimal constructor.\r\n DEFAULTS = {\r\n\r\n // These values must be integers within the stated ranges (inclusive).\r\n // Most of these values can be changed at run-time using the `Decimal.config` method.\r\n\r\n // The maximum number of significant digits of the result of a calculation or base conversion.\r\n // E.g. `Decimal.config({ precision: 20 });`\r\n precision: 20, // 1 to MAX_DIGITS\r\n\r\n // The rounding mode used when rounding to `precision`.\r\n //\r\n // ROUND_UP 0 Away from zero.\r\n // ROUND_DOWN 1 Towards zero.\r\n // ROUND_CEIL 2 Towards +Infinity.\r\n // ROUND_FLOOR 3 Towards -Infinity.\r\n // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n //\r\n // E.g.\r\n // `Decimal.rounding = 4;`\r\n // `Decimal.rounding = Decimal.ROUND_HALF_UP;`\r\n rounding: 4, // 0 to 8\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend (JavaScript %).\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 The IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)). Always positive.\r\n //\r\n // Truncated division (1), floored division (3), the IEEE 754 remainder (6), and Euclidian\r\n // division (9) are commonly used for the modulus operation. The other rounding modes can also\r\n // be used, but they may not give useful results.\r\n modulo: 1, // 0 to 9\r\n\r\n // The exponent value at and beneath which `toString` returns exponential notation.\r\n // JavaScript numbers: -7\r\n toExpNeg: -7, // 0 to -EXP_LIMIT\r\n\r\n // The exponent value at and above which `toString` returns exponential notation.\r\n // JavaScript numbers: 21\r\n toExpPos: 21, // 0 to EXP_LIMIT\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // JavaScript numbers: -324 (5e-324)\r\n minE: -EXP_LIMIT, // -1 to -EXP_LIMIT\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // JavaScript numbers: 308 (1.7976931348623157e+308)\r\n maxE: EXP_LIMIT, // 1 to EXP_LIMIT\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n crypto: false // true/false\r\n },\r\n\r\n\r\n// ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- //\r\n\r\n\r\n inexact, quadrant,\r\n external = true,\r\n\r\n decimalError = '[DecimalError] ',\r\n invalidArgument = decimalError + 'Invalid argument: ',\r\n precisionLimitExceeded = decimalError + 'Precision limit exceeded',\r\n cryptoUnavailable = decimalError + 'crypto unavailable',\r\n tag = '[object Decimal]',\r\n\r\n mathfloor = Math.floor,\r\n mathpow = Math.pow,\r\n\r\n isBinary = /^0b([01]+(\\.[01]*)?|\\.[01]+)(p[+-]?\\d+)?$/i,\r\n isHex = /^0x([0-9a-f]+(\\.[0-9a-f]*)?|\\.[0-9a-f]+)(p[+-]?\\d+)?$/i,\r\n isOctal = /^0o([0-7]+(\\.[0-7]*)?|\\.[0-7]+)(p[+-]?\\d+)?$/i,\r\n isDecimal = /^(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,\r\n\r\n BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_SAFE_INTEGER = 9007199254740991,\r\n\r\n LN10_PRECISION = LN10.length - 1,\r\n PI_PRECISION = PI.length - 1,\r\n\r\n // Decimal.prototype object\r\n P = { toStringTag: tag };\r\n\r\n\r\n// Decimal prototype methods\r\n\r\n\r\n/*\r\n * absoluteValue abs\r\n * ceil\r\n * clampedTo clamp\r\n * comparedTo cmp\r\n * cosine cos\r\n * cubeRoot cbrt\r\n * decimalPlaces dp\r\n * dividedBy div\r\n * dividedToIntegerBy divToInt\r\n * equals eq\r\n * floor\r\n * greaterThan gt\r\n * greaterThanOrEqualTo gte\r\n * hyperbolicCosine cosh\r\n * hyperbolicSine sinh\r\n * hyperbolicTangent tanh\r\n * inverseCosine acos\r\n * inverseHyperbolicCosine acosh\r\n * inverseHyperbolicSine asinh\r\n * inverseHyperbolicTangent atanh\r\n * inverseSine asin\r\n * inverseTangent atan\r\n * isFinite\r\n * isInteger isInt\r\n * isNaN\r\n * isNegative isNeg\r\n * isPositive isPos\r\n * isZero\r\n * lessThan lt\r\n * lessThanOrEqualTo lte\r\n * logarithm log\r\n * [maximum] [max]\r\n * [minimum] [min]\r\n * minus sub\r\n * modulo mod\r\n * naturalExponential exp\r\n * naturalLogarithm ln\r\n * negated neg\r\n * plus add\r\n * precision sd\r\n * round\r\n * sine sin\r\n * squareRoot sqrt\r\n * tangent tan\r\n * times mul\r\n * toBinary\r\n * toDecimalPlaces toDP\r\n * toExponential\r\n * toFixed\r\n * toFraction\r\n * toHexadecimal toHex\r\n * toNearest\r\n * toNumber\r\n * toOctal\r\n * toPower pow\r\n * toPrecision\r\n * toSignificantDigits toSD\r\n * toString\r\n * truncated trunc\r\n * valueOf toJSON\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the absolute value of this Decimal.\r\n *\r\n */\r\nP.absoluteValue = P.abs = function () {\r\n var x = new this.constructor(this);\r\n if (x.s < 0) x.s = 1;\r\n return finalise(x);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n * direction of positive Infinity.\r\n *\r\n */\r\nP.ceil = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 2);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal clamped to the range\r\n * delineated by `min` and `max`.\r\n *\r\n * min {number|string|bigint|Decimal}\r\n * max {number|string|bigint|Decimal}\r\n *\r\n */\r\nP.clampedTo = P.clamp = function (min, max) {\r\n var k,\r\n x = this,\r\n Ctor = x.constructor;\r\n min = new Ctor(min);\r\n max = new Ctor(max);\r\n if (!min.s || !max.s) return new Ctor(NaN);\r\n if (min.gt(max)) throw Error(invalidArgument + max);\r\n k = x.cmp(min);\r\n return k < 0 ? min : x.cmp(max) > 0 ? max : new Ctor(x);\r\n};\r\n\r\n\r\n/*\r\n * Return\r\n * 1 if the value of this Decimal is greater than the value of `y`,\r\n * -1 if the value of this Decimal is less than the value of `y`,\r\n * 0 if they have the same value,\r\n * NaN if the value of either Decimal is NaN.\r\n *\r\n */\r\nP.comparedTo = P.cmp = function (y) {\r\n var i, j, xdL, ydL,\r\n x = this,\r\n xd = x.d,\r\n yd = (y = new x.constructor(y)).d,\r\n xs = x.s,\r\n ys = y.s;\r\n\r\n // Either NaN or \u00B1Infinity?\r\n if (!xd || !yd) {\r\n return !xs || !ys ? NaN : xs !== ys ? xs : xd === yd ? 0 : !xd ^ xs < 0 ? 1 : -1;\r\n }\r\n\r\n // Either zero?\r\n if (!xd[0] || !yd[0]) return xd[0] ? xs : yd[0] ? -ys : 0;\r\n\r\n // Signs differ?\r\n if (xs !== ys) return xs;\r\n\r\n // Compare exponents.\r\n if (x.e !== y.e) return x.e > y.e ^ xs < 0 ? 1 : -1;\r\n\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Compare digit by digit.\r\n for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) {\r\n if (xd[i] !== yd[i]) return xd[i] > yd[i] ^ xs < 0 ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return xdL === ydL ? 0 : xdL > ydL ^ xs < 0 ? 1 : -1;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cosine of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * cos(0) = 1\r\n * cos(-0) = 1\r\n * cos(Infinity) = NaN\r\n * cos(-Infinity) = NaN\r\n * cos(NaN) = NaN\r\n *\r\n */\r\nP.cosine = P.cos = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.d) return new Ctor(NaN);\r\n\r\n // cos(0) = cos(-0) = 1\r\n if (!x.d[0]) return new Ctor(1);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\r\n Ctor.rounding = 1;\r\n\r\n x = cosine(Ctor, toLessThanHalfPi(Ctor, x));\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant == 2 || quadrant == 3 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n *\r\n * Return a new Decimal whose value is the cube root of the value of this Decimal, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * cbrt(0) = 0\r\n * cbrt(-0) = -0\r\n * cbrt(1) = 1\r\n * cbrt(-1) = -1\r\n * cbrt(N) = N\r\n * cbrt(-I) = -I\r\n * cbrt(I) = I\r\n *\r\n * Math.cbrt(x) = (x < 0 ? -Math.pow(-x, 1/3) : Math.pow(x, 1/3))\r\n *\r\n */\r\nP.cubeRoot = P.cbrt = function () {\r\n var e, m, n, r, rep, s, sd, t, t3, t3plusx,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = x.s * mathpow(x.s * x, 1 / 3);\r\n\r\n // Math.cbrt underflow/overflow?\r\n // Pass x to Math.pow as integer, then adjust the exponent of the result.\r\n if (!s || Math.abs(s) == 1 / 0) {\r\n n = digitsToString(x.d);\r\n e = x.e;\r\n\r\n // Adjust n exponent so it is a multiple of 3 away from x exponent.\r\n if (s = (e - n.length + 1) % 3) n += (s == 1 || s == -2 ? '0' : '00');\r\n s = mathpow(n, 1 / 3);\r\n\r\n // Rarely, e may be one less than the result exponent value.\r\n e = mathfloor((e + 1) / 3) - (e % 3 == (e < 0 ? -1 : 2));\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n r.s = x.s;\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n sd = (e = Ctor.precision) + 3;\r\n\r\n // Halley's method.\r\n // TODO? Compare Newton's method.\r\n for (;;) {\r\n t = r;\r\n t3 = t.times(t).times(t);\r\n t3plusx = t3.plus(x);\r\n r = divide(t3plusx.plus(x).times(t), t3plusx.plus(t3), sd + 2, 1);\r\n\r\n // TODO? Replace with for-loop and checkRoundingDigits.\r\n if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\r\n n = n.slice(sd - 3, sd + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or 4999\r\n // , i.e. approaching a rounding boundary, continue the iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n if (!rep) {\r\n finalise(t, e + 1, 0);\r\n\r\n if (t.times(t).times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n sd += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\r\n // If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n finalise(r, e + 1, 1);\r\n m = !r.times(r).times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, e, Ctor.rounding, m);\r\n};\r\n\r\n\r\n/*\r\n * Return the number of decimal places of the value of this Decimal.\r\n *\r\n */\r\nP.decimalPlaces = P.dp = function () {\r\n var w,\r\n d = this.d,\r\n n = NaN;\r\n\r\n if (d) {\r\n w = d.length - 1;\r\n n = (w - mathfloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n w = d[w];\r\n if (w) for (; w % 10 == 0; w /= 10) n--;\r\n if (n < 0) n = 0;\r\n }\r\n\r\n return n;\r\n};\r\n\r\n\r\n/*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal divided by `y`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.dividedBy = P.div = function (y) {\r\n return divide(this, new this.constructor(y));\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the integer part of dividing the value of this Decimal\r\n * by the value of `y`, rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.dividedToIntegerBy = P.divToInt = function (y) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return finalise(divide(x, new Ctor(y), 0, 1, 1), Ctor.precision, Ctor.rounding);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false.\r\n *\r\n */\r\nP.equals = P.eq = function (y) {\r\n return this.cmp(y) === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n * direction of negative Infinity.\r\n *\r\n */\r\nP.floor = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 3);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is greater than the value of `y`, otherwise return\r\n * false.\r\n *\r\n */\r\nP.greaterThan = P.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is greater than or equal to the value of `y`,\r\n * otherwise return false.\r\n *\r\n */\r\nP.greaterThanOrEqualTo = P.gte = function (y) {\r\n var k = this.cmp(y);\r\n return k == 1 || k === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic cosine of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [1, Infinity]\r\n *\r\n * cosh(x) = 1 + x^2/2! + x^4/4! + x^6/6! + ...\r\n *\r\n * cosh(0) = 1\r\n * cosh(-0) = 1\r\n * cosh(Infinity) = Infinity\r\n * cosh(-Infinity) = Infinity\r\n * cosh(NaN) = NaN\r\n *\r\n * x time taken (ms) result\r\n * 1000 9 9.8503555700852349694e+433\r\n * 10000 25 4.4034091128314607936e+4342\r\n * 100000 171 1.4033316802130615897e+43429\r\n * 1000000 3817 1.5166076984010437725e+434294\r\n * 10000000 abandoned after 2 minute wait\r\n *\r\n * TODO? Compare performance of cosh(x) = 0.5 * (exp(x) + exp(-x))\r\n *\r\n */\r\nP.hyperbolicCosine = P.cosh = function () {\r\n var k, n, pr, rm, len,\r\n x = this,\r\n Ctor = x.constructor,\r\n one = new Ctor(1);\r\n\r\n if (!x.isFinite()) return new Ctor(x.s ? 1 / 0 : NaN);\r\n if (x.isZero()) return one;\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n len = x.d.length;\r\n\r\n // Argument reduction: cos(4x) = 1 - 8cos^2(x) + 8cos^4(x) + 1\r\n // i.e. cos(x) = 1 - cos^2(x/4)(8 - 8cos^2(x/4))\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n // TODO? Estimation reused from cosine() and may not be optimal here.\r\n if (len < 32) {\r\n k = Math.ceil(len / 3);\r\n n = (1 / tinyPow(4, k)).toString();\r\n } else {\r\n k = 16;\r\n n = '2.3283064365386962890625e-10';\r\n }\r\n\r\n x = taylorSeries(Ctor, 1, x.times(n), new Ctor(1), true);\r\n\r\n // Reverse argument reduction\r\n var cosh2_x,\r\n i = k,\r\n d8 = new Ctor(8);\r\n for (; i--;) {\r\n cosh2_x = x.times(x);\r\n x = one.minus(cosh2_x.times(d8.minus(cosh2_x.times(d8))));\r\n }\r\n\r\n return finalise(x, Ctor.precision = pr, Ctor.rounding = rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic sine of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * sinh(x) = x + x^3/3! + x^5/5! + x^7/7! + ...\r\n *\r\n * sinh(0) = 0\r\n * sinh(-0) = -0\r\n * sinh(Infinity) = Infinity\r\n * sinh(-Infinity) = -Infinity\r\n * sinh(NaN) = NaN\r\n *\r\n * x time taken (ms)\r\n * 10 2 ms\r\n * 100 5 ms\r\n * 1000 14 ms\r\n * 10000 82 ms\r\n * 100000 886 ms 1.4033316802130615897e+43429\r\n * 200000 2613 ms\r\n * 300000 5407 ms\r\n * 400000 8824 ms\r\n * 500000 13026 ms 8.7080643612718084129e+217146\r\n * 1000000 48543 ms\r\n *\r\n * TODO? Compare performance of sinh(x) = 0.5 * (exp(x) - exp(-x))\r\n *\r\n */\r\nP.hyperbolicSine = P.sinh = function () {\r\n var k, pr, rm, len,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n len = x.d.length;\r\n\r\n if (len < 3) {\r\n x = taylorSeries(Ctor, 2, x, x, true);\r\n } else {\r\n\r\n // Alternative argument reduction: sinh(3x) = sinh(x)(3 + 4sinh^2(x))\r\n // i.e. sinh(x) = sinh(x/3)(3 + 4sinh^2(x/3))\r\n // 3 multiplications and 1 addition\r\n\r\n // Argument reduction: sinh(5x) = sinh(x)(5 + sinh^2(x)(20 + 16sinh^2(x)))\r\n // i.e. sinh(x) = sinh(x/5)(5 + sinh^2(x/5)(20 + 16sinh^2(x/5)))\r\n // 4 multiplications and 2 additions\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n k = 1.4 * Math.sqrt(len);\r\n k = k > 16 ? 16 : k | 0;\r\n\r\n x = x.times(1 / tinyPow(5, k));\r\n x = taylorSeries(Ctor, 2, x, x, true);\r\n\r\n // Reverse argument reduction\r\n var sinh2_x,\r\n d5 = new Ctor(5),\r\n d16 = new Ctor(16),\r\n d20 = new Ctor(20);\r\n for (; k--;) {\r\n sinh2_x = x.times(x);\r\n x = x.times(d5.plus(sinh2_x.times(d16.times(sinh2_x).plus(d20))));\r\n }\r\n }\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic tangent of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * tanh(x) = sinh(x) / cosh(x)\r\n *\r\n * tanh(0) = 0\r\n * tanh(-0) = -0\r\n * tanh(Infinity) = 1\r\n * tanh(-Infinity) = -1\r\n * tanh(NaN) = NaN\r\n *\r\n */\r\nP.hyperbolicTangent = P.tanh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(x.s);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 7;\r\n Ctor.rounding = 1;\r\n\r\n return divide(x.sinh(), x.cosh(), Ctor.precision = pr, Ctor.rounding = rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arccosine (inverse cosine) in radians of the value of\r\n * this Decimal.\r\n *\r\n * Domain: [-1, 1]\r\n * Range: [0, pi]\r\n *\r\n * acos(x) = pi/2 - asin(x)\r\n *\r\n * acos(0) = pi/2\r\n * acos(-0) = pi/2\r\n * acos(1) = 0\r\n * acos(-1) = pi\r\n * acos(1/2) = pi/3\r\n * acos(-1/2) = 2*pi/3\r\n * acos(|x| > 1) = NaN\r\n * acos(NaN) = NaN\r\n *\r\n */\r\nP.inverseCosine = P.acos = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n k = x.abs().cmp(1),\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding;\r\n\r\n if (k !== -1) {\r\n return k === 0\r\n // |x| is 1\r\n ? x.isNeg() ? getPi(Ctor, pr, rm) : new Ctor(0)\r\n // |x| > 1 or x is NaN\r\n : new Ctor(NaN);\r\n }\r\n\r\n if (x.isZero()) return getPi(Ctor, pr + 4, rm).times(0.5);\r\n\r\n // TODO? Special case acos(0.5) = pi/3 and acos(-0.5) = 2*pi/3\r\n\r\n Ctor.precision = pr + 6;\r\n Ctor.rounding = 1;\r\n\r\n // See https://github.com/MikeMcl/decimal.js/pull/217\r\n x = new Ctor(1).minus(x).div(x.plus(1)).sqrt().atan();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(2);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic cosine in radians of the\r\n * value of this Decimal.\r\n *\r\n * Domain: [1, Infinity]\r\n * Range: [0, Infinity]\r\n *\r\n * acosh(x) = ln(x + sqrt(x^2 - 1))\r\n *\r\n * acosh(x < 1) = NaN\r\n * acosh(NaN) = NaN\r\n * acosh(Infinity) = Infinity\r\n * acosh(-Infinity) = NaN\r\n * acosh(0) = NaN\r\n * acosh(-0) = NaN\r\n * acosh(1) = 0\r\n * acosh(-1) = NaN\r\n *\r\n */\r\nP.inverseHyperbolicCosine = P.acosh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (x.lte(1)) return new Ctor(x.eq(1) ? 0 : NaN);\r\n if (!x.isFinite()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(Math.abs(x.e), x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n external = false;\r\n\r\n x = x.times(x).minus(1).sqrt().plus(x);\r\n\r\n external = true;\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.ln();\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic sine in radians of the value\r\n * of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * asinh(x) = ln(x + sqrt(x^2 + 1))\r\n *\r\n * asinh(NaN) = NaN\r\n * asinh(Infinity) = Infinity\r\n * asinh(-Infinity) = -Infinity\r\n * asinh(0) = 0\r\n * asinh(-0) = -0\r\n *\r\n */\r\nP.inverseHyperbolicSine = P.asinh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 2 * Math.max(Math.abs(x.e), x.sd()) + 6;\r\n Ctor.rounding = 1;\r\n external = false;\r\n\r\n x = x.times(x).plus(1).sqrt().plus(x);\r\n\r\n external = true;\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.ln();\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic tangent in radians of the\r\n * value of this Decimal.\r\n *\r\n * Domain: [-1, 1]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * atanh(x) = 0.5 * ln((1 + x) / (1 - x))\r\n *\r\n * atanh(|x| > 1) = NaN\r\n * atanh(NaN) = NaN\r\n * atanh(Infinity) = NaN\r\n * atanh(-Infinity) = NaN\r\n * atanh(0) = 0\r\n * atanh(-0) = -0\r\n * atanh(1) = Infinity\r\n * atanh(-1) = -Infinity\r\n *\r\n */\r\nP.inverseHyperbolicTangent = P.atanh = function () {\r\n var pr, rm, wpr, xsd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.e >= 0) return new Ctor(x.abs().eq(1) ? x.s / 0 : x.isZero() ? x : NaN);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n xsd = x.sd();\r\n\r\n if (Math.max(xsd, pr) < 2 * -x.e - 1) return finalise(new Ctor(x), pr, rm, true);\r\n\r\n Ctor.precision = wpr = xsd - x.e;\r\n\r\n x = divide(x.plus(1), new Ctor(1).minus(x), wpr + pr, 1);\r\n\r\n Ctor.precision = pr + 4;\r\n Ctor.rounding = 1;\r\n\r\n x = x.ln();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(0.5);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arcsine (inverse sine) in radians of the value of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi/2, pi/2]\r\n *\r\n * asin(x) = 2*atan(x/(1 + sqrt(1 - x^2)))\r\n *\r\n * asin(0) = 0\r\n * asin(-0) = -0\r\n * asin(1/2) = pi/6\r\n * asin(-1/2) = -pi/6\r\n * asin(1) = pi/2\r\n * asin(-1) = -pi/2\r\n * asin(|x| > 1) = NaN\r\n * asin(NaN) = NaN\r\n *\r\n * TODO? Compare performance of Taylor series.\r\n *\r\n */\r\nP.inverseSine = P.asin = function () {\r\n var halfPi, k,\r\n pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n k = x.abs().cmp(1);\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n if (k !== -1) {\r\n\r\n // |x| is 1\r\n if (k === 0) {\r\n halfPi = getPi(Ctor, pr + 4, rm).times(0.5);\r\n halfPi.s = x.s;\r\n return halfPi;\r\n }\r\n\r\n // |x| > 1 or x is NaN\r\n return new Ctor(NaN);\r\n }\r\n\r\n // TODO? Special case asin(1/2) = pi/6 and asin(-1/2) = -pi/6\r\n\r\n Ctor.precision = pr + 6;\r\n Ctor.rounding = 1;\r\n\r\n x = x.div(new Ctor(1).minus(x.times(x)).sqrt().plus(1)).atan();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(2);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent (inverse tangent) in radians of the value\r\n * of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi/2, pi/2]\r\n *\r\n * atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n *\r\n * atan(0) = 0\r\n * atan(-0) = -0\r\n * atan(1) = pi/4\r\n * atan(-1) = -pi/4\r\n * atan(Infinity) = pi/2\r\n * atan(-Infinity) = -pi/2\r\n * atan(NaN) = NaN\r\n *\r\n */\r\nP.inverseTangent = P.atan = function () {\r\n var i, j, k, n, px, t, r, wpr, x2,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding;\r\n\r\n if (!x.isFinite()) {\r\n if (!x.s) return new Ctor(NaN);\r\n if (pr + 4 <= PI_PRECISION) {\r\n r = getPi(Ctor, pr + 4, rm).times(0.5);\r\n r.s = x.s;\r\n return r;\r\n }\r\n } else if (x.isZero()) {\r\n return new Ctor(x);\r\n } else if (x.abs().eq(1) && pr + 4 <= PI_PRECISION) {\r\n r = getPi(Ctor, pr + 4, rm).times(0.25);\r\n r.s = x.s;\r\n return r;\r\n }\r\n\r\n Ctor.precision = wpr = pr + 10;\r\n Ctor.rounding = 1;\r\n\r\n // TODO? if (x >= 1 && pr <= PI_PRECISION) atan(x) = halfPi * x.s - atan(1 / x);\r\n\r\n // Argument reduction\r\n // Ensure |x| < 0.42\r\n // atan(x) = 2 * atan(x / (1 + sqrt(1 + x^2)))\r\n\r\n k = Math.min(28, wpr / LOG_BASE + 2 | 0);\r\n\r\n for (i = k; i; --i) x = x.div(x.times(x).plus(1).sqrt().plus(1));\r\n\r\n external = false;\r\n\r\n j = Math.ceil(wpr / LOG_BASE);\r\n n = 1;\r\n x2 = x.times(x);\r\n r = new Ctor(x);\r\n px = x;\r\n\r\n // atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n for (; i !== -1;) {\r\n px = px.times(x2);\r\n t = r.minus(px.div(n += 2));\r\n\r\n px = px.times(x2);\r\n r = t.plus(px.div(n += 2));\r\n\r\n if (r.d[j] !== void 0) for (i = j; r.d[i] === t.d[i] && i--;);\r\n }\r\n\r\n if (k) r = r.times(2 << (k - 1));\r\n\r\n external = true;\r\n\r\n return finalise(r, Ctor.precision = pr, Ctor.rounding = rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is a finite number, otherwise return false.\r\n *\r\n */\r\nP.isFinite = function () {\r\n return !!this.d;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is an integer, otherwise return false.\r\n *\r\n */\r\nP.isInteger = P.isInt = function () {\r\n return !!this.d && mathfloor(this.e / LOG_BASE) > this.d.length - 2;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is NaN, otherwise return false.\r\n *\r\n */\r\nP.isNaN = function () {\r\n return !this.s;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is negative, otherwise return false.\r\n *\r\n */\r\nP.isNegative = P.isNeg = function () {\r\n return this.s < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is positive, otherwise return false.\r\n *\r\n */\r\nP.isPositive = P.isPos = function () {\r\n return this.s > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is 0 or -0, otherwise return false.\r\n *\r\n */\r\nP.isZero = function () {\r\n return !!this.d && this.d[0] === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is less than `y`, otherwise return false.\r\n *\r\n */\r\nP.lessThan = P.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false.\r\n *\r\n */\r\nP.lessThanOrEqualTo = P.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n};\r\n\r\n\r\n/*\r\n * Return the logarithm of the value of this Decimal to the specified base, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * If no base is specified, return log[10](arg).\r\n *\r\n * log[base](arg) = ln(arg) / ln(base)\r\n *\r\n * The result will always be correctly rounded if the base of the log is 10, and 'almost always'\r\n * otherwise:\r\n *\r\n * Depending on the rounding mode, the result may be incorrectly rounded if the first fifteen\r\n * rounding digits are [49]99999999999999 or [50]00000000000000. In that case, the maximum error\r\n * between the result and the correctly rounded result will be one ulp (unit in the last place).\r\n *\r\n * log[-b](a) = NaN\r\n * log[0](a) = NaN\r\n * log[1](a) = NaN\r\n * log[NaN](a) = NaN\r\n * log[Infinity](a) = NaN\r\n * log[b](0) = -Infinity\r\n * log[b](-0) = -Infinity\r\n * log[b](-a) = NaN\r\n * log[b](1) = 0\r\n * log[b](Infinity) = Infinity\r\n * log[b](NaN) = NaN\r\n *\r\n * [base] {number|string|bigint|Decimal} The base of the logarithm.\r\n *\r\n */\r\nP.logarithm = P.log = function (base) {\r\n var isBase10, d, denominator, k, inf, num, sd, r,\r\n arg = this,\r\n Ctor = arg.constructor,\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding,\r\n guard = 5;\r\n\r\n // Default base is 10.\r\n if (base == null) {\r\n base = new Ctor(10);\r\n isBase10 = true;\r\n } else {\r\n base = new Ctor(base);\r\n d = base.d;\r\n\r\n // Return NaN if base is negative, or non-finite, or is 0 or 1.\r\n if (base.s < 0 || !d || !d[0] || base.eq(1)) return new Ctor(NaN);\r\n\r\n isBase10 = base.eq(10);\r\n }\r\n\r\n d = arg.d;\r\n\r\n // Is arg negative, non-finite, 0 or 1?\r\n if (arg.s < 0 || !d || !d[0] || arg.eq(1)) {\r\n return new Ctor(d && !d[0] ? -1 / 0 : arg.s != 1 ? NaN : d ? 0 : 1 / 0);\r\n }\r\n\r\n // The result will have a non-terminating decimal expansion if base is 10 and arg is not an\r\n // integer power of 10.\r\n if (isBase10) {\r\n if (d.length > 1) {\r\n inf = true;\r\n } else {\r\n for (k = d[0]; k % 10 === 0;) k /= 10;\r\n inf = k !== 1;\r\n }\r\n }\r\n\r\n external = false;\r\n sd = pr + guard;\r\n num = naturalLogarithm(arg, sd);\r\n denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\r\n\r\n // The result will have 5 rounding digits.\r\n r = divide(num, denominator, sd, 1);\r\n\r\n // If at a rounding boundary, i.e. the result's rounding digits are [49]9999 or [50]0000,\r\n // calculate 10 further digits.\r\n //\r\n // If the result is known to have an infinite decimal expansion, repeat this until it is clear\r\n // that the result is above or below the boundary. Otherwise, if after calculating the 10\r\n // further digits, the last 14 are nines, round up and assume the result is exact.\r\n // Also assume the result is exact if the last 14 are zero.\r\n //\r\n // Example of a result that will be incorrectly rounded:\r\n // log[1048576](4503599627370502) = 2.60000000000000009610279511444746...\r\n // The above result correctly rounded using ROUND_CEIL to 1 decimal place should be 2.7, but it\r\n // will be given as 2.6 as there are 15 zeros immediately after the requested decimal place, so\r\n // the exact result would be assumed to be 2.6, which rounded using ROUND_CEIL to 1 decimal\r\n // place is still 2.6.\r\n if (checkRoundingDigits(r.d, k = pr, rm)) {\r\n\r\n do {\r\n sd += 10;\r\n num = naturalLogarithm(arg, sd);\r\n denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\r\n r = divide(num, denominator, sd, 1);\r\n\r\n if (!inf) {\r\n\r\n // Check for 14 nines from the 2nd rounding digit, as the first may be 4.\r\n if (+digitsToString(r.d).slice(k + 1, k + 15) + 1 == 1e14) {\r\n r = finalise(r, pr + 1, 0);\r\n }\r\n\r\n break;\r\n }\r\n } while (checkRoundingDigits(r.d, k += 10, rm));\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, pr, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the maximum of the arguments and the value of this Decimal.\r\n *\r\n * arguments {number|string|bigint|Decimal}\r\n *\r\nP.max = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, -1);\r\n};\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the minimum of the arguments and the value of this Decimal.\r\n *\r\n * arguments {number|string|bigint|Decimal}\r\n *\r\nP.min = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, 1);\r\n};\r\n */\r\n\r\n\r\n/*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal minus `y`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.minus = P.sub = function (y) {\r\n var d, e, i, j, k, len, pr, rm, xd, xe, xLTy, yd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // If either is not finite...\r\n if (!x.d || !y.d) {\r\n\r\n // Return NaN if either is NaN.\r\n if (!x.s || !y.s) y = new Ctor(NaN);\r\n\r\n // Return y negated if x is finite and y is \u00B1Infinity.\r\n else if (x.d) y.s = -y.s;\r\n\r\n // Return x if y is finite and x is \u00B1Infinity.\r\n // Return x if both are \u00B1Infinity with different signs.\r\n // Return NaN if both are \u00B1Infinity with the same sign.\r\n else y = new Ctor(y.d || x.s !== y.s ? x : NaN);\r\n\r\n return y;\r\n }\r\n\r\n // If signs differ...\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.plus(y);\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n // If either is zero...\r\n if (!xd[0] || !yd[0]) {\r\n\r\n // Return y negated if x is zero and y is non-zero.\r\n if (yd[0]) y.s = -y.s;\r\n\r\n // Return x if y is zero and x is non-zero.\r\n else if (xd[0]) y = new Ctor(x);\r\n\r\n // Return zero if both are zero.\r\n // From IEEE 754 (2008) 6.3: 0 - 0 = -0 - -0 = -0 when rounding to -Infinity.\r\n else return new Ctor(rm === 3 ? -0 : 0);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n }\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n // Calculate base 1e7 exponents.\r\n e = mathfloor(y.e / LOG_BASE);\r\n xe = mathfloor(x.e / LOG_BASE);\r\n\r\n xd = xd.slice();\r\n k = xe - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (k) {\r\n xLTy = k < 0;\r\n\r\n if (xLTy) {\r\n d = xd;\r\n k = -k;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = xe;\r\n len = xd.length;\r\n }\r\n\r\n // Numbers with massively different exponents would result in a very high number of\r\n // zeros needing to be prepended, but this can be avoided while still ensuring correct\r\n // rounding by limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`.\r\n i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;\r\n\r\n if (k > i) {\r\n k = i;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents.\r\n d.reverse();\r\n for (i = k; i--;) d.push(0);\r\n d.reverse();\r\n\r\n // Base 1e7 exponents equal.\r\n } else {\r\n\r\n // Check digits to determine which is the bigger number.\r\n\r\n i = xd.length;\r\n len = yd.length;\r\n xLTy = i < len;\r\n if (xLTy) len = i;\r\n\r\n for (i = 0; i < len; i++) {\r\n if (xd[i] != yd[i]) {\r\n xLTy = xd[i] < yd[i];\r\n break;\r\n }\r\n }\r\n\r\n k = 0;\r\n }\r\n\r\n if (xLTy) {\r\n d = xd;\r\n xd = yd;\r\n yd = d;\r\n y.s = -y.s;\r\n }\r\n\r\n len = xd.length;\r\n\r\n // Append zeros to `xd` if shorter.\r\n // Don't add zeros to `yd` if shorter as subtraction only needs to start at `yd` length.\r\n for (i = yd.length - len; i > 0; --i) xd[len++] = 0;\r\n\r\n // Subtract yd from xd.\r\n for (i = yd.length; i > k;) {\r\n\r\n if (xd[--i] < yd[i]) {\r\n for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1;\r\n --xd[j];\r\n xd[i] += BASE;\r\n }\r\n\r\n xd[i] -= yd[i];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] === 0;) xd.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xd[0] === 0; xd.shift()) --e;\r\n\r\n // Zero?\r\n if (!xd[0]) return new Ctor(rm === 3 ? -0 : 0);\r\n\r\n y.d = xd;\r\n y.e = getBase10Exponent(xd, e);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n};\r\n\r\n\r\n/*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal modulo `y`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * The result depends on the modulo mode.\r\n *\r\n */\r\nP.modulo = P.mod = function (y) {\r\n var q,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // Return NaN if x is \u00B1Infinity or NaN, or y is NaN or \u00B10.\r\n if (!x.d || !y.s || y.d && !y.d[0]) return new Ctor(NaN);\r\n\r\n // Return x if y is \u00B1Infinity or x is \u00B10.\r\n if (!y.d || x.d && !x.d[0]) {\r\n return finalise(new Ctor(x), Ctor.precision, Ctor.rounding);\r\n }\r\n\r\n // Prevent rounding of intermediate calculations.\r\n external = false;\r\n\r\n if (Ctor.modulo == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // result = x - q * y where 0 <= result < abs(y)\r\n q = divide(x, y.abs(), 0, 3, 1);\r\n q.s *= y.s;\r\n } else {\r\n q = divide(x, y, 0, Ctor.modulo, 1);\r\n }\r\n\r\n q = q.times(y);\r\n\r\n external = true;\r\n\r\n return x.minus(q);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of the value of this Decimal,\r\n * i.e. the base e raised to the power the value of this Decimal, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.naturalExponential = P.exp = function () {\r\n return naturalExponential(this);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of the value of this Decimal,\r\n * rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.naturalLogarithm = P.ln = function () {\r\n return naturalLogarithm(this);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by\r\n * -1.\r\n *\r\n */\r\nP.negated = P.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s;\r\n return finalise(x);\r\n};\r\n\r\n\r\n/*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal plus `y`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.plus = P.add = function (y) {\r\n var carry, d, e, i, k, len, pr, rm, xd, yd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // If either is not finite...\r\n if (!x.d || !y.d) {\r\n\r\n // Return NaN if either is NaN.\r\n if (!x.s || !y.s) y = new Ctor(NaN);\r\n\r\n // Return x if y is finite and x is \u00B1Infinity.\r\n // Return x if both are \u00B1Infinity with the same sign.\r\n // Return NaN if both are \u00B1Infinity with different signs.\r\n // Return y if x is finite and y is \u00B1Infinity.\r\n else if (!x.d) y = new Ctor(y.d || x.s === y.s ? x : NaN);\r\n\r\n return y;\r\n }\r\n\r\n // If signs differ...\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.minus(y);\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n // If either is zero...\r\n if (!xd[0] || !yd[0]) {\r\n\r\n // Return x if y is zero.\r\n // Return y if y is non-zero.\r\n if (!yd[0]) y = new Ctor(x);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n }\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n // Calculate base 1e7 exponents.\r\n k = mathfloor(x.e / LOG_BASE);\r\n e = mathfloor(y.e / LOG_BASE);\r\n\r\n xd = xd.slice();\r\n i = k - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (i) {\r\n\r\n if (i < 0) {\r\n d = xd;\r\n i = -i;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = k;\r\n len = xd.length;\r\n }\r\n\r\n // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1.\r\n k = Math.ceil(pr / LOG_BASE);\r\n len = k > len ? k + 1 : len + 1;\r\n\r\n if (i > len) {\r\n i = len;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts.\r\n d.reverse();\r\n for (; i--;) d.push(0);\r\n d.reverse();\r\n }\r\n\r\n len = xd.length;\r\n i = yd.length;\r\n\r\n // If yd is longer than xd, swap xd and yd so xd points to the longer array.\r\n if (len - i < 0) {\r\n i = len;\r\n d = yd;\r\n yd = xd;\r\n xd = d;\r\n }\r\n\r\n // Only start adding at yd.length - 1 as the further digits of xd can be left as they are.\r\n for (carry = 0; i;) {\r\n carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;\r\n xd[i] %= BASE;\r\n }\r\n\r\n if (carry) {\r\n xd.unshift(carry);\r\n ++e;\r\n }\r\n\r\n // Remove trailing zeros.\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n for (len = xd.length; xd[--len] == 0;) xd.pop();\r\n\r\n y.d = xd;\r\n y.e = getBase10Exponent(xd, e);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n};\r\n\r\n\r\n/*\r\n * Return the number of significant digits of the value of this Decimal.\r\n *\r\n * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0.\r\n *\r\n */\r\nP.precision = P.sd = function (z) {\r\n var k,\r\n x = this;\r\n\r\n if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z);\r\n\r\n if (x.d) {\r\n k = getPrecision(x.d);\r\n if (z && x.e + 1 > k) k = x.e + 1;\r\n } else {\r\n k = NaN;\r\n }\r\n\r\n return k;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using\r\n * rounding mode `rounding`.\r\n *\r\n */\r\nP.round = function () {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n return finalise(new Ctor(x), x.e + 1, Ctor.rounding);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sine of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * sin(x) = x - x^3/3! + x^5/5! - ...\r\n *\r\n * sin(0) = 0\r\n * sin(-0) = -0\r\n * sin(Infinity) = NaN\r\n * sin(-Infinity) = NaN\r\n * sin(NaN) = NaN\r\n *\r\n */\r\nP.sine = P.sin = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\r\n Ctor.rounding = 1;\r\n\r\n x = sine(Ctor, toLessThanHalfPi(Ctor, x));\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant > 2 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of this Decimal, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n */\r\nP.squareRoot = P.sqrt = function () {\r\n var m, n, sd, r, rep, t,\r\n x = this,\r\n d = x.d,\r\n e = x.e,\r\n s = x.s,\r\n Ctor = x.constructor;\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !d || !d[0]) {\r\n return new Ctor(!s || s < 0 && (!d || d[0]) ? NaN : d ? x : 1 / 0);\r\n }\r\n\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+x);\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = digitsToString(d);\r\n\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(n);\r\n e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n sd = (e = Ctor.precision) + 3;\r\n\r\n // Newton-Raphson iteration.\r\n for (;;) {\r\n t = r;\r\n r = t.plus(divide(x, t, sd + 2, 1)).times(0.5);\r\n\r\n // TODO? Replace with for-loop and checkRoundingDigits.\r\n if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\r\n n = n.slice(sd - 3, sd + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or\r\n // 4999, i.e. approaching a rounding boundary, continue the iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n if (!rep) {\r\n finalise(t, e + 1, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n sd += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\r\n // If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n finalise(r, e + 1, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, e, Ctor.rounding, m);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the tangent of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * tan(0) = 0\r\n * tan(-0) = -0\r\n * tan(Infinity) = NaN\r\n * tan(-Infinity) = NaN\r\n * tan(NaN) = NaN\r\n *\r\n */\r\nP.tangent = P.tan = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 10;\r\n Ctor.rounding = 1;\r\n\r\n x = x.sin();\r\n x.s = 1;\r\n x = divide(x, new Ctor(1).minus(x.times(x)).sqrt(), pr + 10, 0);\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant == 2 || quadrant == 4 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new Decimal whose value is this Decimal times `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.times = P.mul = function (y) {\r\n var carry, e, i, k, r, rL, t, xdL, ydL,\r\n x = this,\r\n Ctor = x.constructor,\r\n xd = x.d,\r\n yd = (y = new Ctor(y)).d;\r\n\r\n y.s *= x.s;\r\n\r\n // If either is NaN, \u00B1Infinity or \u00B10...\r\n if (!xd || !xd[0] || !yd || !yd[0]) {\r\n\r\n return new Ctor(!y.s || xd && !xd[0] && !yd || yd && !yd[0] && !xd\r\n\r\n // Return NaN if either is NaN.\r\n // Return NaN if x is \u00B10 and y is \u00B1Infinity, or y is \u00B10 and x is \u00B1Infinity.\r\n ? NaN\r\n\r\n // Return \u00B1Infinity if either is \u00B1Infinity.\r\n // Return \u00B10 if either is \u00B10.\r\n : !xd || !yd ? y.s / 0 : y.s * 0);\r\n }\r\n\r\n e = mathfloor(x.e / LOG_BASE) + mathfloor(y.e / LOG_BASE);\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Ensure xd points to the longer array.\r\n if (xdL < ydL) {\r\n r = xd;\r\n xd = yd;\r\n yd = r;\r\n rL = xdL;\r\n xdL = ydL;\r\n ydL = rL;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n r = [];\r\n rL = xdL + ydL;\r\n for (i = rL; i--;) r.push(0);\r\n\r\n // Multiply!\r\n for (i = ydL; --i >= 0;) {\r\n carry = 0;\r\n for (k = xdL + i; k > i;) {\r\n t = r[k] + yd[i] * xd[k - i - 1] + carry;\r\n r[k--] = t % BASE | 0;\r\n carry = t / BASE | 0;\r\n }\r\n\r\n r[k] = (r[k] + carry) % BASE | 0;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; !r[--rL];) r.pop();\r\n\r\n if (carry) ++e;\r\n else r.shift();\r\n\r\n y.d = r;\r\n y.e = getBase10Exponent(r, e);\r\n\r\n return external ? finalise(y, Ctor.precision, Ctor.rounding) : y;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 2, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toBinary = function (sd, rm) {\r\n return toStringBinary(this, 2, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp`\r\n * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted.\r\n *\r\n * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toDecimalPlaces = P.toDP = function (dp, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n if (dp === void 0) return x;\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n return finalise(x, dp + x.e + 1, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in exponential notation rounded to\r\n * `dp` fixed decimal places using rounding mode `rounding`.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toExponential = function (dp, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = finiteToString(x, true);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = finalise(new Ctor(x), dp + 1, rm);\r\n str = finiteToString(x, true, dp + 1);\r\n }\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in normal (fixed-point) notation to\r\n * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is\r\n * omitted.\r\n *\r\n * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n * (-0).toFixed(3) is '0.000'.\r\n * (-0.5).toFixed(0) is '-0'.\r\n *\r\n */\r\nP.toFixed = function (dp, rm) {\r\n var str, y,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = finiteToString(x);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n y = finalise(new Ctor(x), dp + x.e + 1, rm);\r\n str = finiteToString(y, false, dp + y.e + 1);\r\n }\r\n\r\n // To determine whether to add the minus sign look at the value before it was rounded,\r\n // i.e. look at `x` rather than `y`.\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return an array representing the value of this Decimal as a simple fraction with an integer\r\n * numerator and an integer denominator.\r\n *\r\n * The denominator will be a positive non-zero value less than or equal to the specified maximum\r\n * denominator. If a maximum denominator is not specified, the denominator will be the lowest\r\n * value necessary to represent the number exactly.\r\n *\r\n * [maxD] {number|string|bigint|Decimal} Maximum denominator. Integer >= 1 and < Infinity.\r\n *\r\n */\r\nP.toFraction = function (maxD) {\r\n var d, d0, d1, d2, e, k, n, n0, n1, pr, q, r,\r\n x = this,\r\n xd = x.d,\r\n Ctor = x.constructor;\r\n\r\n if (!xd) return new Ctor(x);\r\n\r\n n1 = d0 = new Ctor(1);\r\n d1 = n0 = new Ctor(0);\r\n\r\n d = new Ctor(d1);\r\n e = d.e = getPrecision(xd) - x.e - 1;\r\n k = e % LOG_BASE;\r\n d.d[0] = mathpow(10, k < 0 ? LOG_BASE + k : k);\r\n\r\n if (maxD == null) {\r\n\r\n // d is 10**e, the minimum max-denominator needed.\r\n maxD = e > 0 ? d : n1;\r\n } else {\r\n n = new Ctor(maxD);\r\n if (!n.isInt() || n.lt(n1)) throw Error(invalidArgument + n);\r\n maxD = n.gt(d) ? (e > 0 ? d : n1) : n;\r\n }\r\n\r\n external = false;\r\n n = new Ctor(digitsToString(xd));\r\n pr = Ctor.precision;\r\n Ctor.precision = e = xd.length * LOG_BASE * 2;\r\n\r\n for (;;) {\r\n q = divide(n, d, 0, 1, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.cmp(maxD) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n d2 = n1;\r\n n1 = n0.plus(q.times(d2));\r\n n0 = d2;\r\n d2 = d;\r\n d = n.minus(q.times(d2));\r\n n = d2;\r\n }\r\n\r\n d2 = divide(maxD.minus(d0), d1, 0, 1, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1?\r\n r = divide(n1, d1, e, 1).minus(x).abs().cmp(divide(n0, d0, e, 1).minus(x).abs()) < 1\r\n ? [n1, d1] : [n0, d0];\r\n\r\n Ctor.precision = pr;\r\n external = true;\r\n\r\n return r;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 16, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toHexadecimal = P.toHex = function (sd, rm) {\r\n return toStringBinary(this, 16, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Returns a new Decimal whose value is the nearest multiple of `y` in the direction of rounding\r\n * mode `rm`, or `Decimal.rounding` if `rm` is omitted, to the value of this Decimal.\r\n *\r\n * The return value will always have the same sign as this Decimal, unless either this Decimal\r\n * or `y` is NaN, in which case the return value will be also be NaN.\r\n *\r\n * The return value is not affected by the value of `precision`.\r\n *\r\n * y {number|string|bigint|Decimal} The magnitude to round to a multiple of.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toNearest() rounding mode not an integer: {rm}'\r\n * 'toNearest() rounding mode out of range: {rm}'\r\n *\r\n */\r\nP.toNearest = function (y, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n\r\n if (y == null) {\r\n\r\n // If x is not finite, return x.\r\n if (!x.d) return x;\r\n\r\n y = new Ctor(1);\r\n rm = Ctor.rounding;\r\n } else {\r\n y = new Ctor(y);\r\n if (rm === void 0) {\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(rm, 0, 8);\r\n }\r\n\r\n // If x is not finite, return x if y is not NaN, else NaN.\r\n if (!x.d) return y.s ? x : y;\r\n\r\n // If y is not finite, return Infinity with the sign of x if y is Infinity, else NaN.\r\n if (!y.d) {\r\n if (y.s) y.s = x.s;\r\n return y;\r\n }\r\n }\r\n\r\n // If y is not zero, calculate the nearest multiple of y to x.\r\n if (y.d[0]) {\r\n external = false;\r\n x = divide(x, y, 0, rm, 1).times(y);\r\n external = true;\r\n finalise(x);\r\n\r\n // If y is zero, return zero with the sign of x.\r\n } else {\r\n y.s = x.s;\r\n x = y;\r\n }\r\n\r\n return x;\r\n};\r\n\r\n\r\n/*\r\n * Return the value of this Decimal converted to a number primitive.\r\n * Zero keeps its sign.\r\n *\r\n */\r\nP.toNumber = function () {\r\n return +this;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 8, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toOctal = function (sd, rm) {\r\n return toStringBinary(this, 8, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal raised to the power `y`, rounded\r\n * to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * ECMAScript compliant.\r\n *\r\n * pow(x, NaN) = NaN\r\n * pow(x, \u00B10) = 1\r\n\r\n * pow(NaN, non-zero) = NaN\r\n * pow(abs(x) > 1, +Infinity) = +Infinity\r\n * pow(abs(x) > 1, -Infinity) = +0\r\n * pow(abs(x) == 1, \u00B1Infinity) = NaN\r\n * pow(abs(x) < 1, +Infinity) = +0\r\n * pow(abs(x) < 1, -Infinity) = +Infinity\r\n * pow(+Infinity, y > 0) = +Infinity\r\n * pow(+Infinity, y < 0) = +0\r\n * pow(-Infinity, odd integer > 0) = -Infinity\r\n * pow(-Infinity, even integer > 0) = +Infinity\r\n * pow(-Infinity, odd integer < 0) = -0\r\n * pow(-Infinity, even integer < 0) = +0\r\n * pow(+0, y > 0) = +0\r\n * pow(+0, y < 0) = +Infinity\r\n * pow(-0, odd integer > 0) = -0\r\n * pow(-0, even integer > 0) = +0\r\n * pow(-0, odd integer < 0) = -Infinity\r\n * pow(-0, even integer < 0) = +Infinity\r\n * pow(finite x < 0, finite non-integer) = NaN\r\n *\r\n * For non-integer or very large exponents pow(x, y) is calculated using\r\n *\r\n * x^y = exp(y*ln(x))\r\n *\r\n * Assuming the first 15 rounding digits are each equally likely to be any digit 0-9, the\r\n * probability of an incorrectly rounded result\r\n * P([49]9{14} | [50]0{14}) = 2 * 0.2 * 10^-14 = 4e-15 = 1/2.5e+14\r\n * i.e. 1 in 250,000,000,000,000\r\n *\r\n * If a result is incorrectly rounded the maximum error will be 1 ulp (unit in last place).\r\n *\r\n * y {number|string|bigint|Decimal} The power to which to raise this Decimal.\r\n *\r\n */\r\nP.toPower = P.pow = function (y) {\r\n var e, k, pr, r, rm, s,\r\n x = this,\r\n Ctor = x.constructor,\r\n yn = +(y = new Ctor(y));\r\n\r\n // Either \u00B1Infinity, NaN or \u00B10?\r\n if (!x.d || !y.d || !x.d[0] || !y.d[0]) return new Ctor(mathpow(+x, yn));\r\n\r\n x = new Ctor(x);\r\n\r\n if (x.eq(1)) return x;\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n if (y.eq(1)) return finalise(x, pr, rm);\r\n\r\n // y exponent\r\n e = mathfloor(y.e / LOG_BASE);\r\n\r\n // If y is a small integer use the 'exponentiation by squaring' algorithm.\r\n if (e >= y.d.length - 1 && (k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {\r\n r = intPow(Ctor, x, k, pr);\r\n return y.s < 0 ? new Ctor(1).div(r) : finalise(r, pr, rm);\r\n }\r\n\r\n s = x.s;\r\n\r\n // if x is negative\r\n if (s < 0) {\r\n\r\n // if y is not an integer\r\n if (e < y.d.length - 1) return new Ctor(NaN);\r\n\r\n // Result is positive if x is negative and the last digit of integer y is even.\r\n if ((y.d[e] & 1) == 0) s = 1;\r\n\r\n // if x.eq(-1)\r\n if (x.e == 0 && x.d[0] == 1 && x.d.length == 1) {\r\n x.s = s;\r\n return x;\r\n }\r\n }\r\n\r\n // Estimate result exponent.\r\n // x^y = 10^e, where e = y * log10(x)\r\n // log10(x) = log10(x_significand) + x_exponent\r\n // log10(x_significand) = ln(x_significand) / ln(10)\r\n k = mathpow(+x, yn);\r\n e = k == 0 || !isFinite(k)\r\n ? mathfloor(yn * (Math.log('0.' + digitsToString(x.d)) / Math.LN10 + x.e + 1))\r\n : new Ctor(k + '').e;\r\n\r\n // Exponent estimate may be incorrect e.g. x: 0.999999999999999999, y: 2.29, e: 0, r.e: -1.\r\n\r\n // Overflow/underflow?\r\n if (e > Ctor.maxE + 1 || e < Ctor.minE - 1) return new Ctor(e > 0 ? s / 0 : 0);\r\n\r\n external = false;\r\n Ctor.rounding = x.s = 1;\r\n\r\n // Estimate the extra guard digits needed to ensure five correct rounding digits from\r\n // naturalLogarithm(x). Example of failure without these extra digits (precision: 10):\r\n // new Decimal(2.32456).pow('2087987436534566.46411')\r\n // should be 1.162377823e+764914905173815, but is 1.162355823e+764914905173815\r\n k = Math.min(12, (e + '').length);\r\n\r\n // r = x^y = exp(y*ln(x))\r\n r = naturalExponential(y.times(naturalLogarithm(x, pr + k)), pr);\r\n\r\n // r may be Infinity, e.g. (0.9999999999999999).pow(-1e+40)\r\n if (r.d) {\r\n\r\n // Truncate to the required precision plus five rounding digits.\r\n r = finalise(r, pr + 5, 1);\r\n\r\n // If the rounding digits are [49]9999 or [50]0000 increase the precision by 10 and recalculate\r\n // the result.\r\n if (checkRoundingDigits(r.d, pr, rm)) {\r\n e = pr + 10;\r\n\r\n // Truncate to the increased precision plus five rounding digits.\r\n r = finalise(naturalExponential(y.times(naturalLogarithm(x, e + k)), e), e + 5, 1);\r\n\r\n // Check for 14 nines from the 2nd rounding digit (the first rounding digit may be 4 or 9).\r\n if (+digitsToString(r.d).slice(pr + 1, pr + 15) + 1 == 1e14) {\r\n r = finalise(r, pr + 1, 0);\r\n }\r\n }\r\n }\r\n\r\n r.s = s;\r\n external = true;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(r, pr, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal rounded to `sd` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * Return exponential notation if `sd` is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toPrecision = function (sd, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = finalise(new Ctor(x), sd, rm);\r\n str = finiteToString(x, sd <= x.e || x.e <= Ctor.toExpNeg, sd);\r\n }\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd`\r\n * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if\r\n * omitted.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toSD() digits out of range: {sd}'\r\n * 'toSD() digits not an integer: {sd}'\r\n * 'toSD() rounding mode not an integer: {rm}'\r\n * 'toSD() rounding mode out of range: {rm}'\r\n *\r\n */\r\nP.toSignificantDigits = P.toSD = function (sd, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n }\r\n\r\n return finalise(new Ctor(x), sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal.\r\n *\r\n * Return exponential notation if this Decimal has a positive exponent equal to or greater than\r\n * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`.\r\n *\r\n */\r\nP.toString = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal truncated to a whole number.\r\n *\r\n */\r\nP.truncated = P.trunc = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 1);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal.\r\n * Unlike `toString`, negative zero will include the minus sign.\r\n *\r\n */\r\nP.valueOf = P.toJSON = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n\r\n return x.isNeg() ? '-' + str : str;\r\n};\r\n\r\n\r\n// Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers.\r\n\r\n\r\n/*\r\n * digitsToString P.cubeRoot, P.logarithm, P.squareRoot, P.toFraction, P.toPower,\r\n * finiteToString, naturalExponential, naturalLogarithm\r\n * checkInt32 P.toDecimalPlaces, P.toExponential, P.toFixed, P.toNearest,\r\n * P.toPrecision, P.toSignificantDigits, toStringBinary, random\r\n * checkRoundingDigits P.logarithm, P.toPower, naturalExponential, naturalLogarithm\r\n * convertBase toStringBinary, parseOther\r\n * cos P.cos\r\n * divide P.atanh, P.cubeRoot, P.dividedBy, P.dividedToIntegerBy,\r\n * P.logarithm, P.modulo, P.squareRoot, P.tan, P.tanh, P.toFraction,\r\n * P.toNearest, toStringBinary, naturalExponential, naturalLogarithm,\r\n * taylorSeries, atan2, parseOther\r\n * finalise P.absoluteValue, P.atan, P.atanh, P.ceil, P.cos, P.cosh,\r\n * P.cubeRoot, P.dividedToIntegerBy, P.floor, P.logarithm, P.minus,\r\n * P.modulo, P.negated, P.plus, P.round, P.sin, P.sinh, P.squareRoot,\r\n * P.tan, P.times, P.toDecimalPlaces, P.toExponential, P.toFixed,\r\n * P.toNearest, P.toPower, P.toPrecision, P.toSignificantDigits,\r\n * P.truncated, divide, getLn10, getPi, naturalExponential,\r\n * naturalLogarithm, ceil, floor, round, trunc\r\n * finiteToString P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf,\r\n * toStringBinary\r\n * getBase10Exponent P.minus, P.plus, P.times, parseOther\r\n * getLn10 P.logarithm, naturalLogarithm\r\n * getPi P.acos, P.asin, P.atan, toLessThanHalfPi, atan2\r\n * getPrecision P.precision, P.toFraction\r\n * getZeroString digitsToString, finiteToString\r\n * intPow P.toPower, parseOther\r\n * isOdd toLessThanHalfPi\r\n * maxOrMin max, min\r\n * naturalExponential P.naturalExponential, P.toPower\r\n * naturalLogarithm P.acosh, P.asinh, P.atanh, P.logarithm, P.naturalLogarithm,\r\n * P.toPower, naturalExponential\r\n * nonFiniteToString finiteToString, toStringBinary\r\n * parseDecimal Decimal\r\n * parseOther Decimal\r\n * sin P.sin\r\n * taylorSeries P.cosh, P.sinh, cos, sin\r\n * toLessThanHalfPi P.cos, P.sin\r\n * toStringBinary P.toBinary, P.toHexadecimal, P.toOctal\r\n * truncate intPow\r\n *\r\n * Throws: P.logarithm, P.precision, P.toFraction, checkInt32, getLn10, getPi,\r\n * naturalLogarithm, config, parseOther, random, Decimal\r\n */\r\n\r\n\r\nfunction digitsToString(d) {\r\n var i, k, ws,\r\n indexOfLastWord = d.length - 1,\r\n str = '',\r\n w = d[0];\r\n\r\n if (indexOfLastWord > 0) {\r\n str += w;\r\n for (i = 1; i < indexOfLastWord; i++) {\r\n ws = d[i] + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n str += ws;\r\n }\r\n\r\n w = d[i];\r\n ws = w + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n } else if (w === 0) {\r\n return '0';\r\n }\r\n\r\n // Remove trailing zeros of last w.\r\n for (; w % 10 === 0;) w /= 10;\r\n\r\n return str + w;\r\n}\r\n\r\n\r\nfunction checkInt32(i, min, max) {\r\n if (i !== ~~i || i < min || i > max) {\r\n throw Error(invalidArgument + i);\r\n }\r\n}\r\n\r\n\r\n/*\r\n * Check 5 rounding digits if `repeating` is null, 4 otherwise.\r\n * `repeating == null` if caller is `log` or `pow`,\r\n * `repeating != null` if caller is `naturalLogarithm` or `naturalExponential`.\r\n */\r\nfunction checkRoundingDigits(d, i, rm, repeating) {\r\n var di, k, r, rd;\r\n\r\n // Get the length of the first word of the array d.\r\n for (k = d[0]; k >= 10; k /= 10) --i;\r\n\r\n // Is the rounding digit in the first word of d?\r\n if (--i < 0) {\r\n i += LOG_BASE;\r\n di = 0;\r\n } else {\r\n di = Math.ceil((i + 1) / LOG_BASE);\r\n i %= LOG_BASE;\r\n }\r\n\r\n // i is the index (0 - 6) of the rounding digit.\r\n // E.g. if within the word 3487563 the first rounding digit is 5,\r\n // then i = 4, k = 1000, rd = 3487563 % 1000 = 563\r\n k = mathpow(10, LOG_BASE - i);\r\n rd = d[di] % k | 0;\r\n\r\n if (repeating == null) {\r\n if (i < 3) {\r\n if (i == 0) rd = rd / 100 | 0;\r\n else if (i == 1) rd = rd / 10 | 0;\r\n r = rm < 4 && rd == 99999 || rm > 3 && rd == 49999 || rd == 50000 || rd == 0;\r\n } else {\r\n r = (rm < 4 && rd + 1 == k || rm > 3 && rd + 1 == k / 2) &&\r\n (d[di + 1] / k / 100 | 0) == mathpow(10, i - 2) - 1 ||\r\n (rd == k / 2 || rd == 0) && (d[di + 1] / k / 100 | 0) == 0;\r\n }\r\n } else {\r\n if (i < 4) {\r\n if (i == 0) rd = rd / 1000 | 0;\r\n else if (i == 1) rd = rd / 100 | 0;\r\n else if (i == 2) rd = rd / 10 | 0;\r\n r = (repeating || rm < 4) && rd == 9999 || !repeating && rm > 3 && rd == 4999;\r\n } else {\r\n r = ((repeating || rm < 4) && rd + 1 == k ||\r\n (!repeating && rm > 3) && rd + 1 == k / 2) &&\r\n (d[di + 1] / k / 1000 | 0) == mathpow(10, i - 3) - 1;\r\n }\r\n }\r\n\r\n return r;\r\n}\r\n\r\n\r\n// Convert string of `baseIn` to an array of numbers of `baseOut`.\r\n// Eg. convertBase('255', 10, 16) returns [15, 15].\r\n// Eg. convertBase('ff', 16, 10) returns [2, 5, 5].\r\nfunction convertBase(str, baseIn, baseOut) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n strL = str.length;\r\n\r\n for (; i < strL;) {\r\n for (arrL = arr.length; arrL--;) arr[arrL] *= baseIn;\r\n arr[0] += NUMERALS.indexOf(str.charAt(i++));\r\n for (j = 0; j < arr.length; j++) {\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] === void 0) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n}\r\n\r\n\r\n/*\r\n * cos(x) = 1 - x^2/2! + x^4/4! - ...\r\n * |x| < pi/2\r\n *\r\n */\r\nfunction cosine(Ctor, x) {\r\n var k, len, y;\r\n\r\n if (x.isZero()) return x;\r\n\r\n // Argument reduction: cos(4x) = 8*(cos^4(x) - cos^2(x)) + 1\r\n // i.e. cos(x) = 8*(cos^4(x/4) - cos^2(x/4)) + 1\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n len = x.d.length;\r\n if (len < 32) {\r\n k = Math.ceil(len / 3);\r\n y = (1 / tinyPow(4, k)).toString();\r\n } else {\r\n k = 16;\r\n y = '2.3283064365386962890625e-10';\r\n }\r\n\r\n Ctor.precision += k;\r\n\r\n x = taylorSeries(Ctor, 1, x.times(y), new Ctor(1));\r\n\r\n // Reverse argument reduction\r\n for (var i = k; i--;) {\r\n var cos2x = x.times(x);\r\n x = cos2x.times(cos2x).minus(cos2x).times(8).plus(1);\r\n }\r\n\r\n Ctor.precision -= k;\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Perform division in the specified base.\r\n */\r\nvar divide = (function () {\r\n\r\n // Assumes non-zero x and k, and hence non-zero result.\r\n function multiplyInteger(x, k, base) {\r\n var temp,\r\n carry = 0,\r\n i = x.length;\r\n\r\n for (x = x.slice(); i--;) {\r\n temp = x[i] * k + carry;\r\n x[i] = temp % base | 0;\r\n carry = temp / base | 0;\r\n }\r\n\r\n if (carry) x.unshift(carry);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, r;\r\n\r\n if (aL != bL) {\r\n r = aL > bL ? 1 : -1;\r\n } else {\r\n for (i = r = 0; i < aL; i++) {\r\n if (a[i] != b[i]) {\r\n r = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return r;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1;) a.shift();\r\n }\r\n\r\n return function (x, y, pr, rm, dp, base) {\r\n var cmp, e, i, k, logBase, more, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0,\r\n yL, yz,\r\n Ctor = x.constructor,\r\n sign = x.s == y.s ? 1 : -1,\r\n xd = x.d,\r\n yd = y.d;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xd || !xd[0] || !yd || !yd[0]) {\r\n\r\n return new Ctor(// Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xd ? yd && xd[0] == yd[0] : !yd) ? NaN :\r\n\r\n // Return \u00B10 if x is 0 or y is \u00B1Infinity, or return \u00B1Infinity as y is 0.\r\n xd && xd[0] == 0 || !yd ? sign * 0 : sign / 0);\r\n }\r\n\r\n if (base) {\r\n logBase = 1;\r\n e = x.e - y.e;\r\n } else {\r\n base = BASE;\r\n logBase = LOG_BASE;\r\n e = mathfloor(x.e / logBase) - mathfloor(y.e / logBase);\r\n }\r\n\r\n yL = yd.length;\r\n xL = xd.length;\r\n q = new Ctor(sign);\r\n qd = q.d = [];\r\n\r\n // Result exponent may be one less than e.\r\n // The digit array of a Decimal from toStringBinary may have trailing zeros.\r\n for (i = 0; yd[i] == (xd[i] || 0); i++);\r\n\r\n if (yd[i] > (xd[i] || 0)) e--;\r\n\r\n if (pr == null) {\r\n sd = pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else if (dp) {\r\n sd = pr + (x.e - y.e) + 1;\r\n } else {\r\n sd = pr;\r\n }\r\n\r\n if (sd < 0) {\r\n qd.push(1);\r\n more = true;\r\n } else {\r\n\r\n // Convert precision in number of base 10 digits to base 1e7 digits.\r\n sd = sd / logBase + 2 | 0;\r\n i = 0;\r\n\r\n // divisor < 1e7\r\n if (yL == 1) {\r\n k = 0;\r\n yd = yd[0];\r\n sd++;\r\n\r\n // k is the carry.\r\n for (; (i < xL || k) && sd--; i++) {\r\n t = k * base + (xd[i] || 0);\r\n qd[i] = t / yd | 0;\r\n k = t % yd | 0;\r\n }\r\n\r\n more = k || i < xL;\r\n\r\n // divisor >= 1e7\r\n } else {\r\n\r\n // Normalise xd and yd so highest order digit of yd is >= base/2\r\n k = base / (yd[0] + 1) | 0;\r\n\r\n if (k > 1) {\r\n yd = multiplyInteger(yd, k, base);\r\n xd = multiplyInteger(xd, k, base);\r\n yL = yd.length;\r\n xL = xd.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xd.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL;) rem[remL++] = 0;\r\n\r\n yz = yd.slice();\r\n yz.unshift(0);\r\n yd0 = yd[0];\r\n\r\n if (yd[1] >= base / 2) ++yd0;\r\n\r\n do {\r\n k = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, k.\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // k will be how many times the divisor goes into the current remainder.\r\n k = rem0 / yd0 | 0;\r\n\r\n // Algorithm:\r\n // 1. product = divisor * trial digit (k)\r\n // 2. if product > remainder: product -= divisor, k--\r\n // 3. remainder -= product\r\n // 4. if product was < remainder at 2:\r\n // 5. compare new remainder and divisor\r\n // 6. If remainder > divisor: remainder -= divisor, k++\r\n\r\n if (k > 1) {\r\n if (k >= base) k = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiplyInteger(yd, k, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n cmp = compare(prod, rem, prodL, remL);\r\n\r\n // product > remainder.\r\n if (cmp == 1) {\r\n k--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yd, prodL, base);\r\n }\r\n } else {\r\n\r\n // cmp is -1.\r\n // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1\r\n // to avoid it. If k is 1 there is a need to compare yd and rem again below.\r\n if (k == 0) cmp = k = 1;\r\n prod = yd.slice();\r\n }\r\n\r\n prodL = prod.length;\r\n if (prodL < remL) prod.unshift(0);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n\r\n // If product was < previous remainder.\r\n if (cmp == -1) {\r\n remL = rem.length;\r\n\r\n // Compare divisor and new remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n if (cmp < 1) {\r\n k++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yd, remL, base);\r\n }\r\n }\r\n\r\n remL = rem.length;\r\n } else if (cmp === 0) {\r\n k++;\r\n rem = [0];\r\n } // if cmp === 1, k will be 0\r\n\r\n // Add the next digit, k, to the result array.\r\n qd[i++] = k;\r\n\r\n // Update the remainder.\r\n if (cmp && rem[0]) {\r\n rem[remL++] = xd[xi] || 0;\r\n } else {\r\n rem = [xd[xi]];\r\n remL = 1;\r\n }\r\n\r\n } while ((xi++ < xL || rem[0] !== void 0) && sd--);\r\n\r\n more = rem[0] !== void 0;\r\n }\r\n\r\n // Leading zero?\r\n if (!qd[0]) qd.shift();\r\n }\r\n\r\n // logBase is 1 when divide is being used for base conversion.\r\n if (logBase == 1) {\r\n q.e = e;\r\n inexact = more;\r\n } else {\r\n\r\n // To calculate q.e, first get the number of digits of qd[0].\r\n for (i = 1, k = qd[0]; k >= 10; k /= 10) i++;\r\n q.e = i + e * logBase - 1;\r\n\r\n finalise(q, dp ? pr + q.e + 1 : pr, rm, more);\r\n }\r\n\r\n return q;\r\n };\r\n})();\r\n\r\n\r\n/*\r\n * Round `x` to `sd` significant digits using rounding mode `rm`.\r\n * Check for over/under-flow.\r\n */\r\n function finalise(x, sd, rm, isTruncated) {\r\n var digits, i, j, k, rd, roundUp, w, xd, xdi,\r\n Ctor = x.constructor;\r\n\r\n // Don't round if sd is null or undefined.\r\n out: if (sd != null) {\r\n xd = x.d;\r\n\r\n // Infinity/NaN.\r\n if (!xd) return x;\r\n\r\n // rd: the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // w: the word of xd containing rd, a base 1e7 number.\r\n // xdi: the index of w within xd.\r\n // digits: the number of digits of w.\r\n // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if\r\n // they had leading zeros)\r\n // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero).\r\n\r\n // Get the length of the first word of the digits array xd.\r\n for (digits = 1, k = xd[0]; k >= 10; k /= 10) digits++;\r\n i = sd - digits;\r\n\r\n // Is the rounding digit in the first word of xd?\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n w = xd[xdi = 0];\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = w / mathpow(10, digits - j - 1) % 10 | 0;\r\n } else {\r\n xdi = Math.ceil((i + 1) / LOG_BASE);\r\n k = xd.length;\r\n if (xdi >= k) {\r\n if (isTruncated) {\r\n\r\n // Needed by `naturalExponential`, `naturalLogarithm` and `squareRoot`.\r\n for (; k++ <= xdi;) xd.push(0);\r\n w = rd = 0;\r\n digits = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n w = k = xd[xdi];\r\n\r\n // Get the number of digits of w.\r\n for (digits = 1; k >= 10; k /= 10) digits++;\r\n\r\n // Get the index of rd within w.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within w, adjusted for leading zeros.\r\n // The number of leading zeros of w is given by LOG_BASE - digits.\r\n j = i - LOG_BASE + digits;\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = j < 0 ? 0 : w / mathpow(10, digits - j - 1) % 10 | 0;\r\n }\r\n }\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n isTruncated = isTruncated || sd < 0 ||\r\n xd[xdi + 1] !== void 0 || (j < 0 ? w : w % mathpow(10, digits - j - 1));\r\n\r\n // The expression `w % mathpow(10, digits - j - 1)` returns all the digits of w to the right\r\n // of the digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression\r\n // will give 714.\r\n\r\n roundUp = rm < 4\r\n ? (rd || isTruncated) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || isTruncated || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? w / mathpow(10, digits - j) : 0 : xd[xdi - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xd[0]) {\r\n xd.length = 0;\r\n if (roundUp) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xd[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xd.length = xdi;\r\n k = 1;\r\n xdi--;\r\n } else {\r\n xd.length = xdi + 1;\r\n k = mathpow(10, LOG_BASE - i);\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of w.\r\n xd[xdi] = j > 0 ? (w / mathpow(10, digits - j) % mathpow(10, j) | 0) * k : 0;\r\n }\r\n\r\n if (roundUp) {\r\n for (;;) {\r\n\r\n // Is the digit to be rounded up in the first word of xd?\r\n if (xdi == 0) {\r\n\r\n // i will be the length of xd[0] before k is added.\r\n for (i = 1, j = xd[0]; j >= 10; j /= 10) i++;\r\n j = xd[0] += k;\r\n for (k = 1; j >= 10; j /= 10) k++;\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xd[0] == BASE) xd[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xd[xdi] += k;\r\n if (xd[xdi] != BASE) break;\r\n xd[xdi--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xd.length; xd[--i] === 0;) xd.pop();\r\n }\r\n\r\n if (external) {\r\n\r\n // Overflow?\r\n if (x.e > Ctor.maxE) {\r\n\r\n // Infinity.\r\n x.d = null;\r\n x.e = NaN;\r\n\r\n // Underflow?\r\n } else if (x.e < Ctor.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n // Ctor.underflow = true;\r\n } // else Ctor.underflow = false;\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\nfunction finiteToString(x, isExp, sd) {\r\n if (!x.isFinite()) return nonFiniteToString(x);\r\n var k,\r\n e = x.e,\r\n str = digitsToString(x.d),\r\n len = str.length;\r\n\r\n if (isExp) {\r\n if (sd && (k = sd - len) > 0) {\r\n str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k);\r\n } else if (len > 1) {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n\r\n str = str + (x.e < 0 ? 'e' : 'e+') + x.e;\r\n } else if (e < 0) {\r\n str = '0.' + getZeroString(-e - 1) + str;\r\n if (sd && (k = sd - len) > 0) str += getZeroString(k);\r\n } else if (e >= len) {\r\n str += getZeroString(e + 1 - len);\r\n if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k);\r\n } else {\r\n if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k);\r\n if (sd && (k = sd - len) > 0) {\r\n if (e + 1 === len) str += '.';\r\n str += getZeroString(k);\r\n }\r\n }\r\n\r\n return str;\r\n}\r\n\r\n\r\n// Calculate the base 10 exponent from the base 1e7 exponent.\r\nfunction getBase10Exponent(digits, e) {\r\n var w = digits[0];\r\n\r\n // Add the number of digits of the first word of the digits array.\r\n for ( e *= LOG_BASE; w >= 10; w /= 10) e++;\r\n return e;\r\n}\r\n\r\n\r\nfunction getLn10(Ctor, sd, pr) {\r\n if (sd > LN10_PRECISION) {\r\n\r\n // Reset global state in case the exception is caught.\r\n external = true;\r\n if (pr) Ctor.precision = pr;\r\n throw Error(precisionLimitExceeded);\r\n }\r\n return finalise(new Ctor(LN10), sd, 1, true);\r\n}\r\n\r\n\r\nfunction getPi(Ctor, sd, rm) {\r\n if (sd > PI_PRECISION) throw Error(precisionLimitExceeded);\r\n return finalise(new Ctor(PI), sd, rm, true);\r\n}\r\n\r\n\r\nfunction getPrecision(digits) {\r\n var w = digits.length - 1,\r\n len = w * LOG_BASE + 1;\r\n\r\n w = digits[w];\r\n\r\n // If non-zero...\r\n if (w) {\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n for (; w % 10 == 0; w /= 10) len--;\r\n\r\n // Add the number of digits of the first word.\r\n for (w = digits[0]; w >= 10; w /= 10) len++;\r\n }\r\n\r\n return len;\r\n}\r\n\r\n\r\nfunction getZeroString(k) {\r\n var zs = '';\r\n for (; k--;) zs += '0';\r\n return zs;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of Decimal `x` to the power `n`, where `n` is an\r\n * integer of type number.\r\n *\r\n * Implements 'exponentiation by squaring'. Called by `pow` and `parseOther`.\r\n *\r\n */\r\nfunction intPow(Ctor, x, n, pr) {\r\n var isTruncated,\r\n r = new Ctor(1),\r\n\r\n // Max n of 9007199254740991 takes 53 loop iterations.\r\n // Maximum digits array length; leaves [28, 34] guard digits.\r\n k = Math.ceil(pr / LOG_BASE + 4);\r\n\r\n external = false;\r\n\r\n for (;;) {\r\n if (n % 2) {\r\n r = r.times(x);\r\n if (truncate(r.d, k)) isTruncated = true;\r\n }\r\n\r\n n = mathfloor(n / 2);\r\n if (n === 0) {\r\n\r\n // To ensure correct rounding when r.d is truncated, increment the last word if it is zero.\r\n n = r.d.length - 1;\r\n if (isTruncated && r.d[n] === 0) ++r.d[n];\r\n break;\r\n }\r\n\r\n x = x.times(x);\r\n truncate(x.d, k);\r\n }\r\n\r\n external = true;\r\n\r\n return r;\r\n}\r\n\r\n\r\nfunction isOdd(n) {\r\n return n.d[n.d.length - 1] & 1;\r\n}\r\n\r\n\r\n/*\r\n * Handle `max` (`n` is -1) and `min` (`n` is 1).\r\n */\r\nfunction maxOrMin(Ctor, args, n) {\r\n var k, y,\r\n x = new Ctor(args[0]),\r\n i = 0;\r\n\r\n for (; ++i < args.length;) {\r\n y = new Ctor(args[i]);\r\n\r\n // NaN?\r\n if (!y.s) {\r\n x = y;\r\n break;\r\n }\r\n\r\n k = x.cmp(y);\r\n\r\n if (k === n || k === 0 && x.s === n) {\r\n x = y;\r\n }\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of `x` rounded to `sd` significant\r\n * digits.\r\n *\r\n * Taylor/Maclaurin series.\r\n *\r\n * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ...\r\n *\r\n * Argument reduction:\r\n * Repeat x = x / 32, k += 5, until |x| < 0.1\r\n * exp(x) = exp(x / 2^k)^(2^k)\r\n *\r\n * Previously, the argument was initially reduced by\r\n * exp(x) = exp(r) * 10^k where r = x - k * ln10, k = floor(x / ln10)\r\n * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was\r\n * found to be slower than just dividing repeatedly by 32 as above.\r\n *\r\n * Max integer argument: exp('20723265836946413') = 6.3e+9000000000000000\r\n * Min integer argument: exp('-20723265836946411') = 1.2e-9000000000000000\r\n * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324)\r\n *\r\n * exp(Infinity) = Infinity\r\n * exp(-Infinity) = 0\r\n * exp(NaN) = NaN\r\n * exp(\u00B10) = 1\r\n *\r\n * exp(x) is non-terminating for any finite, non-zero x.\r\n *\r\n * The result will always be correctly rounded.\r\n *\r\n */\r\nfunction naturalExponential(x, sd) {\r\n var denominator, guard, j, pow, sum, t, wpr,\r\n rep = 0,\r\n i = 0,\r\n k = 0,\r\n Ctor = x.constructor,\r\n rm = Ctor.rounding,\r\n pr = Ctor.precision;\r\n\r\n // 0/NaN/Infinity?\r\n if (!x.d || !x.d[0] || x.e > 17) {\r\n\r\n return new Ctor(x.d\r\n ? !x.d[0] ? 1 : x.s < 0 ? 0 : 1 / 0\r\n : x.s ? x.s < 0 ? 0 : x : 0 / 0);\r\n }\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n t = new Ctor(0.03125);\r\n\r\n // while abs(x) >= 0.1\r\n while (x.e > -2) {\r\n\r\n // x = x / 2^5\r\n x = x.times(t);\r\n k += 5;\r\n }\r\n\r\n // Use 2 * log10(2^k) + 5 (empirically derived) to estimate the increase in precision\r\n // necessary to ensure the first 4 rounding digits are correct.\r\n guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;\r\n wpr += guard;\r\n denominator = pow = sum = new Ctor(1);\r\n Ctor.precision = wpr;\r\n\r\n for (;;) {\r\n pow = finalise(pow.times(x), wpr, 1);\r\n denominator = denominator.times(++i);\r\n t = sum.plus(divide(pow, denominator, wpr, 1));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n j = k;\r\n while (j--) sum = finalise(sum.times(sum), wpr, 1);\r\n\r\n // Check to see if the first 4 rounding digits are [49]999.\r\n // If so, repeat the summation with a higher precision, otherwise\r\n // e.g. with precision: 18, rounding: 1\r\n // exp(18.404272462595034083567793919843761) = 98372560.1229999999 (should be 98372560.123)\r\n // `wpr - guard` is the index of first rounding digit.\r\n if (sd == null) {\r\n\r\n if (rep < 3 && checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\r\n Ctor.precision = wpr += 10;\r\n denominator = pow = t = new Ctor(1);\r\n i = 0;\r\n rep++;\r\n } else {\r\n return finalise(sum, Ctor.precision = pr, rm, external = true);\r\n }\r\n } else {\r\n Ctor.precision = pr;\r\n return sum;\r\n }\r\n }\r\n\r\n sum = t;\r\n }\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of `x` rounded to `sd` significant\r\n * digits.\r\n *\r\n * ln(-n) = NaN\r\n * ln(0) = -Infinity\r\n * ln(-0) = -Infinity\r\n * ln(1) = 0\r\n * ln(Infinity) = Infinity\r\n * ln(-Infinity) = NaN\r\n * ln(NaN) = NaN\r\n *\r\n * ln(n) (n != 1) is non-terminating.\r\n *\r\n */\r\nfunction naturalLogarithm(y, sd) {\r\n var c, c0, denominator, e, numerator, rep, sum, t, wpr, x1, x2,\r\n n = 1,\r\n guard = 10,\r\n x = y,\r\n xd = x.d,\r\n Ctor = x.constructor,\r\n rm = Ctor.rounding,\r\n pr = Ctor.precision;\r\n\r\n // Is x negative or Infinity, NaN, 0 or 1?\r\n if (x.s < 0 || !xd || !xd[0] || !x.e && xd[0] == 1 && xd.length == 1) {\r\n return new Ctor(xd && !xd[0] ? -1 / 0 : x.s != 1 ? NaN : xd ? 0 : x);\r\n }\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n Ctor.precision = wpr += guard;\r\n c = digitsToString(xd);\r\n c0 = c.charAt(0);\r\n\r\n if (Math.abs(e = x.e) < 1.5e15) {\r\n\r\n // Argument reduction.\r\n // The series converges faster the closer the argument is to 1, so using\r\n // ln(a^b) = b * ln(a), ln(a) = ln(a^b) / b\r\n // multiply the argument by itself until the leading digits of the significand are 7, 8, 9,\r\n // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can\r\n // later be divided by this number, then separate out the power of 10 using\r\n // ln(a*10^b) = ln(a) + b*ln(10).\r\n\r\n // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14).\r\n //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) {\r\n // max n is 6 (gives 0.7 - 1.3)\r\n while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {\r\n x = x.times(y);\r\n c = digitsToString(x.d);\r\n c0 = c.charAt(0);\r\n n++;\r\n }\r\n\r\n e = x.e;\r\n\r\n if (c0 > 1) {\r\n x = new Ctor('0.' + c);\r\n e++;\r\n } else {\r\n x = new Ctor(c0 + '.' + c.slice(1));\r\n }\r\n } else {\r\n\r\n // The argument reduction method above may result in overflow if the argument y is a massive\r\n // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this\r\n // function using ln(x*10^e) = ln(x) + e*ln(10).\r\n t = getLn10(Ctor, wpr + 2, pr).times(e + '');\r\n x = naturalLogarithm(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t);\r\n Ctor.precision = pr;\r\n\r\n return sd == null ? finalise(x, pr, rm, external = true) : x;\r\n }\r\n\r\n // x1 is x reduced to a value near 1.\r\n x1 = x;\r\n\r\n // Taylor series.\r\n // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...)\r\n // where x = (y - 1)/(y + 1) (|x| < 1)\r\n sum = numerator = x = divide(x.minus(1), x.plus(1), wpr, 1);\r\n x2 = finalise(x.times(x), wpr, 1);\r\n denominator = 3;\r\n\r\n for (;;) {\r\n numerator = finalise(numerator.times(x2), wpr, 1);\r\n t = sum.plus(divide(numerator, new Ctor(denominator), wpr, 1));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n sum = sum.times(2);\r\n\r\n // Reverse the argument reduction. Check that e is not 0 because, besides preventing an\r\n // unnecessary calculation, -0 + 0 = +0 and to ensure correct rounding -0 needs to stay -0.\r\n if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ''));\r\n sum = divide(sum, new Ctor(n), wpr, 1);\r\n\r\n // Is rm > 3 and the first 4 rounding digits 4999, or rm < 4 (or the summation has\r\n // been repeated previously) and the first 4 rounding digits 9999?\r\n // If so, restart the summation with a higher precision, otherwise\r\n // e.g. with precision: 12, rounding: 1\r\n // ln(135520028.6126091714265381533) = 18.7246299999 when it should be 18.72463.\r\n // `wpr - guard` is the index of first rounding digit.\r\n if (sd == null) {\r\n if (checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\r\n Ctor.precision = wpr += guard;\r\n t = numerator = x = divide(x1.minus(1), x1.plus(1), wpr, 1);\r\n x2 = finalise(x.times(x), wpr, 1);\r\n denominator = rep = 1;\r\n } else {\r\n return finalise(sum, Ctor.precision = pr, rm, external = true);\r\n }\r\n } else {\r\n Ctor.precision = pr;\r\n return sum;\r\n }\r\n }\r\n\r\n sum = t;\r\n denominator += 2;\r\n }\r\n}\r\n\r\n\r\n// \u00B1Infinity, NaN.\r\nfunction nonFiniteToString(x) {\r\n // Unsigned.\r\n return String(x.s * x.s / 0);\r\n}\r\n\r\n\r\n/*\r\n * Parse the value of a new Decimal `x` from string `str`.\r\n */\r\nfunction parseDecimal(x, str) {\r\n var e, i, len;\r\n\r\n // TODO BigInt str: no need to check for decimal point, exponential form or leading zeros.\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(len - 1) === 48; --len);\r\n str = str.slice(i, len);\r\n\r\n if (str) {\r\n len -= i;\r\n x.e = e = e - i - 1;\r\n x.d = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first word of the digits array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE;\r\n\r\n if (i < len) {\r\n if (i) x.d.push(+str.slice(0, i));\r\n for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE));\r\n str = str.slice(i);\r\n i = LOG_BASE - str.length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--;) str += '0';\r\n x.d.push(+str);\r\n\r\n if (external) {\r\n\r\n // Overflow?\r\n if (x.e > x.constructor.maxE) {\r\n\r\n // Infinity.\r\n x.d = null;\r\n x.e = NaN;\r\n\r\n // Underflow?\r\n } else if (x.e < x.constructor.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n // x.constructor.underflow = true;\r\n } // else x.constructor.underflow = false;\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Parse the value of a new Decimal `x` from a string `str`, which is not a decimal value.\r\n */\r\nfunction parseOther(x, str) {\r\n var base, Ctor, divisor, i, isFloat, len, p, xd, xe;\r\n\r\n if (str.indexOf('_') > -1) {\r\n str = str.replace(/(\\d)_(?=\\d)/g, '$1');\r\n if (isDecimal.test(str)) return parseDecimal(x, str);\r\n } else if (str === 'Infinity' || str === 'NaN') {\r\n if (!+str) x.s = NaN;\r\n x.e = NaN;\r\n x.d = null;\r\n return x;\r\n }\r\n\r\n if (isHex.test(str)) {\r\n base = 16;\r\n str = str.toLowerCase();\r\n } else if (isBinary.test(str)) {\r\n base = 2;\r\n } else if (isOctal.test(str)) {\r\n base = 8;\r\n } else {\r\n throw Error(invalidArgument + str);\r\n }\r\n\r\n // Is there a binary exponent part?\r\n i = str.search(/p/i);\r\n\r\n if (i > 0) {\r\n p = +str.slice(i + 1);\r\n str = str.substring(2, i);\r\n } else {\r\n str = str.slice(2);\r\n }\r\n\r\n // Convert `str` as an integer then divide the result by `base` raised to a power such that the\r\n // fraction part will be restored.\r\n i = str.indexOf('.');\r\n isFloat = i >= 0;\r\n Ctor = x.constructor;\r\n\r\n if (isFloat) {\r\n str = str.replace('.', '');\r\n len = str.length;\r\n i = len - i;\r\n\r\n // log[10](16) = 1.2041... , log[10](88) = 1.9444....\r\n divisor = intPow(Ctor, new Ctor(base), i, i * 2);\r\n }\r\n\r\n xd = convertBase(str, base, BASE);\r\n xe = xd.length - 1;\r\n\r\n // Remove trailing zeros.\r\n for (i = xe; xd[i] === 0; --i) xd.pop();\r\n if (i < 0) return new Ctor(x.s * 0);\r\n x.e = getBase10Exponent(xd, xe);\r\n x.d = xd;\r\n external = false;\r\n\r\n // At what precision to perform the division to ensure exact conversion?\r\n // maxDecimalIntegerPartDigitCount = ceil(log[10](b) * otherBaseIntegerPartDigitCount)\r\n // log[10](2) = 0.30103, log[10](8) = 0.90309, log[10](16) = 1.20412\r\n // E.g. ceil(1.2 * 3) = 4, so up to 4 decimal digits are needed to represent 3 hex int digits.\r\n // maxDecimalFractionPartDigitCount = {Hex:4|Oct:3|Bin:1} * otherBaseFractionPartDigitCount\r\n // Therefore using 4 * the number of digits of str will always be enough.\r\n if (isFloat) x = divide(x, divisor, len * 4);\r\n\r\n // Multiply by the binary exponent part if present.\r\n if (p) x = x.times(Math.abs(p) < 54 ? mathpow(2, p) : Decimal.pow(2, p));\r\n external = true;\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * sin(x) = x - x^3/3! + x^5/5! - ...\r\n * |x| < pi/2\r\n *\r\n */\r\nfunction sine(Ctor, x) {\r\n var k,\r\n len = x.d.length;\r\n\r\n if (len < 3) {\r\n return x.isZero() ? x : taylorSeries(Ctor, 2, x, x);\r\n }\r\n\r\n // Argument reduction: sin(5x) = 16*sin^5(x) - 20*sin^3(x) + 5*sin(x)\r\n // i.e. sin(x) = 16*sin^5(x/5) - 20*sin^3(x/5) + 5*sin(x/5)\r\n // and sin(x) = sin(x/5)(5 + sin^2(x/5)(16sin^2(x/5) - 20))\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n k = 1.4 * Math.sqrt(len);\r\n k = k > 16 ? 16 : k | 0;\r\n\r\n x = x.times(1 / tinyPow(5, k));\r\n x = taylorSeries(Ctor, 2, x, x);\r\n\r\n // Reverse argument reduction\r\n var sin2_x,\r\n d5 = new Ctor(5),\r\n d16 = new Ctor(16),\r\n d20 = new Ctor(20);\r\n for (; k--;) {\r\n sin2_x = x.times(x);\r\n x = x.times(d5.plus(sin2_x.times(d16.times(sin2_x).minus(d20))));\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n// Calculate Taylor series for `cos`, `cosh`, `sin` and `sinh`.\r\nfunction taylorSeries(Ctor, n, x, y, isHyperbolic) {\r\n var j, t, u, x2,\r\n i = 1,\r\n pr = Ctor.precision,\r\n k = Math.ceil(pr / LOG_BASE);\r\n\r\n external = false;\r\n x2 = x.times(x);\r\n u = new Ctor(y);\r\n\r\n for (;;) {\r\n t = divide(u.times(x2), new Ctor(n++ * n++), pr, 1);\r\n u = isHyperbolic ? y.plus(t) : y.minus(t);\r\n y = divide(t.times(x2), new Ctor(n++ * n++), pr, 1);\r\n t = u.plus(y);\r\n\r\n if (t.d[k] !== void 0) {\r\n for (j = k; t.d[j] === u.d[j] && j--;);\r\n if (j == -1) break;\r\n }\r\n\r\n j = u;\r\n u = y;\r\n y = t;\r\n t = j;\r\n i++;\r\n }\r\n\r\n external = true;\r\n t.d.length = k + 1;\r\n\r\n return t;\r\n}\r\n\r\n\r\n// Exponent e must be positive and non-zero.\r\nfunction tinyPow(b, e) {\r\n var n = b;\r\n while (--e) n *= b;\r\n return n;\r\n}\r\n\r\n\r\n// Return the absolute value of `x` reduced to less than or equal to half pi.\r\nfunction toLessThanHalfPi(Ctor, x) {\r\n var t,\r\n isNeg = x.s < 0,\r\n pi = getPi(Ctor, Ctor.precision, 1),\r\n halfPi = pi.times(0.5);\r\n\r\n x = x.abs();\r\n\r\n if (x.lte(halfPi)) {\r\n quadrant = isNeg ? 4 : 1;\r\n return x;\r\n }\r\n\r\n t = x.divToInt(pi);\r\n\r\n if (t.isZero()) {\r\n quadrant = isNeg ? 3 : 2;\r\n } else {\r\n x = x.minus(t.times(pi));\r\n\r\n // 0 <= x < pi\r\n if (x.lte(halfPi)) {\r\n quadrant = isOdd(t) ? (isNeg ? 2 : 3) : (isNeg ? 4 : 1);\r\n return x;\r\n }\r\n\r\n quadrant = isOdd(t) ? (isNeg ? 1 : 4) : (isNeg ? 3 : 2);\r\n }\r\n\r\n return x.minus(pi).abs();\r\n}\r\n\r\n\r\n/*\r\n * Return the value of Decimal `x` as a string in base `baseOut`.\r\n *\r\n * If the optional `sd` argument is present include a binary exponent suffix.\r\n */\r\nfunction toStringBinary(x, baseOut, sd, rm) {\r\n var base, e, i, k, len, roundUp, str, xd, y,\r\n Ctor = x.constructor,\r\n isExp = sd !== void 0;\r\n\r\n if (isExp) {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n } else {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n }\r\n\r\n if (!x.isFinite()) {\r\n str = nonFiniteToString(x);\r\n } else {\r\n str = finiteToString(x);\r\n i = str.indexOf('.');\r\n\r\n // Use exponential notation according to `toExpPos` and `toExpNeg`? No, but if required:\r\n // maxBinaryExponent = floor((decimalExponent + 1) * log[2](10))\r\n // minBinaryExponent = floor(decimalExponent * log[2](10))\r\n // log[2](10) = 3.321928094887362347870319429489390175864\r\n\r\n if (isExp) {\r\n base = 2;\r\n if (baseOut == 16) {\r\n sd = sd * 4 - 3;\r\n } else if (baseOut == 8) {\r\n sd = sd * 3 - 2;\r\n }\r\n } else {\r\n base = baseOut;\r\n }\r\n\r\n // Convert the number as an integer then divide the result by its base raised to a power such\r\n // that the fraction part will be restored.\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n str = str.replace('.', '');\r\n y = new Ctor(1);\r\n y.e = str.length - i;\r\n y.d = convertBase(finiteToString(y), 10, base);\r\n y.e = y.d.length;\r\n }\r\n\r\n xd = convertBase(str, 10, base);\r\n e = len = xd.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] == 0;) xd.pop();\r\n\r\n if (!xd[0]) {\r\n str = isExp ? '0p+0' : '0';\r\n } else {\r\n if (i < 0) {\r\n e--;\r\n } else {\r\n x = new Ctor(x);\r\n x.d = xd;\r\n x.e = e;\r\n x = divide(x, y, sd, rm, 0, base);\r\n xd = x.d;\r\n e = x.e;\r\n roundUp = inexact;\r\n }\r\n\r\n // The rounding digit, i.e. the digit after the digit that may be rounded up.\r\n i = xd[sd];\r\n k = base / 2;\r\n roundUp = roundUp || xd[sd + 1] !== void 0;\r\n\r\n roundUp = rm < 4\r\n ? (i !== void 0 || roundUp) && (rm === 0 || rm === (x.s < 0 ? 3 : 2))\r\n : i > k || i === k && (rm === 4 || roundUp || rm === 6 && xd[sd - 1] & 1 ||\r\n rm === (x.s < 0 ? 8 : 7));\r\n\r\n xd.length = sd;\r\n\r\n if (roundUp) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (; ++xd[--sd] > base - 1;) {\r\n xd[sd] = 0;\r\n if (!sd) {\r\n ++e;\r\n xd.unshift(1);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (len = xd.length; !xd[len - 1]; --len);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i < len; i++) str += NUMERALS.charAt(xd[i]);\r\n\r\n // Add binary exponent suffix?\r\n if (isExp) {\r\n if (len > 1) {\r\n if (baseOut == 16 || baseOut == 8) {\r\n i = baseOut == 16 ? 4 : 3;\r\n for (--len; len % i; len++) str += '0';\r\n xd = convertBase(str, base, baseOut);\r\n for (len = xd.length; !xd[len - 1]; --len);\r\n\r\n // xd[0] will always be be 1\r\n for (i = 1, str = '1.'; i < len; i++) str += NUMERALS.charAt(xd[i]);\r\n } else {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n }\r\n\r\n str = str + (e < 0 ? 'p' : 'p+') + e;\r\n } else if (e < 0) {\r\n for (; ++e;) str = '0' + str;\r\n str = '0.' + str;\r\n } else {\r\n if (++e > len) for (e -= len; e-- ;) str += '0';\r\n else if (e < len) str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n str = (baseOut == 16 ? '0x' : baseOut == 2 ? '0b' : baseOut == 8 ? '0o' : '') + str;\r\n }\r\n\r\n return x.s < 0 ? '-' + str : str;\r\n}\r\n\r\n\r\n// Does not strip trailing zeros.\r\nfunction truncate(arr, len) {\r\n if (arr.length > len) {\r\n arr.length = len;\r\n return true;\r\n }\r\n}\r\n\r\n\r\n// Decimal methods\r\n\r\n\r\n/*\r\n * abs\r\n * acos\r\n * acosh\r\n * add\r\n * asin\r\n * asinh\r\n * atan\r\n * atanh\r\n * atan2\r\n * cbrt\r\n * ceil\r\n * clamp\r\n * clone\r\n * config\r\n * cos\r\n * cosh\r\n * div\r\n * exp\r\n * floor\r\n * hypot\r\n * ln\r\n * log\r\n * log2\r\n * log10\r\n * max\r\n * min\r\n * mod\r\n * mul\r\n * pow\r\n * random\r\n * round\r\n * set\r\n * sign\r\n * sin\r\n * sinh\r\n * sqrt\r\n * sub\r\n * sum\r\n * tan\r\n * tanh\r\n * trunc\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the absolute value of `x`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction abs(x) {\r\n return new this(x).abs();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arccosine in radians of `x`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction acos(x) {\r\n return new this(x).acos();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic cosine of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction acosh(x) {\r\n return new this(x).acosh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sum of `x` and `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n * y {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction add(x, y) {\r\n return new this(x).plus(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arcsine in radians of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction asin(x) {\r\n return new this(x).asin();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic sine of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction asinh(x) {\r\n return new this(x).asinh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent in radians of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction atan(x) {\r\n return new this(x).atan();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic tangent of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction atanh(x) {\r\n return new this(x).atanh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent in radians of `y/x` in the range -pi to pi\r\n * (inclusive), rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi, pi]\r\n *\r\n * y {number|string|bigint|Decimal} The y-coordinate.\r\n * x {number|string|bigint|Decimal} The x-coordinate.\r\n *\r\n * atan2(\u00B10, -0) = \u00B1pi\r\n * atan2(\u00B10, +0) = \u00B10\r\n * atan2(\u00B10, -x) = \u00B1pi for x > 0\r\n * atan2(\u00B10, x) = \u00B10 for x > 0\r\n * atan2(-y, \u00B10) = -pi/2 for y > 0\r\n * atan2(y, \u00B10) = pi/2 for y > 0\r\n * atan2(\u00B1y, -Infinity) = \u00B1pi for finite y > 0\r\n * atan2(\u00B1y, +Infinity) = \u00B10 for finite y > 0\r\n * atan2(\u00B1Infinity, x) = \u00B1pi/2 for finite x\r\n * atan2(\u00B1Infinity, -Infinity) = \u00B13*pi/4\r\n * atan2(\u00B1Infinity, +Infinity) = \u00B1pi/4\r\n * atan2(NaN, x) = NaN\r\n * atan2(y, NaN) = NaN\r\n *\r\n */\r\nfunction atan2(y, x) {\r\n y = new this(y);\r\n x = new this(x);\r\n var r,\r\n pr = this.precision,\r\n rm = this.rounding,\r\n wpr = pr + 4;\r\n\r\n // Either NaN\r\n if (!y.s || !x.s) {\r\n r = new this(NaN);\r\n\r\n // Both \u00B1Infinity\r\n } else if (!y.d && !x.d) {\r\n r = getPi(this, wpr, 1).times(x.s > 0 ? 0.25 : 0.75);\r\n r.s = y.s;\r\n\r\n // x is \u00B1Infinity or y is \u00B10\r\n } else if (!x.d || y.isZero()) {\r\n r = x.s < 0 ? getPi(this, pr, rm) : new this(0);\r\n r.s = y.s;\r\n\r\n // y is \u00B1Infinity or x is \u00B10\r\n } else if (!y.d || x.isZero()) {\r\n r = getPi(this, wpr, 1).times(0.5);\r\n r.s = y.s;\r\n\r\n // Both non-zero and finite\r\n } else if (x.s < 0) {\r\n this.precision = wpr;\r\n this.rounding = 1;\r\n r = this.atan(divide(y, x, wpr, 1));\r\n x = getPi(this, wpr, 1);\r\n this.precision = pr;\r\n this.rounding = rm;\r\n r = y.s < 0 ? r.minus(x) : r.plus(x);\r\n } else {\r\n r = this.atan(divide(y, x, wpr, 1));\r\n }\r\n\r\n return r;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cube root of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction cbrt(x) {\r\n return new this(x).cbrt();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` rounded to an integer using `ROUND_CEIL`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction ceil(x) {\r\n return finalise(x = new this(x), x.e + 1, 2);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` clamped to the range delineated by `min` and `max`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n * min {number|string|bigint|Decimal}\r\n * max {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction clamp(x, min, max) {\r\n return new this(x).clamp(min, max);\r\n}\r\n\r\n\r\n/*\r\n * Configure global settings for a Decimal constructor.\r\n *\r\n * `obj` is an object with one or more of the following properties,\r\n *\r\n * precision {number}\r\n * rounding {number}\r\n * toExpNeg {number}\r\n * toExpPos {number}\r\n * maxE {number}\r\n * minE {number}\r\n * modulo {number}\r\n * crypto {boolean|number}\r\n * defaults {true}\r\n *\r\n * E.g. Decimal.config({ precision: 20, rounding: 4 })\r\n *\r\n */\r\nfunction config(obj) {\r\n if (!obj || typeof obj !== 'object') throw Error(decimalError + 'Object expected');\r\n var i, p, v,\r\n useDefaults = obj.defaults === true,\r\n ps = [\r\n 'precision', 1, MAX_DIGITS,\r\n 'rounding', 0, 8,\r\n 'toExpNeg', -EXP_LIMIT, 0,\r\n 'toExpPos', 0, EXP_LIMIT,\r\n 'maxE', 0, EXP_LIMIT,\r\n 'minE', -EXP_LIMIT, 0,\r\n 'modulo', 0, 9\r\n ];\r\n\r\n for (i = 0; i < ps.length; i += 3) {\r\n if (p = ps[i], useDefaults) this[p] = DEFAULTS[p];\r\n if ((v = obj[p]) !== void 0) {\r\n if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v;\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n if (p = 'crypto', useDefaults) this[p] = DEFAULTS[p];\r\n if ((v = obj[p]) !== void 0) {\r\n if (v === true || v === false || v === 0 || v === 1) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n this[p] = true;\r\n } else {\r\n throw Error(cryptoUnavailable);\r\n }\r\n } else {\r\n this[p] = false;\r\n }\r\n } else {\r\n throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n return this;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cosine of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction cos(x) {\r\n return new this(x).cos();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic cosine of `x`, rounded to precision\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction cosh(x) {\r\n return new this(x).cosh();\r\n}\r\n\r\n\r\n/*\r\n * Create and return a Decimal constructor with the same configuration properties as this Decimal\r\n * constructor.\r\n *\r\n */\r\nfunction clone(obj) {\r\n var i, p, ps;\r\n\r\n /*\r\n * The Decimal constructor and exported function.\r\n * Return a new Decimal instance.\r\n *\r\n * v {number|string|bigint|Decimal} A numeric value.\r\n *\r\n */\r\n function Decimal(v) {\r\n var e, i, t,\r\n x = this;\r\n\r\n // Decimal called without new.\r\n if (!(x instanceof Decimal)) return new Decimal(v);\r\n\r\n // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor\r\n // which points to Object.\r\n x.constructor = Decimal;\r\n\r\n if (isDecimalInstance(v)) {\r\n x.s = v.s;\r\n\r\n if (external) {\r\n if (!v.d || v.e > Decimal.maxE) {\r\n\r\n // Infinity.\r\n x.e = NaN;\r\n x.d = null;\r\n } else if (v.e < Decimal.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n } else {\r\n x.e = v.e;\r\n x.d = v.d.slice();\r\n }\r\n } else {\r\n x.e = v.e;\r\n x.d = v.d ? v.d.slice() : v.d;\r\n }\r\n\r\n return;\r\n }\r\n\r\n t = typeof v;\r\n\r\n if (t === 'number') {\r\n if (v === 0) {\r\n x.s = 1 / v < 0 ? -1 : 1;\r\n x.e = 0;\r\n x.d = [0];\r\n return;\r\n }\r\n\r\n if (v < 0) {\r\n v = -v;\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n // Fast path for small integers.\r\n if (v === ~~v && v < 1e7) {\r\n for (e = 0, i = v; i >= 10; i /= 10) e++;\r\n\r\n if (external) {\r\n if (e > Decimal.maxE) {\r\n x.e = NaN;\r\n x.d = null;\r\n } else if (e < Decimal.minE) {\r\n x.e = 0;\r\n x.d = [0];\r\n } else {\r\n x.e = e;\r\n x.d = [v];\r\n }\r\n } else {\r\n x.e = e;\r\n x.d = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n // Infinity or NaN?\r\n if (v * 0 !== 0) {\r\n if (!v) x.s = NaN;\r\n x.e = NaN;\r\n x.d = null;\r\n return;\r\n }\r\n\r\n return parseDecimal(x, v.toString());\r\n }\r\n\r\n if (t === 'string') {\r\n if ((i = v.charCodeAt(0)) === 45) { // minus sign\r\n v = v.slice(1);\r\n x.s = -1;\r\n } else {\r\n if (i === 43) v = v.slice(1); // plus sign\r\n x.s = 1;\r\n }\r\n\r\n return isDecimal.test(v) ? parseDecimal(x, v) : parseOther(x, v);\r\n }\r\n\r\n if (t === 'bigint') {\r\n if (v < 0) {\r\n v = -v;\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n return parseDecimal(x, v.toString());\r\n }\r\n\r\n throw Error(invalidArgument + v);\r\n }\r\n\r\n Decimal.prototype = P;\r\n\r\n Decimal.ROUND_UP = 0;\r\n Decimal.ROUND_DOWN = 1;\r\n Decimal.ROUND_CEIL = 2;\r\n Decimal.ROUND_FLOOR = 3;\r\n Decimal.ROUND_HALF_UP = 4;\r\n Decimal.ROUND_HALF_DOWN = 5;\r\n Decimal.ROUND_HALF_EVEN = 6;\r\n Decimal.ROUND_HALF_CEIL = 7;\r\n Decimal.ROUND_HALF_FLOOR = 8;\r\n Decimal.EUCLID = 9;\r\n\r\n Decimal.config = Decimal.set = config;\r\n Decimal.clone = clone;\r\n Decimal.isDecimal = isDecimalInstance;\r\n\r\n Decimal.abs = abs;\r\n Decimal.acos = acos;\r\n Decimal.acosh = acosh; // ES6\r\n Decimal.add = add;\r\n Decimal.asin = asin;\r\n Decimal.asinh = asinh; // ES6\r\n Decimal.atan = atan;\r\n Decimal.atanh = atanh; // ES6\r\n Decimal.atan2 = atan2;\r\n Decimal.cbrt = cbrt; // ES6\r\n Decimal.ceil = ceil;\r\n Decimal.clamp = clamp;\r\n Decimal.cos = cos;\r\n Decimal.cosh = cosh; // ES6\r\n Decimal.div = div;\r\n Decimal.exp = exp;\r\n Decimal.floor = floor;\r\n Decimal.hypot = hypot; // ES6\r\n Decimal.ln = ln;\r\n Decimal.log = log;\r\n Decimal.log10 = log10; // ES6\r\n Decimal.log2 = log2; // ES6\r\n Decimal.max = max;\r\n Decimal.min = min;\r\n Decimal.mod = mod;\r\n Decimal.mul = mul;\r\n Decimal.pow = pow;\r\n Decimal.random = random;\r\n Decimal.round = round;\r\n Decimal.sign = sign; // ES6\r\n Decimal.sin = sin;\r\n Decimal.sinh = sinh; // ES6\r\n Decimal.sqrt = sqrt;\r\n Decimal.sub = sub;\r\n Decimal.sum = sum;\r\n Decimal.tan = tan;\r\n Decimal.tanh = tanh; // ES6\r\n Decimal.trunc = trunc; // ES6\r\n\r\n if (obj === void 0) obj = {};\r\n if (obj) {\r\n if (obj.defaults !== true) {\r\n ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'maxE', 'minE', 'modulo', 'crypto'];\r\n for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p];\r\n }\r\n }\r\n\r\n Decimal.config(obj);\r\n\r\n return Decimal;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` divided by `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n * y {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction div(x, y) {\r\n return new this(x).div(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} The power to which to raise the base of the natural log.\r\n *\r\n */\r\nfunction exp(x) {\r\n return new this(x).exp();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` round to an integer using `ROUND_FLOOR`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction floor(x) {\r\n return finalise(x = new this(x), x.e + 1, 3);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of the sum of the squares of the arguments,\r\n * rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * hypot(a, b, ...) = sqrt(a^2 + b^2 + ...)\r\n *\r\n * arguments {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction hypot() {\r\n var i, n,\r\n t = new this(0);\r\n\r\n external = false;\r\n\r\n for (i = 0; i < arguments.length;) {\r\n n = new this(arguments[i++]);\r\n if (!n.d) {\r\n if (n.s) {\r\n external = true;\r\n return new this(1 / 0);\r\n }\r\n t = n;\r\n } else if (t.d) {\r\n t = t.plus(n.times(n));\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return t.sqrt();\r\n}\r\n\r\n\r\n/*\r\n * Return true if object is a Decimal instance (where Decimal is any Decimal constructor),\r\n * otherwise return false.\r\n *\r\n */\r\nfunction isDecimalInstance(obj) {\r\n return obj instanceof Decimal || obj && obj.toStringTag === tag || false;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction ln(x) {\r\n return new this(x).ln();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the log of `x` to the base `y`, or to base 10 if no base\r\n * is specified, rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * log[y](x)\r\n *\r\n * x {number|string|bigint|Decimal} The argument of the logarithm.\r\n * y {number|string|bigint|Decimal} The base of the logarithm.\r\n *\r\n */\r\nfunction log(x, y) {\r\n return new this(x).log(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the base 2 logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction log2(x) {\r\n return new this(x).log(2);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the base 10 logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction log10(x) {\r\n return new this(x).log(10);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction max() {\r\n return maxOrMin(this, arguments, -1);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction min() {\r\n return maxOrMin(this, arguments, 1);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` modulo `y`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n * y {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction mod(x, y) {\r\n return new this(x).mod(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` multiplied by `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n * y {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction mul(x, y) {\r\n return new this(x).mul(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` raised to the power `y`, rounded to precision\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} The base.\r\n * y {number|string|bigint|Decimal} The exponent.\r\n *\r\n */\r\nfunction pow(x, y) {\r\n return new this(x).pow(y);\r\n}\r\n\r\n\r\n/*\r\n * Returns a new Decimal with a random value equal to or greater than 0 and less than 1, and with\r\n * `sd`, or `Decimal.precision` if `sd` is omitted, significant digits (or less if trailing zeros\r\n * are produced).\r\n *\r\n * [sd] {number} Significant digits. Integer, 0 to MAX_DIGITS inclusive.\r\n *\r\n */\r\nfunction random(sd) {\r\n var d, e, k, n,\r\n i = 0,\r\n r = new this(1),\r\n rd = [];\r\n\r\n if (sd === void 0) sd = this.precision;\r\n else checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n k = Math.ceil(sd / LOG_BASE);\r\n\r\n if (!this.crypto) {\r\n for (; i < k;) rd[i++] = Math.random() * 1e7 | 0;\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n } else if (crypto.getRandomValues) {\r\n d = crypto.getRandomValues(new Uint32Array(k));\r\n\r\n for (; i < k;) {\r\n n = d[i];\r\n\r\n // 0 <= n < 4294967296\r\n // Probability n >= 4.29e9, is 4967296 / 4294967296 = 0.00116 (1 in 865).\r\n if (n >= 4.29e9) {\r\n d[i] = crypto.getRandomValues(new Uint32Array(1))[0];\r\n } else {\r\n\r\n // 0 <= n <= 4289999999\r\n // 0 <= (n % 1e7) <= 9999999\r\n rd[i++] = n % 1e7;\r\n }\r\n }\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n d = crypto.randomBytes(k *= 4);\r\n\r\n for (; i < k;) {\r\n\r\n // 0 <= n < 2147483648\r\n n = d[i] + (d[i + 1] << 8) + (d[i + 2] << 16) + ((d[i + 3] & 0x7f) << 24);\r\n\r\n // Probability n >= 2.14e9, is 7483648 / 2147483648 = 0.0035 (1 in 286).\r\n if (n >= 2.14e9) {\r\n crypto.randomBytes(4).copy(d, i);\r\n } else {\r\n\r\n // 0 <= n <= 2139999999\r\n // 0 <= (n % 1e7) <= 9999999\r\n rd.push(n % 1e7);\r\n i += 4;\r\n }\r\n }\r\n\r\n i = k / 4;\r\n } else {\r\n throw Error(cryptoUnavailable);\r\n }\r\n\r\n k = rd[--i];\r\n sd %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to sd.\r\n if (k && sd) {\r\n n = mathpow(10, LOG_BASE - sd);\r\n rd[i] = (k / n | 0) * n;\r\n }\r\n\r\n // Remove trailing words which are zero.\r\n for (; rd[i] === 0; i--) rd.pop();\r\n\r\n // Zero?\r\n if (i < 0) {\r\n e = 0;\r\n rd = [0];\r\n } else {\r\n e = -1;\r\n\r\n // Remove leading words which are zero and adjust exponent accordingly.\r\n for (; rd[0] === 0; e -= LOG_BASE) rd.shift();\r\n\r\n // Count the digits of the first word of rd to determine leading zeros.\r\n for (k = 1, n = rd[0]; n >= 10; n /= 10) k++;\r\n\r\n // Adjust the exponent for leading zeros of the first word of rd.\r\n if (k < LOG_BASE) e -= LOG_BASE - k;\r\n }\r\n\r\n r.e = e;\r\n r.d = rd;\r\n\r\n return r;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` rounded to an integer using rounding mode `rounding`.\r\n *\r\n * To emulate `Math.round`, set rounding to 7 (ROUND_HALF_CEIL).\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction round(x) {\r\n return finalise(x = new this(x), x.e + 1, this.rounding);\r\n}\r\n\r\n\r\n/*\r\n * Return\r\n * 1 if x > 0,\r\n * -1 if x < 0,\r\n * 0 if x is 0,\r\n * -0 if x is -0,\r\n * NaN otherwise\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction sign(x) {\r\n x = new this(x);\r\n return x.d ? (x.d[0] ? x.s : 0 * x.s) : x.s || NaN;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sine of `x`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction sin(x) {\r\n return new this(x).sin();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic sine of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction sinh(x) {\r\n return new this(x).sinh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction sqrt(x) {\r\n return new this(x).sqrt();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` minus `y`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n * y {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction sub(x, y) {\r\n return new this(x).sub(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sum of the arguments, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * Only the result is rounded, not the intermediate calculations.\r\n *\r\n * arguments {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction sum() {\r\n var i = 0,\r\n args = arguments,\r\n x = new this(args[i]);\r\n\r\n external = false;\r\n for (; x.s && ++i < args.length;) x = x.plus(args[i]);\r\n external = true;\r\n\r\n return finalise(x, this.precision, this.rounding);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the tangent of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction tan(x) {\r\n return new this(x).tan();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic tangent of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction tanh(x) {\r\n return new this(x).tanh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` truncated to an integer.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction trunc(x) {\r\n return finalise(x = new this(x), x.e + 1, 1);\r\n}\r\n\r\n\r\nP[Symbol.for('nodejs.util.inspect.custom')] = P.toString;\r\nP[Symbol.toStringTag] = 'Decimal';\r\n\r\n// Create and configure initial Decimal constructor.\r\nexport var Decimal = P.constructor = clone(DEFAULTS);\r\n\r\n// Create the internal constants from their string values.\r\nLN10 = new Decimal(LN10);\r\nPI = new Decimal(PI);\r\n\r\nexport default Decimal;\r\n", "import { ErrorFormat } from '../../getPrismaClient'\nimport { CallSite } from '../../utils/CallSite'\nimport { createErrorMessageWithContext } from '../../utils/createErrorMessageWithContext'\nimport { PrismaClientValidationError } from '../errors/PrismaClientValidationError'\nimport { GlobalOmitOptions } from '../jsonProtocol/serializeJsonQuery'\nimport { JsArgs } from '../types/exported/JsApi'\nimport { ValidationError } from '../types/ValidationError'\nimport { applyValidationError } from './applyValidationError'\nimport { buildArgumentsRenderingTree, renderArgsTree } from './ArgumentsRenderingTree'\n\ntype ExceptionParams = {\n errors: ValidationError[]\n args: JsArgs\n callsite?: CallSite\n originalMethod: string\n errorFormat: ErrorFormat\n clientVersion: string\n globalOmit?: GlobalOmitOptions\n}\n\nexport function throwValidationException({\n args,\n errors,\n errorFormat,\n callsite,\n originalMethod,\n clientVersion,\n globalOmit,\n}: ExceptionParams): never {\n const argsTree = buildArgumentsRenderingTree(args)\n for (const error of errors) {\n applyValidationError(error, argsTree, globalOmit)\n }\n\n const { message, args: renderedArgs } = renderArgsTree(argsTree, errorFormat)\n\n const messageWithContext = createErrorMessageWithContext({\n message,\n callsite,\n originalMethod,\n showColors: errorFormat === 'pretty',\n callArguments: renderedArgs,\n })\n\n throw new PrismaClientValidationError(messageWithContext, { clientVersion })\n}\n", "import * as DMMF from '@prisma/dmmf'\nimport indentString from 'indent-string'\nimport { bold, dim, gray, red, underline } from 'kleur/colors'\n\nimport { CallSite, LocationInFile } from './CallSite'\nimport { SourceFileSlice } from './SourceFileSlice'\n\ndeclare global {\n /**\n * a global variable that is injected by us via jest to make our snapshots\n * work in clients that cannot read from disk (e.g. wasm or edge clients)\n */\n let $getTemplateParameters: typeof getTemplateParameters | undefined\n}\n\nexport interface ErrorArgs {\n callsite?: CallSite\n originalMethod: string\n message: string\n isPanic?: boolean\n showColors?: boolean\n callArguments?: string\n}\n\ntype Colors = {\n red: (str: string) => string\n gray: (str: string) => string\n dim: (str: string) => string\n bold: (str: string) => string\n underline: (str: string) => string\n highlightSource: (source: SourceFileSlice) => SourceFileSlice\n}\n\nconst colorsEnabled: Colors = {\n red,\n gray,\n dim,\n bold,\n underline,\n highlightSource: (source) => source.highlight(),\n}\n\nconst colorsDisabled: Colors = {\n red: (str) => str,\n gray: (str) => str,\n dim: (str) => str,\n bold: (str) => str,\n underline: (str) => str,\n highlightSource: (source) => source,\n}\n\ntype ErrorContextTemplateParameters = {\n functionName: string\n message: string\n location?: LocationInFile\n contextLines?: SourceFileSlice\n callArguments?: string\n isPanic: boolean\n}\n\nfunction getRawTemplateParameters({\n message,\n originalMethod,\n isPanic,\n callArguments,\n}: ErrorArgs): ErrorContextTemplateParameters {\n return {\n functionName: `prisma.${originalMethod}()`,\n message,\n isPanic: isPanic ?? false,\n callArguments,\n }\n}\n\nexport function getTemplateParameters(\n { callsite, message, originalMethod, isPanic, callArguments }: ErrorArgs,\n colors: Colors,\n): ErrorContextTemplateParameters {\n const templateParameters = getRawTemplateParameters({ message, originalMethod, isPanic, callArguments })\n\n // @ts-ignore\n if (!callsite || typeof window !== 'undefined') {\n return templateParameters\n }\n\n if (process.env.NODE_ENV === 'production') {\n return templateParameters\n }\n\n const callLocation = callsite.getLocation()\n if (!callLocation || !callLocation.lineNumber || !callLocation.columnNumber) {\n return templateParameters\n }\n\n const contextFirstLine = Math.max(1, callLocation.lineNumber - 3)\n let source = SourceFileSlice.read(callLocation.fileName)?.slice(contextFirstLine, callLocation.lineNumber)\n const invocationLine = source?.lineAt(callLocation.lineNumber)\n if (source && invocationLine) {\n const invocationLineIndent = getIndent(invocationLine)\n const invocationCallCode = findPrismaActionCall(invocationLine)\n if (!invocationCallCode) {\n return templateParameters\n }\n templateParameters.functionName = `${invocationCallCode.code})`\n templateParameters.location = callLocation\n\n if (!isPanic) {\n source = source.mapLineAt(callLocation.lineNumber, (line) => line.slice(0, invocationCallCode.openingBraceIndex))\n }\n\n source = colors.highlightSource(source)\n const numberColumnWidth = String(source.lastLineNumber).length\n templateParameters.contextLines = source\n .mapLines((line, lineNumber) => colors.gray(String(lineNumber).padStart(numberColumnWidth)) + ' ' + line)\n .mapLines((line) => colors.dim(line))\n .prependSymbolAt(callLocation.lineNumber, colors.bold(colors.red('\u2192')))\n\n if (callArguments) {\n let indentValue = invocationLineIndent + numberColumnWidth + 1 /* space between number and code */\n indentValue += 2 // arrow + space between arrow and number\n\n // indent all lines but first, because first line of the arguments will be printed\n // on the same line as the function call\n templateParameters.callArguments = indentString(callArguments, indentValue).slice(indentValue)\n }\n }\n return templateParameters\n}\n\nfunction findPrismaActionCall(str: string): { code: string; openingBraceIndex: number } | null {\n const allActions = Object.keys(DMMF.ModelAction).join('|')\n const regexp = new RegExp(String.raw`\\.(${allActions})\\(`)\n const match = regexp.exec(str)\n if (match) {\n const openingBraceIndex = match.index + match[0].length\n // to get the code we are slicing the string up to a found brace. We start\n // with first non-space character if space is found in the line before that or\n // 0 if it is not.\n const statementStart = str.lastIndexOf(' ', match.index) + 1\n return {\n code: str.slice(statementStart, openingBraceIndex),\n openingBraceIndex,\n }\n }\n return null\n}\n\nfunction getIndent(line: string): number {\n let spaceCount = 0\n for (let i = 0; i < line.length; i++) {\n if (line.charAt(i) !== ' ') {\n return spaceCount\n }\n spaceCount++\n }\n\n return spaceCount\n}\n\nfunction stringifyErrorMessage(\n { functionName, location, message, isPanic, contextLines, callArguments }: ErrorContextTemplateParameters,\n colors: Colors,\n) {\n const lines: string[] = ['']\n\n const introSuffix = location ? ' in' : ':'\n if (isPanic) {\n lines.push(colors.red(`Oops, an unknown error occurred! This is ${colors.bold('on us')}, you did nothing wrong.`))\n lines.push(colors.red(`It occurred in the ${colors.bold(`\\`${functionName}\\``)} invocation${introSuffix}`))\n } else {\n lines.push(colors.red(`Invalid ${colors.bold(`\\`${functionName}\\``)} invocation${introSuffix}`))\n }\n\n if (location) {\n lines.push(colors.underline(stringifyLocationInFile(location)))\n }\n\n if (contextLines) {\n lines.push('')\n\n const contextLineParts = [contextLines.toString()]\n\n if (callArguments) {\n contextLineParts.push(callArguments)\n contextLineParts.push(colors.dim(')'))\n }\n lines.push(contextLineParts.join(''))\n if (callArguments) {\n lines.push('')\n }\n } else {\n lines.push('')\n if (callArguments) {\n lines.push(callArguments)\n }\n lines.push('')\n }\n\n lines.push(message)\n return lines.join('\\n')\n}\n\nfunction stringifyLocationInFile(location: LocationInFile): string {\n const parts = [location.fileName]\n if (location.lineNumber) {\n parts.push(String(location.lineNumber))\n }\n\n if (location.columnNumber) {\n parts.push(String(location.columnNumber))\n }\n\n return parts.join(':')\n}\n\nexport function createErrorMessageWithContext(args: ErrorArgs): string {\n const colors = args.showColors ? colorsEnabled : colorsDisabled\n let templateParameters: ErrorContextTemplateParameters\n\n if (\n TARGET_BUILD_TYPE === 'wasm-engine-edge' ||\n TARGET_BUILD_TYPE === 'wasm-compiler-edge' ||\n TARGET_BUILD_TYPE === 'edge'\n ) {\n if (typeof $getTemplateParameters !== 'undefined') {\n templateParameters = $getTemplateParameters(args, colors)\n } else {\n templateParameters = getRawTemplateParameters(args)\n }\n } else {\n templateParameters = getTemplateParameters(args, colors)\n }\n\n return stringifyErrorMessage(templateParameters, colors)\n}\n", "export * from './convert'\nexport * from './dmmf'\n", "import { DatamodelEnum, SchemaEnum } from './dmmf'\n\nexport function datamodelEnumToSchemaEnum(datamodelEnum: DatamodelEnum): SchemaEnum {\n return {\n name: datamodelEnum.name,\n values: datamodelEnum.values.map((v) => v.name),\n }\n}\n", "import { ReadonlyDeep } from './util'\n\nexport type Document = ReadonlyDeep<{\n datamodel: Datamodel\n schema: Schema\n mappings: Mappings\n}>\n\nexport type Mappings = ReadonlyDeep<{\n modelOperations: ModelMapping[]\n otherOperations: {\n read: string[]\n write: string[]\n }\n}>\n\nexport type OtherOperationMappings = ReadonlyDeep<{\n read: string[]\n write: string[]\n}>\n\nexport type DatamodelEnum = ReadonlyDeep<{\n name: string\n values: EnumValue[]\n dbName?: string | null\n documentation?: string\n}>\n\nexport type SchemaEnum = ReadonlyDeep<{\n name: string\n values: string[]\n}>\n\nexport type EnumValue = ReadonlyDeep<{\n name: string\n dbName: string | null\n}>\n\nexport type Datamodel = ReadonlyDeep<{\n models: Model[]\n enums: DatamodelEnum[]\n types: Model[]\n indexes: Index[]\n}>\n\nexport type uniqueIndex = ReadonlyDeep<{\n name: string\n fields: string[]\n}>\nexport type PrimaryKey = ReadonlyDeep<{\n name: string | null\n fields: string[]\n}>\nexport type Model = ReadonlyDeep<{\n name: string\n dbName: string | null\n schema: string | null\n fields: Field[]\n uniqueFields: string[][]\n uniqueIndexes: uniqueIndex[]\n documentation?: string\n primaryKey: PrimaryKey | null\n isGenerated?: boolean\n}>\n\nexport type FieldKind = 'scalar' | 'object' | 'enum' | 'unsupported'\n\nexport type FieldNamespace = 'model' | 'prisma'\nexport type FieldLocation = 'scalar' | 'inputObjectTypes' | 'outputObjectTypes' | 'enumTypes' | 'fieldRefTypes'\n\nexport type Field = ReadonlyDeep<{\n kind: FieldKind\n name: string\n isRequired: boolean\n isList: boolean\n isUnique: boolean\n isId: boolean\n isReadOnly: boolean\n isGenerated?: boolean // does not exist on 'type' but does on 'model'\n isUpdatedAt?: boolean // does not exist on 'type' but does on 'model'\n /**\n * Describes the data type in the same the way it is defined in the Prisma schema:\n * BigInt, Boolean, Bytes, DateTime, Decimal, Float, Int, JSON, String, $ModelName\n */\n type: string\n /**\n * Native database type, if specified.\n * For example, `@db.VarChar(191)` is encoded as `['VarChar', ['191']]`,\n * `@db.Text` is encoded as `['Text', []]`.\n */\n nativeType?: [string, string[]] | null\n dbName?: string | null\n hasDefaultValue: boolean\n default?: FieldDefault | FieldDefaultScalar | FieldDefaultScalar[]\n relationFromFields?: string[]\n relationToFields?: string[]\n relationOnDelete?: string\n relationOnUpdate?: string\n relationName?: string\n documentation?: string\n}>\n\nexport type FieldDefault = ReadonlyDeep<{\n name: string\n args: Array<string | number>\n}>\n\nexport type FieldDefaultScalar = string | boolean | number\n\nexport type Index = ReadonlyDeep<{\n model: string\n type: IndexType\n isDefinedOnField: boolean\n name?: string\n dbName?: string\n algorithm?: string\n clustered?: boolean\n fields: IndexField[]\n}>\n\nexport type IndexType = 'id' | 'normal' | 'unique' | 'fulltext'\n\nexport type IndexField = ReadonlyDeep<{\n name: string\n sortOrder?: SortOrder\n length?: number\n operatorClass?: string\n}>\n\nexport type SortOrder = 'asc' | 'desc'\n\nexport type Schema = ReadonlyDeep<{\n rootQueryType?: string\n rootMutationType?: string\n inputObjectTypes: {\n // For now there are no `model` InputTypes\n model?: InputType[]\n prisma?: InputType[]\n }\n outputObjectTypes: {\n model: OutputType[]\n prisma: OutputType[]\n }\n enumTypes: {\n model?: SchemaEnum[]\n prisma: SchemaEnum[]\n }\n fieldRefTypes: {\n prisma?: FieldRefType[]\n }\n}>\n\nexport type Query = ReadonlyDeep<{\n name: string\n args: SchemaArg[]\n output: QueryOutput\n}>\n\nexport type QueryOutput = ReadonlyDeep<{\n name: string\n isRequired: boolean\n isList: boolean\n}>\n\nexport type TypeRef<AllowedLocations extends FieldLocation> = {\n isList: boolean\n type: string\n location: AllowedLocations\n namespace?: FieldNamespace\n}\n\nexport type InputTypeRef = TypeRef<'scalar' | 'inputObjectTypes' | 'enumTypes' | 'fieldRefTypes'>\n\nexport type SchemaArg = ReadonlyDeep<{\n name: string\n comment?: string\n isNullable: boolean\n isRequired: boolean\n inputTypes: InputTypeRef[]\n requiresOtherFields?: string[]\n deprecation?: Deprecation\n}>\n\nexport type OutputType = ReadonlyDeep<{\n name: string\n fields: SchemaField[]\n}>\n\nexport type SchemaField = ReadonlyDeep<{\n name: string\n isNullable?: boolean\n outputType: OutputTypeRef\n args: SchemaArg[]\n deprecation?: Deprecation\n documentation?: string\n}>\n\nexport type OutputTypeRef = TypeRef<'scalar' | 'outputObjectTypes' | 'enumTypes'>\n\nexport type Deprecation = ReadonlyDeep<{\n sinceVersion: string\n reason: string\n plannedRemovalVersion?: string\n}>\n\nexport type InputType = ReadonlyDeep<{\n name: string\n constraints: {\n maxNumFields: number | null\n minNumFields: number | null\n fields?: string[]\n }\n meta?: {\n source?: string\n grouping?: string\n }\n fields: SchemaArg[]\n}>\n\nexport type FieldRefType = ReadonlyDeep<{\n name: string\n allowTypes: FieldRefAllowType[]\n fields: SchemaArg[]\n}>\n\nexport type FieldRefAllowType = TypeRef<'scalar' | 'enumTypes'>\n\nexport type ModelMapping = ReadonlyDeep<{\n model: string\n plural: string\n findUnique?: string | null\n findUniqueOrThrow?: string | null\n findFirst?: string | null\n findFirstOrThrow?: string | null\n findMany?: string | null\n create?: string | null\n createMany?: string | null\n createManyAndReturn?: string | null\n update?: string | null\n updateMany?: string | null\n updateManyAndReturn?: string | null\n upsert?: string | null\n delete?: string | null\n deleteMany?: string | null\n aggregate?: string | null\n groupBy?: string | null\n count?: string | null\n findRaw?: string | null\n aggregateRaw?: string | null\n}>\n\nexport enum ModelAction {\n findUnique = 'findUnique',\n findUniqueOrThrow = 'findUniqueOrThrow',\n findFirst = 'findFirst',\n findFirstOrThrow = 'findFirstOrThrow',\n findMany = 'findMany',\n create = 'create',\n createMany = 'createMany',\n createManyAndReturn = 'createManyAndReturn',\n update = 'update',\n updateMany = 'updateMany',\n updateManyAndReturn = 'updateManyAndReturn',\n upsert = 'upsert',\n delete = 'delete',\n deleteMany = 'deleteMany',\n groupBy = 'groupBy',\n count = 'count', // TODO: count does not actually exist in DMMF\n aggregate = 'aggregate',\n findRaw = 'findRaw',\n aggregateRaw = 'aggregateRaw',\n}\n", "import fs from 'fs'\n\nimport { highlightTS } from '../highlight/highlight'\nimport { dedent } from './dedent'\n\n/**\n * Class represents a source code or it's slice.\n * Provides various methods for manipulating individual lines\n * of the files using original files line numbers, even if the file was\n * sliced\n */\nexport class SourceFileSlice {\n /**\n * First line, stored in the slice\n */\n readonly firstLineNumber: number\n private lines: string[]\n\n static read(filePath: string): SourceFileSlice | null {\n let content: string\n try {\n content = fs.readFileSync(filePath, 'utf-8')\n } catch (e) {\n return null\n }\n\n return SourceFileSlice.fromContent(content)\n }\n\n static fromContent(content: string): SourceFileSlice {\n const lines = content.split(/\\r?\\n/)\n\n return new SourceFileSlice(1, lines)\n }\n\n private constructor(firstLine: number, lines: string[]) {\n this.firstLineNumber = firstLine\n this.lines = lines\n }\n\n /**\n * First line, stored in the slice\n */\n get lastLineNumber(): number {\n return this.firstLineNumber + this.lines.length - 1\n }\n\n /**\n * Returns new `SourceFileLines` object, where specified\n * `lineNumber` is transformed, using provided `mapFn`\n * @param lineNumber\n * @param mapFn\n * @returns\n */\n mapLineAt(lineNumber: number, mapFn: (line: string) => string): SourceFileSlice {\n if (lineNumber < this.firstLineNumber || lineNumber > this.lines.length + this.firstLineNumber) {\n return this\n }\n const idx = lineNumber - this.firstLineNumber\n const newLines = [...this.lines]\n newLines[idx] = mapFn(newLines[idx])\n return new SourceFileSlice(this.firstLineNumber, newLines)\n }\n\n /**\n * Returns new `SourceFileLines` object, where each line is transformed\n * with provided `mapFn` callback. Callback receives content of the line and\n * original line number\n * @param mapFn\n * @returns\n */\n mapLines(mapFn: (line: string, lineNumber: number) => string): SourceFileSlice {\n return new SourceFileSlice(\n this.firstLineNumber,\n this.lines.map((line, i) => mapFn(line, this.firstLineNumber + i)),\n )\n }\n\n /**\n * Returns contents of the specified line\n * @param lineNumber\n * @returns\n */\n lineAt(lineNumber: number): string | undefined {\n return this.lines[lineNumber - this.firstLineNumber]\n }\n\n /**\n * Prepends a character to the specified line and adds padding\n * to all the other lines so that they'll align\n * @param atLine\n * @param str\n * @returns\n */\n prependSymbolAt(atLine: number, str: string): SourceFileSlice {\n return this.mapLines((line, lineNumber) => {\n if (lineNumber === atLine) {\n return `${str} ${line}`\n }\n return ` ${line}`\n })\n }\n\n /**\n * Creates a new slice from a subset of specified lines of the new code\n * Lines of a slice can still be manipulated using their number in original file\n *\n * @example\n * ```ts\n * const slice = source.slice(80, 100)\n * slice.lineAt(80) === source.lineAt(80)\n * ```\n *\n * @param fromLine\n * @param toLine\n * @returns\n */\n slice(fromLine: number, toLine: number): SourceFileSlice {\n const slicedLines = this.lines.slice(fromLine - 1, toLine).join('\\n')\n return new SourceFileSlice(fromLine, dedent(slicedLines).split('\\n'))\n }\n\n /**\n * Returns new `SourceFileLines` object, where code inside of it have been\n * highlighted as typescript\n * @returns\n */\n highlight(): SourceFileSlice {\n const highlighted = highlightTS(this.toString())\n return new SourceFileSlice(this.firstLineNumber, highlighted.split('\\n'))\n }\n\n toString(): string {\n return this.lines.join('\\n')\n }\n}\n", "import { Prism, Token } from './prism'\nimport type { SyntaxDefinition } from './types'\n\nexport function highlightTS(str: string) {\n return highlight(str, Prism.languages.javascript)\n}\n\nfunction highlight(str: string, grammar: SyntaxDefinition) {\n const tokens = Prism.tokenize(str, grammar)\n return tokens.map((t) => Token.stringify(t)).join('')\n}\n", "import { theme } from './theme'\n\nconst identity = (str: string) => str\n\n/* eslint-disable */\n\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nconst _self: any = {}\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\n// Private helper vars\nlet uniqueId = 0\n\nexport var Prism: any = {\n manual: _self.Prism && _self.Prism.manual,\n disableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n util: {\n encode: function (tokens: any) {\n if (tokens instanceof Token) {\n const anyTokens: any = tokens\n return new Token(anyTokens.type, Prism.util.encode(anyTokens.content), anyTokens.alias)\n } else if (Array.isArray(tokens)) {\n return tokens.map(Prism.util.encode)\n } else {\n return tokens\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/\\u00a0/g, ' ')\n }\n },\n\n type: function (o) {\n return Object.prototype.toString.call(o).slice(8, -1)\n },\n\n objId: function (obj) {\n if (!obj['__id']) {\n Object.defineProperty(obj, '__id', { value: ++uniqueId })\n }\n return obj['__id']\n },\n\n // Deep clone a language definition (e.g. to extend it)\n clone: function deepClone(o, visited?: any) {\n let clone,\n id,\n type = Prism.util.type(o)\n visited = visited || {}\n\n switch (type) {\n case 'Object':\n id = Prism.util.objId(o)\n if (visited[id]) {\n return visited[id]\n }\n clone = {}\n visited[id] = clone\n\n for (const key in o) {\n if (o.hasOwnProperty(key)) {\n clone[key] = deepClone(o[key], visited)\n }\n }\n\n return clone\n\n case 'Array':\n id = Prism.util.objId(o)\n if (visited[id]) {\n return visited[id]\n }\n clone = []\n visited[id] = clone\n\n o.forEach(function (v, i) {\n clone[i] = deepClone(v, visited)\n })\n\n return clone\n\n default:\n return o\n }\n },\n },\n\n languages: {\n extend: function (id, redef) {\n const lang = Prism.util.clone(Prism.languages[id])\n\n for (const key in redef) {\n lang[key] = redef[key]\n }\n\n return lang\n },\n\n /**\n * Insert a token before another token in a language literal\n * As this needs to recreate the object (we cannot actually insert before keys in object literals),\n * we cannot just provide an object, we need an object and a key.\n * @param inside The key (or language id) of the parent\n * @param before The key to insert before.\n * @param insert Object with the key/value pairs to insert\n * @param root The object that contains `inside`. If equal to Prism.languages, it can be omitted.\n */\n insertBefore: function (inside, before, insert, root) {\n root = root || Prism.languages\n const grammar = root[inside]\n const ret = {}\n\n for (const token in grammar) {\n if (grammar.hasOwnProperty(token)) {\n if (token == before) {\n for (const newToken in insert) {\n if (insert.hasOwnProperty(newToken)) {\n ret[newToken] = insert[newToken]\n }\n }\n }\n\n // Do not insert token which also occur in insert. See #1525\n if (!insert.hasOwnProperty(token)) {\n ret[token] = grammar[token]\n }\n }\n }\n\n const old = root[inside]\n root[inside] = ret\n\n // Update references in other language definitions\n Prism.languages.DFS(Prism.languages, function (this: any, key, value) {\n if (value === old && key != inside) {\n this[key] = ret\n }\n })\n\n return ret\n },\n\n // Traverse a language definition with Depth First Search\n DFS: function DFS(o, callback, type?: any, visited?: any) {\n visited = visited || {}\n\n const objId = Prism.util.objId\n\n for (const i in o) {\n if (o.hasOwnProperty(i)) {\n callback.call(o, i, o[i], type || i)\n\n const property = o[i],\n propertyType = Prism.util.type(property)\n\n if (propertyType === 'Object' && !visited[objId(property)]) {\n visited[objId(property)] = true\n DFS(property, callback, null, visited)\n } else if (propertyType === 'Array' && !visited[objId(property)]) {\n visited[objId(property)] = true\n DFS(property, callback, i, visited)\n }\n }\n }\n },\n },\n plugins: {},\n\n highlight: function (text, grammar, language) {\n const env: any = {\n code: text,\n grammar: grammar,\n language: language,\n }\n Prism.hooks.run('before-tokenize', env)\n env.tokens = Prism.tokenize(env.code, env.grammar)\n Prism.hooks.run('after-tokenize', env)\n return Token.stringify(Prism.util.encode(env.tokens), env.language)\n },\n\n matchGrammar: function (text, strarr, grammar, index, startPos, oneshot, target?: any) {\n for (const token in grammar) {\n if (!grammar.hasOwnProperty(token) || !grammar[token]) {\n continue\n }\n\n if (token == target) {\n return\n }\n\n let patterns = grammar[token]\n patterns = Prism.util.type(patterns) === 'Array' ? patterns : [patterns]\n\n for (let j = 0; j < patterns.length; ++j) {\n let pattern = patterns[j],\n inside = pattern.inside,\n lookbehind = !!pattern.lookbehind,\n greedy = !!pattern.greedy,\n lookbehindLength = 0,\n alias = pattern.alias\n\n if (greedy && !pattern.pattern.global) {\n // Without the global flag, lastIndex won't work\n const flags = pattern.pattern.toString().match(/[imuy]*$/)[0]\n pattern.pattern = RegExp(pattern.pattern.source, flags + 'g')\n }\n\n pattern = pattern.pattern || pattern\n\n // Don\u2019t cache length as it changes during the loop\n for (let i = index, pos = startPos; i < strarr.length; pos += strarr[i].length, ++i) {\n let str = strarr[i]\n\n if (strarr.length > text.length) {\n // Something went terribly wrong, ABORT, ABORT!\n return\n }\n\n if (str instanceof Token) {\n continue\n }\n\n if (greedy && i != strarr.length - 1) {\n pattern.lastIndex = pos\n var match = pattern.exec(text)\n if (!match) {\n break\n }\n\n var from = match.index + (lookbehind ? match[1].length : 0),\n to = match.index + match[0].length,\n k = i,\n p = pos\n\n for (let len = strarr.length; k < len && (p < to || (!strarr[k].type && !strarr[k - 1].greedy)); ++k) {\n p += strarr[k].length\n // Move the index i to the element in strarr that is closest to from\n if (from >= p) {\n ++i\n pos = p\n }\n }\n\n // If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n if (strarr[i] instanceof Token) {\n continue\n }\n\n // Number of tokens to delete and replace with the new match\n delNum = k - i\n str = text.slice(pos, p)\n match.index -= pos\n } else {\n pattern.lastIndex = 0\n\n var match = pattern.exec(str),\n delNum = 1\n }\n\n if (!match) {\n if (oneshot) {\n break\n }\n\n continue\n }\n\n if (lookbehind) {\n lookbehindLength = match[1] ? match[1].length : 0\n }\n\n var from = match.index + lookbehindLength,\n match = match[0].slice(lookbehindLength),\n to = from + match.length,\n before = str.slice(0, from),\n after = str.slice(to)\n\n const args: any = [i, delNum]\n\n if (before) {\n ++i\n pos += before.length\n args.push(before)\n }\n\n const wrapped = new Token(token, inside ? Prism.tokenize(match, inside) : match, alias, match, greedy)\n\n args.push(wrapped)\n\n if (after) {\n args.push(after)\n }\n\n Array.prototype.splice.apply(strarr, args)\n\n if (delNum != 1) Prism.matchGrammar(text, strarr, grammar, i, pos, true, token)\n\n if (oneshot) break\n }\n }\n }\n },\n\n tokenize: function (text, grammar) {\n const strarr = [text]\n\n const rest = grammar.rest\n\n if (rest) {\n for (const token in rest) {\n grammar[token] = rest[token]\n }\n\n delete grammar.rest\n }\n\n Prism.matchGrammar(text, strarr, grammar, 0, 0, false)\n\n return strarr\n },\n\n hooks: {\n all: {},\n\n add: function (name, callback) {\n const hooks = Prism.hooks.all\n\n hooks[name] = hooks[name] || []\n\n hooks[name].push(callback)\n },\n\n run: function (name, env) {\n const callbacks = Prism.hooks.all[name]\n\n if (!callbacks || !callbacks.length) {\n return\n }\n\n for (var i = 0, callback; (callback = callbacks[i++]); ) {\n callback(env)\n }\n },\n },\n\n Token: Token,\n}\n\nPrism.languages.clike = {\n comment: [\n {\n pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n lookbehind: true,\n },\n {\n pattern: /(^|[^\\\\:])\\/\\/.*/,\n lookbehind: true,\n greedy: true,\n },\n ],\n string: {\n pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true,\n },\n 'class-name': {\n pattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[\\w.\\\\]+/i,\n lookbehind: true,\n inside: {\n punctuation: /[.\\\\]/,\n },\n },\n keyword: /\\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n boolean: /\\b(?:true|false)\\b/,\n function: /\\w+(?=\\()/,\n number: /\\b0x[\\da-f]+\\b|(?:\\b\\d+\\.?\\d*|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n operator: /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n punctuation: /[{}[\\];(),.:]/,\n}\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n 'class-name': [\n Prism.languages.clike['class-name'],\n {\n pattern: /(^|[^$\\w\\xA0-\\uFFFF])[_$A-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\.(?:prototype|constructor))/,\n lookbehind: true,\n },\n ],\n keyword: [\n {\n pattern: /((?:^|})\\s*)(?:catch|finally)\\b/,\n lookbehind: true,\n },\n {\n pattern:\n /(^|[^.])\\b(?:as|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n lookbehind: true,\n },\n ],\n number:\n /\\b(?:(?:0[xX](?:[\\dA-Fa-f](?:_[\\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\\d(?:_\\d)?)+n|NaN|Infinity)\\b|(?:\\b(?:\\d(?:_\\d)?)+\\.?(?:\\d(?:_\\d)?)*|\\B\\.(?:\\d(?:_\\d)?)+)(?:[Ee][+-]?(?:\\d(?:_\\d)?)+)?/,\n // Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n function: /[_$a-zA-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n operator: /-[-=]?|\\+[+=]?|!=?=?|<<?=?|>>?>?=?|=(?:==?|>)?|&[&=]?|\\|[|=]?|\\*\\*?=?|\\/=?|~|\\^=?|%=?|\\?|\\.{3}/,\n})\n\nPrism.languages.javascript['class-name'][0].pattern =\n /(\\b(?:class|interface|extends|implements|instanceof|new)\\s+)[\\w.\\\\]+/\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n regex: {\n pattern:\n /((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s])\\s*)\\/(\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[gimyus]{0,6}(?=\\s*($|[\\r\\n,.;})\\]]))/,\n lookbehind: true,\n greedy: true,\n },\n // This must be declared before keyword because we use \"function\" inside the look-forward\n 'function-variable': {\n pattern:\n /[_$a-zA-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|[_$a-zA-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*)\\s*=>))/,\n alias: 'function',\n },\n parameter: [\n {\n pattern: /(function(?:\\s+[_$A-Za-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*)?\\s*\\(\\s*)(?!\\s)(?:[^()]|\\([^()]*\\))+?(?=\\s*\\))/,\n lookbehind: true,\n inside: Prism.languages.javascript,\n },\n {\n pattern: /[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*=>)/i,\n inside: Prism.languages.javascript,\n },\n {\n pattern: /(\\(\\s*)(?!\\s)(?:[^()]|\\([^()]*\\))+?(?=\\s*\\)\\s*=>)/,\n lookbehind: true,\n inside: Prism.languages.javascript,\n },\n {\n pattern:\n /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:[_$A-Za-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*\\s*)\\(\\s*)(?!\\s)(?:[^()]|\\([^()]*\\))+?(?=\\s*\\)\\s*\\{)/,\n lookbehind: true,\n inside: Prism.languages.javascript,\n },\n ],\n constant: /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/,\n})\n\nif (Prism.languages.markup) {\n Prism.languages.markup.tag.addInlined('script', 'javascript')\n}\n\nPrism.languages.js = Prism.languages.javascript\n\nPrism.languages.typescript = Prism.languages.extend('javascript', {\n // From JavaScript Prism keyword list and TypeScript language spec: https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#221-reserved-words\n keyword:\n /\\b(?:abstract|as|async|await|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|is|keyof|let|module|namespace|new|null|of|package|private|protected|public|readonly|return|require|set|static|super|switch|this|throw|try|type|typeof|var|void|while|with|yield)\\b/,\n builtin: /\\b(?:string|Function|any|number|boolean|Array|symbol|console|Promise|unknown|never)\\b/,\n})\n\nPrism.languages.ts = Prism.languages.typescript\n\nexport function Token(this: any, type, content, alias, matchedStr?: any, greedy?: any) {\n this.type = type\n this.content = content\n this.alias = alias\n // Copy of the full string this token was created from\n this.length = (matchedStr || '').length | 0\n this.greedy = !!greedy\n}\n\nToken.stringify = function (o, language?: any) {\n if (typeof o == 'string') {\n return o\n }\n\n if (Array.isArray(o)) {\n return o\n .map(function (element) {\n return Token.stringify(element, language)\n })\n .join('')\n }\n\n return getColorForSyntaxKind(o.type)(o.content)\n}\n\nfunction getColorForSyntaxKind(syntaxKind: string) {\n return theme[syntaxKind] || identity\n}\n", "import { blue, bold, cyan, gray, green, yellow } from 'kleur/colors'\n\nimport type { Theme } from './types'\n\nexport const theme: Theme = {\n keyword: cyan,\n entity: cyan,\n value: (s) => bold(blue(s)),\n punctuation: blue,\n directive: cyan,\n function: cyan,\n variable: (s) => bold(blue(s)),\n string: (s) => bold(green(s)),\n boolean: yellow,\n number: cyan,\n comment: gray,\n}\n", "import strip from 'strip-indent'\n\nexport function dedent(str: string): string {\n return strip(str)\n}\n", "import { uncapitalize } from '@prisma/client-common'\nimport levenshtein from 'js-levenshtein'\n\nimport {\n ArgumentDescription,\n EmptySelectionError,\n InputTypeDescription,\n InvalidArgumentTypeError,\n InvalidArgumentValueError,\n OutputTypeDescription,\n RequiredArgumentMissingError,\n SomeFieldsMissingError,\n TooManyFieldsGivenError,\n UnknownArgumentError,\n UnknownInputFieldError,\n UnknownSelectionFieldError,\n ValueTooLargeError,\n} from '../engines'\nimport { GlobalOmitOptions } from '../jsonProtocol/serializeJsonQuery'\nimport {\n IncludeOnScalarError,\n InvalidSelectionValueError,\n MutuallyExclusiveFieldsError,\n ValidationError,\n} from '../types/ValidationError'\nimport { applyUnionError } from './applyUnionError'\nimport { ArgumentsRenderingTree } from './ArgumentsRenderingTree'\nimport { Colors } from './base'\nimport { ObjectField } from './ObjectField'\nimport { ObjectFieldSuggestion } from './ObjectFieldSuggestion'\nimport { ObjectValue } from './ObjectValue'\nimport { ScalarValue } from './ScalarValue'\nimport { SuggestionObjectValue } from './SuggestionObjectValue'\n\n/**\n * Given the validation error and arguments rendering tree, applies corresponding\n * formatting to an error tree and adds all relevant messages.\n *\n * @param error\n * @param args\n */\nexport function applyValidationError(\n error: ValidationError,\n args: ArgumentsRenderingTree,\n globalOmit?: GlobalOmitOptions,\n): void {\n switch (error.kind) {\n case 'MutuallyExclusiveFields':\n applyMutuallyExclusiveFieldsError(error, args)\n break\n case 'IncludeOnScalar':\n applyIncludeOnScalarError(error, args)\n break\n case 'EmptySelection':\n applyEmptySelectionError(error, args, globalOmit)\n break\n case 'UnknownSelectionField':\n applyUnknownSelectionFieldError(error, args)\n break\n case 'InvalidSelectionValue':\n applyInvalidSelectionValueError(error, args)\n break\n case 'UnknownArgument':\n applyUnknownArgumentError(error, args)\n break\n case 'UnknownInputField':\n applyUnknownInputFieldError(error, args)\n break\n case 'RequiredArgumentMissing':\n applyRequiredArgumentMissingError(error, args)\n break\n case 'InvalidArgumentType':\n applyInvalidArgumentTypeError(error, args)\n break\n case 'InvalidArgumentValue':\n applyInvalidArgumentValueError(error, args)\n break\n case 'ValueTooLarge':\n applyValueTooLargeError(error, args)\n break\n case 'SomeFieldsMissing':\n applySomeFieldsMissingError(error, args)\n break\n case 'TooManyFieldsGiven':\n applyTooManyFieldsGivenError(error, args)\n break\n case 'Union':\n applyUnionError(error, args, globalOmit)\n break\n default:\n throw new Error('not implemented: ' + error.kind)\n }\n}\n\nfunction applyMutuallyExclusiveFieldsError(error: MutuallyExclusiveFieldsError, argsTree: ArgumentsRenderingTree) {\n const object = argsTree.arguments.getDeepSubSelectionValue(error.selectionPath)?.asObject()\n if (object) {\n object.getField(error.firstField)?.markAsError()\n object.getField(error.secondField)?.markAsError()\n }\n\n argsTree.addErrorMessage(\n (colors) =>\n `Please ${colors.bold('either')} use ${colors.green(`\\`${error.firstField}\\``)} or ${colors.green(\n `\\`${error.secondField}\\``,\n )}, but ${colors.red('not both')} at the same time.`,\n )\n}\n\nfunction applyIncludeOnScalarError(error: IncludeOnScalarError, argsTree: ArgumentsRenderingTree) {\n const [selectionPath, field] = splitPath(error.selectionPath)\n const outputType = error.outputType\n\n const object = argsTree.arguments.getDeepSelectionParent(selectionPath)?.value\n if (object) {\n object.getField(field)?.markAsError()\n\n if (outputType) {\n for (const field of outputType.fields) {\n if (field.isRelation) {\n object.addSuggestion(new ObjectFieldSuggestion(field.name, 'true'))\n }\n }\n }\n }\n\n argsTree.addErrorMessage((colors) => {\n let msg = `Invalid scalar field ${colors.red(`\\`${field}\\``)} for ${colors.bold('include')} statement`\n if (outputType) {\n msg += ` on model ${colors.bold(outputType.name)}. ${availableOptionsMessage(colors)}`\n } else {\n msg += '.'\n }\n\n msg += `\\nNote that ${colors.bold('include')} statements only accept relation fields.`\n return msg\n })\n}\n\nfunction applyEmptySelectionError(\n error: EmptySelectionError,\n argsTree: ArgumentsRenderingTree,\n globalOmit?: GlobalOmitOptions,\n) {\n const subSelection = argsTree.arguments.getDeepSubSelectionValue(error.selectionPath)?.asObject()\n if (subSelection) {\n const omit = subSelection.getField('omit')?.value.asObject()\n if (omit) {\n applyEmptySelectionErrorOmit(error, argsTree, omit)\n return\n }\n if (subSelection.hasField('select')) {\n applyEmptySelectionErrorSelect(error, argsTree)\n return\n }\n }\n\n if (globalOmit?.[uncapitalize(error.outputType.name)]) {\n applyEmptySelectionErrorGlobalOmit(error, argsTree)\n return\n }\n\n // should never happen, but in case it does\n argsTree.addErrorMessage(() => `Unknown field at \"${error.selectionPath.join('.')} selection\"`)\n}\n\n// case for `EmptySelectionError`, triggered by excessive omit\nfunction applyEmptySelectionErrorOmit(\n error: EmptySelectionError,\n argsTree: ArgumentsRenderingTree,\n omitValue: ObjectValue,\n) {\n omitValue.removeAllFields()\n for (const field of error.outputType.fields) {\n omitValue.addSuggestion(new ObjectFieldSuggestion(field.name, 'false'))\n }\n\n argsTree.addErrorMessage((colors) => {\n return `The ${colors.red('omit')} statement includes every field of the model ${colors.bold(\n error.outputType.name,\n )}. At least one field must be included in the result`\n })\n}\n\n// case for `EmptySelectionError`, triggered by empty/falsy `select`\nfunction applyEmptySelectionErrorSelect(error: EmptySelectionError, argsTree: ArgumentsRenderingTree) {\n const outputType = error.outputType\n const selection = argsTree.arguments.getDeepSelectionParent(error.selectionPath)?.value\n const isEmpty = selection?.isEmpty() ?? false\n\n if (selection) {\n // If selection has fields and we get EmptySelection error, it means all fields within the\n // selection are false. We have 2 possible ways to handle suggestions here:\n //\n // 1. Suggest only the fields, not present inside of the selection. Example:\n //\n // {\n // select: {\n // id: false\n // posts: false,\n // ? name?: true\n // ? email?: true\n // }\n // }\n // There are couple of possible problems here. First, we are assuming that user needs to\n // add new field to the selection, rather than change one of the existing ones to true.\n // Second, we might end up in a situation where all fields are already used in selection and we have nothing left to suggest.\n //\n // 2.Completely ignore users input and suggest all the fields. Example rendering:\n // {\n // select: {\n // ? id?: true\n // ? posts?: true,\n // ? name?: true\n // ? email?: true\n // }\n // }\n //\n // So we will be suggesting to either change one of the fields to true, or add a new one which would be true.\n // This is the approach we are taking and in order to it, we need to remove all the fields from selection. Code\n // below will then add them back as a suggestion.\n selection.removeAllFields()\n addSelectionSuggestions(selection, outputType)\n }\n\n argsTree.addErrorMessage((colors) => {\n if (isEmpty) {\n return `The ${colors.red('`select`')} statement for type ${colors.bold(\n outputType.name,\n )} must not be empty. ${availableOptionsMessage(colors)}`\n }\n return `The ${colors.red('`select`')} statement for type ${colors.bold(outputType.name)} needs ${colors.bold(\n 'at least one truthy value',\n )}.`\n })\n}\n\n// case for `EmptySelectionError`, triggered by excessive global omit\nfunction applyEmptySelectionErrorGlobalOmit(error: EmptySelectionError, argsTree: ArgumentsRenderingTree) {\n const suggestedOmitConfig = new SuggestionObjectValue()\n for (const field of error.outputType.fields) {\n if (!field.isRelation) {\n suggestedOmitConfig.addField(field.name, 'false')\n }\n }\n\n const omitSuggestion = new ObjectFieldSuggestion('omit', suggestedOmitConfig).makeRequired()\n\n if (error.selectionPath.length === 0) {\n argsTree.arguments.addSuggestion(omitSuggestion)\n } else {\n const [parentPath, fieldName] = splitPath(error.selectionPath)\n const parent = argsTree.arguments.getDeepSelectionParent(parentPath)?.value.asObject()\n const field = parent?.getField(fieldName)\n if (field) {\n const fieldValue = field?.value.asObject() ?? new ObjectValue()\n fieldValue.addSuggestion(omitSuggestion)\n field.value = fieldValue\n }\n }\n\n // neither select, nor omit are used, but global omit global omit configuration for the model exists\n argsTree.addErrorMessage((colors) => {\n return `The global ${colors.red('omit')} configuration excludes every field of the model ${colors.bold(\n error.outputType.name,\n )}. At least one field must be included in the result`\n })\n}\n\nfunction applyUnknownSelectionFieldError(error: UnknownSelectionFieldError, argsTree: ArgumentsRenderingTree) {\n const locateResult = locateSelectionField(error.selectionPath, argsTree)\n if (locateResult.parentKind !== 'unknown') {\n locateResult.field.markAsError()\n const parent = locateResult.parent\n switch (locateResult.parentKind) {\n case 'select':\n addSelectionSuggestions(parent, error.outputType)\n break\n case 'include':\n addInclusionSuggestions(parent, error.outputType)\n break\n case 'omit':\n addOmissionSuggestions(parent, error.outputType)\n break\n }\n }\n argsTree.addErrorMessage((colors) => {\n const parts = [`Unknown field ${colors.red(`\\`${locateResult.fieldName}\\``)}`]\n if (locateResult.parentKind !== 'unknown') {\n parts.push(`for ${colors.bold(locateResult.parentKind)} statement`)\n }\n parts.push(`on model ${colors.bold(`\\`${error.outputType.name}\\``)}.`)\n parts.push(availableOptionsMessage(colors))\n return parts.join(' ')\n })\n}\n\nfunction applyInvalidSelectionValueError(error: InvalidSelectionValueError, argsTree: ArgumentsRenderingTree) {\n const locateResult = locateSelectionField(error.selectionPath, argsTree)\n if (locateResult.parentKind !== 'unknown') {\n locateResult.field.value.markAsError()\n }\n\n argsTree.addErrorMessage((colors) => {\n return `Invalid value for selection field \\`${colors.red(locateResult.fieldName)}\\`: ${error.underlyingError}`\n })\n}\n\nfunction applyUnknownArgumentError(error: UnknownArgumentError, argsTree: ArgumentsRenderingTree) {\n const argName = error.argumentPath[0]\n const selection = argsTree.arguments.getDeepSubSelectionValue(error.selectionPath)?.asObject()\n\n if (selection) {\n selection.getField(argName)?.markAsError()\n addArgumentsSuggestions(selection, error.arguments)\n }\n\n argsTree.addErrorMessage((colors) =>\n unknownArgumentMessage(\n colors,\n argName,\n error.arguments.map((arg) => arg.name),\n ),\n )\n}\n\nfunction applyUnknownInputFieldError(error: UnknownInputFieldError, argsTree: ArgumentsRenderingTree) {\n const [argParentPath, argName] = splitPath(error.argumentPath)\n const selection = argsTree.arguments.getDeepSubSelectionValue(error.selectionPath)?.asObject()\n\n if (selection) {\n selection.getDeepField(error.argumentPath)?.markAsError()\n const argParent = selection.getDeepFieldValue(argParentPath)?.asObject()\n if (argParent) {\n addInputSuggestions(argParent, error.inputType)\n }\n }\n\n argsTree.addErrorMessage((colors) =>\n unknownArgumentMessage(\n colors,\n argName,\n error.inputType.fields.map((f) => f.name),\n ),\n )\n}\n\nfunction unknownArgumentMessage(colors: Colors, argName: string, options: string[]) {\n const parts = [`Unknown argument \\`${colors.red(argName)}\\`.`]\n const suggestion = getSuggestion(argName, options)\n\n if (suggestion) {\n parts.push(`Did you mean \\`${colors.green(suggestion)}\\`?`)\n }\n\n if (options.length > 0) {\n parts.push(availableOptionsMessage(colors))\n }\n\n return parts.join(' ')\n}\n\nfunction applyRequiredArgumentMissingError(error: RequiredArgumentMissingError, args: ArgumentsRenderingTree) {\n let existingField: ObjectField | undefined = undefined\n\n args.addErrorMessage((colors) => {\n if (existingField?.value instanceof ScalarValue && existingField.value.text === 'null') {\n return `Argument \\`${colors.green(argumentName)}\\` must not be ${colors.red('null')}.`\n }\n return `Argument \\`${colors.green(argumentName)}\\` is missing.`\n })\n const selection = args.arguments.getDeepSubSelectionValue(error.selectionPath)?.asObject()\n if (!selection) {\n return\n }\n\n const [argParent, argumentName] = splitPath(error.argumentPath)\n const objectSuggestion = new SuggestionObjectValue()\n const parent = selection.getDeepFieldValue(argParent)?.asObject()\n if (!parent) {\n return\n }\n\n existingField = parent.getField(argumentName)\n if (existingField) {\n parent.removeField(argumentName)\n }\n\n if (error.inputTypes.length === 1 && error.inputTypes[0].kind === 'object') {\n for (const field of error.inputTypes[0].fields) {\n objectSuggestion.addField(field.name, field.typeNames.join(' | '))\n }\n\n parent.addSuggestion(new ObjectFieldSuggestion(argumentName, objectSuggestion).makeRequired())\n } else {\n const typeName = error.inputTypes.map(getInputTypeName).join(' | ')\n parent.addSuggestion(new ObjectFieldSuggestion(argumentName, typeName).makeRequired())\n }\n\n if (error.dependentArgumentPath) {\n selection.getDeepField(error.dependentArgumentPath)?.markAsError()\n const [, dependentArgumentName] = splitPath(error.dependentArgumentPath)\n args.addErrorMessage((colors) => {\n return `Argument \\`${colors.green(argumentName)}\\` is required because argument \\`${colors.green(\n dependentArgumentName,\n )}\\` was provided.`\n })\n }\n}\n\nfunction getInputTypeName(description: InputTypeDescription) {\n if (description.kind === 'list') {\n return `${getInputTypeName(description.elementType)}[]`\n }\n return description.name\n}\n\nfunction applyInvalidArgumentTypeError(error: InvalidArgumentTypeError, args: ArgumentsRenderingTree) {\n const argName = error.argument.name\n const selection = args.arguments.getDeepSubSelectionValue(error.selectionPath)?.asObject()\n if (selection) {\n selection.getDeepFieldValue(error.argumentPath)?.markAsError()\n }\n\n args.addErrorMessage((colors) => {\n const expected = joinWithPreposition(\n 'or',\n error.argument.typeNames.map((type) => colors.green(type)),\n )\n // TODO: print value\n return `Argument \\`${colors.bold(argName)}\\`: Invalid value provided. Expected ${expected}, provided ${colors.red(\n error.inferredType,\n )}.`\n })\n}\n\nfunction applyInvalidArgumentValueError(error: InvalidArgumentValueError, args: ArgumentsRenderingTree) {\n const argName = error.argument.name\n const selection = args.arguments.getDeepSubSelectionValue(error.selectionPath)?.asObject()\n if (selection) {\n selection.getDeepFieldValue(error.argumentPath)?.markAsError()\n }\n\n args.addErrorMessage((colors) => {\n const parts = [`Invalid value for argument \\`${colors.bold(argName)}\\``]\n if (error.underlyingError) {\n parts.push(`: ${error.underlyingError}`)\n }\n parts.push('.')\n if (error.argument.typeNames.length > 0) {\n const expected = joinWithPreposition(\n 'or',\n error.argument.typeNames.map((type) => colors.green(type)),\n )\n parts.push(` Expected ${expected}.`)\n }\n return parts.join('')\n })\n}\n\nfunction applyValueTooLargeError(error: ValueTooLargeError, args: ArgumentsRenderingTree) {\n const argName = error.argument.name\n const selection = args.arguments.getDeepSubSelectionValue(error.selectionPath)?.asObject()\n let printedValue: string | undefined\n if (selection) {\n const field = selection.getDeepField(error.argumentPath)\n const value = field?.value\n value?.markAsError()\n if (value instanceof ScalarValue) {\n printedValue = value.text\n }\n }\n\n args.addErrorMessage((colors) => {\n const parts: string[] = ['Unable to fit value']\n if (printedValue) {\n parts.push(colors.red(printedValue))\n }\n parts.push(`into a 64-bit signed integer for field \\`${colors.bold(argName)}\\``)\n\n return parts.join(' ')\n })\n}\n\nfunction applySomeFieldsMissingError(error: SomeFieldsMissingError, args: ArgumentsRenderingTree) {\n const argumentName = error.argumentPath[error.argumentPath.length - 1]\n const selection = args.arguments.getDeepSubSelectionValue(error.selectionPath)?.asObject()\n if (selection) {\n const argument = selection.getDeepFieldValue(error.argumentPath)?.asObject()\n if (argument) {\n addInputSuggestions(argument, error.inputType)\n }\n }\n\n args.addErrorMessage((colors) => {\n const parts = [`Argument \\`${colors.bold(argumentName)}\\` of type ${colors.bold(error.inputType.name)} needs`]\n if (error.constraints.minFieldCount === 1) {\n if (error.constraints.requiredFields) {\n parts.push(\n `${colors.green('at least one of')} ${joinWithPreposition(\n 'or',\n error.constraints.requiredFields.map((f) => `\\`${colors.bold(f)}\\``),\n )} arguments.`,\n )\n } else {\n parts.push(`${colors.green('at least one')} argument.`)\n }\n } else {\n parts.push(`${colors.green(`at least ${error.constraints.minFieldCount}`)} arguments.`)\n }\n parts.push(availableOptionsMessage(colors))\n return parts.join(' ')\n })\n}\n\nfunction applyTooManyFieldsGivenError(error: TooManyFieldsGivenError, args: ArgumentsRenderingTree) {\n const argumentName = error.argumentPath[error.argumentPath.length - 1]\n const selection = args.arguments.getDeepSubSelectionValue(error.selectionPath)?.asObject()\n let providedArguments: string[] = []\n if (selection) {\n const argument = selection.getDeepFieldValue(error.argumentPath)?.asObject()\n if (argument) {\n argument.markAsError()\n providedArguments = Object.keys(argument.getFields())\n }\n }\n\n args.addErrorMessage((colors) => {\n const parts = [`Argument \\`${colors.bold(argumentName)}\\` of type ${colors.bold(error.inputType.name)} needs`]\n if (error.constraints.minFieldCount === 1 && error.constraints.maxFieldCount == 1) {\n parts.push(`${colors.green('exactly one')} argument,`)\n } else if (error.constraints.maxFieldCount == 1) {\n parts.push(`${colors.green('at most one')} argument,`)\n } else {\n parts.push(`${colors.green(`at most ${error.constraints.maxFieldCount}`)} arguments,`)\n }\n\n parts.push(\n `but you provided ${joinWithPreposition(\n 'and',\n providedArguments.map((arg) => colors.red(arg)),\n )}. Please choose`,\n )\n\n if (error.constraints.maxFieldCount === 1) {\n parts.push('one.')\n } else {\n parts.push(`${error.constraints.maxFieldCount}.`)\n }\n\n return parts.join(' ')\n })\n}\n\nfunction addSelectionSuggestions(selection: ObjectValue, outputType: OutputTypeDescription) {\n for (const field of outputType.fields) {\n if (!selection.hasField(field.name)) {\n selection.addSuggestion(new ObjectFieldSuggestion(field.name, 'true'))\n }\n }\n}\n\nfunction addInclusionSuggestions(selection: ObjectValue, outputType: OutputTypeDescription) {\n for (const field of outputType.fields) {\n if (field.isRelation && !selection.hasField(field.name)) {\n selection.addSuggestion(new ObjectFieldSuggestion(field.name, 'true'))\n }\n }\n}\n\nfunction addOmissionSuggestions(selection: ObjectValue, outputType: OutputTypeDescription) {\n for (const field of outputType.fields) {\n if (!selection.hasField(field.name) && !field.isRelation) {\n selection.addSuggestion(new ObjectFieldSuggestion(field.name, 'true'))\n }\n }\n}\n\nfunction addArgumentsSuggestions(argumentsParent: ObjectValue, args: ArgumentDescription[]) {\n for (const arg of args) {\n if (!argumentsParent.hasField(arg.name)) {\n argumentsParent.addSuggestion(new ObjectFieldSuggestion(arg.name, arg.typeNames.join(' | ')))\n }\n }\n}\n\nfunction locateSelectionField(selectionPath: string[], argsTree: ArgumentsRenderingTree) {\n const [parentPath, fieldName] = splitPath(selectionPath)\n\n const subSelection = argsTree.arguments.getDeepSubSelectionValue(parentPath)?.asObject()\n if (!subSelection) {\n return { parentKind: 'unknown' as const, fieldName }\n }\n const select = subSelection.getFieldValue('select')?.asObject()\n const include = subSelection.getFieldValue('include')?.asObject()\n const omit = subSelection.getFieldValue('omit')?.asObject()\n let field = select?.getField(fieldName)\n if (select && field) {\n return { parentKind: 'select' as const, parent: select, field, fieldName }\n }\n field = include?.getField(fieldName)\n if (include && field) {\n return { parentKind: 'include' as const, field, parent: include, fieldName }\n }\n\n field = omit?.getField(fieldName)\n if (omit && field) {\n return { parentKind: 'omit' as const, field, parent: omit, fieldName }\n }\n return { parentKind: 'unknown' as const, fieldName }\n}\n\nfunction addInputSuggestions(parent: ObjectValue, inputType: InputTypeDescription) {\n if (inputType.kind !== 'object') {\n return\n }\n\n for (const field of inputType.fields) {\n if (!parent.hasField(field.name)) {\n parent.addSuggestion(new ObjectFieldSuggestion(field.name, field.typeNames.join(' | ')))\n }\n }\n}\n\nfunction splitPath(path: string[]): [parentPath: string[], fieldName: string] {\n const selectionPath = [...path]\n const fieldName = selectionPath.pop()\n if (!fieldName) {\n throw new Error('unexpected empty path')\n }\n return [selectionPath, fieldName]\n}\n\nfunction availableOptionsMessage({ green, enabled }: Colors) {\n return `Available options are ` + (enabled ? `listed in ${green('green')}` : `marked with ?`) + '.'\n}\n\nfunction joinWithPreposition(preposition: 'and' | 'or', items: string[]): string {\n if (items.length === 1) {\n return items[0]\n }\n const itemsCopy = [...items]\n const lastItem = itemsCopy.pop()\n return `${itemsCopy.join(', ')} ${preposition} ${lastItem}`\n}\n\n/**\n * Options with edit distance above this value will never be suggested\n */\nconst MAX_EDIT_DISTANCE = 3\n\nfunction getSuggestion(str: string, options: string[]): string | undefined {\n let minDistance = Infinity\n let result: string | undefined\n\n for (const option of options) {\n const editDistance = levenshtein(str, option)\n if (editDistance > MAX_EDIT_DISTANCE) {\n continue\n }\n if (editDistance < minDistance) {\n minDistance = editDistance\n result = option\n }\n }\n return result\n}\n", "import { maxWithComparator } from '@prisma/internals'\n\nimport { EngineValidationError, InvalidArgumentTypeError, UnionError } from '../engines'\nimport { GlobalOmitOptions } from '../jsonProtocol/serializeJsonQuery'\nimport { applyValidationError } from './applyValidationError'\nimport { ArgumentsRenderingTree } from './ArgumentsRenderingTree'\n\ntype NonUnionError = Exclude<EngineValidationError, UnionError>\n\n/**\n * When a particular field has multiple allowed types on the schema level\n * and none of them match users input, engine returns special kind of error: UnionError.\n * This error acts as a container for individual errors for each non-matching type.\n * In that case, we need to make a guess which of the errors corresponds users intent the most.\n * General algorithm of processing them is the following:\n * - flatten all nested errors and get a single list of all possible errors\n * - merge individual InvalidArgumentType errors at the same path\n * - pick the best error based on combined argument and selection paths length and type of the error.\n *\n * For details of each step, see other comments in this file.\n * @param error\n * @param args\n */\nexport function applyUnionError(error: UnionError, args: ArgumentsRenderingTree, globalOmit?: GlobalOmitOptions) {\n const allErrors = flattenUnionError(error)\n const merged = mergeInvalidArgumentTypeErrors(allErrors)\n const bestError = getBestScoringError(merged)\n if (bestError) {\n applyValidationError(bestError, args, globalOmit)\n } else {\n args.addErrorMessage(() => 'Unknown error')\n }\n}\n\nfunction flattenUnionError(error: UnionError): NonUnionError[] {\n return error.errors.flatMap((error) => {\n if (error.kind === 'Union') {\n return flattenUnionError(error)\n }\n return [error]\n })\n}\n\n/**\n * Iterates over provided error list and merges all InvalidArgumentType\n * with matching selectionPath and argumentPath into one. For example,\n * if the list has an error, saying that `where.arg` does not match `Int`\n * and another, saying that `where.arg` does not match IntFilter, resulting\n * list will contain a single error for `where.arg` saying it does not\n * match `Int | IntFilter`\n * @param errorList\n * @returns\n */\nfunction mergeInvalidArgumentTypeErrors(errorList: NonUnionError[]) {\n const invalidArgsError = new Map<string, InvalidArgumentTypeError>()\n const result: NonUnionError[] = []\n\n for (const error of errorList) {\n if (error.kind !== 'InvalidArgumentType') {\n result.push(error)\n continue\n }\n\n const key = `${error.selectionPath.join('.')}:${error.argumentPath.join('.')}`\n const prevError = invalidArgsError.get(key)\n if (!prevError) {\n invalidArgsError.set(key, error)\n } else {\n invalidArgsError.set(key, {\n ...error,\n argument: {\n ...error.argument,\n typeNames: uniqueConcat(prevError.argument.typeNames, error.argument.typeNames),\n },\n })\n }\n }\n\n result.push(...invalidArgsError.values())\n return result\n}\n\nfunction uniqueConcat<T>(head: T[], tail: T[]): T[] {\n return [...new Set(head.concat(tail))]\n}\n\n/**\n * Function that attempts to pick the best error from the list\n * by ranking them. In most cases, highest ranking error would be the one\n * which has the longest combined \"selectionPath\" + \"argumentPath\". Justification\n * for that is that type that made it deeper into validation tree before failing\n * is probably closer to the one user actually wanted to do.\n *\n * However, if two errors are at the same depth level, we introduce additional ranking based\n * on error type. See `getErrorTypeScore` function for details\n * @param errors\n * @returns\n */\nfunction getBestScoringError(errors: NonUnionError[]) {\n return maxWithComparator(errors, (errorA, errorB) => {\n const aPathLength = getCombinedPathLength(errorA)\n const bPathLength = getCombinedPathLength(errorB)\n if (aPathLength !== bPathLength) {\n return aPathLength - bPathLength\n }\n return getErrorTypeScore(errorA) - getErrorTypeScore(errorB)\n })\n}\n\nfunction getCombinedPathLength(error: EngineValidationError) {\n let score = 0\n if (Array.isArray(error['selectionPath'])) {\n score += error['selectionPath'].length\n }\n\n if (Array.isArray(error['argumentPath'])) {\n score += error['argumentPath'].length\n }\n return score\n}\n\n/**\n * Function is invoked to determine most relevant error based on its type.\n * Specific numbers returned from this function do not really matter, it's only\n * important how they compare relatively to each other.\n *\n * Current logic is:\n * - InvalidArgumentValue/ValueTooLarge is treated as the best possible error to display\n * since when it is present we know that the field causing the error is defined on the schema\n * and provided value has correct type, it's just that value violates some other constraint.\n * - Next candidate is `InvalidArgumentType` error. We know the field user specified can exists in\n * this spot, it's just that value provided has incorrect type.\n * - All other engine-side errors follow. At that point it's difficult to say which of them is more relevant,\n * so we treat them equally. We might adjust this logic in the future.\n * - RequiredArgumentMissing is penalized because this error is often used to disambiguate\n * union types and what is required in one arm of the union might be fine to leave out in another\n * @param error\n * @returns\n */\nfunction getErrorTypeScore(error: EngineValidationError): number {\n switch (error.kind) {\n case 'InvalidArgumentValue':\n case 'ValueTooLarge':\n return 20\n case 'InvalidArgumentType':\n return 10\n case 'RequiredArgumentMissing':\n return -10\n default:\n return 0\n }\n}\n", "import { ErrorBasicBuilder, ErrorWriter } from './base'\nimport { SuggestionObjectValue } from './SuggestionObjectValue'\n\nexport class ObjectFieldSuggestion implements ErrorBasicBuilder {\n public isRequired = false\n constructor(\n readonly name: string,\n readonly value: string | SuggestionObjectValue,\n ) {}\n\n makeRequired() {\n this.isRequired = true\n return this\n }\n\n write(writer: ErrorWriter): void {\n const {\n colors: { green },\n } = writer.context\n\n writer.addMarginSymbol(green(this.isRequired ? '+' : '?'))\n writer.write(green(this.name))\n\n if (!this.isRequired) {\n writer.write(green('?'))\n }\n\n writer.write(green(`: `))\n if (typeof this.value === 'string') {\n writer.write(green(this.value))\n } else {\n writer.write(this.value)\n }\n }\n}\n", "import { INDENT_SIZE } from '@prisma/ts-builders'\n\nimport { ArrayValue } from './ArrayValue'\nimport { ErrorWriter, fieldsSeparator } from './base'\nimport { Field } from './Field'\nimport { FormattedString } from './FormattedString'\nimport { ObjectField } from './ObjectField'\nimport { ObjectFieldSuggestion } from './ObjectFieldSuggestion'\nimport { Value } from './Value'\n\ntype SelectionParent = {\n kind: 'include' | 'select'\n value: ObjectValue\n}\n\n/**\n * Class for representing object value within rendering tree. Also used for accessing\n * different fields of the object.\n *\n * Terminology used within:\n * - selection parent = either `select` or `include` property value. For example for object\n * `{ select: { posts: true }}`, selection parent is `{ posts: true }`\n * - sub selection: value of a property of selection parent. Can be deep. In that case, specified\n * path is expected to not contain either `select` or `include` values in between (the way engine reports `selectionPath`).\n * For example, for this query:\n *\n * {\n * include: {\n * posts: {\n * select: { attachments: { where: { published: true }} }\n * }\n * }\n * }\n * Value of sub selection at path [posts, attachments] is { where: { published: true }}\n */\nexport class ObjectValue extends Value {\n private fields: Record<string, ObjectField> = {}\n private suggestions: ObjectFieldSuggestion[] = []\n\n addField(field: ObjectField) {\n this.fields[field.name] = field\n }\n\n addSuggestion(suggestion: ObjectFieldSuggestion) {\n this.suggestions.push(suggestion)\n }\n\n getField(key: string): ObjectField | undefined {\n return this.fields[key]\n }\n\n getDeepField(path: string[]): Field | undefined {\n const [head, ...tail] = path\n const firstField = this.getField(head)\n if (!firstField) {\n return undefined\n }\n let field: Field = firstField\n for (const segment of tail) {\n let nextField: Field | undefined\n\n if (field.value instanceof ObjectValue) {\n nextField = field.value.getField(segment)\n } else if (field.value instanceof ArrayValue) {\n nextField = field.value.getField(Number(segment))\n }\n if (!nextField) {\n return undefined\n }\n field = nextField\n }\n return field\n }\n\n getDeepFieldValue(path: string[]) {\n if (path.length === 0) {\n return this\n }\n return this.getDeepField(path)?.value\n }\n\n hasField(key: string) {\n return Boolean(this.getField(key))\n }\n\n removeAllFields() {\n this.fields = {}\n }\n\n removeField(key: string) {\n delete this.fields[key]\n }\n\n getFields() {\n return this.fields\n }\n\n isEmpty(): boolean {\n return Object.keys(this.fields).length === 0\n }\n\n getFieldValue(key: string): Value | undefined {\n return this.getField(key)?.value\n }\n\n getDeepSubSelectionValue(path: string[]): Value | undefined {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let selection: Value = this\n for (const segment of path) {\n if (!(selection instanceof ObjectValue)) {\n return undefined\n }\n const next = selection.getSubSelectionValue(segment)\n if (!next) {\n return undefined\n }\n\n selection = next\n }\n\n return selection\n }\n\n getDeepSelectionParent(path: string[]): SelectionParent | undefined {\n const thisParent = this.getSelectionParent()\n if (!thisParent) {\n return undefined\n }\n\n let parent = thisParent\n\n for (const segment of path) {\n const next = parent.value.getFieldValue(segment)\n if (!next || !(next instanceof ObjectValue)) {\n return undefined\n }\n\n const nextParent = next.getSelectionParent()\n if (!nextParent) {\n return undefined\n }\n parent = nextParent\n }\n\n return parent\n }\n\n getSelectionParent(): SelectionParent | undefined {\n const select = this.getField('select')?.value.asObject()\n if (select) {\n return { kind: 'select', value: select }\n }\n\n const include = this.getField('include')?.value.asObject()\n if (include) {\n return { kind: 'include', value: include }\n }\n return undefined\n }\n\n getSubSelectionValue(key: string): Value | undefined {\n return this.getSelectionParent()?.value.fields[key].value\n }\n\n override getPrintWidth(): number {\n const fields = Object.values(this.fields)\n if (fields.length == 0) {\n return 2 // {}\n }\n const maxFieldWidth = Math.max(...fields.map((f) => f.getPrintWidth()))\n return maxFieldWidth + INDENT_SIZE\n }\n\n override write(writer: ErrorWriter): void {\n const fields = Object.values(this.fields)\n if (fields.length === 0 && this.suggestions.length === 0) {\n this.writeEmpty(writer)\n return\n }\n\n this.writeWithContents(writer, fields)\n }\n\n override asObject(): ObjectValue {\n return this\n }\n\n private writeEmpty(writer: ErrorWriter) {\n const output = new FormattedString('{}')\n if (this.hasError) {\n output.setColor(writer.context.colors.red).underline()\n }\n\n writer.write(output)\n }\n\n private writeWithContents(writer: ErrorWriter, fields: ObjectField[]) {\n writer.writeLine('{').withIndent(() => {\n writer.writeJoined(fieldsSeparator, [...fields, ...this.suggestions]).newLine()\n })\n\n writer.write('}')\n if (this.hasError) {\n writer.afterNextNewline(() => {\n writer.writeLine(writer.context.colors.red('~'.repeat(this.getPrintWidth())))\n })\n }\n }\n}\n", "export * from './AnyDeclarationBuilder'\nexport * from './ArraySpread'\nexport * from './ArrayType'\nexport * from './BasicBuilder'\nexport * from './Class'\nexport * from './ConditionalType'\nexport * from './ConstDeclaration'\nexport * from './DocComment'\nexport * from './Export'\nexport * from './ExportFrom'\nexport * from './File'\nexport * from './FunctionCall'\nexport * from './FunctionType'\nexport * from './GenericParameter'\nexport * from './helpers'\nexport * from './Import'\nexport * from './Interface'\nexport * from './IntersectionType'\nexport * from './KeyofType'\nexport * from './KeyType'\nexport * from './Method'\nexport * from './NamedType'\nexport * from './NamedValue'\nexport * from './NamespaceDeclaration'\nexport * from './ObjectType'\nexport * from './Parameter'\nexport * from './PrimitiveType'\nexport * from './Property'\nexport * from './stringify'\nexport * from './StringLiteralType'\nexport * from './TupleType'\nexport * from './TypeBuilder'\nexport * from './TypeDeclaration'\nexport * from './UnionType'\nexport * from './ValueBuilder'\nexport * from './WellKnownSymbol'\nexport * from './Writer'\n", "import type { BasicBuilder } from './BasicBuilder'\n\nexport const INDENT_SIZE = 2\n/**\n * Helper class for building long multi-line formatted strings from building blocks.\n * Can use either plain strings or `Builder` objects, that would encapsulate formatting logic.\n */\nexport class Writer<ContextType = undefined> {\n private lines: string[] = []\n private currentLine = ''\n private currentIndent = 0\n private marginSymbol?: string\n private afterNextNewLineCallback?: () => void\n\n constructor(\n startingIndent = 0,\n readonly context: ContextType,\n ) {\n this.currentIndent = startingIndent\n }\n\n /**\n * Adds provided value to the current line. Does not end the line.\n *\n * @param value\n * @returns\n */\n write(value: string | BasicBuilder<ContextType>): this {\n if (typeof value === 'string') {\n this.currentLine += value\n } else {\n value.write(this)\n }\n return this\n }\n\n /**\n * Adds several `values` to the current line, separated by `separator`. Both values and separator\n * can also be `Builder` instances for more advanced formatting.\n *\n * @param separator\n * @param values\n * @param writeItem allow to customize how individual item is written\n * @returns\n */\n writeJoined<T extends string | BasicBuilder<ContextType>>(\n separator: string | BasicBuilder<ContextType>,\n values: T[],\n writeItem: (item: T, writer: this) => void = (item, w) => w.write(item),\n ): this {\n const last = values.length - 1\n for (let i = 0; i < values.length; i++) {\n writeItem(values[i], this)\n if (i !== last) {\n this.write(separator)\n }\n }\n return this\n }\n\n /**\n * Adds a string to current line, flushes current line and starts a new line.\n * @param line\n * @returns\n */\n writeLine(line: string | BasicBuilder<ContextType>): this {\n return this.write(line).newLine()\n }\n\n /**\n * Flushes current line and starts a new line. New line starts at previously configured indentation level\n * @returns\n */\n newLine(): this {\n this.lines.push(this.indentedCurrentLine())\n this.currentLine = ''\n this.marginSymbol = undefined\n\n const afterNextNewLineCallback = this.afterNextNewLineCallback\n this.afterNextNewLineCallback = undefined\n afterNextNewLineCallback?.()\n return this\n }\n\n /**\n * Increases indentation level by 1, calls provided callback and then decreases indentation again.\n * Could be used for writing indented blocks of text:\n *\n * @example\n * ```ts\n * writer\n * .writeLine('{')\n * .withIndent(() => {\n * writer.writeLine('foo: 123');\n * writer.writeLine('bar: 456');\n * })\n * .writeLine('}')\n * ```\n * @param callback\n * @returns\n */\n withIndent(callback: (writer: this) => void): this {\n this.indent()\n callback(this)\n this.unindent()\n return this\n }\n\n /**\n * Calls provided callback next time when new line is started.\n * Callback is called after old line have already been flushed and a new\n * line have been started. Can be used for adding \"between the lines\" decorations,\n * such as underlines.\n *\n * @param callback\n * @returns\n */\n afterNextNewline(callback: () => void) {\n this.afterNextNewLineCallback = callback\n return this\n }\n\n /**\n * Increases indentation level of the current line by 1\n * @returns\n */\n indent(): this {\n this.currentIndent++\n return this\n }\n\n /**\n * Decreases indentation level of the current line by 1, if it is possible\n * @returns\n */\n unindent(): this {\n if (this.currentIndent > 0) {\n this.currentIndent--\n }\n return this\n }\n\n /**\n * Adds a symbol, that will replace the first character of the current line (including indentation)\n * when it is flushed. Can be used for adding markers to the line.\n *\n * Note: if indentation level of the line is 0, it will replace the first actually printed character\n * of the line. Use with caution.\n * @param symbol\n * @returns\n */\n addMarginSymbol(symbol: string): this {\n this.marginSymbol = symbol\n return this\n }\n\n toString() {\n return this.lines.concat(this.indentedCurrentLine()).join('\\n')\n }\n\n getCurrentLineLength() {\n return this.currentLine.length\n }\n\n private indentedCurrentLine(): string {\n const line = this.currentLine.padStart(this.currentLine.length + INDENT_SIZE * this.currentIndent)\n if (this.marginSymbol) {\n return this.marginSymbol + line.slice(1)\n }\n return line\n }\n}\n", "import { INDENT_SIZE } from '@prisma/ts-builders'\n\nimport { ArrayField } from './ArrayField'\nimport { ErrorWriter, fieldsSeparator } from './base'\nimport { FormattedString } from './FormattedString'\nimport { Value } from './Value'\n\nexport class ArrayValue extends Value {\n private items: ArrayField[] = []\n\n addItem(item: Value): this {\n this.items.push(new ArrayField(item))\n return this\n }\n\n getField(index: number): ArrayField | undefined {\n return this.items[index]\n }\n\n override getPrintWidth(): number {\n if (this.items.length === 0) {\n return 2\n }\n const maxItemWidth = Math.max(...this.items.map((item) => item.value.getPrintWidth()))\n return maxItemWidth + INDENT_SIZE\n }\n\n override write(writer: ErrorWriter): void {\n if (this.items.length === 0) {\n this.writeEmpty(writer)\n return\n }\n this.writeWithItems(writer)\n }\n\n private writeEmpty(writer: ErrorWriter) {\n const output = new FormattedString('[]')\n if (this.hasError) {\n output.setColor(writer.context.colors.red).underline()\n }\n writer.write(output)\n }\n\n private writeWithItems(writer: ErrorWriter) {\n const { colors } = writer.context\n\n writer\n .writeLine('[')\n .withIndent(() => writer.writeJoined(fieldsSeparator, this.items).newLine())\n .write(']')\n\n if (this.hasError) {\n writer.afterNextNewline(() => {\n writer.writeLine(colors.red('~'.repeat(this.getPrintWidth())))\n })\n }\n }\n\n override asObject(): undefined {\n return undefined\n }\n}\n", "import { ErrorBasicBuilder, ErrorWriter } from './base'\nimport { Field } from './Field'\nimport { Value } from './Value'\n\nexport class ArrayField implements ErrorBasicBuilder, Field {\n constructor(public value: Value) {}\n write(writer: ErrorWriter): void {\n writer.write(this.value)\n }\n\n markAsError(): void {\n this.value.markAsError()\n }\n}\n", "import { BasicBuilder, Writer } from '@prisma/ts-builders'\nimport { bold, dim, green, red } from 'kleur/colors'\n\ntype ColorFn = (str: string) => string\nexport type Colors = {\n bold: ColorFn\n red: ColorFn\n green: ColorFn\n dim: ColorFn\n // if false, all color functions are useless\n readonly enabled: boolean\n}\n\nconst noop = (str: string) => str\n\nexport const inactiveColors: Colors = {\n bold: noop,\n red: noop,\n green: noop,\n dim: noop,\n enabled: false,\n}\n\nexport const activeColors: Colors = {\n bold,\n red,\n green,\n dim,\n enabled: true,\n}\n\nexport type ErrorRenderContext = {\n colors: Colors\n}\n\nexport type ErrorWriter = Writer<ErrorRenderContext>\nexport type ErrorBasicBuilder = BasicBuilder<ErrorRenderContext>\n\nexport const fieldsSeparator: ErrorBasicBuilder = {\n write(writer) {\n writer.writeLine(',')\n },\n}\n", "import { ErrorBasicBuilder, ErrorWriter } from './base'\n\nexport type ColorFn = (str: string) => string\n\nexport class FormattedString implements ErrorBasicBuilder {\n private isUnderlined = false\n private color: ColorFn = (str) => str\n constructor(public contents: string) {}\n\n underline(): this {\n this.isUnderlined = true\n return this\n }\n\n setColor(color: ColorFn): this {\n this.color = color\n return this\n }\n\n write(writer: ErrorWriter): void {\n const paddingSize = writer.getCurrentLineLength()\n writer.write(this.color(this.contents))\n if (this.isUnderlined) {\n writer.afterNextNewline(() => {\n writer.write(' '.repeat(paddingSize)).writeLine(this.color('~'.repeat(this.contents.length)))\n })\n }\n }\n}\n", "import { ErrorBasicBuilder, ErrorWriter } from './base'\nimport { ObjectValue } from './ObjectValue'\n\nexport abstract class Value implements ErrorBasicBuilder {\n abstract write(writer: ErrorWriter): void\n\n /**\n * Returns total width the value when it is rendered. Used\n * for determining underline width.\n */\n abstract getPrintWidth(): number\n\n public hasError = false\n\n markAsError(): this {\n this.hasError = true\n return this\n }\n\n abstract asObject(): ObjectValue | undefined\n}\n", "import { ErrorWriter } from './base'\nimport { FormattedString } from './FormattedString'\nimport { Value } from './Value'\n\nexport class ScalarValue extends Value {\n constructor(readonly text: string) {\n super()\n }\n\n override getPrintWidth(): number {\n return this.text.length\n }\n\n override write(writer: ErrorWriter): void {\n const string = new FormattedString(this.text)\n if (this.hasError) {\n string.underline().setColor(writer.context.colors.red)\n }\n writer.write(string)\n }\n\n override asObject(): undefined {\n return undefined\n }\n}\n", "import { ErrorBasicBuilder, ErrorWriter, fieldsSeparator } from './base'\n\nexport class SuggestionObjectValue implements ErrorBasicBuilder {\n private fields: ErrorBasicBuilder[] = []\n\n addField(name: string, value: string) {\n this.fields.push({\n write(writer) {\n const { green, dim } = writer.context.colors\n writer.write(green(dim(`${name}: ${value}`))).addMarginSymbol(green(dim('+')))\n },\n })\n return this\n }\n\n write(writer: ErrorWriter): void {\n const {\n colors: { green },\n } = writer.context\n writer\n .writeLine(green('{'))\n .withIndent(() => {\n writer.writeJoined(fieldsSeparator, this.fields).newLine()\n })\n .write(green('}'))\n .addMarginSymbol(green('+'))\n }\n}\n", "import { uncapitalize } from '@prisma/client-common'\nimport { Writer } from '@prisma/ts-builders'\n\nimport { ErrorFormat } from '../../getPrismaClient'\nimport { isValidDate } from '../../utils/date'\nimport { isDecimalJsLike } from '../../utils/decimalJsLike'\nimport { isFieldRef } from '../model/FieldRef'\nimport { ObjectEnumValue } from '../types/exported/ObjectEnums'\nimport { ArrayValue } from './ArrayValue'\nimport { activeColors, Colors, ErrorBasicBuilder, ErrorWriter, inactiveColors } from './base'\nimport { ObjectField } from './ObjectField'\nimport { ObjectValue } from './ObjectValue'\nimport { ScalarValue } from './ScalarValue'\n\ntype MessageRender = (colors: Colors) => string\n\nexport class ArgumentsRenderingTree implements ErrorBasicBuilder {\n readonly arguments: ObjectValue\n private errorMessages: MessageRender[] = []\n\n constructor(args: ObjectValue) {\n this.arguments = args\n }\n\n write(writer: ErrorWriter): void {\n writer.write(this.arguments)\n }\n\n addErrorMessage(renderer: MessageRender) {\n this.errorMessages.push(renderer)\n }\n\n renderAllMessages(colors: Colors): string {\n return this.errorMessages.map((messageRenderer) => messageRenderer(colors)).join('\\n')\n }\n}\n\n/**\n * Given JS call arguments, produces rendering tree for outputting rich errors into the console\n * Difference between rendering tree and plain object is that fields and values can have different attributes:\n * colors, underlines, markers on the margins. `applyValidationError` function will then apply specific formatting\n * to the rendering tree.\n *\n * @param args\n * @returns\n */\nexport function buildArgumentsRenderingTree(args: Record<PropertyKey, unknown>): ArgumentsRenderingTree {\n return new ArgumentsRenderingTree(buildInputObject(args))\n}\n\nfunction buildInputObject(inputObject: Record<PropertyKey, unknown>) {\n const object = new ObjectValue()\n\n for (const [key, value] of Object.entries(inputObject)) {\n const field = new ObjectField(key, buildInputValue(value))\n object.addField(field)\n }\n return object\n}\n\nfunction buildInputValue(value: unknown) {\n if (typeof value === 'string') {\n return new ScalarValue(JSON.stringify(value))\n }\n\n if (typeof value === 'number' || typeof value === 'boolean') {\n return new ScalarValue(String(value))\n }\n\n if (typeof value === 'bigint') {\n return new ScalarValue(`${value}n`)\n }\n\n if (value === null) {\n return new ScalarValue('null')\n }\n\n if (value === undefined) {\n return new ScalarValue('undefined')\n }\n\n if (isDecimalJsLike(value)) {\n return new ScalarValue(`new Prisma.Decimal(\"${value.toFixed()}\")`)\n }\n\n if (value instanceof Uint8Array) {\n if (Buffer.isBuffer(value)) {\n return new ScalarValue(`Buffer.alloc(${value.byteLength})`)\n }\n return new ScalarValue(`new Uint8Array(${value.byteLength})`)\n }\n\n if (value instanceof Date) {\n const dateStr = isValidDate(value) ? value.toISOString() : 'Invalid Date'\n return new ScalarValue(`new Date(\"${dateStr}\")`)\n }\n\n if (value instanceof ObjectEnumValue) {\n return new ScalarValue(`Prisma.${value._getName()}`)\n }\n\n if (isFieldRef(value)) {\n return new ScalarValue(`prisma.${uncapitalize(value.modelName)}.$fields.${value.name}`)\n }\n\n if (Array.isArray(value)) {\n return buildInputArray(value)\n }\n\n if (typeof value === 'object') {\n return buildInputObject(value as Record<PropertyKey, unknown>)\n }\n\n return new ScalarValue(Object.prototype.toString.call(value))\n}\n\nfunction buildInputArray(array: unknown[]) {\n const result = new ArrayValue()\n for (const item of array) {\n result.addItem(buildInputValue(item))\n }\n return result\n}\n\nexport function renderArgsTree(argsTree: ArgumentsRenderingTree, errorFormat: ErrorFormat) {\n const colors = errorFormat === 'pretty' ? activeColors : inactiveColors\n\n const message = argsTree.renderAllMessages(colors)\n const args = new Writer(0, { colors }).write(argsTree).toString()\n\n return { message, args }\n}\n", "import { FieldRef } from '../types/exported/FieldRef'\n\nexport class FieldRefImpl<Model, FieldType> implements FieldRef<Model, FieldType> {\n public readonly modelName: Model\n public readonly name: string\n public readonly typeName: FieldType\n public readonly isList: boolean\n public readonly isEnum: boolean\n\n constructor(modelName: Model, name: string, fieldType: FieldType, isList: boolean, isEnum: boolean) {\n this.modelName = modelName\n this.name = name\n this.typeName = fieldType\n this.isList = isList\n this.isEnum = isEnum\n }\n\n _toGraphQLInputType() {\n const listPrefix = this.isList ? `List` : ''\n const enumPrefix = this.isEnum ? 'Enum' : ''\n\n return `${listPrefix}${enumPrefix}${this.typeName}FieldRefInput<${this.modelName}>`\n }\n}\n\nexport function isFieldRef(value: unknown): value is FieldRef<string, unknown> {\n return value instanceof FieldRefImpl\n}\n", "/**\n * Module-private symbol used to distinguish between instances of\n * `ObjectEnumValue` created inside and outside this module.\n */\nconst secret = Symbol()\n\n/**\n * Emulate a private property via a WeakMap manually. Using native private\n * properties is a breaking change for downstream users with minimal TypeScript\n * configs, because TypeScript uses ES3 as the default target.\n *\n * TODO: replace this with a `#representation` private property in the\n * `ObjectEnumValue` class and document minimal required `target` for TypeScript.\n */\nconst representations = new WeakMap<ObjectEnumValue, string>()\n\n/**\n * Base class for unique values of object-valued enums.\n */\nexport abstract class ObjectEnumValue {\n constructor(arg?: symbol) {\n if (arg === secret) {\n representations.set(this, `Prisma.${this._getName()}`)\n } else {\n representations.set(this, `new Prisma.${this._getNamespace()}.${this._getName()}()`)\n }\n }\n\n abstract _getNamespace(): string\n\n _getName() {\n return this.constructor.name\n }\n\n toString() {\n return representations.get(this)!\n }\n}\n\nclass NullTypesEnumValue extends ObjectEnumValue {\n override _getNamespace() {\n return 'NullTypes'\n }\n}\n\nclass DbNull extends NullTypesEnumValue {\n // Phantom private property to prevent structural type equality\n // eslint-disable-next-line no-unused-private-class-members\n readonly #_brand_DbNull!: void\n}\nsetClassName(DbNull, 'DbNull')\n\nclass JsonNull extends NullTypesEnumValue {\n // Phantom private property to prevent structural type equality\n // eslint-disable-next-line no-unused-private-class-members\n readonly #_brand_JsonNull!: void\n}\nsetClassName(JsonNull, 'JsonNull')\n\nclass AnyNull extends NullTypesEnumValue {\n // Phantom private property to prevent structural type equality\n // eslint-disable-next-line no-unused-private-class-members\n readonly #_brand_AnyNull!: void\n}\nsetClassName(AnyNull, 'AnyNull')\n\nexport const objectEnumValues = {\n classes: {\n DbNull,\n JsonNull,\n AnyNull,\n },\n instances: {\n DbNull: new DbNull(secret),\n JsonNull: new JsonNull(secret),\n AnyNull: new AnyNull(secret),\n },\n}\n\n/**\n * See helper in @internals package. Can not be used here\n * because importing internal breaks browser build.\n *\n * @param classObject\n * @param name\n */\nfunction setClassName(classObject: Function, name: string) {\n Object.defineProperty(classObject, 'name', {\n value: name,\n configurable: true,\n })\n}\n", "import { ErrorBasicBuilder, ErrorWriter } from './base'\nimport { Field } from './Field'\nimport { FormattedString } from './FormattedString'\nimport { Value } from './Value'\n\nconst separator = ': '\nexport class ObjectField implements ErrorBasicBuilder, Field {\n hasError = false\n constructor(\n readonly name: string,\n public value: Value,\n ) {}\n\n markAsError() {\n this.hasError = true\n }\n\n getPrintWidth() {\n return this.name.length + this.value.getPrintWidth() + separator.length\n }\n\n write(writer: ErrorWriter): void {\n const name = new FormattedString(this.name)\n if (this.hasError) {\n name.underline().setColor(writer.context.colors.red)\n }\n writer.write(name).write(separator).write(this.value)\n }\n}\n", "import { Cache, lazyProperty } from '@prisma/client-common'\n\nimport { dmmfToJSModelName } from '../model/utils/dmmfToJSModelName'\nimport { ClientArg, ExtensionArgs, ModelArg, QueryOptionsCb } from '../types/exported/ExtensionArgs'\nimport { BatchQueryOptionsCb, QueryOptionsPrivate } from '../types/internal/ExtensionsInternalArgs'\nimport { ComputedFieldsMap, getComputedFields } from './resultUtils'\n\nclass MergedExtensionsListNode {\n private computedFieldsCache = new Cache<string, ComputedFieldsMap | undefined>()\n private modelExtensionsCache = new Cache<string, ModelArg | undefined>()\n private queryCallbacksCache = new Cache<string, QueryOptionsCb[]>()\n\n private clientExtensions = lazyProperty(() => {\n if (!this.extension.client) {\n return this.previous?.getAllClientExtensions()\n }\n\n return {\n ...this.previous?.getAllClientExtensions(),\n ...this.extension.client,\n }\n })\n\n private batchCallbacks = lazyProperty(() => {\n const previous: BatchQueryOptionsCb[] = this.previous?.getAllBatchQueryCallbacks() ?? []\n const newCb = (this.extension as QueryOptionsPrivate).query?.$__internalBatch\n if (!newCb) {\n return previous\n }\n return previous.concat(newCb)\n })\n\n constructor(\n public extension: ExtensionArgs,\n public previous?: MergedExtensionsListNode,\n ) {}\n\n getAllComputedFields(dmmfModelName: string): ComputedFieldsMap | undefined {\n return this.computedFieldsCache.getOrCreate(dmmfModelName, () => {\n return getComputedFields(this.previous?.getAllComputedFields(dmmfModelName), this.extension, dmmfModelName)\n })\n }\n\n getAllClientExtensions(): ClientArg | undefined {\n return this.clientExtensions.get()\n }\n\n getAllModelExtensions(dmmfModelName: string): ModelArg | undefined {\n return this.modelExtensionsCache.getOrCreate(dmmfModelName, () => {\n const jsModelName = dmmfToJSModelName(dmmfModelName)\n if (!this.extension.model || !(this.extension.model[jsModelName] || this.extension.model.$allModels)) {\n return this.previous?.getAllModelExtensions(dmmfModelName)\n }\n\n return {\n ...this.previous?.getAllModelExtensions(dmmfModelName),\n ...this.extension.model.$allModels,\n ...this.extension.model[jsModelName],\n }\n })\n }\n\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n getAllQueryCallbacks(jsModelName: string | '$none', operation: string) {\n return this.queryCallbacksCache.getOrCreate(`${jsModelName}:${operation}`, () => {\n const prevCbs = this.previous?.getAllQueryCallbacks(jsModelName, operation) ?? []\n const newCbs: QueryOptionsCb[] = []\n const query = this.extension.query\n\n if (!query || !(query[jsModelName] || query['$allModels'] || query[operation] || query['$allOperations'])) {\n return prevCbs\n }\n\n if (query[jsModelName] !== undefined) {\n if (query[jsModelName][operation] !== undefined) {\n newCbs.push(query[jsModelName][operation])\n }\n\n // when the model-bound extension has a wildcard for the operation\n if (query[jsModelName]['$allOperations'] !== undefined) {\n newCbs.push(query[jsModelName]['$allOperations'])\n }\n }\n\n // when the extension isn't model-bound, apply it to all models\n // '$none' is a special case for top-level operations without model\n if (jsModelName !== '$none' && query['$allModels'] !== undefined) {\n if (query['$allModels'][operation] !== undefined) {\n newCbs.push(query['$allModels'][operation])\n }\n\n // when the non-model-bound extension has a wildcard for the operation\n if (query['$allModels']['$allOperations'] !== undefined) {\n newCbs.push(query['$allModels']['$allOperations'])\n }\n }\n\n // when the extension is not bound to a model & is a top-level operation\n if (query[operation] !== undefined) {\n newCbs.push(query[operation] as QueryOptionsCb)\n }\n\n // when the extension is not bound to a model & is any top-level operation\n if (query['$allOperations'] !== undefined) {\n newCbs.push(query['$allOperations'] as QueryOptionsCb)\n }\n\n return prevCbs.concat(newCbs)\n })\n }\n\n getAllBatchQueryCallbacks() {\n return this.batchCallbacks.get()\n }\n}\n\n/**\n * Class that holds the list of all extensions, applied to particular instance,\n * as well as resolved versions of the components that need to apply on\n * different levels. Main idea of this class: avoid re-resolving as much of the\n * stuff as possible when new extensions are added while also delaying the\n * resolve until the point it is actually needed. For example, computed fields\n * of the model won't be resolved unless the model is actually queried. Neither\n * adding extensions with `client` component only cause other components to\n * recompute.\n */\nexport class MergedExtensionsList {\n private constructor(private head?: MergedExtensionsListNode) {}\n\n static empty() {\n return new MergedExtensionsList()\n }\n\n static single(extension: ExtensionArgs) {\n return new MergedExtensionsList(new MergedExtensionsListNode(extension))\n }\n\n isEmpty(): boolean {\n return this.head === undefined\n }\n\n append(extension: ExtensionArgs) {\n return new MergedExtensionsList(new MergedExtensionsListNode(extension, this.head))\n }\n\n getAllComputedFields(dmmfModelName: string): ComputedFieldsMap | undefined {\n return this.head?.getAllComputedFields(dmmfModelName)\n }\n\n getAllClientExtensions() {\n return this.head?.getAllClientExtensions()\n }\n\n getAllModelExtensions(dmmfModelName: string) {\n return this.head?.getAllModelExtensions(dmmfModelName)\n }\n\n getAllQueryCallbacks(jsModelName: string, operation: string) {\n return this.head?.getAllQueryCallbacks(jsModelName, operation) ?? []\n }\n\n getAllBatchQueryCallbacks() {\n return this.head?.getAllBatchQueryCallbacks() ?? []\n }\n}\n", "/**\n * Transforms a model name coming from the DMMF to a runtime model name.\n * @param name\n * @returns\n */\nexport function dmmfToJSModelName(name: string) {\n return name.replace(/^./, (str) => str.toLowerCase())\n}\n", "import { Cache } from '@prisma/client-common'\nimport { mapObjectValues } from '@prisma/internals'\n\nimport { dmmfToJSModelName } from '../model/utils/dmmfToJSModelName'\nimport { ExtensionArgs, ResultArg, ResultArgsFieldCompute } from '../types/exported/ExtensionArgs'\nimport { Omission, Selection } from '../types/exported/JsApi'\n\nexport type ComputedField = {\n name: string\n needs: string[]\n compute: ResultArgsFieldCompute\n}\n\nexport type ComputedFieldsMap = {\n [fieldName: string]: ComputedField\n}\n\n/**\n * Given the list of previously resolved computed fields, new extension and dmmf model name, produces a map\n * of all computed fields that may be applied to this model, accounting for all previous and past extensions.\n *\n * All naming conflicts which could be produced by the plain list of extensions are resolved as follows:\n * - extension, that declared later always wins\n * - in a single extension, specific model takes precedence over $allModels\n *\n * Additionally, resolves all `needs` dependencies down to the model fields. For example,\n * if `nameAndTitle` field depends on `fullName` computed field and `title` model field and\n * `fullName` field depends on `firstName` and `lastName` field, full list of `nameAndTitle` dependencies\n * would be `firstName`, `lastName`, `title`.\n * @param previousComputedFields\n * @param extension\n * @param dmmfModelName\n * @returns\n */\nexport function getComputedFields(\n previousComputedFields: ComputedFieldsMap | undefined,\n extension: ExtensionArgs,\n dmmfModelName: string,\n) {\n const jsName = dmmfToJSModelName(dmmfModelName)\n if (!extension.result || !(extension.result.$allModels || extension.result[jsName])) {\n return previousComputedFields\n }\n\n return resolveDependencies({\n ...previousComputedFields,\n ...getComputedFieldsFromModel(extension.name, previousComputedFields, extension.result.$allModels),\n ...getComputedFieldsFromModel(extension.name, previousComputedFields, extension.result[jsName]),\n })\n}\n\nexport function resolveDependencies(computedFields: ComputedFieldsMap): ComputedFieldsMap {\n const cache = new Cache<string, string[]>()\n const resolveNeeds = (fieldName: string, visitedFields: Set<string>) => {\n return cache.getOrCreate(fieldName, () => {\n if (visitedFields.has(fieldName)) {\n return [fieldName]\n }\n visitedFields.add(fieldName)\n if (!computedFields[fieldName]) {\n return [fieldName]\n }\n return computedFields[fieldName].needs.flatMap((fieldDep) => resolveNeeds(fieldDep, visitedFields))\n })\n }\n\n return mapObjectValues(computedFields, (field) => {\n return {\n ...field,\n needs: resolveNeeds(field.name, new Set()),\n }\n })\n}\n\nfunction getComputedFieldsFromModel(\n name: string | undefined,\n previousComputedFields: ComputedFieldsMap | undefined,\n modelResult: ResultArg | undefined,\n): ComputedFieldsMap {\n if (!modelResult) {\n return {}\n }\n\n return mapObjectValues(modelResult, ({ needs, compute }, fieldName) => ({\n name: fieldName,\n needs: needs ? Object.keys(needs).filter((key) => needs[key]) : [],\n compute: composeCompute(previousComputedFields, fieldName, compute),\n }))\n}\n\nfunction composeCompute(\n previousComputedFields: ComputedFieldsMap | undefined,\n fieldName: string,\n nextCompute: ResultArgsFieldCompute,\n): ResultArgsFieldCompute {\n const previousCompute = previousComputedFields?.[fieldName]?.compute\n if (!previousCompute) {\n return nextCompute\n }\n return (model) => {\n return nextCompute({ ...model, [fieldName]: previousCompute(model) })\n }\n}\n\nexport function computeEngineSideSelection(\n selection: Selection,\n computedFields: ComputedFieldsMap | undefined,\n): Selection {\n if (!computedFields) {\n return selection\n }\n const result = { ...selection }\n\n for (const field of Object.values(computedFields)) {\n if (!selection[field.name]) {\n continue\n }\n\n for (const dependency of field.needs) {\n result[dependency] = true\n }\n }\n return result\n}\n\n/**\n * Given user-supplied omissions, computes the results to send to the engine, taking\n * into account dependencies of the computed field. Consider following example:\n *\n * ```\n * const xprisma = prisma.$extends({\n * result: {\n * user: {\n * sanitizedPassword: {\n * needs: { password: true },\n * compute(user) {\n * return sanitze(user.password)\n * },\n * },\n * },\n * },\n * })\n *\n * const user = await xprisma.user.findFirstOrThrow({\n * omit: {\n * password: true,\n * },\n * })\n * ```\n *\n * In that case, user wants to omit the `password` but not `sanitizedPassword`.\n * Since `sanitizedPassword` can not be computed without `password`, we can not let\n * the engine handle omission in this case - we have to still query `password` from the\n * database and omit it on the client, after computing `sanitizedPassword`.\n *\n * This function removes the omission (thus, including the field into result set) if it is a dependency of\n * a non-omitted computed field. Client-side omission after we get a response is handled by `applyResultExtensions`\n *\n * @param omission\n * @param computedFields\n * @returns\n */\nexport function computeEngineSideOmissions(\n omission: Omission,\n computedFields: ComputedFieldsMap | undefined,\n): Omission {\n if (!computedFields) {\n return omission\n }\n const result = { ...omission }\n\n for (const field of Object.values(computedFields)) {\n if (omission[field.name]) {\n continue\n }\n\n for (const dependency of field.needs) {\n delete result[dependency]\n }\n }\n return result\n}\n", "import { Param } from '../types/exported/Param'\n\nexport class ParamImpl<Type, Name extends string> implements Param<Type, Name> {\n constructor(public readonly name: Name) {}\n}\n\nexport function isParam(value: unknown): value is Param<unknown, string> {\n return value instanceof ParamImpl\n}\n\nexport function createParam(name: string): Param<unknown, string> {\n return new ParamImpl(name)\n}\n", "import * as Extensions from './exported/Extensions'\nimport { OperationPayload } from './exported/Payload'\nimport * as Public from './exported/Public'\nimport * as Result from './exported/Result'\nimport * as Utils from './exported/Utils'\n\n/** Specific types */\nexport { Result }\nexport { Extensions }\nexport { Utils }\nexport { Public }\n\nexport { isSkip, Skip, skip } from './exported/Skip'\nexport { type UnknownTypedSql } from './exported/TypedSql'\n\n/** General types */\nexport { type OperationPayload as Payload }\n", "// private symbol that prevents direct construction of a class\nconst secret = Symbol()\n\nexport class Skip {\n constructor(param?: symbol) {\n if (param !== secret) {\n throw new Error(`Skip instance can not be constructed directly`)\n }\n }\n\n ifUndefined<T>(value: T | undefined): T | Skip {\n if (value === undefined) {\n return skip\n }\n return value\n }\n}\n\nexport const skip = new Skip(secret)\n\nexport function isSkip(value: unknown): value is Skip {\n return value instanceof Skip\n}\n", "import { Client } from '../../getPrismaClient'\nimport type { Metric, MetricHistogram, MetricHistogramBucket, Metrics } from '../engines'\nimport { PrismaClientValidationError } from '../errors/PrismaClientValidationError'\n\nexport type MetricsOptions = {\n /**\n * Labels to add to every metrics in key-value format\n */\n globalLabels?: Record<string, string>\n}\n\nfunction checkPreviewFeatureFlag(client: Client) {\n if (!client._hasPreviewFlag('metrics')) {\n throw new PrismaClientValidationError('`metrics` preview feature must be enabled in order to access metrics API', {\n clientVersion: client._clientVersion,\n })\n }\n}\n\nexport class MetricsClient {\n private _client: Client\n\n constructor(client: Client) {\n this._client = client\n }\n\n /**\n * Returns all metrics gathered up to this point in prometheus format.\n * Result of this call can be exposed directly to prometheus scraping endpoint\n *\n * @param options\n * @returns\n */\n prometheus(options?: MetricsOptions): Promise<string> {\n checkPreviewFeatureFlag(this._client)\n\n return this._client._engine.metrics({ format: 'prometheus', ...options })\n }\n\n /**\n * Returns all metrics gathered up to this point in prometheus format.\n *\n * @param options\n * @returns\n */\n json(options?: MetricsOptions): Promise<Metrics> {\n checkPreviewFeatureFlag(this._client)\n\n return this._client._engine.metrics({ format: 'json', ...options })\n }\n}\n\nexport type { Metric, MetricHistogram, MetricHistogramBucket, Metrics }\n", "import { BaseDMMF, lazyProperty, RuntimeDataModel } from '@prisma/client-common'\n\nexport function defineDmmfProperty(target: object, runtimeDataModel: RuntimeDataModel) {\n const dmmfLazy = lazyProperty(() => runtimeDataModelToBaseDmmf(runtimeDataModel))\n\n Object.defineProperty(target, 'dmmf', {\n get: () => dmmfLazy.get(),\n })\n}\n\nfunction runtimeDataModelToBaseDmmf(runtimeDataModel: RuntimeDataModel): BaseDMMF {\n if (TARGET_BUILD_TYPE === 'wasm-engine-edge' || TARGET_BUILD_TYPE === 'wasm-compiler-edge') {\n throw new Error('Prisma.dmmf is not available when running in edge runtimes.')\n }\n\n return {\n datamodel: {\n models: buildDMMFList(runtimeDataModel.models),\n enums: buildDMMFList(runtimeDataModel.enums),\n types: buildDMMFList(runtimeDataModel.types),\n },\n }\n}\n\nfunction buildDMMFList<T>(map: Record<string, T>): Array<T & { name: string }> {\n return Object.entries(map).map(([name, props]) => ({ name, ...props }))\n}\n", "type TypedSqlInternal = {\n sql: string\n values: readonly unknown[]\n}\n\nconst internals = new WeakMap<TypedSql<any, any>, TypedSqlInternal>()\nconst TypedSqlMarker = '$$PrismaTypedSql'\n\nexport declare const PrivateResultType: unique symbol\n\nexport class TypedSql<Values extends readonly unknown[], Result> {\n declare [PrivateResultType]: Result\n\n constructor(sql: string, values: Values) {\n internals.set(this, {\n sql,\n values,\n })\n\n Object.defineProperty(this, TypedSqlMarker, { value: TypedSqlMarker })\n }\n\n get sql(): string {\n return internals.get(this)!.sql\n }\n\n get values(): Values {\n return internals.get(this)!.values as Values\n }\n}\n\nexport type UnknownTypedSql = TypedSql<unknown[], unknown>\n\nexport function makeTypedQueryFactory(sql: string) {\n return (...values) => new TypedSql(sql, values)\n}\n\n// used so we could detect typed sql instances, created by different instance of runtime\n// or after hmr trigger\nexport function isTypedSql(value: unknown): value is UnknownTypedSql {\n return value != null && value[TypedSqlMarker] === TypedSqlMarker\n}\n", "import type { Context } from '@opentelemetry/api'\nimport { GetPrismaClientConfig, RuntimeDataModel } from '@prisma/client-common'\nimport { clearLogs, Debug } from '@prisma/debug'\nimport type { SqlDriverAdapterFactory } from '@prisma/driver-adapter-utils'\nimport { version as enginesVersion } from '@prisma/engines-version/package.json'\nimport { ExtendedSpanOptions, logger, TracingHelper, tryLoadEnvs } from '@prisma/internals'\nimport { AsyncResource } from 'async_hooks'\nimport { EventEmitter } from 'events'\nimport fs from 'fs'\nimport path from 'path'\nimport { RawValue, Sql } from 'sql-template-tag'\n\nimport {\n PrismaClientInitializationError,\n PrismaClientKnownRequestError,\n PrismaClientUnknownRequestError,\n PrismaClientValidationError,\n} from '.'\nimport { addProperty, createCompositeProxy, removeProperties } from './core/compositeProxy'\nimport { BatchTransactionOptions, Engine, EngineConfig, Options } from './core/engines'\nimport { AccelerateEngineConfig } from './core/engines/accelerate/AccelerateEngine'\nimport { AccelerateExtensionFetchDecorator } from './core/engines/common/Engine'\nimport { EngineEvent, LogEmitter } from './core/engines/common/types/Events'\nimport type * as Transaction from './core/engines/common/types/Transaction'\nimport { getBatchRequestPayload } from './core/engines/common/utils/getBatchRequestPayload'\nimport { prettyPrintArguments } from './core/errorRendering/prettyPrintArguments'\nimport { prismaGraphQLToJSError } from './core/errors/utils/prismaGraphQLToJSError'\nimport { $extends } from './core/extensions/$extends'\nimport { applyAllResultExtensions } from './core/extensions/applyAllResultExtensions'\nimport { applyQueryExtensions } from './core/extensions/applyQueryExtensions'\nimport { MergedExtensionsList } from './core/extensions/MergedExtensionsList'\nimport { checkPlatformCaching } from './core/init/checkPlatformCaching'\nimport { getDatasourceOverrides } from './core/init/getDatasourceOverrides'\nimport { getEngineInstance } from './core/init/getEngineInstance'\nimport { getPreviewFeatures } from './core/init/getPreviewFeatures'\nimport { resolveDatasourceUrl } from './core/init/resolveDatasourceUrl'\nimport { GlobalOmitOptions, serializeJsonQuery } from './core/jsonProtocol/serializeJsonQuery'\nimport { MetricsClient } from './core/metrics/MetricsClient'\nimport {\n applyModelsAndClientExtensions,\n unApplyModelsAndClientExtensions,\n} from './core/model/applyModelsAndClientExtensions'\nimport { rawCommandArgsMapper } from './core/raw-query/rawCommandArgsMapper'\nimport {\n checkAlter,\n rawQueryArgsMapper,\n sqlMiddlewareArgsMapper,\n templateStringMiddlewareArgsMapper,\n} from './core/raw-query/rawQueryArgsMapper'\nimport { createPrismaPromiseFactory } from './core/request/createPrismaPromise'\nimport {\n PrismaPromise,\n PrismaPromiseInteractiveTransaction,\n PrismaPromiseTransaction,\n} from './core/request/PrismaPromise'\nimport { UserArgs } from './core/request/UserArgs'\nimport { getTracingHelper } from './core/tracing/TracingHelper'\nimport { getLockCountPromise } from './core/transaction/utils/createLockCountPromise'\nimport { itxClientDenyList } from './core/types/exported/itxClientDenyList'\nimport { JsInputValue } from './core/types/exported/JsApi'\nimport { RawQueryArgs } from './core/types/exported/RawQueryArgs'\nimport { UnknownTypedSql } from './core/types/exported/TypedSql'\nimport { getLogLevel } from './getLogLevel'\nimport type { QueryMiddlewareParams } from './QueryMiddlewareParams'\nimport { RequestHandler } from './RequestHandler'\nimport { CallSite, getCallSite } from './utils/CallSite'\nimport { clientVersion } from './utils/clientVersion'\nimport { validatePrismaClientOptions } from './utils/validatePrismaClientOptions'\nimport { waitForBatch } from './utils/waitForBatch'\n\nconst debug = Debug('prisma:client')\n\ndeclare global {\n // eslint-disable-next-line no-var\n var NODE_CLIENT: true\n const TARGET_BUILD_TYPE:\n | 'binary'\n | 'library'\n | 'edge'\n | 'wasm-engine-edge'\n | 'wasm-compiler-edge'\n | 'react-native'\n | 'client'\n}\n\n// used by esbuild for tree-shaking\ntypeof globalThis === 'object' ? (globalThis.NODE_CLIENT = true) : 0\n\nexport type ErrorFormat = 'pretty' | 'colorless' | 'minimal'\n\nexport type Datasource = { url?: string }\nexport type Datasources = { [name in string]: Datasource }\n\nexport type PrismaClientOptions = {\n /**\n * Overwrites the primary datasource url from your schema.prisma file\n */\n datasourceUrl?: string\n /**\n * Instance of a Driver Adapter, e.g., like one provided by `@prisma/adapter-planetscale.\n */\n adapter?: SqlDriverAdapterFactory | null\n\n /**\n * Overwrites the datasource url from your schema.prisma file\n */\n datasources?: Datasources\n\n /**\n * @default \"colorless\"\n */\n errorFormat?: ErrorFormat\n\n /**\n * The default values for Transaction options\n * maxWait ?= 2000\n * timeout ?= 5000\n */\n transactionOptions?: Transaction.Options\n\n /**\n * @example\n * \\`\\`\\`\n * // Defaults to stdout\n * log: ['query', 'info', 'warn']\n *\n * // Emit as events\n * log: [\n * { emit: 'stdout', level: 'query' },\n * { emit: 'stdout', level: 'info' },\n * { emit: 'stdout', level: 'warn' }\n * ]\n * \\`\\`\\`\n * Read more in our [docs](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client/logging#the-log-option).\n */\n log?: Array<LogLevel | LogDefinition>\n\n omit?: GlobalOmitOptions\n\n /**\n * @internal\n * You probably don't want to use this. \\`__internal\\` is used by internal tooling.\n */\n __internal?: {\n debug?: boolean\n engine?: {\n cwd?: string\n binaryPath?: string\n endpoint?: string\n allowTriggerPanic?: boolean\n }\n /** This can be used for testing purposes */\n configOverride?: (config: GetPrismaClientConfig) => GetPrismaClientConfig\n }\n}\n\nexport type Unpacker = (data: any) => any\n\nexport type InternalRequestParams = {\n /**\n * The original client method being called.\n * Even though the rootField / operation can be changed,\n * this method stays as it is, as it's what the user's\n * code looks like\n */\n clientMethod: string // TODO what is this\n /**\n * Name of js model that triggered the request. Might be used\n * for warnings or error messages\n */\n jsModelName?: string\n // Extra headers for data proxy.\n callsite?: CallSite\n transaction?: PrismaPromiseTransaction\n unpacker?: Unpacker // TODO what is this\n otelParentCtx?: Context\n /** Used to \"desugar\" a user input into an \"expanded\" one */\n argsMapper?: (args?: UserArgs) => UserArgs\n\n /** Used to convert args for middleware and back */\n middlewareArgsMapper?: MiddlewareArgsMapper<unknown, unknown>\n /** Used for Accelerate client extension via Data Proxy */\n customDataProxyFetch?: AccelerateExtensionFetchDecorator\n} & Omit<QueryMiddlewareParams, 'runInTransaction'>\n\nexport type MiddlewareArgsMapper<RequestArgs, MiddlewareArgs> = {\n requestArgsToMiddlewareArgs(requestArgs: RequestArgs): MiddlewareArgs\n middlewareArgsToRequestArgs(middlewareArgs: MiddlewareArgs): RequestArgs\n}\n\nconst noopMiddlewareArgsMapper: MiddlewareArgsMapper<unknown, unknown> = {\n requestArgsToMiddlewareArgs: (param) => param,\n middlewareArgsToRequestArgs: (param) => param,\n}\n\n/* Types for Logging */\nexport type LogLevel = 'info' | 'query' | 'warn' | 'error'\nexport type LogDefinition = {\n level: LogLevel\n emit: 'stdout' | 'event'\n}\n\nexport type QueryEvent = {\n timestamp: Date\n query: string\n params: string\n duration: number\n target: string\n}\n\nexport type LogEvent = {\n timestamp: Date\n message: string\n target: string\n}\n/* End Types for Logging */\n\ntype ExtendedEventType = LogLevel | 'beforeExit'\ntype EventCallback<E extends ExtendedEventType> = [E] extends ['beforeExit']\n ? () => Promise<void>\n : [E] extends [LogLevel]\n ? (event: EngineEvent<E>) => void\n : never\n\nconst TX_ID = Symbol.for('prisma.client.transaction.id')\n\nconst BatchTxIdCounter = {\n id: 0,\n nextId() {\n return ++this.id\n },\n}\n\nexport type Client = ReturnType<typeof getPrismaClient> extends new () => infer T ? T : never\n\nexport function getPrismaClient(config: GetPrismaClientConfig) {\n class PrismaClient {\n _originalClient = this\n _runtimeDataModel: RuntimeDataModel\n _requestHandler: RequestHandler\n _connectionPromise?: Promise<any>\n _disconnectionPromise?: Promise<any>\n _engineConfig: EngineConfig\n _accelerateEngineConfig: AccelerateEngineConfig\n _clientVersion: string\n _errorFormat: ErrorFormat\n _tracingHelper: TracingHelper\n _previewFeatures: string[]\n _activeProvider: string\n _globalOmit?: GlobalOmitOptions\n _extensions: MergedExtensionsList\n /**\n * @remarks This is used internally by Policy, do not rename or remove\n */\n _engine: Engine\n /**\n * A fully constructed/applied Client that references the parent\n * PrismaClient. This is used for Client extensions only.\n */\n _appliedParent: PrismaClient\n _createPrismaPromise = createPrismaPromiseFactory()\n\n constructor(optionsArg?: PrismaClientOptions) {\n config = optionsArg?.__internal?.configOverride?.(config) ?? config\n\n checkPlatformCaching(config)\n\n if (optionsArg) {\n validatePrismaClientOptions(optionsArg, config)\n }\n\n // prevents unhandled error events when users do not explicitly listen to them\n const logEmitter = new EventEmitter().on('error', () => {}) as LogEmitter\n\n this._extensions = MergedExtensionsList.empty()\n this._previewFeatures = getPreviewFeatures(config)\n this._clientVersion = config.clientVersion ?? clientVersion\n this._activeProvider = config.activeProvider\n this._globalOmit = optionsArg?.omit\n this._tracingHelper = getTracingHelper()\n const envPaths = config.relativeEnvPaths && {\n rootEnvPath:\n config.relativeEnvPaths.rootEnvPath && path.resolve(config.dirname, config.relativeEnvPaths.rootEnvPath),\n schemaEnvPath:\n config.relativeEnvPaths.schemaEnvPath && path.resolve(config.dirname, config.relativeEnvPaths.schemaEnvPath),\n }\n\n /**\n * Initialise and validate the Driver Adapter, if provided.\n */\n\n let adapter: SqlDriverAdapterFactory | undefined\n if (optionsArg?.adapter) {\n adapter = optionsArg.adapter\n\n // Note:\n // - `getConfig(..).datasources[0].provider` can be `postgresql`, `postgres`, `mysql`, or other known providers\n // - `getConfig(..).datasources[0].activeProvider`, stored in `config.activeProvider`, can be `postgresql`, `mysql`, or other known providers\n // - `adapter.provider` can be `postgres`, `mysql`, or `sqlite`, and changing this requires changes to Rust as well,\n // see https://github.com/prisma/prisma-engines/blob/d116c37d7d27aee74fdd840fc85ab2b45407e5ce/query-engine/driver-adapters/src/types.rs#L22-L23.\n //\n // TODO: Normalize these provider names once and for all in Prisma 6.\n const expectedDriverAdapterProvider =\n config.activeProvider === 'postgresql'\n ? 'postgres'\n : // CockroachDB is only accessible through Postgres driver adapters\n config.activeProvider === 'cockroachdb'\n ? 'postgres'\n : config.activeProvider\n\n if (adapter.provider !== expectedDriverAdapterProvider) {\n throw new PrismaClientInitializationError(\n `The Driver Adapter \\`${adapter.adapterName}\\`, based on \\`${adapter.provider}\\`, is not compatible with the provider \\`${expectedDriverAdapterProvider}\\` specified in the Prisma schema.`,\n this._clientVersion,\n )\n }\n\n if (optionsArg.datasources || optionsArg.datasourceUrl !== undefined) {\n throw new PrismaClientInitializationError(\n `Custom datasource configuration is not compatible with Prisma Driver Adapters. Please define the database connection string directly in the Driver Adapter configuration.`,\n this._clientVersion,\n )\n }\n }\n\n const loadedEnv = // for node we load the env from files, for edge only via env injections\n (NODE_CLIENT && !adapter && envPaths && tryLoadEnvs(envPaths, { conflictCheck: 'none' })) ||\n config.injectableEdgeEnv?.()\n\n try {\n const options: PrismaClientOptions = optionsArg ?? {}\n const internal = options.__internal ?? {}\n\n const useDebug = internal.debug === true\n if (useDebug) {\n Debug.enable('prisma:client')\n }\n\n let cwd = path.resolve(config.dirname, config.relativePath)\n\n // TODO this logic should not be needed anymore #findSync\n if (!fs.existsSync(cwd)) {\n cwd = config.dirname\n }\n\n debug('dirname', config.dirname)\n debug('relativePath', config.relativePath)\n debug('cwd', cwd)\n\n const engineConfig = internal.engine || {}\n\n if (options.errorFormat) {\n this._errorFormat = options.errorFormat\n } else if (process.env.NODE_ENV === 'production') {\n this._errorFormat = 'minimal'\n } else if (process.env.NO_COLOR) {\n this._errorFormat = 'colorless'\n } else {\n this._errorFormat = 'colorless' // default errorFormat\n }\n\n this._runtimeDataModel = config.runtimeDataModel\n\n this._engineConfig = {\n cwd,\n dirname: config.dirname,\n enableDebugLogs: useDebug,\n allowTriggerPanic: engineConfig.allowTriggerPanic,\n prismaPath: engineConfig.binaryPath ?? undefined,\n engineEndpoint: engineConfig.endpoint,\n generator: config.generator,\n showColors: this._errorFormat === 'pretty',\n logLevel: options.log && (getLogLevel(options.log) as any), // TODO\n logQueries:\n options.log &&\n Boolean(\n typeof options.log === 'string'\n ? options.log === 'query'\n : options.log.find((o) => (typeof o === 'string' ? o === 'query' : o.level === 'query')),\n ),\n env: loadedEnv?.parsed ?? {},\n flags: [],\n engineWasm: config.engineWasm,\n compilerWasm: config.compilerWasm,\n clientVersion: config.clientVersion,\n engineVersion: config.engineVersion,\n previewFeatures: this._previewFeatures,\n activeProvider: config.activeProvider,\n inlineSchema: config.inlineSchema,\n overrideDatasources: getDatasourceOverrides(options, config.datasourceNames),\n inlineDatasources: config.inlineDatasources,\n inlineSchemaHash: config.inlineSchemaHash,\n tracingHelper: this._tracingHelper,\n transactionOptions: {\n maxWait: options.transactionOptions?.maxWait ?? 2000,\n timeout: options.transactionOptions?.timeout ?? 5000,\n isolationLevel: options.transactionOptions?.isolationLevel,\n },\n logEmitter,\n isBundled: config.isBundled,\n adapter,\n }\n\n this._accelerateEngineConfig = {\n ...this._engineConfig,\n // share runtime utils to accelerate\n accelerateUtils: {\n resolveDatasourceUrl,\n getBatchRequestPayload,\n prismaGraphQLToJSError,\n PrismaClientUnknownRequestError,\n PrismaClientInitializationError,\n PrismaClientKnownRequestError,\n debug: Debug('prisma:client:accelerateEngine'),\n engineVersion: enginesVersion,\n clientVersion: config.clientVersion,\n },\n }\n\n debug('clientVersion', config.clientVersion)\n\n this._engine = getEngineInstance(config, this._engineConfig)\n this._requestHandler = new RequestHandler(this, logEmitter)\n\n if (options.log) {\n for (const log of options.log) {\n const level = typeof log === 'string' ? log : log.emit === 'stdout' ? log.level : null\n if (level) {\n this.$on(level, (event) => {\n logger.log(`${logger.tags[level] ?? ''}`, (event as LogEvent).message || (event as QueryEvent).query)\n })\n }\n }\n }\n } catch (e: any) {\n e.clientVersion = this._clientVersion\n throw e\n }\n\n // the first client has no parent so it is its own parent client\n // this is used for extensions to reference their parent client\n return (this._appliedParent = applyModelsAndClientExtensions(this))\n // this applied client is also a custom constructor return value\n }\n\n get [Symbol.toStringTag]() {\n return 'PrismaClient'\n }\n\n $on<E extends ExtendedEventType>(eventType: E, callback: EventCallback<E>): PrismaClient {\n if (eventType === 'beforeExit') {\n this._engine.onBeforeExit(callback as EventCallback<'beforeExit'>)\n } else if (eventType) {\n this._engineConfig.logEmitter.on(eventType, callback as EventCallback<LogLevel>)\n }\n return this\n }\n\n $connect() {\n try {\n return this._engine.start()\n } catch (e: any) {\n e.clientVersion = this._clientVersion\n throw e\n }\n }\n\n /**\n * Disconnect from the database\n */\n async $disconnect() {\n try {\n await this._engine.stop()\n } catch (e: any) {\n e.clientVersion = this._clientVersion\n throw e\n } finally {\n // Debug module keeps a list of last 100 logs regardless of environment\n // variables. This can cause a memory leak. It's especially bad in jest\n // environment where keeping an error in this list prevents jest sandbox\n // from being GCed. Clearing logs on disconnect helps to avoid that\n clearLogs()\n }\n }\n\n /**\n * Executes a raw query and always returns a number\n */\n $executeRawInternal(\n transaction: PrismaPromiseTransaction | undefined,\n clientMethod: string,\n args: RawQueryArgs,\n middlewareArgsMapper?: MiddlewareArgsMapper<unknown, unknown>,\n ): Promise<number> {\n const activeProvider = this._activeProvider\n\n return this._request({\n action: 'executeRaw',\n args,\n transaction,\n clientMethod,\n argsMapper: rawQueryArgsMapper({ clientMethod, activeProvider }),\n callsite: getCallSite(this._errorFormat),\n dataPath: [],\n middlewareArgsMapper,\n })\n }\n\n /**\n * Executes a raw query provided through a safe tag function\n * @see https://github.com/prisma/prisma/issues/7142\n *\n * @param query\n * @param values\n * @returns\n */\n $executeRaw(query: TemplateStringsArray | Sql, ...values: any[]) {\n return this._createPrismaPromise((transaction) => {\n if ((query as TemplateStringsArray).raw !== undefined || (query as Sql).sql !== undefined) {\n const [sql, argsMapper] = toSql(query, values)\n checkAlter(\n this._activeProvider,\n sql.text,\n sql.values,\n Array.isArray(query) ? 'prisma.$executeRaw`<SQL>`' : 'prisma.$executeRaw(sql`<SQL>`)',\n )\n return this.$executeRawInternal(transaction, '$executeRaw', sql, argsMapper)\n }\n\n throw new PrismaClientValidationError(\n `\\`$executeRaw\\` is a tag function, please use it like the following:\n\\`\\`\\`\nconst result = await prisma.$executeRaw\\`UPDATE User SET cool = \\${true} WHERE email = \\${'user@email.com'};\\`\n\\`\\`\\`\n\nOr read our docs at https://www.prisma.io/docs/concepts/components/prisma-client/raw-database-access#executeraw\n`,\n { clientVersion: this._clientVersion },\n )\n })\n }\n\n /**\n * Unsafe counterpart of `$executeRaw` that is susceptible to SQL injections\n * @see https://github.com/prisma/prisma/issues/7142\n *\n * @param query\n * @param values\n * @returns\n */\n $executeRawUnsafe(query: string, ...values: RawValue[]) {\n return this._createPrismaPromise((transaction) => {\n checkAlter(this._activeProvider, query, values, 'prisma.$executeRawUnsafe(<SQL>, [...values])')\n return this.$executeRawInternal(transaction, '$executeRawUnsafe', [query, ...values])\n })\n }\n\n /**\n * Executes a raw command only for MongoDB\n *\n * @param command\n * @returns\n */\n $runCommandRaw(command: Record<string, JsInputValue>) {\n if (config.activeProvider !== 'mongodb') {\n throw new PrismaClientValidationError(\n `The ${config.activeProvider} provider does not support $runCommandRaw. Use the mongodb provider.`,\n { clientVersion: this._clientVersion },\n )\n }\n\n return this._createPrismaPromise((transaction) => {\n return this._request({\n args: command,\n clientMethod: '$runCommandRaw',\n dataPath: [],\n action: 'runCommandRaw',\n argsMapper: rawCommandArgsMapper,\n callsite: getCallSite(this._errorFormat),\n transaction: transaction,\n })\n })\n }\n\n /**\n * Executes a raw query and returns selected data\n */\n async $queryRawInternal(\n transaction: PrismaPromiseTransaction | undefined,\n clientMethod: string,\n args: RawQueryArgs,\n middlewareArgsMapper?: MiddlewareArgsMapper<unknown, unknown>,\n ) {\n const activeProvider = this._activeProvider\n\n return this._request({\n action: 'queryRaw',\n args,\n transaction,\n clientMethod,\n argsMapper: rawQueryArgsMapper({ clientMethod, activeProvider }),\n callsite: getCallSite(this._errorFormat),\n dataPath: [],\n middlewareArgsMapper,\n })\n }\n\n /**\n * Executes a raw query provided through a safe tag function\n * @see https://github.com/prisma/prisma/issues/7142\n *\n * @param query\n * @param values\n * @returns\n */\n $queryRaw(query: TemplateStringsArray | Sql, ...values: any[]) {\n return this._createPrismaPromise((transaction) => {\n if ((query as TemplateStringsArray).raw !== undefined || (query as Sql).sql !== undefined) {\n return this.$queryRawInternal(transaction, '$queryRaw', ...toSql(query, values))\n }\n\n throw new PrismaClientValidationError(\n `\\`$queryRaw\\` is a tag function, please use it like the following:\n\\`\\`\\`\nconst result = await prisma.$queryRaw\\`SELECT * FROM User WHERE id = \\${1} OR email = \\${'user@email.com'};\\`\n\\`\\`\\`\n\nOr read our docs at https://www.prisma.io/docs/concepts/components/prisma-client/raw-database-access#queryraw\n`,\n { clientVersion: this._clientVersion },\n )\n })\n }\n\n /**\n * Counterpart to $queryRaw, that returns strongly typed results\n * @param typedSql\n */\n $queryRawTyped(typedSql: UnknownTypedSql) {\n return this._createPrismaPromise((transaction) => {\n if (!this._hasPreviewFlag('typedSql')) {\n throw new PrismaClientValidationError(\n '`typedSql` preview feature must be enabled in order to access $queryRawTyped API',\n { clientVersion: this._clientVersion },\n )\n }\n return this.$queryRawInternal(transaction, '$queryRawTyped', typedSql)\n })\n }\n\n /**\n * Unsafe counterpart of `$queryRaw` that is susceptible to SQL injections\n * @see https://github.com/prisma/prisma/issues/7142\n *\n * @param query\n * @param values\n * @returns\n */\n $queryRawUnsafe(query: string, ...values: RawValue[]) {\n return this._createPrismaPromise((transaction) => {\n return this.$queryRawInternal(transaction, '$queryRawUnsafe', [query, ...values])\n })\n }\n\n /**\n * Execute a batch of requests in a transaction\n * @param requests\n * @param options\n */\n _transactionWithArray({\n promises,\n options,\n }: {\n promises: Array<PrismaPromise<any>>\n options?: BatchTransactionOptions\n }): Promise<any> {\n const id = BatchTxIdCounter.nextId()\n const lock = getLockCountPromise(promises.length)\n\n const requests = promises.map((request, index) => {\n if (request?.[Symbol.toStringTag] !== 'PrismaPromise') {\n throw new Error(\n `All elements of the array need to be Prisma Client promises. Hint: Please make sure you are not awaiting the Prisma client calls you intended to pass in the $transaction function.`,\n )\n }\n\n const isolationLevel = options?.isolationLevel ?? this._engineConfig.transactionOptions.isolationLevel\n const transaction = { kind: 'batch', id, index, isolationLevel, lock } as const\n return request.requestTransaction?.(transaction) ?? request\n })\n\n return waitForBatch(requests)\n }\n\n /**\n * Perform a long-running transaction\n * @param callback\n * @param options\n * @returns\n */\n async _transactionWithCallback({\n callback,\n options,\n }: {\n callback: (client: Client) => Promise<unknown>\n options?: Options\n }) {\n const headers = { traceparent: this._tracingHelper.getTraceParent() }\n\n const optionsWithDefaults: Options = {\n maxWait: options?.maxWait ?? this._engineConfig.transactionOptions.maxWait,\n timeout: options?.timeout ?? this._engineConfig.transactionOptions.timeout,\n isolationLevel: options?.isolationLevel ?? this._engineConfig.transactionOptions.isolationLevel,\n }\n const info = await this._engine.transaction('start', headers, optionsWithDefaults)\n\n let result: unknown\n try {\n // execute user logic with a proxied the client\n const transaction = { kind: 'itx', ...info } as const\n\n result = await callback(this._createItxClient(transaction))\n\n // it went well, then we commit the transaction\n await this._engine.transaction('commit', headers, info)\n } catch (e: any) {\n // it went bad, then we rollback the transaction\n await this._engine.transaction('rollback', headers, info).catch(() => {})\n\n throw e // silent rollback, throw original error\n }\n\n return result\n }\n\n _createItxClient(transaction: PrismaPromiseInteractiveTransaction): Client {\n return createCompositeProxy(\n applyModelsAndClientExtensions(\n createCompositeProxy(unApplyModelsAndClientExtensions(this), [\n addProperty('_appliedParent', () => this._appliedParent._createItxClient(transaction)),\n addProperty('_createPrismaPromise', () => createPrismaPromiseFactory(transaction)),\n addProperty(TX_ID, () => transaction.id),\n ]),\n ),\n [removeProperties(itxClientDenyList)],\n )\n }\n\n /**\n * Execute queries within a transaction\n * @param input a callback or a query list\n * @param options to set timeouts (callback)\n * @returns\n */\n $transaction(input: any, options?: any) {\n let callback: () => Promise<any>\n\n // iTx - Interactive transaction\n if (typeof input === 'function') {\n if (this._engineConfig.adapter?.adapterName === '@prisma/adapter-d1') {\n callback = () => {\n throw new Error(\n 'Cloudflare D1 does not support interactive transactions. We recommend you to refactor your queries with that limitation in mind, and use batch transactions with `prisma.$transactions([])` where applicable.',\n )\n }\n } else {\n callback = () => this._transactionWithCallback({ callback: input, options })\n }\n } else {\n // Batch transaction\n callback = () => this._transactionWithArray({ promises: input, options })\n }\n\n const spanOptions = {\n name: 'transaction',\n attributes: { method: '$transaction' },\n }\n\n return this._tracingHelper.runInChildSpan(spanOptions, callback)\n }\n\n /**\n * Runs the middlewares over params before executing a request\n * @param internalParams\n * @returns\n */\n _request(internalParams: InternalRequestParams): Promise<any> {\n // this is the otel context that is active at the callsite\n internalParams.otelParentCtx = this._tracingHelper.getActiveContext()\n const middlewareArgsMapper = internalParams.middlewareArgsMapper ?? noopMiddlewareArgsMapper\n\n // make sure that we don't leak extra properties to users\n const params: QueryMiddlewareParams = {\n args: middlewareArgsMapper.requestArgsToMiddlewareArgs(internalParams.args),\n dataPath: internalParams.dataPath,\n runInTransaction: Boolean(internalParams.transaction),\n action: internalParams.action,\n model: internalParams.model,\n }\n\n // span options for opentelemetry instrumentation\n const spanOptions = {\n operation: {\n name: 'operation',\n attributes: {\n method: params.action,\n model: params.model,\n name: params.model ? `${params.model}.${params.action}` : params.action,\n },\n } as ExtendedSpanOptions,\n }\n\n // prepare recursive fn that will pipe params through middlewares\n const consumer = async (changedMiddlewareParams: QueryMiddlewareParams) => {\n // we proceed with request execution\n // before we send the execution request, we use the changed params\n const { runInTransaction, args, ...changedRequestParams } = changedMiddlewareParams\n const requestParams = {\n ...internalParams,\n ...changedRequestParams,\n }\n\n if (args) {\n requestParams.args = middlewareArgsMapper.middlewareArgsToRequestArgs(args)\n }\n\n // if middleware switched off `runInTransaction`, unset `transaction`\n // property on request as well so it will be executed outside of the tx\n if (internalParams.transaction !== undefined && runInTransaction === false) {\n delete requestParams.transaction // client extensions check for this\n }\n\n const result = await applyQueryExtensions(this, requestParams) // also executes the query\n if (!requestParams.model) {\n return result\n }\n return applyAllResultExtensions({\n result,\n modelName: requestParams.model,\n args: requestParams.args,\n extensions: this._extensions,\n runtimeDataModel: this._runtimeDataModel,\n globalOmit: this._globalOmit,\n })\n }\n\n return this._tracingHelper.runInChildSpan(spanOptions.operation, () => {\n if (NODE_CLIENT) {\n // https://github.com/prisma/prisma/issues/3148 not for edge client\n const asyncRes = new AsyncResource('prisma-client-request')\n return asyncRes.runInAsyncScope(() => consumer(params))\n }\n\n return consumer(params)\n })\n }\n\n async _executeRequest({\n args,\n clientMethod,\n dataPath,\n callsite,\n action,\n model,\n argsMapper,\n transaction,\n unpacker,\n otelParentCtx,\n customDataProxyFetch,\n }: InternalRequestParams) {\n try {\n // execute argument transformation before execution\n args = argsMapper ? argsMapper(args) : args\n\n const spanOptions: ExtendedSpanOptions = {\n name: 'serialize',\n }\n\n const message = this._tracingHelper.runInChildSpan(spanOptions, () =>\n serializeJsonQuery({\n modelName: model,\n runtimeDataModel: this._runtimeDataModel,\n action,\n args,\n clientMethod,\n callsite,\n extensions: this._extensions,\n errorFormat: this._errorFormat,\n clientVersion: this._clientVersion,\n previewFeatures: this._previewFeatures,\n globalOmit: this._globalOmit,\n }),\n )\n\n // as prettyPrintArguments takes a bit of compute\n // we only want to do it, if debug is enabled for 'prisma-client'\n if (Debug.enabled('prisma:client')) {\n debug(`Prisma Client call:`)\n debug(`prisma.${clientMethod}(${prettyPrintArguments(args)})`)\n debug(`Generated request:`)\n debug(JSON.stringify(message, null, 2) + '\\n')\n }\n\n if (transaction?.kind === 'batch') {\n /** @see {@link getLockCountPromise} */\n await transaction.lock\n }\n\n return this._requestHandler.request({\n protocolQuery: message,\n modelName: model,\n action,\n clientMethod,\n dataPath,\n callsite,\n args,\n extensions: this._extensions,\n transaction,\n unpacker,\n otelParentCtx,\n otelChildCtx: this._tracingHelper.getActiveContext(),\n globalOmit: this._globalOmit,\n customDataProxyFetch,\n })\n } catch (e) {\n e.clientVersion = this._clientVersion\n throw e\n }\n }\n\n $metrics = new MetricsClient(this)\n\n /**\n * Shortcut for checking a preview flag\n * @param feature preview flag\n * @returns\n */\n _hasPreviewFlag(feature: string) {\n return !!this._engineConfig.previewFeatures?.includes(feature)\n }\n\n $applyPendingMigrations(): Promise<void> {\n return this._engine.applyPendingMigrations()\n }\n\n $extends = $extends\n }\n\n return PrismaClient\n}\n\nfunction toSql(query: TemplateStringsArray | Sql, values: unknown[]): [Sql, MiddlewareArgsMapper<unknown, unknown>] {\n if (isTemplateStringArray(query)) {\n return [new Sql(query, values), templateStringMiddlewareArgsMapper]\n }\n\n return [query, sqlMiddlewareArgsMapper]\n}\n\nfunction isTemplateStringArray(value: unknown): value is TemplateStringsArray {\n return Array.isArray(value) && Array.isArray(value['raw'])\n}\n", "", "/**\n * Values supported by SQL engine.\n */\nexport type Value = unknown;\n\n/**\n * Supported value or SQL instance.\n */\nexport type RawValue = Value | Sql;\n\n/**\n * A SQL instance can be nested within each other to build SQL strings.\n */\nexport class Sql {\n readonly values: Value[];\n readonly strings: string[];\n\n constructor(rawStrings: readonly string[], rawValues: readonly RawValue[]) {\n if (rawStrings.length - 1 !== rawValues.length) {\n if (rawStrings.length === 0) {\n throw new TypeError(\"Expected at least 1 string\");\n }\n\n throw new TypeError(\n `Expected ${rawStrings.length} strings to have ${\n rawStrings.length - 1\n } values`,\n );\n }\n\n const valuesLength = rawValues.reduce<number>(\n (len, value) => len + (value instanceof Sql ? value.values.length : 1),\n 0,\n );\n\n this.values = new Array(valuesLength);\n this.strings = new Array(valuesLength + 1);\n\n this.strings[0] = rawStrings[0];\n\n // Iterate over raw values, strings, and children. The value is always\n // positioned between two strings, e.g. `index + 1`.\n let i = 0,\n pos = 0;\n while (i < rawValues.length) {\n const child = rawValues[i++];\n const rawString = rawStrings[i];\n\n // Check for nested `sql` queries.\n if (child instanceof Sql) {\n // Append child prefix text to current string.\n this.strings[pos] += child.strings[0];\n\n let childIndex = 0;\n while (childIndex < child.values.length) {\n this.values[pos++] = child.values[childIndex++];\n this.strings[pos] = child.strings[childIndex];\n }\n\n // Append raw string to current string.\n this.strings[pos] += rawString;\n } else {\n this.values[pos++] = child;\n this.strings[pos] = rawString;\n }\n }\n }\n\n get sql() {\n const len = this.strings.length;\n let i = 1;\n let value = this.strings[0];\n while (i < len) value += `?${this.strings[i++]}`;\n return value;\n }\n\n get statement() {\n const len = this.strings.length;\n let i = 1;\n let value = this.strings[0];\n while (i < len) value += `:${i}${this.strings[i++]}`;\n return value;\n }\n\n get text() {\n const len = this.strings.length;\n let i = 1;\n let value = this.strings[0];\n while (i < len) value += `$${i}${this.strings[i++]}`;\n return value;\n }\n\n inspect() {\n return {\n sql: this.sql,\n statement: this.statement,\n text: this.text,\n values: this.values,\n };\n }\n}\n\n/**\n * Create a SQL query for a list of values.\n */\nexport function join(\n values: readonly RawValue[],\n separator = \",\",\n prefix = \"\",\n suffix = \"\",\n) {\n if (values.length === 0) {\n throw new TypeError(\n \"Expected `join([])` to be called with an array of multiple elements, but got an empty array\",\n );\n }\n\n return new Sql(\n [prefix, ...Array(values.length - 1).fill(separator), suffix],\n values,\n );\n}\n\n/**\n * Create a SQL query for a list of structured values.\n */\nexport function bulk(\n data: ReadonlyArray<ReadonlyArray<RawValue>>,\n separator = \",\",\n prefix = \"\",\n suffix = \"\",\n) {\n const length = data.length && data[0].length;\n\n if (length === 0) {\n throw new TypeError(\n \"Expected `bulk([][])` to be called with a nested array of multiple elements, but got an empty array\",\n );\n }\n\n const values = data.map((item, index) => {\n if (item.length !== length) {\n throw new TypeError(\n `Expected \\`bulk([${index}][])\\` to have a length of ${length}, but got ${item.length}`,\n );\n }\n\n return new Sql([\"(\", ...Array(item.length - 1).fill(separator), \")\"], item);\n });\n\n return new Sql(\n [prefix, ...Array(values.length - 1).fill(separator), suffix],\n values,\n );\n}\n\n/**\n * Create raw SQL statement.\n */\nexport function raw(value: string) {\n return new Sql([value], []);\n}\n\n/**\n * Placeholder value for \"no text\".\n */\nexport const empty = raw(\"\");\n\n/**\n * Create a SQL object from a template string.\n */\nexport default function sql(\n strings: readonly string[],\n ...values: readonly RawValue[]\n) {\n return new Sql(strings, values);\n}\n", "export { addObjectProperties as addObjectProperties } from './addObjectProperties'\nexport { addProperty } from './addProperty'\nexport { cacheProperties } from './cacheProperties'\nexport { type CompositeProxyLayer, createCompositeProxy } from './createCompositeProxy'\nexport { removeProperties } from './removeProperties'\n", "import type { CompositeProxyLayer } from './createCompositeProxy'\n\n/**\n * Composite proxy layer that forwards all reads\n * to provided object\n *\n * @param object\n * @returns\n */\nexport function addObjectProperties(object: object): CompositeProxyLayer {\n return {\n getKeys() {\n return Object.keys(object)\n },\n\n getPropertyValue(key) {\n return object[key]\n },\n }\n}\n", "import { CompositeProxyLayer } from './createCompositeProxy'\n\n/**\n * Composite proxy layer, that adds a single property to the target\n * @param key the name of the property\n * @param factory the function that returns the value of the property\n * @returns\n */\nexport function addProperty(key: string | symbol, factory: () => unknown): CompositeProxyLayer {\n return {\n getKeys() {\n return [key]\n },\n\n getPropertyValue() {\n return factory()\n },\n }\n}\n", "import { Cache } from '@prisma/client-common'\n\nimport { CompositeProxyLayer } from './createCompositeProxy'\n\n/**\n * Composite proxy layer that adds caching to another\n * layer.\n *\n * @param baseLayer\n * @returns\n */\nexport function cacheProperties<KeyType extends string | symbol>(\n baseLayer: CompositeProxyLayer<KeyType>,\n): CompositeProxyLayer<KeyType> {\n const cache = new Cache<KeyType, unknown>()\n return {\n getKeys() {\n return baseLayer.getKeys()\n },\n\n getPropertyValue(key) {\n return cache.getOrCreate(key, () => baseLayer.getPropertyValue(key))\n },\n\n getPropertyDescriptor(key) {\n return baseLayer.getPropertyDescriptor?.(key)\n },\n }\n}\n", "import { defaultPropertyDescriptor } from '../model/utils/defaultProxyHandlers'\n\nexport interface CompositeProxyLayer<KeyType extends string | symbol = string | symbol> {\n /**\n * Returns a list of keys, defined by a layer\n */\n getKeys(): ReadonlyArray<KeyType>\n\n /**\n * Returns a value for a property for a given key (one of the keys, returned\n * from `getKeys`)\n * @param key\n */\n getPropertyValue(key: KeyType): unknown\n\n /**\n * Gets a descriptor for given property. If not implemented or undefined is returned, { enumerable: true, writeable: true, configurable: true} is defaulted\n * is used\n * @param key\n */\n getPropertyDescriptor?(key: KeyType): PropertyDescriptor | undefined\n\n /**\n * Allows to override results for hasOwnProperty/in operator. If not implemented, returns true\n * @param key\n */\n has?(key: KeyType): boolean\n}\n\nconst customInspect = Symbol.for('nodejs.util.inspect.custom')\n\n/**\n * Creates a proxy from a set of layers.\n * Each layer is a building for a proxy (potentially, reusable) that\n * can add or override property on top of the target.\n * When multiple layers define the same property, last one wins\n *\n * @param target\n * @param layers\n * @returns\n */\nexport function createCompositeProxy<T extends object>(target: T, layers: CompositeProxyLayer[]): T {\n const keysToLayerMap = mapKeysToLayers(layers)\n const overwrittenKeys = new Set<string | symbol>()\n\n const proxy = new Proxy(target, {\n get(target, prop) {\n // explicit overwrites of a property have highest priority\n if (overwrittenKeys.has(prop)) {\n return target[prop]\n }\n\n // next, we see if property is defined in one of the layers\n const layer = keysToLayerMap.get(prop)\n if (layer) {\n return layer.getPropertyValue(prop)\n }\n\n // finally, we read a prop from target\n return target[prop]\n },\n\n has(target, prop) {\n if (overwrittenKeys.has(prop)) {\n return true\n }\n const layer = keysToLayerMap.get(prop)\n if (layer) {\n return layer.has?.(prop) ?? true\n }\n\n return Reflect.has(target, prop)\n },\n\n ownKeys(target) {\n const targetKeys = getExistingKeys(Reflect.ownKeys(target), keysToLayerMap)\n const layerKeys = getExistingKeys(Array.from(keysToLayerMap.keys()), keysToLayerMap)\n return [...new Set([...targetKeys, ...layerKeys, ...overwrittenKeys])]\n },\n\n set(target, prop, value) {\n const layer = keysToLayerMap.get(prop)\n if (layer?.getPropertyDescriptor?.(prop)?.writable === false) {\n return false\n }\n overwrittenKeys.add(prop)\n return Reflect.set(target, prop, value)\n },\n\n getOwnPropertyDescriptor(target, prop) {\n const original = Reflect.getOwnPropertyDescriptor(target, prop)\n if (original && !original.configurable) {\n // non-configurable properties can not change descriptors\n return original\n }\n\n const layer = keysToLayerMap.get(prop)\n if (layer) {\n if (layer.getPropertyDescriptor) {\n return {\n ...defaultPropertyDescriptor,\n ...layer?.getPropertyDescriptor(prop),\n }\n }\n return defaultPropertyDescriptor\n }\n\n return original\n },\n\n defineProperty(target, property, attributes) {\n overwrittenKeys.add(property)\n return Reflect.defineProperty(target, property, attributes)\n },\n\n getPrototypeOf: () => Object.prototype,\n })\n\n proxy[customInspect] = function () {\n // Default node.js console.log and util.inspect deliberately avoid triggering any proxy traps and log\n // original target. This is not we want for our usecases: we want console.log to output the result as if\n // the properties actually existed on the target. Using spread operator forces us to produce correct object\n const toLog = { ...this }\n delete toLog[customInspect]\n return toLog\n }\n return proxy\n}\n\nfunction mapKeysToLayers(layers: CompositeProxyLayer[]) {\n const keysToLayerMap = new Map<string | symbol, CompositeProxyLayer>()\n for (const layer of layers) {\n const keys = layer.getKeys()\n for (const key of keys) {\n keysToLayerMap.set(key, layer)\n }\n }\n return keysToLayerMap\n}\n\nfunction getExistingKeys(keys: Array<string | symbol>, keysToLayerMap: Map<string | symbol, CompositeProxyLayer>) {\n return keys.filter((key) => {\n const layer = keysToLayerMap.get(key)\n return layer?.has?.(key) ?? true\n })\n}\n", "export const defaultPropertyDescriptor = {\n enumerable: true,\n configurable: true,\n writable: true,\n}\n\nexport function defaultProxyHandlers<T extends object>(ownKeys: (string | symbol)[]) {\n const _ownKeys = new Set(ownKeys)\n return {\n getPrototypeOf: () => Object.prototype,\n getOwnPropertyDescriptor: () => defaultPropertyDescriptor,\n has: (target: T, prop: string | symbol) => _ownKeys.has(prop),\n set: (target: T, prop: string | symbol, value: any) => {\n return _ownKeys.add(prop) && Reflect.set(target, prop, value)\n },\n ownKeys: () => [..._ownKeys],\n } as const\n}\n", "import { CompositeProxyLayer } from './createCompositeProxy'\n\nexport function removeProperties(keys: ReadonlyArray<string | symbol>): CompositeProxyLayer {\n return {\n getKeys() {\n return keys\n },\n\n has() {\n return false\n },\n\n getPropertyValue() {\n return undefined\n },\n }\n}\n", "import { TransactionOptions } from '../Engine'\nimport { JsonQuery } from '../types/JsonProtocol'\nimport { QueryEngineBatchRequest } from '../types/QueryEngine'\n\nexport function getBatchRequestPayload(\n batch: JsonQuery[],\n transaction?: TransactionOptions<unknown>,\n): QueryEngineBatchRequest {\n return {\n batch,\n transaction: transaction?.kind === 'batch' ? { isolationLevel: transaction.options.isolationLevel } : undefined,\n }\n}\n", "import { Writer } from '@prisma/ts-builders'\n\nimport { JsArgs } from '../types/exported/JsApi'\nimport { buildArgumentsRenderingTree } from './ArgumentsRenderingTree'\nimport { inactiveColors } from './base'\n\nexport function prettyPrintArguments(args?: JsArgs): string {\n if (args === undefined) {\n return ''\n }\n const tree = buildArgumentsRenderingTree(args)\n const writer = new Writer(0, { colors: inactiveColors })\n return writer.write(tree).toString()\n}\n", "import { RequestError } from '../../engines/common/types/RequestError'\nimport { PrismaClientKnownRequestError } from '../PrismaClientKnownRequestError'\nimport { PrismaClientUnknownRequestError } from '../PrismaClientUnknownRequestError'\n\nconst TOO_MANY_CONNECTIONS_ERROR = 'P2037'\n\nexport function prismaGraphQLToJSError(\n { error, user_facing_error }: RequestError,\n clientVersion: string,\n activeProvider: string,\n): PrismaClientKnownRequestError | PrismaClientUnknownRequestError {\n if (user_facing_error.error_code) {\n return new PrismaClientKnownRequestError(getKnownErrorMessage(user_facing_error, activeProvider), {\n code: user_facing_error.error_code,\n clientVersion,\n meta: user_facing_error.meta,\n batchRequestIdx: user_facing_error.batch_request_idx,\n })\n }\n\n return new PrismaClientUnknownRequestError(error, {\n clientVersion,\n batchRequestIdx: user_facing_error.batch_request_idx,\n })\n}\n\nfunction getKnownErrorMessage(userFacingError: RequestError['user_facing_error'], activeProvider: string) {\n let message = userFacingError.message\n if (\n (activeProvider === 'postgresql' || activeProvider === 'postgres' || activeProvider === 'mysql') &&\n userFacingError.error_code === TOO_MANY_CONNECTIONS_ERROR\n ) {\n message +=\n '\\nPrisma Accelerate has built-in connection pooling to prevent such errors: https://pris.ly/client/error-accelerate'\n }\n\n return message\n}\n", "import { Client } from '../../getPrismaClient'\nimport { AccelerateEngine } from '../engines/accelerate/AccelerateEngine'\nimport { applyModelsAndClientExtensions } from '../model/applyModelsAndClientExtensions'\nimport { ExtensionArgs } from '../types/exported'\n\n/**\n * @param this\n */\nexport function $extends(this: Client, extension: ExtensionArgs | ((client: Client) => Client)): Client {\n if (typeof extension === 'function') {\n return extension(this)\n }\n\n if (extension.client?.__AccelerateEngine) {\n const Engine = extension.client.__AccelerateEngine as typeof AccelerateEngine\n this._originalClient._engine = new Engine(this._originalClient._accelerateEngineConfig)\n }\n\n const newClient = Object.create(this._originalClient, {\n _extensions: { value: this._extensions.append(extension) },\n _appliedParent: { value: this, configurable: true },\n $on: { value: undefined },\n }) as Client\n\n return applyModelsAndClientExtensions(newClient)\n}\n", "import type { Client } from '../../getPrismaClient'\nimport {\n addObjectProperties,\n addProperty,\n cacheProperties,\n CompositeProxyLayer,\n createCompositeProxy,\n} from '../compositeProxy'\nimport { applyModel } from './applyModel'\nimport { dmmfToJSModelName } from './utils/dmmfToJSModelName'\nimport { jsToDMMFModelName } from './utils/jsToDMMFModelName'\n\n// symbol we use for storing raw, unproxied\n// client instance, so we later can retrieve it\n// via `unapplyModels` methods\nconst rawClient = Symbol()\n\n/**\n * Dynamically creates a model proxy interface for a give name. For each prop\n * accessed on this proxy, it will lookup the dmmf to find if that model exists.\n * If it is the case, it will create a proxy for that model via {@link applyModel}.\n * @param client to create the proxy around\n * @returns a proxy to access models\n */\nexport function applyModelsAndClientExtensions(client: Client) {\n const layers = [\n rootLayer(client),\n modelsLayer(client),\n addProperty(rawClient, () => client),\n addProperty('$parent', () => client._appliedParent),\n ]\n const clientExtensions = client._extensions.getAllClientExtensions()\n if (clientExtensions) {\n layers.push(addObjectProperties(clientExtensions))\n }\n return createCompositeProxy(client, layers)\n}\n\nfunction rootLayer(client: Client): CompositeProxyLayer {\n const prototype = Object.getPrototypeOf(client._originalClient)\n const allKeys = [...new Set(Object.getOwnPropertyNames(prototype))]\n\n return {\n getKeys() {\n return allKeys\n },\n\n getPropertyValue(prop) {\n return client[prop]\n },\n }\n}\n\nfunction modelsLayer(client: Client): CompositeProxyLayer {\n const dmmfModelKeys = Object.keys(client._runtimeDataModel.models)\n const jsModelKeys = dmmfModelKeys.map(dmmfToJSModelName)\n const allKeys = [...new Set(dmmfModelKeys.concat(jsModelKeys))]\n\n return cacheProperties({\n getKeys() {\n return allKeys\n },\n\n getPropertyValue(prop) {\n const dmmfModelName = jsToDMMFModelName(prop)\n // creates a new model proxy on the fly and caches it\n if (client._runtimeDataModel.models[dmmfModelName] !== undefined) {\n return applyModel(client, dmmfModelName)\n }\n\n // above silently failed if model name is lower cased\n if (client._runtimeDataModel.models[prop] !== undefined) {\n return applyModel(client, prop)\n }\n\n return undefined\n },\n\n getPropertyDescriptor(key) {\n if (!jsModelKeys.includes(key)) {\n return { enumerable: false }\n }\n\n return undefined\n },\n })\n}\n\nexport function unApplyModelsAndClientExtensions(client: Client): Client {\n if (client[rawClient]) {\n return client[rawClient]\n }\n return client\n}\n", "import * as DMMF from '@prisma/dmmf'\nimport type { O } from 'ts-toolbelt'\n\nimport { type Client, type InternalRequestParams } from '../../getPrismaClient'\nimport { getCallSite } from '../../utils/CallSite'\nimport {\n addObjectProperties,\n addProperty,\n cacheProperties,\n CompositeProxyLayer,\n createCompositeProxy,\n} from '../compositeProxy'\nimport type { PrismaPromise } from '../request/PrismaPromise'\nimport type { UserArgs } from '../request/UserArgs'\nimport { applyAggregates } from './applyAggregates'\nimport { applyFieldsProxy } from './applyFieldsProxy'\nimport { applyFluent } from './applyFluent'\nimport { dmmfToJSModelName } from './utils/dmmfToJSModelName'\n\nexport type ModelAction = (\n paramOverrides: O.Optional<InternalRequestParams>,\n) => (userArgs?: UserArgs) => PrismaPromise<unknown>\n\nconst fluentProps = [\n 'findUnique',\n 'findUniqueOrThrow',\n 'findFirst',\n 'findFirstOrThrow',\n 'create',\n 'update',\n 'upsert',\n 'delete',\n] as const\nconst aggregateProps = ['aggregate', 'count', 'groupBy'] as const\n\n/**\n * Dynamically creates a model interface via a proxy.\n * @param client to trigger the request execution\n * @param dmmfModelName the dmmf name of the model\n * @returns\n */\nexport function applyModel(client: Client, dmmfModelName: string) {\n const modelExtensions = client._extensions.getAllModelExtensions(dmmfModelName) ?? {}\n\n const layers = [\n modelActionsLayer(client, dmmfModelName),\n fieldsPropertyLayer(client, dmmfModelName),\n addObjectProperties(modelExtensions),\n addProperty('name', () => dmmfModelName),\n addProperty('$name', () => dmmfModelName),\n addProperty('$parent', () => client._appliedParent),\n ]\n\n return createCompositeProxy({}, layers)\n}\n\n/**\n * Dynamically creates a model interface via a proxy.\n * @param client to trigger the request execution\n * @param dmmfModelName the dmmf name of the model\n * @returns\n */\nfunction modelActionsLayer(client: Client, dmmfModelName: string): CompositeProxyLayer<string> {\n // we use the javascript model name for display purposes\n const jsModelName = dmmfToJSModelName(dmmfModelName)\n const ownKeys = Object.keys(DMMF.ModelAction).concat('count')\n\n return {\n getKeys() {\n return ownKeys\n },\n\n getPropertyValue(key) {\n const dmmfActionName = key as DMMF.ModelAction\n\n // we return a function as the model action that we want to expose\n // it takes user args and executes the request in a Prisma Promise\n const action = (paramOverrides: O.Optional<InternalRequestParams>) => (userArgs?: UserArgs) => {\n const callSite = getCallSite(client._errorFormat) // used for showing better errors\n\n return client._createPrismaPromise(\n (transaction) => {\n const params: InternalRequestParams = {\n // data and its dataPath for nested results\n args: userArgs,\n dataPath: [],\n\n // action name and its related model\n action: dmmfActionName,\n model: dmmfModelName,\n\n // method name for display only\n clientMethod: `${jsModelName}.${key}`,\n jsModelName,\n\n // transaction information\n transaction,\n\n // stack trace\n callsite: callSite,\n }\n\n return client._request({ ...params, ...paramOverrides })\n },\n {\n action: dmmfActionName,\n args: userArgs,\n model: dmmfModelName,\n },\n )\n }\n\n // we give the control over action for building the fluent api\n if ((fluentProps as readonly string[]).includes(dmmfActionName)) {\n return applyFluent(client, dmmfModelName, action)\n }\n\n // we handle the edge case of aggregates that need extra steps\n if (isValidAggregateName(key)) {\n return applyAggregates(client, key, action)\n }\n\n return action({}) // and by default, don't override any params\n },\n }\n}\n\nfunction isValidAggregateName(action: string): action is (typeof aggregateProps)[number] {\n return (aggregateProps as readonly string[]).includes(action)\n}\n\nfunction fieldsPropertyLayer(client: Client, dmmfModelName: string) {\n return cacheProperties(\n addProperty('fields', () => {\n const model = client._runtimeDataModel.models[dmmfModelName]\n return applyFieldsProxy(dmmfModelName, model)\n }),\n )\n}\n", "import { pathToPosix } from '@prisma/internals'\nimport * as stackTraceParser from 'stacktrace-parser'\n\nimport { ErrorFormat } from '../getPrismaClient'\n\ndeclare global {\n /**\n * a global variable that is injected by us via jest to make our snapshots\n * work in clients that cannot read from disk (e.g. wasm or edge clients)\n */\n let $EnabledCallSite: typeof EnabledCallSite | undefined\n}\n\nexport type LocationInFile = {\n fileName: string\n lineNumber: number | null\n columnNumber: number | null\n}\n\nexport interface CallSite {\n getLocation(): LocationInFile | null\n}\n\nclass DisabledCallSite implements CallSite {\n getLocation(): LocationInFile | null {\n return null\n }\n}\n\nexport class EnabledCallSite implements CallSite {\n private _error: Error\n constructor() {\n this._error = new Error()\n }\n getLocation(): LocationInFile | null {\n const stack = this._error.stack\n if (!stack) {\n return null\n }\n const stackFrames = stackTraceParser.parse(stack)\n // TODO: more resilient logic to check that it's not relative to cwd\n const frame = stackFrames.find((t) => {\n // Here we are trying to find the location in the user's code which caused the error\n if (!t.file) {\n return false\n }\n\n // convert windows path to posix path\n const posixFile = pathToPosix(t.file)\n return (\n posixFile !== '<anonymous>' && // Ignore as we can not read an <anonymous> file\n !posixFile.includes('@prisma') && // Internal, unbundled code\n !posixFile.includes('/packages/client/src/runtime/') && // Runtime sources when source maps are used\n !posixFile.endsWith('/runtime/binary.js') && // Bundled runtimes\n !posixFile.endsWith('/runtime/library.js') &&\n !posixFile.endsWith('/runtime/edge.js') &&\n !posixFile.endsWith('/runtime/edge-esm.js') &&\n !posixFile.startsWith('internal/') && // We don't want internal nodejs files\n !t.methodName.includes('new ') && // \"new CallSite\" call and maybe other constructors\n !t.methodName.includes('getCallSite') && // getCallSite function from this module\n !t.methodName.includes('Proxy.') && // Model proxies\n t.methodName.split('.').length < 4\n )\n })\n\n if (!frame || !frame.file) {\n return null\n }\n\n return {\n fileName: frame.file,\n lineNumber: frame.lineNumber,\n columnNumber: frame.column,\n }\n }\n}\n\nexport function getCallSite(errorFormat: ErrorFormat): CallSite {\n if (\n errorFormat === 'minimal' ||\n TARGET_BUILD_TYPE === 'wasm-engine-edge' ||\n TARGET_BUILD_TYPE === 'wasm-compiler-edge' ||\n TARGET_BUILD_TYPE === 'edge'\n ) {\n if (typeof $EnabledCallSite === 'function' && errorFormat !== 'minimal') {\n return new $EnabledCallSite()\n } else {\n return new DisabledCallSite()\n }\n } else {\n return new EnabledCallSite()\n }\n}\n", "var UNKNOWN_FUNCTION = '<unknown>';\n/**\n * This parses the different stack traces and puts them into one format\n * This borrows heavily from TraceKit (https://github.com/csnover/TraceKit)\n */\n\nfunction parse(stackString) {\n var lines = stackString.split('\\n');\n return lines.reduce(function (stack, line) {\n var parseResult = parseChrome(line) || parseWinjs(line) || parseGecko(line) || parseNode(line) || parseJSC(line);\n\n if (parseResult) {\n stack.push(parseResult);\n }\n\n return stack;\n }, []);\n}\nvar chromeRe = /^\\s*at (.*?) ?\\(((?:file|https?|blob|chrome-extension|native|eval|webpack|rsc|<anonymous>|\\/|[a-z]:\\\\|\\\\\\\\).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nvar chromeEvalRe = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\nfunction parseChrome(line) {\n var parts = chromeRe.exec(line);\n\n if (!parts) {\n return null;\n }\n\n var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n\n var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n var submatch = chromeEvalRe.exec(parts[2]);\n\n if (isEval && submatch != null) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1]; // url\n\n parts[3] = submatch[2]; // line\n\n parts[4] = submatch[3]; // column\n }\n\n return {\n file: !isNative ? parts[2] : null,\n methodName: parts[1] || UNKNOWN_FUNCTION,\n arguments: isNative ? [parts[2]] : [],\n lineNumber: parts[3] ? +parts[3] : null,\n column: parts[4] ? +parts[4] : null\n };\n}\n\nvar winjsRe = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|rsc|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nfunction parseWinjs(line) {\n var parts = winjsRe.exec(line);\n\n if (!parts) {\n return null;\n }\n\n return {\n file: parts[2],\n methodName: parts[1] || UNKNOWN_FUNCTION,\n arguments: [],\n lineNumber: +parts[3],\n column: parts[4] ? +parts[4] : null\n };\n}\n\nvar geckoRe = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|rsc|resource|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nvar geckoEvalRe = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nfunction parseGecko(line) {\n var parts = geckoRe.exec(line);\n\n if (!parts) {\n return null;\n }\n\n var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n var submatch = geckoEvalRe.exec(parts[3]);\n\n if (isEval && submatch != null) {\n // throw out eval line/column and use top-most line number\n parts[3] = submatch[1];\n parts[4] = submatch[2];\n parts[5] = null; // no column when eval\n }\n\n return {\n file: parts[3],\n methodName: parts[1] || UNKNOWN_FUNCTION,\n arguments: parts[2] ? parts[2].split(',') : [],\n lineNumber: parts[4] ? +parts[4] : null,\n column: parts[5] ? +parts[5] : null\n };\n}\n\nvar javaScriptCoreRe = /^\\s*(?:([^@]*)(?:\\((.*?)\\))?@)?(\\S.*?):(\\d+)(?::(\\d+))?\\s*$/i;\n\nfunction parseJSC(line) {\n var parts = javaScriptCoreRe.exec(line);\n\n if (!parts) {\n return null;\n }\n\n return {\n file: parts[3],\n methodName: parts[1] || UNKNOWN_FUNCTION,\n arguments: [],\n lineNumber: +parts[4],\n column: parts[5] ? +parts[5] : null\n };\n}\n\nvar nodeRe = /^\\s*at (?:((?:\\[object object\\])?[^\\\\/]+(?: \\[as \\S+\\])?) )?\\(?(.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nfunction parseNode(line) {\n var parts = nodeRe.exec(line);\n\n if (!parts) {\n return null;\n }\n\n return {\n file: parts[2],\n methodName: parts[1] || UNKNOWN_FUNCTION,\n arguments: [],\n lineNumber: +parts[3],\n column: parts[4] ? +parts[4] : null\n };\n}\n\nexport { parse };\n", "import type { Client } from '../../getPrismaClient'\nimport type { UserArgs } from '../request/UserArgs'\nimport { Action } from '../types/exported/JsApi'\nimport { aggregate } from './aggregates/aggregate'\nimport { count } from './aggregates/count'\nimport { groupBy } from './aggregates/groupBy'\nimport type { ModelAction } from './applyModel'\n\n/**\n * Dynamically returns the appropriate aggregate action for a given `action`.\n * With this, we are able to provide an aggregate api that has a better DX. In\n * short, we manipulate the user input which is designed to have DX to transform\n * it into something that the engines understand. Similarly, we take the engine\n * output for that input and produce something that is easier to work with.\n * @param action that tells which aggregate action to execute\n * @param modelAction a callback action that triggers request execution\n * @returns\n */\nexport function applyAggregates(client: Client, action: Action, modelAction: ModelAction) {\n // we effectively take over the aggregate api to perform data changes\n if (action === 'aggregate') return (userArgs?: UserArgs) => aggregate(userArgs, modelAction)\n if (action === 'count') return (userArgs?: UserArgs) => count(userArgs, modelAction)\n if (action === 'groupBy') return (userArgs?: UserArgs) => groupBy(userArgs, modelAction)\n\n return undefined\n}\n", "import type { UserArgs } from '../../request/UserArgs'\nimport type { ModelAction } from '../applyModel'\nimport { aggregateMap } from './utils/aggregateMap'\n\n/**\n * Transforms the `userArgs` for the `.aggregate` shorthand. It is an API sugar\n * for not having to do things like: `{select: {_avg: {select: {age: true}}}}`.\n * The goal here is to desugar it into something that is understood by the QE.\n * @param args to transform\n * @returns\n */\nexport function desugarUserArgs(args: UserArgs = {}) {\n const _args = desugarCountInUserArgs(args)\n const userArgsEntries = Object.entries(_args)\n\n return userArgsEntries.reduce(\n (aggregateArgs, [key, value]) => {\n if (aggregateMap[key] !== undefined) {\n // if it's an aggregate, we re-wrap into select\n aggregateArgs['select']![key] = { select: value }\n } else {\n aggregateArgs[key] = value // or leave it alone\n }\n\n return aggregateArgs\n },\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n { select: {} } as UserArgs & { select: UserArgs },\n )\n}\n\n/**\n * Desugar `userArgs` when it contains `{_count: true}`.\n * @param args the user input\n * @returns\n */\nfunction desugarCountInUserArgs(args: UserArgs = {}) {\n if (typeof args['_count'] === 'boolean') {\n return { ...args, _count: { _all: args['_count'] } }\n }\n\n return args\n}\n\n/**\n * Creates an unpacker that adds sugar to the basic result of the QE. An\n * unpacker helps to transform a result before returning it to the user.\n * @param args the user input\n * @returns\n */\nexport function createUnpacker(args: UserArgs = {}) {\n return (data: object) => {\n if (typeof args['_count'] === 'boolean') {\n data['_count'] = data['_count']['_all']\n }\n\n return data\n }\n}\n\n/**\n * Executes the `.aggregate` action on a model.\n * @see {desugarUserArgs}\n * @param args the user input to desugar\n * @param modelAction a callback action that triggers request execution\n * @returns\n */\nexport function aggregate(args: UserArgs, modelAction: ModelAction) {\n const aggregateUnpacker = createUnpacker(args)\n\n return modelAction({\n action: 'aggregate',\n unpacker: aggregateUnpacker,\n argsMapper: desugarUserArgs,\n })(args)\n}\n", "export const aggregateMap = {\n _avg: true,\n _count: true,\n _sum: true,\n _min: true,\n _max: true,\n}\n", "import type { UserArgs } from '../../request/UserArgs'\nimport type { ModelAction } from '../applyModel'\nimport { createUnpacker as createUnpackerAggregate, desugarUserArgs as desugarUserArgsAggregate } from './aggregate'\n\n/**\n * Transforms the `userArgs` for the `.count` shorthand. It is an API sugar. It\n * reuses the logic from the `.aggregate` shorthand to add additional handling.\n * The goal here is to desugar it into something that is understood by the QE.\n * @param args to transform\n * @returns\n */\nfunction desugarUserArgs(args: UserArgs = {}) {\n const { select, ..._args } = args // exclude select\n\n if (typeof select === 'object') {\n return desugarUserArgsAggregate({ ..._args, _count: select })\n } else {\n return desugarUserArgsAggregate({ ..._args, _count: { _all: true } })\n }\n}\n\n/**\n * Creates an unpacker that adds sugar to the basic result of the QE. An\n * unpacker helps to transform a result before returning it to the user.\n * @param args the user input\n * @returns\n */\nexport function createUnpacker(args: UserArgs = {}) {\n if (typeof args['select'] === 'object') {\n return (data: object) => createUnpackerAggregate(args)(data)['_count']\n } else {\n return (data: object) => createUnpackerAggregate(args)(data)['_count']['_all']\n }\n}\n\n/**\n * Executes the `.count` action on a model via {@link aggregate}.\n * @param args the user input to desugar\n * @param modelAction a callback action that triggers request execution\n * @returns\n */\nexport function count(args: UserArgs, modelAction: ModelAction) {\n return modelAction({\n action: 'count',\n unpacker: createUnpacker(args),\n argsMapper: desugarUserArgs,\n })(args)\n}\n", "import type { UserArgs } from '../../request/UserArgs'\nimport type { ModelAction } from '../applyModel'\nimport { desugarUserArgs as desugarUserArgsAggregate } from './aggregate'\n\n/**\n * Transforms the `userArgs` for the `.groupBy` shorthand. It is an API sugar.\n * It reuses the logic from the `.aggregate` shorthand and adds additional\n * handling for the `by` clause. The goal here is to desugar it into something\n * that is understood by the QE.\n * @param args to transform\n * @returns\n */\nfunction desugarUserArgs(args: UserArgs = {}) {\n const _args = desugarUserArgsAggregate(args)\n\n // we desugar the array into { [key]: boolean }\n if (Array.isArray(_args['by'])) {\n for (const key of _args['by']) {\n if (typeof key === 'string') {\n _args['select'][key] = true\n }\n }\n } else if (typeof _args['by'] === 'string') {\n _args['select'][_args['by']] = true\n }\n\n return _args\n}\n\n/**\n * Creates an unpacker that adds sugar to the basic result of the QE. An\n * unpacker helps to transform a result before returning it to the user.\n * @param args the user input\n * @returns\n */\nexport function createUnpacker(args: UserArgs = {}) {\n return (data: object[]) => {\n if (typeof args?.['_count'] === 'boolean') {\n data.forEach((row) => {\n row['_count'] = row['_count']['_all']\n })\n }\n\n return data\n }\n}\n\n/**\n * Executes the `.groupBy` action on a model by reusing {@link aggregate}.\n * @param args the user input to desugar\n * @param modelAction a callback action that triggers request execution\n * @returns\n */\nexport function groupBy(args: UserArgs, modelAction: ModelAction) {\n return modelAction({\n action: 'groupBy',\n unpacker: createUnpacker(args),\n argsMapper: desugarUserArgs,\n })(args)\n}\n", "import { keyBy, RuntimeModel } from '@prisma/client-common'\n\nimport { FieldRefImpl } from './FieldRef'\nimport { defaultProxyHandlers } from './utils/defaultProxyHandlers'\n\nexport type FieldProxy = {\n readonly [key: string]: FieldRefImpl<string, string>\n}\n\nexport function applyFieldsProxy(modelName: string, model: RuntimeModel): FieldProxy {\n const scalarFieldsList = model.fields.filter((field) => !field.relationName)\n const scalarFields = keyBy(scalarFieldsList, 'name')\n return new Proxy(\n {},\n {\n get(target, prop) {\n if (prop in target || typeof prop === 'symbol') {\n return target[prop]\n }\n const dmmfField = scalarFields[prop]\n if (dmmfField) {\n return new FieldRefImpl(modelName, prop, dmmfField.type, dmmfField.isList, dmmfField.kind === 'enum')\n }\n\n return undefined\n },\n ...defaultProxyHandlers(Object.keys(scalarFields)),\n },\n )\n}\n", "import type * as DMMF from '@prisma/dmmf'\n\nimport type { Client } from '../../getPrismaClient'\nimport { getCallSite } from '../../utils/CallSite'\nimport { deepSet } from '../../utils/deep-set'\nimport type { UserArgs } from '../request/UserArgs'\nimport type { ModelAction } from './applyModel'\nimport { defaultProxyHandlers } from './utils/defaultProxyHandlers'\n\n/**\n * The fluent API makes that nested relations can be retrieved at once. It's a\n * helper for writing `select` statements on relations with a chaining api.\n * Because of this, we automatically add `select` statements to the query, that\n * also means that we need to provide a `dataPath` for unpacking nested values.\n * @see {getNextUserArgs}\n * @param dmmfModelName\n * @param prevDataPath\n * @returns\n */\nfunction getNextDataPath(fluentPropName?: string, prevDataPath?: string[]) {\n if (fluentPropName === undefined || prevDataPath === undefined) return []\n\n return [...prevDataPath, 'select', fluentPropName]\n}\n\n/**\n * @see {getNextDataPath} for introduction. The goal of the fluent API is to\n * make it easy to retrieve nested relations. For this, we construct the query\n * args that are necessary to retrieve the nested relations. It consists of\n * nesting `select` statements each time that we access a relation.\n * @param callArgs usually passed on the last call of the chaining api\n * @param prevArgs when multiple chaining occurs, they are the previous\n * @param nextDataPath path where to set `callArgs` in `prevArgs`\n * @example\n * ```ts\n * prisma.user.findUnique().link().user()\n *\n * // will end up with an args like this:\n * // args {\n * // \"where\": {\n * // \"email\": \"1639498523518@gmail.com\"\n * // },\n * // \"select\": {\n * // \"link\": {\n * // \"select\": {\n * // \"user\": true\n * // }\n * // }\n * // }\n * // }\n * ```\n */\nfunction getNextUserArgs(callArgs: UserArgs, prevArgs: UserArgs, nextDataPath: string[]): UserArgs {\n if (prevArgs === undefined) return callArgs ?? {}\n\n return deepSet(prevArgs, nextDataPath, callArgs || true)\n}\n\n/**\n * Dynamically creates a fluent API from a `modelAction` and a `dmmfModelName`.\n * We use the current `dmmfModelName` to determine what can be chained on next.\n * The fluent API allows to chain on model relations to provide an alternative\n * way to fetch and access nested data all at once. When triggered, it calls\n * `modelActions` after having accumulated `prevDataPath` and `prevUserArgs`\n * with the chaining. You can find an example of usage at {@link applyModel}.\n * @param client to provide dmmf information\n * @param dmmfModelName the dmmf name of the model to apply the api to\n * @param modelAction a callback action that triggers request execution\n * @param fluentPropName the name of the api link that was just called\n * @param prevDataPath the dataPath from the previous api link\n * @param prevUserArgs the userArgs from the previous api link\n * @remarks optional parameters are empty on the first call via\n * {@link applyModel}\n * @returns\n */\nexport function applyFluent(\n client: Client,\n dmmfModelName: string,\n modelAction: ModelAction,\n fluentPropName?: string,\n prevDataPath?: string[],\n prevUserArgs?: UserArgs,\n) {\n // we retrieve the model that is described from the DMMF\n const dmmfModel = client._runtimeDataModel.models[dmmfModelName]\n\n // map[field.name] === field, basically for quick access\n const dmmfModelFieldMap = dmmfModel.fields.reduce(\n (acc, field) => ({ ...acc, [field.name]: field }),\n {} as { [dmmfModelFieldName: string]: DMMF.Field },\n )\n\n // we return a regular model action but proxy its return\n return (userArgs?: UserArgs) => {\n const callsite = getCallSite(client._errorFormat)\n // ! first call: nextDataPath => [], nextUserArgs => userArgs\n const nextDataPath = getNextDataPath(fluentPropName, prevDataPath)\n const nextUserArgs = getNextUserArgs(userArgs, prevUserArgs, nextDataPath)\n const prismaPromise = modelAction({ dataPath: nextDataPath, callsite })(nextUserArgs)\n // TODO: use an unpacker here instead of ClientFetcher logic\n // TODO: once it's done we can deprecate the use of dataPath\n const ownKeys = getOwnKeys(client, dmmfModelName)\n\n // we take control of the return promise to allow chaining\n return new Proxy(prismaPromise, {\n get(target, prop: string) {\n // fluent api only works on fields that are relational\n if (!ownKeys.includes(prop)) return target[prop]\n\n // here we are sure that prop is a field of type object\n const dmmfModelName = dmmfModelFieldMap[prop].type\n const modelArgs = [dmmfModelName, modelAction, prop] as const\n const dataArgs = [nextDataPath, nextUserArgs] as const\n\n // we allow for chaining more with this recursive call\n return applyFluent(client, ...modelArgs, ...dataArgs)\n },\n ...defaultProxyHandlers([...ownKeys, ...Object.getOwnPropertyNames(prismaPromise)]),\n })\n }\n}\n\n// the only accessible fields are relations to be chained on\nfunction getOwnKeys(client: Client, dmmfModelName: string) {\n return client._runtimeDataModel.models[dmmfModelName].fields\n .filter((field) => field.kind === 'object') // relations\n .map((field) => field.name)\n}\n", "// Taken from https://gist.github.com/LukeChannings/15c92cef5a016a8b21a0\n\n// ensure the keys being passed is an array of key paths\n// example: 'a.b' becomes ['a', 'b'] unless it was already ['a', 'b']\nconst keys = (ks: string | string[]) => (Array.isArray(ks) ? ks : ks.split('.'))\n\n// traverse the set of keys left to right,\n// returning the current value in each iteration.\n// if at any point the value for the current key does not exist,\n// return the default value\nexport const deepGet = (o, kp: string[]) => keys(kp).reduce((o, k) => o && o[k], o)\n\n// traverse the set of keys right to left,\n// returning a new object containing both properties from the object\n// we were originally passed and our new property.\n//\n// Example:\n// If o = { a: { b: { c: 1 } } }\n//\n// deepSet(o, ['a', 'b', 'c'], 2) will progress thus:\n// 1. c = Object.assign({}, {c: 1}, { c: 2 })\n// 2. b = Object.assign({}, { b: { c: 1 } }, { b: c })\n// 3. returned = Object.assign({}, { a: { b: { c: 1 } } }, { a: b })\nexport const deepSet = (o: any, kp: string | string[], v: any) =>\n keys(kp).reduceRight((v, k, i, ks) => Object.assign({}, deepGet(o, ks.slice(0, i)), { [k]: v }), v)\n", "/**\n * Transforms a model name coming from the runtime to a DMMF model name.\n * @param name\n * @returns\n */\nexport function jsToDMMFModelName(name: string) {\n return name.replace(/^./, (str) => str.toUpperCase())\n}\n", "import { RuntimeDataModel } from '@prisma/client-common'\n\nimport { GlobalOmitOptions } from '../jsonProtocol/serializeJsonQuery'\nimport { dmmfToJSModelName } from '../model/utils/dmmfToJSModelName'\nimport { JsArgs } from '../types/exported/JsApi'\nimport { applyResultExtensions } from './applyResultExtensions'\nimport { MergedExtensionsList } from './MergedExtensionsList'\nimport { visitQueryResult } from './visitQueryResult'\n\ntype ApplyAllResultExtensionsParams = {\n result: object | null\n modelName: string\n args: JsArgs\n extensions: MergedExtensionsList\n runtimeDataModel: RuntimeDataModel\n globalOmit?: GlobalOmitOptions\n}\n\n/**\n * Walks the result of the query and applies all possible result extensions\n * to all parts of it, including nested relations\n */\nexport function applyAllResultExtensions({\n result,\n modelName,\n args,\n extensions,\n runtimeDataModel,\n globalOmit,\n}: ApplyAllResultExtensionsParams) {\n // We return the result directly (not applying result extensions) if\n // - there is no extension to apply\n // - result is `null`\n // - result is not an object (e.g. `.count()`)\n if (extensions.isEmpty() || result == null || typeof result !== 'object') {\n return result\n }\n const model = runtimeDataModel.models[modelName]\n if (!model) {\n return result\n }\n\n return visitQueryResult({\n result,\n args: args ?? {},\n modelName,\n runtimeDataModel,\n visitor: (value, dmmfModelName, args) => {\n const jsName = dmmfToJSModelName(dmmfModelName)\n return applyResultExtensions({\n result: value,\n modelName: jsName,\n select: args.select,\n // passing omit only if explicit select is not set - those 2 options are\n // mutually exclusive\n omit: args.select ? undefined : { ...globalOmit?.[jsName], ...args.omit },\n extensions,\n })\n },\n })\n}\n", "import { hasOwnProperty } from '@prisma/internals'\n\nimport {\n addProperty,\n cacheProperties,\n CompositeProxyLayer,\n createCompositeProxy,\n removeProperties,\n} from '../compositeProxy'\nimport { Omission, Selection } from '../types/exported/JsApi'\nimport { MergedExtensionsList } from './MergedExtensionsList'\nimport { ComputedField } from './resultUtils'\n\ntype ApplyExtensionsArgs = {\n result: object\n select?: Selection\n omit?: Omission\n modelName: string\n extensions: MergedExtensionsList\n}\n\n/**\n * Given a part of a query result, it's model name and a list of extension,\n * applies computed fields to the results. Fields are computed lazily on a first access,\n * after that the result of computation is cached. In case `select` is used, all dependencies\n * of the computed fields would be excluded from final result, unless they are also specified in the select.\n *\n * This function applies computed fields to a single object only: it does not traverse relationships.\n * For full functionality, it is meant to be combined with `visitQueryResult`.\n *\n * @param params\n * @returns\n */\nexport function applyResultExtensions({ result, modelName, select, omit, extensions }: ApplyExtensionsArgs) {\n const computedFields = extensions.getAllComputedFields(modelName)\n if (!computedFields) {\n return result\n }\n\n const computedPropertiesLayers: CompositeProxyLayer[] = []\n const maskingLayers: CompositeProxyLayer[] = []\n\n for (const field of Object.values(computedFields)) {\n if (omit) {\n if (omit[field.name]) {\n continue\n }\n const toMask = field.needs.filter((prop) => omit[prop])\n if (toMask.length > 0) {\n maskingLayers.push(removeProperties(toMask))\n }\n } else if (select) {\n if (!select[field.name]) {\n continue\n }\n\n const toMask = field.needs.filter((prop) => !select[prop])\n if (toMask.length > 0) {\n maskingLayers.push(removeProperties(toMask))\n }\n }\n\n if (areNeedsMet(result, field.needs)) {\n computedPropertiesLayers.push(\n computedPropertyLayer(field, createCompositeProxy(result, computedPropertiesLayers)),\n )\n }\n }\n\n if (computedPropertiesLayers.length > 0 || maskingLayers.length > 0) {\n return createCompositeProxy(result, [...computedPropertiesLayers, ...maskingLayers])\n }\n return result\n}\n\nfunction areNeedsMet(result: object, neededProperties: string[]) {\n return neededProperties.every((property) => hasOwnProperty(result, property))\n}\n\nfunction computedPropertyLayer(field: ComputedField, result: object): CompositeProxyLayer {\n return cacheProperties(addProperty(field.name, () => field.compute(result)))\n}\n", "import { RuntimeDataModel } from '@prisma/client-common'\n\nimport { isSkip } from '../types'\nimport { JsArgs, Selection } from '../types/exported/JsApi'\n\ntype ModelVisitor = (value: object, modelName: string, queryArgs: JsArgs) => object | undefined\n\ntype VisitParams = {\n result: object\n args: JsArgs\n modelName: string\n runtimeDataModel: RuntimeDataModel\n visitor: ModelVisitor\n}\n\n/**\n * Function recursively walks through provided query response using `include` and `select`\n * query parameters and calls `visitor` callback for each model it encounters.\n * `visitor` receives the value of a particular response section, model it corresponds to and\n * the arguments used to query it. If visitor returns any non-undefined value that value will\n * replace corresponding part of the final result.\n *\n * @param params\n * @returns\n */\nexport function visitQueryResult({ visitor, result, args, runtimeDataModel, modelName }: VisitParams) {\n if (Array.isArray(result)) {\n for (let i = 0; i < result.length; i++) {\n result[i] = visitQueryResult({\n result: result[i],\n args,\n modelName,\n runtimeDataModel,\n visitor,\n })\n }\n return result\n }\n const visitResult = visitor(result, modelName, args) ?? result\n if (args.include) {\n visitNested({\n includeOrSelect: args.include,\n result: visitResult,\n parentModelName: modelName,\n runtimeDataModel,\n visitor,\n })\n }\n if (args.select) {\n visitNested({\n includeOrSelect: args.select,\n result: visitResult,\n parentModelName: modelName,\n runtimeDataModel,\n visitor,\n })\n }\n return visitResult\n}\n\ntype VisitNestedParams = {\n includeOrSelect: Selection\n result: object\n parentModelName: string\n runtimeDataModel: RuntimeDataModel\n visitor: ModelVisitor\n}\n\nfunction visitNested({ includeOrSelect, result, parentModelName, runtimeDataModel, visitor }: VisitNestedParams) {\n for (const [fieldName, subConfig] of Object.entries(includeOrSelect)) {\n if (!subConfig || result[fieldName] == null || isSkip(subConfig)) {\n continue\n }\n const parentModel = runtimeDataModel.models[parentModelName]\n const field = parentModel.fields.find((field) => field.name === fieldName)\n if (!field || field.kind !== 'object' || !field.relationName) {\n continue\n }\n const args = typeof subConfig === 'object' ? subConfig : {}\n result[fieldName] = visitQueryResult({\n visitor,\n result: result[fieldName],\n args,\n modelName: field.type,\n runtimeDataModel,\n })\n }\n}\n", "import { Client, InternalRequestParams } from '../../getPrismaClient'\nimport { RequestParams } from '../../RequestHandler'\nimport { deepCloneArgs } from '../../utils/deepCloneArgs'\nimport { AccelerateExtensionFetchDecorator } from '../engines'\nimport { QueryOptionsCb } from '../types/exported/ExtensionArgs'\nimport { BatchInternalParams, BatchQueryOptionsCb } from '../types/internal/ExtensionsInternalArgs'\n\nfunction iterateAndCallQueryCallbacks(\n client: Client,\n params: InternalRequestParams,\n queryCbs: QueryOptionsCb[],\n i = 0,\n) {\n return client._createPrismaPromise((transaction) => {\n // we need to keep track of the previous customDataProxyFetch\n const prevCustomFetch = params.customDataProxyFetch\n\n // allow query extensions to re-wrap in transactions\n // this will automatically discard the prev batch tx\n if ('transaction' in params && transaction !== undefined) {\n if (params.transaction?.kind === 'batch') {\n void params.transaction.lock.then() // discard\n }\n params.transaction = transaction\n }\n\n // if we are done recursing, we execute the request\n if (i === queryCbs.length) {\n return client._executeRequest(params)\n }\n\n // if not, call the next query cb and recurse query\n return queryCbs[i]({\n model: params.model,\n operation: params.model ? params.action : params.clientMethod,\n args: deepCloneArgs(params.args ?? {}),\n // @ts-expect-error because not part of public API\n __internalParams: params,\n query: (args, __internalParams = params) => {\n // we need to keep track of the current customDataProxyFetch\n // this is to cascade customDataProxyFetch like a middleware\n const currCustomFetch = __internalParams.customDataProxyFetch\n __internalParams.customDataProxyFetch = composeCustomDataProxyFetch(prevCustomFetch, currCustomFetch)\n __internalParams.args = args\n\n return iterateAndCallQueryCallbacks(client, __internalParams, queryCbs, i + 1)\n },\n })\n })\n}\n\nexport function applyQueryExtensions(client: Client, params: InternalRequestParams): Promise<any> {\n const { jsModelName, action, clientMethod } = params\n const operation = jsModelName ? action : clientMethod\n\n // query extensions only apply to model-bound operations\n if (client._extensions.isEmpty()) {\n return client._executeRequest(params)\n }\n\n // get the cached query cbs for a given model and action\n const cbs = client._extensions.getAllQueryCallbacks(jsModelName ?? '$none', operation)\n\n return iterateAndCallQueryCallbacks(client, params, cbs)\n}\n\ntype BatchExecuteCallback = (params: BatchInternalParams) => Promise<unknown[]>\n\nexport function createApplyBatchExtensionsFunction(executeBatch: BatchExecuteCallback) {\n return (requests: RequestParams[]) => {\n const params = { requests }\n const callbacks = requests[0].extensions.getAllBatchQueryCallbacks()\n if (!callbacks.length) {\n return executeBatch(params)\n }\n\n return iterateAndCallBatchCallbacks(params, callbacks, 0, executeBatch)\n }\n}\n\nexport function iterateAndCallBatchCallbacks(\n params: BatchInternalParams,\n callbacks: BatchQueryOptionsCb[],\n i: number,\n executeBatch: BatchExecuteCallback,\n) {\n if (i === callbacks.length) {\n return executeBatch(params)\n }\n\n const prevFetch = params.customDataProxyFetch\n const transaction = params.requests[0].transaction\n return callbacks[i]({\n args: {\n queries: params.requests.map((request) => ({\n model: request.modelName,\n operation: request.action,\n args: request.args,\n })),\n transaction: transaction\n ? {\n isolationLevel: transaction.kind === 'batch' ? transaction.isolationLevel : undefined,\n }\n : undefined,\n },\n __internalParams: params,\n query(_args, __internalParams = params) {\n const nextFetch = __internalParams.customDataProxyFetch\n __internalParams.customDataProxyFetch = composeCustomDataProxyFetch(prevFetch, nextFetch)\n return iterateAndCallBatchCallbacks(__internalParams, callbacks, i + 1, executeBatch)\n },\n })\n}\n\nconst noopFetch: AccelerateExtensionFetchDecorator = (f) => f\nfunction composeCustomDataProxyFetch(prevFetch = noopFetch, nextFetch = noopFetch): AccelerateExtensionFetchDecorator {\n return (f) => prevFetch(nextFetch(f))\n}\n", "import { assertNever } from '@prisma/internals'\nimport Decimal from 'decimal.js'\nimport { Sql } from 'sql-template-tag'\n\nimport { isFieldRef } from '../core/model/FieldRef'\nimport { isTypedSql, TypedSql, UnknownTypedSql } from '../core/types/exported'\nimport { JsArgs, JsInputValue } from '../core/types/exported/JsApi'\nimport { ObjectEnumValue } from '../core/types/exported/ObjectEnums'\nimport { RawQueryArgs } from '../core/types/exported/RawQueryArgs'\nimport { isDate } from './date'\nimport { isDecimalJsLike } from './decimalJsLike'\n\nexport function deepCloneArgs(args: JsArgs | RawQueryArgs): JsArgs | RawQueryArgs {\n if (args instanceof Sql) {\n return cloneSql(args)\n }\n\n if (isTypedSql(args)) {\n return cloneTypedSql(args)\n }\n\n if (Array.isArray(args)) {\n const clone: RawQueryArgs = [args[0]]\n\n for (let i = 1; i < args.length; i++) {\n clone[i] = deepCloneValue(args[i] as JsInputValue)\n }\n\n return clone\n }\n const clone: JsArgs = {}\n for (const k in args) {\n clone[k] = deepCloneValue(args[k])\n }\n return clone\n}\n\nfunction cloneSql(rawParam: Sql): Sql {\n return new Sql(rawParam.strings, rawParam.values)\n}\n\nfunction cloneTypedSql(rawParam: UnknownTypedSql): UnknownTypedSql {\n return new TypedSql(rawParam.sql, rawParam.values)\n}\n\n// based on https://github.com/lukeed/klona/blob/v2.0.6/src/index.js\nfunction deepCloneValue(x: JsInputValue): JsInputValue {\n if (typeof x !== 'object' || x == null || x instanceof ObjectEnumValue || isFieldRef(x)) {\n return x\n }\n\n if (isDecimalJsLike(x)) {\n return new Decimal(x.toFixed())\n }\n\n if (isDate(x)) {\n return new Date(+x)\n }\n\n if (ArrayBuffer.isView(x)) {\n return x.slice(0)\n }\n\n if (Array.isArray(x)) {\n let k = x.length\n let copy\n for (copy = Array(k); k--; ) {\n copy[k] = deepCloneValue(x[k])\n }\n return copy\n }\n\n if (typeof x === 'object') {\n const copy = {}\n for (const k in x) {\n if (k === '__proto__') {\n Object.defineProperty(copy, k, {\n value: deepCloneValue(x[k]),\n configurable: true,\n enumerable: true,\n writable: true,\n })\n } else {\n copy[k] = deepCloneValue(x[k])\n }\n }\n return copy\n }\n\n assertNever(x, 'Unknown value')\n}\n", "const denylist = ['$connect', '$disconnect', '$on', '$transaction', '$extends'] as const\n\nexport const itxClientDenyList = denylist as ReadonlyArray<string | symbol>\n\nexport type ITXClientDenyList = (typeof denylist)[number]\n", "import { GetPrismaClientConfig } from '@prisma/client-common'\nimport { Debug } from '@prisma/debug'\n\nimport { PrismaClientInitializationError } from '../errors/PrismaClientInitializationError'\n\nconst debug = Debug('prisma:client')\n\n/**\n * Known platforms that have caching issues. Updating this list will also update\n * the error message and the link to the docs, so add docs/links as needed. The\n * key from this map comes from the `ciName` property of the `ci-info` package.\n */\nconst cachingPlatforms = {\n Vercel: 'vercel',\n 'Netlify CI': 'netlify',\n} as const\n\ntype Config = Pick<GetPrismaClientConfig, 'postinstall' | 'ciName' | 'clientVersion' | 'generator'>\n\n/**\n * Throws an error if the client has been generated via auto-install and the\n * platform is known to have caching issues. In that case, we will display a\n * useful error message, and ask the user to run `prisma generate` manually.\n *\n * This function is specifically about dealing with `node_modules` caching.\n *\n * @returns\n */\nexport function checkPlatformCaching({ postinstall, ciName, clientVersion, generator }: Config) {\n debug('checkPlatformCaching:postinstall', postinstall)\n debug('checkPlatformCaching:ciName', ciName)\n\n // if client was not generated manually\n if (postinstall !== true) return\n\n // check if a custom output directory is used\n if (generator?.output) {\n const output = generator.output.fromEnvVar ?? generator.output.value\n\n if (typeof output === 'string') {\n // The generator is using a custom output directory, so we can skip the caching check\n return\n }\n }\n\n // and we generated on one a caching CI\n if (ciName && ciName in cachingPlatforms) {\n const message = `Prisma has detected that this project was built on ${ciName}, which caches dependencies. This leads to an outdated Prisma Client because Prisma's auto-generation isn't triggered. To fix this, make sure to run the \\`prisma generate\\` command during the build process.\n\nLearn how: https://pris.ly/d/${cachingPlatforms[ciName]}-build`\n\n console.error(message) // display a nice and visible error message\n\n // also throw an error so that the user can catch it and handle it\n throw new PrismaClientInitializationError(message, clientVersion)\n }\n}\n", "import { Datasources, PrismaClientOptions } from '../../getPrismaClient'\n\nexport function getDatasourceOverrides(\n options: PrismaClientOptions | undefined,\n datasourceNames: string[],\n): Datasources {\n if (!options) {\n return {}\n }\n\n if (options.datasources) {\n return options.datasources\n }\n\n if (options.datasourceUrl) {\n const primaryDatasource = datasourceNames[0]\n return { [primaryDatasource]: { url: options.datasourceUrl } }\n }\n return {}\n}\n", "import { GetPrismaClientConfig } from '@prisma/client-common'\nimport { ClientEngineType, getClientEngineType, warnOnce } from '@prisma/internals'\n\nimport { BinaryEngine, ClientEngine, DataProxyEngine, Engine, EngineConfig, LibraryEngine } from '../engines'\nimport { AccelerateEngine } from '../engines/accelerate/AccelerateEngine'\nimport { PrismaClientValidationError } from '../errors/PrismaClientValidationError'\nimport { resolveDatasourceUrl } from './resolveDatasourceUrl'\nimport { validateEngineInstanceConfig } from './validateEngineInstanceConfig'\n\n/**\n * Get the engine instance based on the engine type and the target engine type\n * (binary, library, data proxy). If the URL is a prisma:// URL, it will always\n * use the DataProxyEngine. Basically decides which engine to load.\n * @param clientConfig\n * @param engineConfig\n * @returns\n */\nexport function getEngineInstance({ copyEngine = true }: GetPrismaClientConfig, engineConfig: EngineConfig): Engine {\n let url: string | undefined\n\n try {\n url = resolveDatasourceUrl({\n inlineDatasources: engineConfig.inlineDatasources,\n overrideDatasources: engineConfig.overrideDatasources,\n env: { ...engineConfig.env, ...process.env },\n clientVersion: engineConfig.clientVersion,\n })\n } catch {\n // the error does not matter, but that means we don't have a valid url which\n // means we can't use the DataProxyEngine and will default to LibraryEngine\n }\n\n const { ok, isUsing, diagnostics } = validateEngineInstanceConfig({\n url,\n adapter: engineConfig.adapter,\n copyEngine,\n targetBuildType: TARGET_BUILD_TYPE,\n })\n\n for (const warning of diagnostics.warnings) {\n warnOnce(...warning.value)\n }\n\n if (!ok) {\n const error = diagnostics.errors[0]\n throw new PrismaClientValidationError(error.value, { clientVersion: engineConfig.clientVersion })\n }\n\n const engineType = getClientEngineType(engineConfig.generator!)\n\n const libraryEngineConfigured = engineType === ClientEngineType.Library\n const binaryEngineConfigured = engineType === ClientEngineType.Binary\n const clientEngineConfigured = engineType === ClientEngineType.Client\n\n // TODO: one day we may want to completely deprecate `@prisma/client/edge` in favor of wasm build\n // TODO: After having moved the DataProxyEngine to Accelerate\n // - Replace DataProxyEngine with AccelerateEngine via `@prisma/extension-accelerate`\n // - Delete DataProxyEngine and all related files\n // - Update the DataProxy tests to use the /wasm endpoint, but keep ecosystem-tests as they are\n\n // When a local driver adapter is configured, the URL from the datasource\n // block in the Prisma schema is no longer relevant as driver adapters don't\n // use it. Therefore, a configured driver adapter takes precedence over the\n // Accelerate or PPg URL in the schema file.\n const clientEngineUsesRemoteExecutor = (isUsing.accelerate || isUsing.ppg) && !isUsing.driverAdapters\n\n if (TARGET_BUILD_TYPE === 'react-native') return new LibraryEngine(engineConfig)\n else if (clientEngineConfigured && TARGET_BUILD_TYPE === 'client')\n return new ClientEngine(engineConfig, clientEngineUsesRemoteExecutor)\n else if (clientEngineConfigured && TARGET_BUILD_TYPE === 'wasm-compiler-edge')\n return new ClientEngine(engineConfig, clientEngineUsesRemoteExecutor)\n else if (isUsing.accelerate && TARGET_BUILD_TYPE !== 'wasm-engine-edge') return new DataProxyEngine(engineConfig)\n else if (isUsing.driverAdapters && TARGET_BUILD_TYPE === 'wasm-engine-edge') return new LibraryEngine(engineConfig)\n else if (libraryEngineConfigured && TARGET_BUILD_TYPE === 'library') return new LibraryEngine(engineConfig)\n else if (binaryEngineConfigured && TARGET_BUILD_TYPE === 'binary') return new BinaryEngine(engineConfig)\n else if (isUsing.accelerate && TARGET_BUILD_TYPE === 'wasm-engine-edge') return new DataProxyEngine(engineConfig)\n // reasonable fallbacks in case the conditions above aren't met, we should still try the correct engine\n else if (TARGET_BUILD_TYPE === 'edge') return new DataProxyEngine(engineConfig)\n else if (TARGET_BUILD_TYPE === 'library') return new LibraryEngine(engineConfig)\n else if (TARGET_BUILD_TYPE === 'binary') return new BinaryEngine(engineConfig)\n else if (TARGET_BUILD_TYPE === 'client') return new ClientEngine(engineConfig, clientEngineUsesRemoteExecutor)\n // if either accelerate or wasm library could not be loaded for some reason, we throw an error\n else if (TARGET_BUILD_TYPE === 'wasm-engine-edge' || TARGET_BUILD_TYPE === 'wasm-compiler-edge') {\n return new MisconfiguredEngine({ clientVersion: engineConfig.clientVersion }) as Engine\n }\n\n return TARGET_BUILD_TYPE satisfies never\n}\n\nclass MisconfiguredEngine {\n constructor(options: { clientVersion: string }) {\n return new Proxy(this, {\n get(_target, _prop) {\n const message = `In order to run Prisma Client on edge runtime, either:\n- Use Prisma Accelerate: https://pris.ly/d/accelerate\n- Use Driver Adapters: https://pris.ly/d/driver-adapters`\n\n throw new PrismaClientValidationError(message, options)\n },\n })\n }\n}\n", "export { BinaryEngine } from './binary/BinaryEngine'\nexport { ClientEngine } from './client/ClientEngine'\nexport {\n type AccelerateExtensionFetchDecorator,\n type BatchTransactionOptions,\n type Engine,\n type EngineConfig,\n type GraphQLQuery,\n type InteractiveTransactionOptions,\n type TransactionOptions,\n} from './common/Engine'\nexport * from './common/types/EngineValidationError'\nexport type { LogEmitter } from './common/types/Events'\nexport * from './common/types/JsonProtocol'\nexport type { Metric, MetricHistogram, MetricHistogramBucket, Metrics } from './common/types/Metrics'\nexport type { IsolationLevel, Options, TransactionHeaders } from './common/types/Transaction'\nexport { DataProxyEngine } from './data-proxy/DataProxyEngine'\nexport { LibraryEngine } from './library/LibraryEngine'\nexport * as NodeAPILibraryTypes from './library/types/Library'\n", "import { getLogs } from '@prisma/debug'\nimport { underline } from 'kleur/colors'\nimport stripAnsi from 'strip-ansi'\n\nimport type { ErrorWithLinkInput } from '../types/ErrorWithLinkInput'\nimport { maskQuery } from './maskQuery'\nimport { normalizeLogs } from './normalizeLogs'\nimport { getGitHubIssueUrl } from './util'\n\nexport function getErrorMessageWithLink({\n version,\n binaryTarget,\n title,\n description,\n engineVersion,\n database,\n query,\n}: ErrorWithLinkInput) {\n const gotLogs = getLogs(6000 - (query?.length ?? 0))\n const logs = normalizeLogs(stripAnsi(gotLogs))\n const moreInfo = description ? `# Description\\n\\`\\`\\`\\n${description}\\n\\`\\`\\`` : ''\n const body = stripAnsi(\n `Hi Prisma Team! My Prisma Client just crashed. This is the report:\n## Versions\n\n| Name | Version |\n|-----------------|--------------------|\n| Node | ${process.version?.padEnd(19)}| \n| OS | ${binaryTarget?.padEnd(19)}|\n| Prisma Client | ${version?.padEnd(19)}|\n| Query Engine | ${engineVersion?.padEnd(19)}|\n| Database | ${database?.padEnd(19)}|\n\n${moreInfo}\n\n## Logs\n\\`\\`\\`\n${logs}\n\\`\\`\\`\n\n## Client Snippet\n\\`\\`\\`ts\n// PLEASE FILL YOUR CODE SNIPPET HERE\n\\`\\`\\`\n\n## Schema\n\\`\\`\\`prisma\n// PLEASE ADD YOUR SCHEMA HERE IF POSSIBLE\n\\`\\`\\`\n\n## Prisma Engine Query\n\\`\\`\\`\n${query ? maskQuery(query) : ''}\n\\`\\`\\`\n`,\n )\n\n const url = getGitHubIssueUrl({ title, body })\n return `${title}\n\nThis is a non-recoverable error which probably happens when the Prisma Query Engine has a panic.\n\n${underline(url)}\n\nIf you want the Prisma team to look into it, please open the link above \uD83D\uDE4F\nTo increase the chance of success, please post your schema and a snippet of\nhow you used Prisma Client in the issue. \n`\n}\n", "export function maskQuery(query?: string): string {\n if (!query) {\n return ''\n }\n return (\n query\n // replace all strings with X\n .replace(/\".*\"/g, '\"X\"')\n // replace all numbers with 5\n .replace(/[\\s:\\[]([+-]?([0-9]*[.])?[0-9]+)/g, (substr) => {\n return `${substr[0]}5`\n })\n )\n}\n", "/**\n * Removes the leading timestamps (from docker) and trailing ms (from debug)\n * @param logs logs to normalize\n */\nexport function normalizeLogs(logs: string): string {\n return logs\n .split('\\n')\n .map((l) => {\n return l\n .replace(/^\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z)\\s*/, '')\n .replace(/\\+\\d+\\s*ms$/, '')\n })\n .join('\\n')\n}\n", "import newGitHubIssueUrl from 'new-github-issue-url'\n\nexport function getGitHubIssueUrl({\n title,\n user = 'prisma',\n repo = 'prisma',\n template = 'bug_report.yml',\n body,\n}: {\n title: string\n user?: string\n repo?: string\n template?: string\n body?: string\n}): string {\n return newGitHubIssueUrl({\n user,\n repo,\n template,\n title,\n body,\n })\n}\n", "export * from './batch'\nexport type { QueryEvent } from './events'\nexport { DataMapperError } from './interpreter/data-mapper'\nexport {\n QueryInterpreter,\n type QueryInterpreterOptions,\n type QueryInterpreterTransactionManager,\n} from './interpreter/query-interpreter'\nexport * from './json-protocol'\nexport * from './query-plan'\nexport * from './raw-json-protocol'\nexport type { SchemaProvider } from './schema'\nexport { noopTracingHelper, type TracingHelper } from './tracing'\nexport type { TransactionInfo, Options as TransactionOptions } from './transaction-manager/transaction'\nexport { TransactionManager } from './transaction-manager/transaction-manager'\nexport { TransactionManagerError } from './transaction-manager/transaction-manager-error'\nexport { UserFacingError } from './user-facing-error'\nexport { doKeysMatch, isDeepStrictEqual, safeJsonStringify } from './utils'\n", "import { Decimal } from 'decimal.js'\n\nimport { assertNever } from './utils'\n\nexport type DateTaggedValue = { $type: 'DateTime'; value: string }\nexport type DecimalTaggedValue = { $type: 'Decimal'; value: string }\nexport type BytesTaggedValue = { $type: 'Bytes'; value: string }\nexport type BigIntTaggedValue = { $type: 'BigInt'; value: string }\nexport type FieldRefTaggedValue = { $type: 'FieldRef'; value: { _ref: string } }\nexport type EnumTaggedValue = { $type: 'Enum'; value: string }\nexport type JsonTaggedValue = { $type: 'Json'; value: string }\n\nexport type JsonInputTaggedValue =\n | DateTaggedValue\n | DecimalTaggedValue\n | BytesTaggedValue\n | BigIntTaggedValue\n | FieldRefTaggedValue\n | JsonTaggedValue\n | EnumTaggedValue\n\nexport type JsonOutputTaggedValue =\n | DateTaggedValue\n | DecimalTaggedValue\n | BytesTaggedValue\n | BigIntTaggedValue\n | JsonTaggedValue\n\nexport type JsOutputValue =\n | null\n | string\n | number\n | boolean\n | bigint\n | Uint8Array\n | Date\n | Decimal\n | JsOutputValue[]\n | { [key: string]: JsOutputValue }\n\nexport function normalizeJsonProtocolValues(result: unknown): unknown {\n if (result === null) {\n return result\n }\n\n if (Array.isArray(result)) {\n return result.map(normalizeJsonProtocolValues)\n }\n\n if (typeof result === 'object') {\n if (isTaggedValue(result)) {\n return normalizeTaggedValue(result)\n }\n\n if (ArrayBuffer.isView(result)) {\n const buffer = Buffer.from(result.buffer, result.byteOffset, result.byteLength)\n return buffer.toString('base64')\n }\n\n // avoid mapping class instances\n if (result.constructor !== null && result.constructor.name !== 'Object') {\n return result\n }\n\n return mapObjectValues(result, normalizeJsonProtocolValues)\n }\n\n return result\n}\n\nfunction isTaggedValue(value: unknown): value is JsonOutputTaggedValue {\n return value !== null && typeof value == 'object' && typeof value['$type'] === 'string'\n}\n\n/**\n * Normalizes the value inside a tagged value to match the snapshots in tests.\n * Sometimes there are multiple equally valid representations of the same value\n * (e.g. a decimal string may contain an arbitrary number of trailing zeros,\n * datetime strings may specify the UTC offset as either '+00:00' or 'Z', etc).\n * Since these differences have no effect on the actual values received from the\n * Prisma Client once the response is deserialized to JavaScript values, we don't\n * spend extra CPU cycles on normalizing them in the data mapper. Instead, we\n * patch and normalize them here to ensure they are consistent with the snapshots\n * in the query engine tests.\n */\nfunction normalizeTaggedValue({ $type, value }: JsonOutputTaggedValue): JsonOutputTaggedValue {\n switch ($type) {\n case 'BigInt':\n return { $type, value: String(value) }\n case 'Bytes':\n return { $type, value: Buffer.from(value, 'base64').toString('base64') }\n case 'DateTime':\n return { $type, value: new Date(value).toISOString() }\n case 'Decimal':\n return { $type, value: String(new Decimal(value)) }\n case 'Json':\n return { $type, value: JSON.stringify(JSON.parse(value)) }\n default:\n assertNever(value, 'Unknown tagged value')\n }\n}\n\nfunction mapObjectValues<K extends PropertyKey, T, U>(\n object: Record<K, T>,\n mapper: (value: T, key: K) => U,\n): Record<K, U> {\n const result = {} as Record<K, U>\n\n for (const key of Object.keys(object)) {\n result[key] = mapper(object[key] as T, key as K)\n }\n\n return result\n}\n\nexport function deserializeJsonResponse(result: unknown): unknown {\n if (result === null) {\n return result\n }\n\n if (Array.isArray(result)) {\n return result.map(deserializeJsonResponse)\n }\n\n if (typeof result === 'object') {\n if (isTaggedValue(result)) {\n return deserializeTaggedValue(result)\n }\n\n // avoid mapping class instances\n if (result.constructor !== null && result.constructor.name !== 'Object') {\n return result\n }\n\n return mapObjectValues(result, deserializeJsonResponse)\n }\n\n return result\n}\n\nfunction deserializeTaggedValue({ $type, value }: JsonOutputTaggedValue): JsOutputValue {\n switch ($type) {\n case 'BigInt':\n return BigInt(value)\n case 'Bytes': {\n const { buffer, byteOffset, byteLength } = Buffer.from(value, 'base64')\n return new Uint8Array(buffer, byteOffset, byteLength)\n }\n case 'DateTime':\n return new Date(value)\n case 'Decimal':\n return new Decimal(value)\n case 'Json':\n return JSON.parse(value)\n default:\n assertNever(value, 'Unknown tagged value')\n }\n}\n", "import Decimal from 'decimal.js'\n\n// Copied over to avoid the heavy dependency on `@prisma/internals` with its\n// transitive dependencies that are not needed for other query plan executor\n// implementations outside of Prisma Client (e.g. test executor for query\n// engine tests and query plan executor for Accelerate) that also depend on\n// `@prisma/client-engine-runtime`.\nexport function assertNever(_: never, message: string): never {\n throw new Error(message)\n}\n\n/**\n * Checks if two objects are deeply equal, recursively checking all properties for strict equality.\n */\nexport function isDeepStrictEqual(a: unknown, b: unknown): boolean {\n return (\n a === b ||\n (a !== null &&\n b !== null &&\n typeof a === 'object' &&\n typeof b === 'object' &&\n Object.keys(a).length === Object.keys(b).length &&\n Object.keys(a).every((key) => isDeepStrictEqual(a[key], b[key])))\n )\n}\n\n/**\n * Checks if two objects representing the names and values of key columns match. A match is\n * defined by one of the sets of keys being a subset of the other. This function also\n * converts arguments to the types used by driver adapters if necessary.\n */\nexport function doKeysMatch(lhs: {}, rhs: {}): boolean {\n const lhsKeys = Object.keys(lhs)\n const rhsKeys = Object.keys(rhs)\n const smallerKeyList = lhsKeys.length < rhsKeys.length ? lhsKeys : rhsKeys\n\n return smallerKeyList.every((key) => {\n if (typeof lhs[key] === typeof rhs[key] && typeof lhs[key] !== 'object') {\n // fast path for primitive types\n return lhs[key] === rhs[key]\n }\n\n if (Decimal.isDecimal(lhs[key]) || Decimal.isDecimal(rhs[key])) {\n const lhsDecimal = asDecimal(lhs[key])\n const rhsDecimal = asDecimal(rhs[key])\n return lhsDecimal && rhsDecimal && lhsDecimal.equals(rhsDecimal)\n } else if (lhs[key] instanceof Uint8Array || rhs[key] instanceof Uint8Array) {\n const lhsBuffer = asBuffer(lhs[key])\n const rhsBuffer = asBuffer(rhs[key])\n return lhsBuffer && rhsBuffer && lhsBuffer.equals(rhsBuffer)\n } else if (lhs[key] instanceof Date || rhs[key] instanceof Date) {\n return asDate(lhs[key])?.getTime() === asDate(rhs[key])?.getTime()\n } else if (typeof lhs[key] === 'bigint' || typeof rhs[key] === 'bigint') {\n return asBigInt(lhs[key]) === asBigInt(rhs[key])\n } else if (typeof lhs[key] === 'number' || typeof rhs[key] === 'number') {\n return asNumber(lhs[key]) === asNumber(rhs[key])\n }\n\n return isDeepStrictEqual(lhs[key], rhs[key])\n })\n}\n\nfunction asDecimal(value: unknown): Decimal | undefined {\n if (Decimal.isDecimal(value)) {\n return value\n } else if (typeof value === 'number' || typeof value === 'string') {\n return new Decimal(value)\n } else {\n return\n }\n}\n\nfunction asBuffer(value: unknown): Buffer | undefined {\n if (Buffer.isBuffer(value)) {\n return value\n } else if (value instanceof Uint8Array) {\n return Buffer.from(value.buffer, value.byteOffset, value.byteLength)\n } else if (typeof value === 'string') {\n return Buffer.from(value, 'base64')\n } else {\n return\n }\n}\n\nfunction asDate(value: unknown): Date | undefined {\n if (value instanceof Date) {\n return value\n } else if (typeof value === 'string' || typeof value === 'number') {\n return new Date(value)\n } else {\n return\n }\n}\n\nfunction asBigInt(value: unknown): bigint | undefined {\n if (typeof value === 'bigint') {\n return value\n } else if (typeof value === 'number' || typeof value === 'string') {\n return BigInt(value)\n } else {\n return\n }\n}\n\nfunction asNumber(value: unknown): number | undefined {\n if (typeof value === 'number') {\n return value\n } else if (typeof value === 'string') {\n return Number(value)\n } else {\n return\n }\n}\n\n/**\n * `JSON.stringify` wrapper with custom replacer function that handles nested\n * BigInt and Uint8Array values.\n */\nexport function safeJsonStringify(obj: unknown): string {\n return JSON.stringify(obj, (_key, val) => {\n if (typeof val === 'bigint') {\n return val.toString()\n } else if (ArrayBuffer.isView(val)) {\n return Buffer.from(val.buffer, val.byteOffset, val.byteLength).toString('base64')\n }\n return val\n })\n}\n", "{\n \"name\": \"@prisma/client\",\n \"version\": \"7.3.0-integration-prisma6-fix-cloudflare-engine.2\",\n \"description\": \"Prisma Client is an auto-generated, type-safe and modern JavaScript/TypeScript ORM for Node.js that's tailored to your data. Supports PostgreSQL, CockroachDB, MySQL, MariaDB, SQL Server, SQLite & MongoDB databases.\",\n \"keywords\": [\n \"ORM\",\n \"Prisma\",\n \"prisma2\",\n \"Prisma Client\",\n \"client\",\n \"query\",\n \"query-builder\",\n \"database\",\n \"db\",\n \"JavaScript\",\n \"JS\",\n \"TypeScript\",\n \"TS\",\n \"SQL\",\n \"SQLite\",\n \"pg\",\n \"Postgres\",\n \"PostgreSQL\",\n \"CockroachDB\",\n \"MySQL\",\n \"MariaDB\",\n \"MSSQL\",\n \"SQL Server\",\n \"SQLServer\",\n \"MongoDB\",\n \"react-native\"\n ],\n \"main\": \"default.js\",\n \"types\": \"default.d.ts\",\n \"browser\": \"index-browser.js\",\n \"exports\": {\n \"./package.json\": \"./package.json\",\n \".\": {\n \"require\": {\n \"types\": \"./default.d.ts\",\n \"node\": \"./default.js\",\n \"edge-light\": \"./default.js\",\n \"workerd\": \"./default.js\",\n \"worker\": \"./default.js\",\n \"browser\": \"./index-browser.js\"\n },\n \"import\": {\n \"types\": \"./default.d.ts\",\n \"node\": \"./default.js\",\n \"edge-light\": \"./default.js\",\n \"workerd\": \"./default.js\",\n \"worker\": \"./default.js\",\n \"browser\": \"./index-browser.js\"\n },\n \"default\": \"./default.js\"\n },\n \"./edge\": {\n \"types\": \"./edge.d.ts\",\n \"require\": \"./edge.js\",\n \"import\": \"./edge.js\",\n \"default\": \"./edge.js\"\n },\n \"./react-native\": {\n \"types\": \"./react-native.d.ts\",\n \"require\": \"./react-native.js\",\n \"import\": \"./react-native.js\",\n \"default\": \"./react-native.js\"\n },\n \"./extension\": {\n \"types\": \"./extension.d.ts\",\n \"require\": \"./extension.js\",\n \"import\": \"./extension.js\",\n \"default\": \"./extension.js\"\n },\n \"./index-browser\": {\n \"types\": \"./index.d.ts\",\n \"require\": \"./index-browser.js\",\n \"import\": \"./index-browser.js\",\n \"default\": \"./index-browser.js\"\n },\n \"./index\": {\n \"types\": \"./index.d.ts\",\n \"require\": \"./index.js\",\n \"import\": \"./index.js\",\n \"default\": \"./index.js\"\n },\n \"./wasm\": {\n \"types\": \"./wasm.d.ts\",\n \"require\": \"./wasm.js\",\n \"import\": \"./wasm.mjs\",\n \"default\": \"./wasm.mjs\"\n },\n \"./runtime/client\": {\n \"types\": \"./runtime/client.d.ts\",\n \"node\": {\n \"require\": \"./runtime/client.js\",\n \"default\": \"./runtime/client.js\"\n },\n \"require\": \"./runtime/client.js\",\n \"import\": \"./runtime/client.mjs\",\n \"default\": \"./runtime/client.mjs\"\n },\n \"./runtime/library\": {\n \"types\": \"./runtime/library.d.ts\",\n \"require\": \"./runtime/library.js\",\n \"import\": \"./runtime/library.mjs\",\n \"default\": \"./runtime/library.mjs\"\n },\n \"./runtime/binary\": {\n \"types\": \"./runtime/binary.d.ts\",\n \"require\": \"./runtime/binary.js\",\n \"import\": \"./runtime/binary.mjs\",\n \"default\": \"./runtime/binary.mjs\"\n },\n \"./runtime/wasm-engine-edge\": {\n \"types\": \"./runtime/wasm-engine-edge.d.ts\",\n \"require\": \"./runtime/wasm-engine-edge.js\",\n \"import\": \"./runtime/wasm-engine-edge.mjs\",\n \"default\": \"./runtime/wasm-engine-edge.mjs\"\n },\n \"./runtime/wasm-compiler-edge\": {\n \"types\": \"./runtime/wasm-compiler-edge.d.ts\",\n \"require\": \"./runtime/wasm-compiler-edge.js\",\n \"import\": \"./runtime/wasm-compiler-edge.mjs\",\n \"default\": \"./runtime/wasm-compiler-edge.mjs\"\n },\n \"./runtime/edge\": {\n \"types\": \"./runtime/edge.d.ts\",\n \"require\": \"./runtime/edge.js\",\n \"import\": \"./runtime/edge-esm.js\",\n \"default\": \"./runtime/edge-esm.js\"\n },\n \"./runtime/react-native\": {\n \"types\": \"./runtime/react-native.d.ts\",\n \"require\": \"./runtime/react-native.js\",\n \"import\": \"./runtime/react-native.js\",\n \"default\": \"./runtime/react-native.js\"\n },\n \"./runtime/index-browser\": {\n \"types\": \"./runtime/index-browser.d.ts\",\n \"require\": \"./runtime/index-browser.js\",\n \"import\": \"./runtime/index-browser.mjs\",\n \"default\": \"./runtime/index-browser.mjs\"\n },\n \"./generator-build\": {\n \"require\": \"./generator-build/index.js\",\n \"import\": \"./generator-build/index.js\",\n \"default\": \"./generator-build/index.js\"\n },\n \"./sql\": {\n \"require\": {\n \"types\": \"./sql.d.ts\",\n \"node\": \"./sql.js\",\n \"default\": \"./sql.js\"\n },\n \"import\": {\n \"types\": \"./sql.d.ts\",\n \"node\": \"./sql.mjs\",\n \"default\": \"./sql.mjs\"\n },\n \"default\": \"./sql.js\"\n },\n \"./*\": \"./*\"\n },\n \"license\": \"Apache-2.0\",\n \"engines\": {\n \"node\": \">=18.18\"\n },\n \"homepage\": \"https://www.prisma.io\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/prisma/prisma.git\",\n \"directory\": \"packages/client\"\n },\n \"author\": \"Tim Suchanek <suchanek@prisma.io>\",\n \"bugs\": \"https://github.com/prisma/prisma/issues\",\n \"scripts\": {\n \"dev\": \"DEV=true tsx helpers/build.ts\",\n \"build\": \"tsx helpers/build.ts\",\n \"test\": \"dotenv -e ../../.db.env -- jest --silent\",\n \"test:e2e\": \"dotenv -e ../../.db.env -- tsx tests/e2e/_utils/run.ts\",\n \"test:functional\": \"dotenv -e ../../.db.env -- tsx helpers/functional-test/run-tests.ts\",\n \"test:functional:client\": \"pnpm run test:functional --client-runtime client --engine-type client\",\n \"test:memory\": \"dotenv -e ../../.db.env -- tsx helpers/memory-tests.ts\",\n \"test:functional:code\": \"dotenv -e ../../.db.env -- tsx helpers/functional-test/run-tests.ts --no-types\",\n \"test:functional:types\": \"dotenv -e ../../.db.env -- tsx helpers/functional-test/run-tests.ts --types-only\",\n \"test-notypes\": \"dotenv -e ../../.db.env -- jest --testPathIgnorePatterns src/__tests__/types/types.test.ts\",\n \"generate\": \"node scripts/postinstall.js\",\n \"postinstall\": \"node scripts/postinstall.js\",\n \"prepublishOnly\": \"pnpm run build\",\n \"new-test\": \"tsx ./helpers/new-test/new-test.ts\"\n },\n \"files\": [\n \"README.md\",\n \"runtime\",\n \"scripts\",\n \"generator-build\",\n \"edge.js\",\n \"edge.d.ts\",\n \"wasm.js\",\n \"wasm.d.ts\",\n \"index.js\",\n \"index.d.ts\",\n \"react-native.js\",\n \"react-native.d.ts\",\n \"default.js\",\n \"default.d.ts\",\n \"index-browser.js\",\n \"extension.js\",\n \"extension.d.ts\",\n \"sql.d.ts\",\n \"sql.js\",\n \"sql.mjs\"\n ],\n \"devDependencies\": {\n \"@cloudflare/workers-types\": \"^4.20250408.0\",\n \"@codspeed/benchmark.js-plugin\": \"4.0.0\",\n \"@faker-js/faker\": \"9.6.0\",\n \"@fast-check/jest\": \"2.0.3\",\n \"@hono/node-server\": \"1.19.0\",\n \"@inquirer/prompts\": \"7.3.3\",\n \"@jest/create-cache-key-function\": \"29.7.0\",\n \"@jest/globals\": \"29.7.0\",\n \"@jest/test-sequencer\": \"29.7.0\",\n \"@libsql/client\": \"0.8.1\",\n \"@neondatabase/serverless\": \"0.10.2\",\n \"@opentelemetry/api\": \"1.9.0\",\n \"@opentelemetry/context-async-hooks\": \"2.1.0\",\n \"@opentelemetry/instrumentation\": \"0.206.0\",\n \"@opentelemetry/resources\": \"2.1.0\",\n \"@opentelemetry/sdk-trace-base\": \"2.1.0\",\n \"@opentelemetry/semantic-conventions\": \"1.37.0\",\n \"@planetscale/database\": \"1.19.0\",\n \"@prisma/adapter-better-sqlite3\": \"workspace:*\",\n \"@prisma/adapter-d1\": \"workspace:*\",\n \"@prisma/adapter-libsql\": \"workspace:*\",\n \"@prisma/adapter-mariadb\": \"workspace:*\",\n \"@prisma/adapter-mssql\": \"workspace:*\",\n \"@prisma/adapter-neon\": \"workspace:*\",\n \"@prisma/adapter-pg\": \"workspace:*\",\n \"@prisma/adapter-planetscale\": \"workspace:*\",\n \"@prisma/client-common\": \"workspace:*\",\n \"@prisma/client-engine-runtime\": \"workspace:*\",\n \"@prisma/client-generator-js\": \"workspace:*\",\n \"@prisma/client-generator-ts\": \"workspace:*\",\n \"@prisma/config\": \"workspace:*\",\n \"@prisma/debug\": \"workspace:*\",\n \"@prisma/dmmf\": \"workspace:*\",\n \"@prisma/driver-adapter-utils\": \"workspace:*\",\n \"@prisma/engines\": \"workspace:*\",\n \"@prisma/engines-version\": \"7.1.1-3.c2990dca591cba766e3b7ef5d9e8a84796e47ab7\",\n \"@prisma/fetch-engine\": \"workspace:*\",\n \"@prisma/generator\": \"workspace:*\",\n \"@prisma/generator-helper\": \"workspace:*\",\n \"@prisma/get-platform\": \"workspace:*\",\n \"@prisma/instrumentation\": \"workspace:*\",\n \"@prisma/internals\": \"workspace:*\",\n \"@prisma/migrate\": \"workspace:*\",\n \"@prisma/mini-proxy\": \"0.9.5\",\n \"@prisma/query-compiler-wasm\": \"7.1.1-3.c2990dca591cba766e3b7ef5d9e8a84796e47ab7\",\n \"@prisma/query-engine-wasm\": \"6.19.0-26.2ba551f319ab1df4bc874a89965d8b3641056773\",\n \"@prisma/query-plan-executor\": \"workspace:*\",\n \"@prisma/ts-builders\": \"workspace:*\",\n \"@snaplet/copycat\": \"6.0.0\",\n \"@swc-node/register\": \"1.10.9\",\n \"@swc/core\": \"1.11.5\",\n \"@swc/jest\": \"0.2.37\",\n \"@timsuchanek/copy\": \"1.4.5\",\n \"@types/debug\": \"4.1.12\",\n \"@types/fs-extra\": \"11.0.4\",\n \"@types/jest\": \"29.5.14\",\n \"@types/js-levenshtein\": \"1.1.3\",\n \"@types/mssql\": \"9.1.8\",\n \"@types/node\": \"18.19.76\",\n \"@types/pg\": \"8.11.11\",\n \"arg\": \"5.0.2\",\n \"benchmark\": \"2.1.4\",\n \"cookie-es\": \"2.0.0\",\n \"decimal.js\": \"10.5.0\",\n \"execa\": \"8.0.1\",\n \"expect-type\": \"1.2.2\",\n \"fs-extra\": \"11.3.0\",\n \"get-stream\": \"6.0.1\",\n \"globby\": \"11.1.0\",\n \"indent-string\": \"4.0.0\",\n \"jest\": \"29.7.0\",\n \"jest-extended\": \"4.0.2\",\n \"jest-junit\": \"16.0.0\",\n \"jest-serializer-ansi-escapes\": \"4.0.0\",\n \"jest-snapshot\": \"29.7.0\",\n \"js-levenshtein\": \"1.1.6\",\n \"kleur\": \"4.1.5\",\n \"klona\": \"2.0.6\",\n \"mariadb\": \"3.4.5\",\n \"memfs\": \"4.17.2\",\n \"mssql\": \"11.0.1\",\n \"new-github-issue-url\": \"0.2.1\",\n \"p-retry\": \"4.6.2\",\n \"pg\": \"8.14.1\",\n \"resolve\": \"1.22.10\",\n \"simple-statistics\": \"7.8.8\",\n \"sort-keys\": \"5.1.0\",\n \"source-map-support\": \"0.5.21\",\n \"sql-template-tag\": \"5.2.1\",\n \"stacktrace-parser\": \"0.1.11\",\n \"strip-ansi\": \"7.1.0\",\n \"strip-indent\": \"4.0.0\",\n \"tempy\": \"3.0.0\",\n \"ts-pattern\": \"5.6.2\",\n \"tsd\": \"0.31.2\",\n \"typescript\": \"5.4.5\",\n \"undici\": \"7.4.0\",\n \"zx\": \"8.4.1\"\n },\n \"peerDependencies\": {\n \"prisma\": \"*\",\n \"typescript\": \">=5.1.0\"\n },\n \"peerDependenciesMeta\": {\n \"prisma\": {\n \"optional\": true\n },\n \"typescript\": {\n \"optional\": true\n }\n },\n \"sideEffects\": false\n}", "import { GetPrismaClientConfig } from '@prisma/client-common'\n\nimport { Datasources } from '../../getPrismaClient'\nimport { getRuntime } from '../../utils/getRuntime'\nimport { PrismaClientInitializationError } from '../errors/PrismaClientInitializationError'\n\nexport function resolveDatasourceUrl({\n inlineDatasources,\n overrideDatasources,\n env,\n clientVersion,\n}: {\n inlineDatasources: GetPrismaClientConfig['inlineDatasources']\n overrideDatasources: Datasources\n env: Record<string, string | undefined>\n clientVersion: string\n}) {\n let resolvedUrl: string | undefined\n const datasourceName = Object.keys(inlineDatasources)[0]\n const datasourceUrl = inlineDatasources[datasourceName]?.url\n const overrideUrl = overrideDatasources[datasourceName]?.url\n\n if (datasourceName === undefined) {\n resolvedUrl = undefined\n } else if (overrideUrl) {\n resolvedUrl = overrideUrl\n } else if (datasourceUrl?.value) {\n resolvedUrl = datasourceUrl.value\n } else if (datasourceUrl?.fromEnvVar) {\n resolvedUrl = env[datasourceUrl.fromEnvVar]\n }\n\n // env var is set for use but url is undefined\n if (datasourceUrl?.fromEnvVar !== undefined && resolvedUrl === undefined) {\n if (\n (TARGET_BUILD_TYPE === 'edge' ||\n TARGET_BUILD_TYPE === 'wasm-engine-edge' ||\n TARGET_BUILD_TYPE === 'wasm-compiler-edge') &&\n getRuntime().id === 'workerd'\n ) {\n throw new PrismaClientInitializationError(\n `error: Environment variable not found: ${datasourceUrl.fromEnvVar}.\n\nIn Cloudflare module Workers, environment variables are available only in the Worker's \\`env\\` parameter of \\`fetch\\`.\nTo solve this, provide the connection string directly: https://pris.ly/d/cloudflare-datasource-url`,\n clientVersion,\n )\n }\n\n // error matches as much as possible the usual engine error\n throw new PrismaClientInitializationError(\n `error: Environment variable not found: ${datasourceUrl.fromEnvVar}.`,\n clientVersion,\n )\n }\n\n // should not happen: no override, no env, no direct value\n if (resolvedUrl === undefined) {\n throw new PrismaClientInitializationError(\n `error: Missing URL environment variable, value, or override.`,\n clientVersion,\n )\n }\n\n return resolvedUrl\n}\n", "// https://runtime-keys.proposal.wintercg.org/\nexport type RuntimeName = 'workerd' | 'deno' | 'netlify' | 'node' | 'bun' | 'edge-light' | '' /* unknown */\n\n/**\n * Indicates if running in Node.js or a Node.js compatible runtime.\n *\n * **Note:** When running code in Bun and Deno with Node.js compatibility mode, `isNode` flag will be also `true`, indicating running in a Node.js compatible runtime.\n */\nconst isNode = () => globalThis.process?.release?.name === 'node'\n\n/**\n * Indicates if running in Bun runtime.\n */\nconst isBun = () => !!globalThis.Bun || !!globalThis.process?.versions?.bun\n\n/**\n * Indicates if running in Deno runtime.\n */\nconst isDeno = () => !!globalThis.Deno\n\n/**\n * Indicates if running in Netlify runtime.\n */\nconst isNetlify = () => typeof globalThis.Netlify === 'object'\n\n/**\n * Indicates if running in EdgeLight (Vercel Edge) runtime.\n */\nconst isEdgeLight = () => typeof globalThis.EdgeRuntime === 'object'\n\n/**\n * Indicates if running in Cloudflare Workers runtime.\n * See: https://developers.cloudflare.com/workers/runtime-apis/web-standards/#navigatoruseragent\n */\nconst isWorkerd = () => globalThis.navigator?.userAgent === 'Cloudflare-Workers'\n\nfunction detectRuntime(): RuntimeName {\n // Note: we're currently not taking 'fastly' into account. Why?\n const runtimeChecks = [\n [isNetlify, 'netlify'],\n [isEdgeLight, 'edge-light'],\n [isWorkerd, 'workerd'],\n [isDeno, 'deno'],\n [isBun, 'bun'],\n [isNode, 'node'],\n ] as const\n\n const detectedRuntime =\n runtimeChecks\n // TODO: Transforming destructuring to the configured target environment ('chrome58', 'edge16', 'firefox57', 'safari11') is not supported yet,\n // so we can't write the following code yet:\n // ```\n // .flatMap(([isCurrentRuntime, runtime]) => isCurrentRuntime() ? [runtime] : [])\n // ```\n .flatMap((check) => (check[0]() ? [check[1]] : []))\n .at(0) ?? ''\n\n return detectedRuntime\n}\n\nconst runtimesPrettyNames = {\n node: 'Node.js',\n workerd: 'Cloudflare Workers',\n deno: 'Deno and Deno Deploy',\n netlify: 'Netlify Edge Functions',\n 'edge-light':\n 'Edge Runtime (Vercel Edge Functions, Vercel Edge Middleware, Next.js (Pages Router) Edge API Routes, Next.js (App Router) Edge Route Handlers or Next.js Middleware)',\n} as const\n\ntype GetRuntimeOutput = {\n id: RuntimeName\n prettyName: string\n isEdge: boolean\n}\n\nexport function getRuntime(): GetRuntimeOutput {\n const runtimeId = detectRuntime()\n\n return {\n id: runtimeId,\n // Fallback to the runtimeId if the runtime is not in the list\n prettyName: runtimesPrettyNames[runtimeId] || runtimeId,\n isEdge: ['workerd', 'deno', 'netlify', 'edge-light'].includes(runtimeId),\n }\n}\n", "import { QueryEngineConstructor, QueryEngineInstance, QueryEngineLogLevel } from '@prisma/client-common'\nimport { Debug } from '@prisma/debug'\nimport { bindAdapter, ErrorCapturingSqlDriverAdapter, ErrorRecord, ErrorRegistry } from '@prisma/driver-adapter-utils'\nimport type { BinaryTarget } from '@prisma/get-platform'\nimport { assertNodeAPISupported, binaryTargets, getBinaryTargetForCurrentPlatform } from '@prisma/get-platform'\nimport { assertAlways, EngineTrace, TracingHelper } from '@prisma/internals'\nimport { bold, green, red } from 'kleur/colors'\n\nimport { PrismaClientInitializationError } from '../../errors/PrismaClientInitializationError'\nimport { PrismaClientKnownRequestError } from '../../errors/PrismaClientKnownRequestError'\nimport { PrismaClientRustPanicError } from '../../errors/PrismaClientRustPanicError'\nimport { PrismaClientUnknownRequestError } from '../../errors/PrismaClientUnknownRequestError'\nimport { prismaGraphQLToJSError } from '../../errors/utils/prismaGraphQLToJSError'\nimport type { BatchQueryEngineResult, EngineConfig, RequestBatchOptions, RequestOptions } from '../common/Engine'\nimport { Engine } from '../common/Engine'\nimport { LogEmitter, LogEventType } from '../common/types/Events'\nimport { JsonQuery } from '../common/types/JsonProtocol'\nimport { EngineMetricsOptions, Metrics, MetricsOptionsJson, MetricsOptionsPrometheus } from '../common/types/Metrics'\nimport type {\n QueryEngineEvent,\n QueryEnginePanicEvent,\n QueryEngineQueryEvent,\n RustRequestError,\n SyncRustError,\n} from '../common/types/QueryEngine'\nimport { RequestError } from '../common/types/RequestError'\nimport type * as Tx from '../common/types/Transaction'\nimport { getBatchRequestPayload } from '../common/utils/getBatchRequestPayload'\nimport { getErrorMessageWithLink as genericGetErrorMessageWithLink } from '../common/utils/getErrorMessageWithLink'\nimport { getInteractiveTransactionId } from '../common/utils/getInteractiveTransactionId'\nimport { defaultLibraryLoader } from './DefaultLibraryLoader'\nimport { reactNativeLibraryLoader } from './ReactNativeLibraryLoader'\nimport type { Library, LibraryLoader } from './types/Library'\nimport { wasmLibraryLoader } from './WasmLibraryLoader'\n\nconst DRIVER_ADAPTER_EXTERNAL_ERROR = 'P2036'\nconst debug = Debug('prisma:client:libraryEngine')\n\nfunction isQueryEvent(event: QueryEngineEvent): event is QueryEngineQueryEvent {\n return event['item_type'] === 'query' && 'query' in event\n}\nfunction isPanicEvent(event: QueryEngineEvent): event is QueryEnginePanicEvent {\n if ('level' in event) {\n return event.level === 'error' && event['message'] === 'PANIC'\n } else {\n return false\n }\n}\n\nconst knownBinaryTargets: BinaryTarget[] = [...binaryTargets, 'native']\n\nconst MAX_REQUEST_ID = 0xffffffffffffffffn\nlet NEXT_REQUEST_ID = 1n\n\nfunction nextRequestId(): bigint {\n const requestId = NEXT_REQUEST_ID++\n if (NEXT_REQUEST_ID > MAX_REQUEST_ID) {\n NEXT_REQUEST_ID = 1n\n }\n return requestId\n}\n\nexport class LibraryEngine implements Engine<undefined> {\n name = 'LibraryEngine' as const\n engine?: ReturnType<typeof this.wrapEngine>\n libraryInstantiationPromise?: Promise<void>\n libraryStartingPromise?: Promise<void>\n libraryStoppingPromise?: Promise<void>\n libraryStarted: boolean\n executingQueryPromise?: Promise<any>\n config: EngineConfig\n QueryEngineConstructor?: QueryEngineConstructor\n libraryLoader: LibraryLoader\n library?: Library\n logEmitter: LogEmitter\n libQueryEnginePath?: string\n binaryTarget?: BinaryTarget\n datasourceOverrides?: Record<string, string>\n datamodel: string\n logQueries: boolean\n logLevel: QueryEngineLogLevel\n lastQuery?: string\n loggerRustPanic?: any\n tracingHelper: TracingHelper\n adapterPromise: Promise<ErrorCapturingSqlDriverAdapter> | undefined\n\n versionInfo?: {\n commit: string\n version: string\n }\n\n constructor(config: EngineConfig, libraryLoader?: LibraryLoader) {\n if (TARGET_BUILD_TYPE === 'react-native') {\n this.libraryLoader = reactNativeLibraryLoader\n } else if (TARGET_BUILD_TYPE === 'library') {\n this.libraryLoader = libraryLoader ?? defaultLibraryLoader\n\n // this can only be true if PRISMA_CLIENT_FORCE_WASM=true\n if (config.engineWasm !== undefined) {\n this.libraryLoader = libraryLoader ?? wasmLibraryLoader\n }\n } else if (TARGET_BUILD_TYPE === 'wasm-engine-edge') {\n this.libraryLoader = libraryLoader ?? wasmLibraryLoader\n } else {\n throw new Error(`Invalid TARGET_BUILD_TYPE: ${TARGET_BUILD_TYPE}`)\n }\n\n this.config = config\n this.libraryStarted = false\n this.logQueries = config.logQueries ?? false\n this.logLevel = config.logLevel ?? 'error'\n this.logEmitter = config.logEmitter\n this.datamodel = config.inlineSchema\n this.tracingHelper = config.tracingHelper\n\n if (config.enableDebugLogs) {\n this.logLevel = 'debug'\n }\n\n // compute the datasource override for library engine\n const dsOverrideName = Object.keys(config.overrideDatasources)[0]\n const dsOverrideUrl = config.overrideDatasources[dsOverrideName]?.url\n if (dsOverrideName !== undefined && dsOverrideUrl !== undefined) {\n this.datasourceOverrides = { [dsOverrideName]: dsOverrideUrl }\n }\n\n this.libraryInstantiationPromise = this.instantiateLibrary()\n }\n\n private wrapEngine(engine: QueryEngineInstance) {\n return {\n applyPendingMigrations: engine.applyPendingMigrations?.bind(engine),\n commitTransaction: this.withRequestId(engine.commitTransaction.bind(engine)),\n connect: this.withRequestId(engine.connect.bind(engine)),\n disconnect: this.withRequestId(engine.disconnect.bind(engine)),\n metrics: engine.metrics?.bind(engine),\n query: this.withRequestId(engine.query.bind(engine)),\n rollbackTransaction: this.withRequestId(engine.rollbackTransaction.bind(engine)),\n sdlSchema: engine.sdlSchema?.bind(engine),\n startTransaction: this.withRequestId(engine.startTransaction.bind(engine)),\n trace: engine.trace.bind(engine),\n free: engine.free?.bind(engine),\n }\n }\n\n private withRequestId<T extends unknown[], U>(\n fn: (...args: [...T, string]) => Promise<U>,\n ): (...args: T) => Promise<U> {\n return async (...args) => {\n const requestId = nextRequestId().toString()\n try {\n return await fn(...args, requestId)\n } finally {\n if (this.tracingHelper.isEnabled()) {\n const traceJson = await this.engine?.trace(requestId)\n if (traceJson) {\n const trace = JSON.parse(traceJson) as EngineTrace\n this.tracingHelper.dispatchEngineSpans(trace.spans)\n }\n }\n }\n }\n }\n\n async applyPendingMigrations(): Promise<void> {\n if (TARGET_BUILD_TYPE === 'react-native') {\n await this.start()\n await this.engine?.applyPendingMigrations!()\n } else {\n throw new Error('Cannot call this method from this type of engine instance')\n }\n }\n\n async transaction(\n action: 'start',\n headers: Tx.TransactionHeaders,\n options: Tx.Options,\n ): Promise<Tx.InteractiveTransactionInfo<undefined>>\n async transaction(\n action: 'commit',\n headers: Tx.TransactionHeaders,\n info: Tx.InteractiveTransactionInfo<undefined>,\n ): Promise<undefined>\n async transaction(\n action: 'rollback',\n headers: Tx.TransactionHeaders,\n info: Tx.InteractiveTransactionInfo<undefined>,\n ): Promise<undefined>\n async transaction(action: any, headers: Tx.TransactionHeaders, arg?: any) {\n await this.start()\n const adapter = await this.adapterPromise\n\n const headerStr = JSON.stringify(headers)\n\n let result: string | undefined\n if (action === 'start') {\n const jsonOptions = JSON.stringify({\n max_wait: arg.maxWait,\n timeout: arg.timeout,\n isolation_level: arg.isolationLevel,\n })\n\n result = await this.engine?.startTransaction(jsonOptions, headerStr)\n } else if (action === 'commit') {\n result = await this.engine?.commitTransaction(arg.id, headerStr)\n } else if (action === 'rollback') {\n result = await this.engine?.rollbackTransaction(arg.id, headerStr)\n }\n\n const response = this.parseEngineResponse<{ [K: string]: unknown }>(result)\n\n if (isUserFacingError(response)) {\n const externalError = this.getExternalAdapterError(response, adapter?.errorRegistry)\n if (externalError) {\n throw externalError.error\n }\n throw new PrismaClientKnownRequestError(response.message, {\n code: response.error_code as string,\n clientVersion: this.config.clientVersion as string,\n meta: response.meta,\n })\n } else if (typeof response.message === 'string') {\n throw new PrismaClientUnknownRequestError(response.message, {\n clientVersion: this.config.clientVersion!,\n })\n }\n\n return response as Tx.InteractiveTransactionInfo<undefined> | undefined\n }\n\n private async instantiateLibrary(): Promise<void> {\n debug('internalSetup')\n if (this.libraryInstantiationPromise) {\n return this.libraryInstantiationPromise\n }\n\n if (TARGET_BUILD_TYPE === 'library') {\n assertNodeAPISupported()\n }\n\n this.binaryTarget = await this.getCurrentBinaryTarget()\n\n await this.tracingHelper.runInChildSpan('load_engine', () => this.loadEngine())\n\n this.version()\n }\n\n private async getCurrentBinaryTarget() {\n if (TARGET_BUILD_TYPE === 'library') {\n if (this.binaryTarget) return this.binaryTarget\n const binaryTarget = await this.tracingHelper.runInChildSpan('detect_platform', () =>\n getBinaryTargetForCurrentPlatform(),\n )\n if (!knownBinaryTargets.includes(binaryTarget)) {\n throw new PrismaClientInitializationError(\n `Unknown ${red('PRISMA_QUERY_ENGINE_LIBRARY')} ${red(bold(binaryTarget))}. Possible binaryTargets: ${green(\n knownBinaryTargets.join(', '),\n )} or a path to the query engine library.\nYou may have to run ${green('prisma generate')} for your changes to take effect.`,\n this.config.clientVersion!,\n )\n }\n\n return binaryTarget\n }\n\n return undefined\n }\n\n private parseEngineResponse<T>(response?: string): T {\n if (!response) {\n throw new PrismaClientUnknownRequestError(`Response from the Engine was empty`, {\n clientVersion: this.config.clientVersion!,\n })\n }\n\n try {\n return JSON.parse(response) as T\n } catch (err) {\n throw new PrismaClientUnknownRequestError(`Unable to JSON.parse response from engine`, {\n clientVersion: this.config.clientVersion!,\n })\n }\n }\n\n private async loadEngine(): Promise<void> {\n if (this.engine) {\n return\n }\n\n if (!this.QueryEngineConstructor) {\n this.library = await this.libraryLoader.loadLibrary(this.config)\n this.QueryEngineConstructor = this.library.QueryEngine\n }\n try {\n // Using strong reference to `this` inside of log callback will prevent\n // this instance from being GCed while native engine is alive. At the\n // same time, `this.engine` field will prevent native instance from\n // being GCed. Using weak ref helps to avoid this cycle\n const weakThis = new WeakRef(this)\n\n if (!this.adapterPromise) {\n this.adapterPromise = this.config.adapter?.connect()?.then(bindAdapter)\n }\n const adapter = await this.adapterPromise\n\n if (adapter) {\n debug('Using driver adapter: %O', adapter)\n }\n\n this.engine = this.wrapEngine(\n new this.QueryEngineConstructor(\n {\n datamodel: this.datamodel,\n env: process.env,\n logQueries: this.config.logQueries ?? false,\n ignoreEnvVarErrors: true,\n datasourceOverrides: this.datasourceOverrides ?? {},\n logLevel: this.logLevel,\n configDir: this.config.cwd,\n engineProtocol: 'json',\n enableTracing: this.tracingHelper.isEnabled(),\n },\n (log) => {\n weakThis.deref()?.logger(log)\n },\n adapter,\n ),\n )\n } catch (_e) {\n const e = _e as Error\n const error = this.parseInitError(e.message)\n if (typeof error === 'string') {\n throw e\n } else {\n throw new PrismaClientInitializationError(error.message, this.config.clientVersion!, error.error_code)\n }\n }\n }\n\n private logger(log: string) {\n const event = this.parseEngineResponse<QueryEngineEvent | null>(log)\n if (!event) return\n\n event.level = event?.level.toLowerCase() ?? 'unknown'\n if (isQueryEvent(event)) {\n this.logEmitter.emit('query', {\n timestamp: new Date(),\n query: event.query,\n params: event.params,\n duration: Number(event.duration_ms),\n target: event.module_path,\n })\n } else if (isPanicEvent(event) && TARGET_BUILD_TYPE !== 'wasm-engine-edge') {\n // The error built is saved to be thrown later\n this.loggerRustPanic = new PrismaClientRustPanicError(\n getErrorMessageWithLink(\n this,\n `${event.message}: ${event.reason} in ${event.file}:${event.line}:${event.column}`,\n ),\n this.config.clientVersion!,\n )\n } else {\n this.logEmitter.emit(event.level as LogEventType, {\n timestamp: new Date(),\n message: event.message,\n target: event.module_path,\n })\n }\n }\n\n private parseInitError(str: string): SyncRustError | string {\n try {\n const error = JSON.parse(str)\n return error\n } catch (e) {\n //\n }\n return str\n }\n\n private parseRequestError(str: string): RustRequestError | string {\n try {\n const error = JSON.parse(str)\n return error\n } catch (e) {\n //\n }\n return str\n }\n\n onBeforeExit() {\n throw new Error(\n '\"beforeExit\" hook is not applicable to the library engine since Prisma 5.0.0, it is only relevant and implemented for the binary engine. Please add your event listener to the `process` object directly instead.',\n )\n }\n\n async start(): Promise<void> {\n if (!this.libraryInstantiationPromise) {\n this.libraryInstantiationPromise = this.instantiateLibrary()\n }\n await this.libraryInstantiationPromise\n await this.libraryStoppingPromise\n\n if (this.libraryStartingPromise) {\n debug(`library already starting, this.libraryStarted: ${this.libraryStarted}`)\n return this.libraryStartingPromise\n }\n\n if (this.libraryStarted) {\n return\n }\n\n const startFn = async () => {\n debug('library starting')\n\n try {\n const headers = {\n traceparent: this.tracingHelper.getTraceParent(),\n }\n\n await this.engine?.connect(JSON.stringify(headers))\n\n this.libraryStarted = true\n\n if (!this.adapterPromise) {\n this.adapterPromise = this.config.adapter?.connect()?.then(bindAdapter)\n }\n await this.adapterPromise\n\n debug('library started')\n } catch (err) {\n const error = this.parseInitError(err.message as string)\n\n // The error message thrown by the query engine should be a stringified JSON\n // if parsing fails then we just reject the error\n if (typeof error === 'string') {\n throw err\n } else {\n throw new PrismaClientInitializationError(error.message, this.config.clientVersion!, error.error_code)\n }\n } finally {\n this.libraryStartingPromise = undefined\n }\n }\n\n this.libraryStartingPromise = this.tracingHelper.runInChildSpan('connect', startFn)\n\n return this.libraryStartingPromise\n }\n\n async stop(): Promise<void> {\n await this.libraryInstantiationPromise\n await this.libraryStartingPromise\n await this.executingQueryPromise\n\n if (this.libraryStoppingPromise) {\n debug('library is already stopping')\n return this.libraryStoppingPromise\n }\n\n if (!this.libraryStarted) {\n await (await this.adapterPromise)?.dispose()\n this.adapterPromise = undefined\n return\n }\n\n const stopFn = async () => {\n await new Promise((r) => setImmediate(r)) // defer to next tick\n\n debug('library stopping')\n\n const headers = {\n traceparent: this.tracingHelper.getTraceParent(),\n }\n\n await this.engine?.disconnect(JSON.stringify(headers))\n // Only the WASM engine has a free method that we need to call to ensure the engine is freed upon disconnect.\n // Otherwise it causes memory leaks as the WASM engine instance still references this LibraryEngine.\n if (this.engine?.free) {\n this.engine.free()\n }\n this.engine = undefined\n\n this.libraryStarted = false\n this.libraryStoppingPromise = undefined\n this.libraryInstantiationPromise = undefined\n\n await (await this.adapterPromise)?.dispose()\n this.adapterPromise = undefined\n\n debug('library stopped')\n }\n\n this.libraryStoppingPromise = this.tracingHelper.runInChildSpan('disconnect', stopFn)\n\n return this.libraryStoppingPromise\n }\n\n version(): string {\n this.versionInfo = this.library?.version()\n return this.versionInfo?.version ?? 'unknown'\n }\n /**\n * Triggers an artificial panic\n */\n debugPanic(message?: string): Promise<never> {\n return this.library?.debugPanic(message) as Promise<never>\n }\n\n async request<T>(\n query: JsonQuery,\n { traceparent, interactiveTransaction }: RequestOptions<undefined>,\n ): Promise<{ data: T }> {\n debug(`sending request, this.libraryStarted: ${this.libraryStarted}`)\n const headerStr = JSON.stringify({ traceparent }) // object equivalent to http headers for the library\n const queryStr = JSON.stringify(query)\n\n try {\n await this.start()\n const adapter = await this.adapterPromise\n\n this.executingQueryPromise = this.engine?.query(queryStr, headerStr, interactiveTransaction?.id)\n\n this.lastQuery = queryStr\n const data = this.parseEngineResponse<any>(await this.executingQueryPromise)\n\n if (data.errors) {\n if (data.errors.length === 1) {\n throw this.buildQueryError(data.errors[0], adapter?.errorRegistry)\n }\n // this case should not happen, as the query engine only returns one error\n throw new PrismaClientUnknownRequestError(JSON.stringify(data.errors), {\n clientVersion: this.config.clientVersion!,\n })\n } else if (this.loggerRustPanic) {\n throw this.loggerRustPanic\n }\n return { data }\n } catch (e: any) {\n if (e instanceof PrismaClientInitializationError) {\n throw e\n }\n if (e.code === 'GenericFailure' && e.message?.startsWith('PANIC:') && TARGET_BUILD_TYPE !== 'wasm-engine-edge') {\n throw new PrismaClientRustPanicError(getErrorMessageWithLink(this, e.message), this.config.clientVersion!)\n }\n const error = this.parseRequestError(e.message)\n if (typeof error === 'string') {\n throw e\n } else {\n throw new PrismaClientUnknownRequestError(`${error.message}\\n${error.backtrace}`, {\n clientVersion: this.config.clientVersion!,\n })\n }\n }\n }\n\n async requestBatch<T>(\n queries: JsonQuery[],\n { transaction, traceparent }: RequestBatchOptions<undefined>,\n ): Promise<BatchQueryEngineResult<T>[]> {\n debug('requestBatch')\n const request = getBatchRequestPayload(queries, transaction)\n await this.start()\n const adapter = await this.adapterPromise\n\n this.lastQuery = JSON.stringify(request)\n\n this.executingQueryPromise = this.engine?.query(\n this.lastQuery,\n JSON.stringify({ traceparent }),\n getInteractiveTransactionId(transaction),\n )\n\n const result = await this.executingQueryPromise\n const data = this.parseEngineResponse<any>(result)\n\n if (data.errors) {\n if (data.errors.length === 1) {\n throw this.buildQueryError(data.errors[0], adapter?.errorRegistry)\n }\n // this case should not happen, as the query engine only returns one error\n throw new PrismaClientUnknownRequestError(JSON.stringify(data.errors), {\n clientVersion: this.config.clientVersion!,\n })\n }\n\n const { batchResult, errors } = data\n if (Array.isArray(batchResult)) {\n return batchResult.map((result) => {\n if (result.errors && result.errors.length > 0) {\n return this.loggerRustPanic ?? this.buildQueryError(result.errors[0], adapter?.errorRegistry)\n }\n return {\n data: result,\n }\n })\n } else {\n if (errors && errors.length === 1) {\n throw new Error(errors[0].error)\n }\n throw new Error(JSON.stringify(data))\n }\n }\n\n private buildQueryError(error: RequestError, registry?: ErrorRegistry) {\n if (error.user_facing_error.is_panic && TARGET_BUILD_TYPE !== 'wasm-engine-edge') {\n return new PrismaClientRustPanicError(\n getErrorMessageWithLink(this, error.user_facing_error.message),\n this.config.clientVersion!,\n )\n }\n\n const externalError = this.getExternalAdapterError(error.user_facing_error, registry)\n\n return externalError\n ? externalError.error\n : prismaGraphQLToJSError(error, this.config.clientVersion!, this.config.activeProvider!)\n }\n\n private getExternalAdapterError(\n error: RequestError['user_facing_error'],\n registry?: ErrorRegistry,\n ): ErrorRecord | undefined {\n if (error.error_code === DRIVER_ADAPTER_EXTERNAL_ERROR && registry) {\n const id = error.meta?.id\n assertAlways(typeof id === 'number', 'Malformed external JS error received from the engine')\n const errorRecord = registry.consumeError(id)\n assertAlways(errorRecord, `External error with reported id was not registered`)\n return errorRecord\n }\n return undefined\n }\n\n async metrics(options: MetricsOptionsJson): Promise<Metrics>\n async metrics(options: MetricsOptionsPrometheus): Promise<string>\n async metrics(options: EngineMetricsOptions): Promise<Metrics | string> {\n await this.start()\n // TODO: add `metrics` method stub in c-abi engine and make it non-optional.\n // The stub should return an error like in WASM so we handle this gracefully.\n const responseString = await this.engine!.metrics!(JSON.stringify(options))\n if (options.format === 'prometheus') {\n return responseString\n }\n return this.parseEngineResponse(responseString)\n }\n}\n\nfunction isUserFacingError(e: unknown): e is RequestError['user_facing_error'] {\n return typeof e === 'object' && e !== null && e['error_code'] !== undefined\n}\n\nfunction getErrorMessageWithLink(engine: LibraryEngine, title: string) {\n return genericGetErrorMessageWithLink({\n binaryTarget: engine.binaryTarget,\n title,\n version: engine.config.clientVersion!,\n engineVersion: engine.versionInfo?.commit,\n database: engine.config.activeProvider as any,\n query: engine.lastQuery!,\n })\n}\n", "import { TransactionOptions } from '../Engine'\n\nexport function getInteractiveTransactionId(transaction?: TransactionOptions<unknown>): string | undefined {\n if (transaction?.kind === 'itx') {\n return transaction.options.id\n }\n return undefined\n}\n", "/* eslint-disable @typescript-eslint/require-await */\n\nimport { QueryEngineConfig, QueryEngineInstance } from '@prisma/client-common'\n\nimport { PrismaClientInitializationError } from '../../errors/PrismaClientInitializationError'\nimport { LibraryLoader } from './types/Library'\n\ntype PrismaCreateOptions = {\n datamodel: string\n logLevel: string\n logQueries: boolean\n logCallback: (msg: string) => void\n ignoreEnvVarErrors: boolean\n datasourceOverrides: object | string\n env: object | string\n enableTracing: boolean\n}\n\ntype QueryEngineObject = object\n\ndeclare const __PrismaProxy: {\n create: (options: PrismaCreateOptions) => QueryEngineObject\n connect: (engine: QueryEngineObject, trace: string, requestId: string) => void\n execute: (\n engine: QueryEngineObject,\n body: string,\n headers: string,\n txId: string | undefined,\n requestId: string,\n ) => Promise<string>\n startTransaction: (engine: QueryEngineObject, body: string, headers: string, requestId: string) => string\n commitTransaction: (engine: QueryEngineObject, txId: string, headers: string, requestId: string) => string\n rollbackTransaction: (engine: QueryEngineObject, txId: string, headers: string, requestId: string) => string\n disconnect: (engine: QueryEngineObject, headers: string, requestId: string) => void\n trace: (engine: QueryEngineObject, requestId: string) => Promise<string | null>\n pushSchema: (engine: QueryEngineObject, schema: string) => void\n applyPendingMigrations: (engine: QueryEngineObject) => void\n}\n\nclass ReactNativeQueryEngine implements QueryEngineInstance {\n private engineObject: QueryEngineObject\n constructor(config: QueryEngineConfig, logger: (log: string) => void, _adapter?: any) {\n this.engineObject = __PrismaProxy.create({\n datamodel: config.datamodel,\n env: process.env,\n ignoreEnvVarErrors: true,\n datasourceOverrides: config.datasourceOverrides ?? {},\n logLevel: config.logLevel,\n logQueries: config.logQueries ?? false,\n logCallback: logger,\n enableTracing: config.enableTracing,\n })\n }\n\n async connect(headers: string, requestId: string): Promise<void> {\n return __PrismaProxy.connect(this.engineObject, headers, requestId)\n }\n\n async disconnect(headers: string, requestId: string): Promise<void> {\n return __PrismaProxy.disconnect(this.engineObject, headers, requestId)\n }\n\n query(requestStr: string, headersStr: string, transactionId: string | undefined, requestId: string): Promise<string> {\n return __PrismaProxy.execute(this.engineObject, requestStr, headersStr, transactionId, requestId)\n }\n\n compile(): Promise<string> {\n throw new Error('not implemented')\n }\n\n sdlSchema(): Promise<string> {\n return Promise.resolve('{}')\n }\n\n dmmf(_traceparent: string): Promise<string> {\n return Promise.resolve('{}')\n }\n\n async startTransaction(options: string, traceHeaders: string, requestId: string): Promise<string> {\n return __PrismaProxy.startTransaction(this.engineObject, options, traceHeaders, requestId)\n }\n\n async commitTransaction(id: string, traceHeaders: string, requestId: string): Promise<string> {\n return __PrismaProxy.commitTransaction(this.engineObject, id, traceHeaders, requestId)\n }\n\n async rollbackTransaction(id: string, traceHeaders: string, requestId: string): Promise<string> {\n return __PrismaProxy.rollbackTransaction(this.engineObject, id, traceHeaders, requestId)\n }\n\n metrics(_options: string): Promise<string> {\n return Promise.resolve('{}')\n }\n\n async applyPendingMigrations(): Promise<void> {\n return __PrismaProxy.applyPendingMigrations(this.engineObject)\n }\n\n trace(requestId: string): Promise<string | null> {\n return __PrismaProxy.trace(this.engineObject, requestId)\n }\n}\n\n// unlike other implementations, on react-native the library needs to be loaded\n// before the engine can be created, so this loader just checks the bindings are there\n// and returns a dummy constructor that just wraps the methods so that the libraryEngine remains agnosti\nexport const reactNativeLibraryLoader: LibraryLoader = {\n async loadLibrary(config) {\n if (!__PrismaProxy) {\n throw new PrismaClientInitializationError(\n '__PrismaProxy not detected make sure React Native bindings are installed',\n config.clientVersion!,\n )\n }\n\n return {\n debugPanic() {\n return Promise.reject('{}') // not used\n },\n dmmf() {\n return Promise.resolve('{}') // not used\n },\n version() {\n return { commit: 'unknown', version: 'unknown' } // not used\n },\n QueryEngine: ReactNativeQueryEngine,\n }\n },\n}\n", "import type { SqlDriverAdapterFactory } from '@prisma/driver-adapter-utils'\nimport { isPrismaPostgres } from '@prisma/internals'\n\n/**\n * - `copyEngine === false` implies Prisma Accelerate usage\n * - If we detect Prisma Accelerate usage, we want to recommend using `--no-engine` in production.\n * - Driver Adapters should NOT be used with `prisma generate `--no-engine`\n * - Driver Adapters should NOT be imported from `@prisma/client/edge` endpoint\n * - Accelerate should NOT be used with Driver Adapters\n * - Prisma Postgres can be used with either Accelerate or Driver Adapters\n */\n\ntype WarningDiagnostic = { _tag: 'warning'; value: [key: string, message: string, ...args: unknown[]] }\ntype ErrorDiagnostic = { _tag: 'error'; value: string }\n\ntype ValidateEngineInstanceConfigParams = {\n url?: string\n adapter?: SqlDriverAdapterFactory\n copyEngine: boolean\n\n /**\n * The type indicates that {@link validateEngineInstanceConfig} only cares about\n * the {@link targetBuildType} being `edge`. If all other input options are fixed,\n * changing the value of this param to something else will exhibit no different\n * validation behavior.\n */\n targetBuildType: 'edge' | (string & {}) // typeof TARGET_BUILD_TYPE\n}\n\ntype WithDiagnostics =\n | {\n ok: true\n\n diagnostics: {\n warnings: WarningDiagnostic[]\n errors?: never\n }\n }\n | {\n ok: false\n\n diagnostics: {\n warnings: WarningDiagnostic[]\n errors: [ErrorDiagnostic, ...ErrorDiagnostic[]]\n }\n }\n\ntype ValidateEngineInstanceConfigOutput = WithDiagnostics & {\n isUsing: {\n accelerate: boolean\n ppg: boolean\n driverAdapters: boolean\n }\n}\n\n/**\n * Validates the engine instance configuration, without side effects.\n * @param url The URL passed to the Prisma Client constructor\n * @param adapter The driver adapter passed to the Prisma Client constructor\n * @param copyEngine Whether the engine was copied. `prisma generate --no-engine` implies `copyEngine: false`\n * @param targetBuildType The target build type\n */\nexport function validateEngineInstanceConfig({\n url,\n adapter,\n copyEngine,\n targetBuildType,\n}: ValidateEngineInstanceConfigParams): ValidateEngineInstanceConfigOutput {\n const warnings = [] as WarningDiagnostic[]\n const errors = [] as ErrorDiagnostic[]\n\n const pushWarning = (input: WarningDiagnostic['value']) => {\n warnings.push({ _tag: 'warning', value: input })\n }\n\n const pushError = (input: string[]) => {\n const value = input.join('\\n')\n errors.push({ _tag: 'error', value })\n }\n\n const isUsingPrismaAccelerate = Boolean(url?.startsWith('prisma://'))\n const isUsingPrismaPostgres = isPrismaPostgres(url)\n const isUsingDriverAdapters = Boolean(adapter)\n const isAccelerateUrlScheme = isUsingPrismaAccelerate || isUsingPrismaPostgres\n\n if (\n !isUsingDriverAdapters &&\n copyEngine &&\n isAccelerateUrlScheme &&\n targetBuildType !== 'client' &&\n targetBuildType !== 'wasm-compiler-edge'\n ) {\n pushWarning([\n 'recommend--no-engine',\n 'In production, we recommend using `prisma generate --no-engine` (See: `prisma generate --help`)',\n ])\n }\n\n const isAccelerateConfigured = isAccelerateUrlScheme || !copyEngine\n\n if (isUsingDriverAdapters && (isAccelerateConfigured || targetBuildType === 'edge')) {\n if (targetBuildType === 'edge') {\n pushError([\n `Prisma Client was configured to use the \\`adapter\\` option but it was imported via its \\`/edge\\` endpoint.`,\n `Please either remove the \\`/edge\\` endpoint or remove the \\`adapter\\` from the Prisma Client constructor.`,\n ])\n } else if (isAccelerateUrlScheme) {\n pushError([\n `You've provided both a driver adapter and an Accelerate database URL. Driver adapters currently cannot connect to Accelerate.`,\n `Please provide either a driver adapter with a direct database URL or an Accelerate URL and no driver adapter.`,\n ])\n } else if (!copyEngine) {\n pushError([\n `Prisma Client was configured to use the \\`adapter\\` option but \\`prisma generate\\` was run with \\`--no-engine\\`.`,\n `Please run \\`prisma generate\\` without \\`--no-engine\\` to be able to use Prisma Client with the adapter.`,\n ])\n }\n }\n\n const isUsing = {\n accelerate: isAccelerateConfigured,\n ppg: isUsingPrismaPostgres,\n driverAdapters: isUsingDriverAdapters,\n }\n\n function isNonEmptyArray<T>(arr: T[]): arr is [T, ...T[]] {\n return arr.length > 0\n }\n\n if (isNonEmptyArray(errors)) {\n return {\n ok: false,\n diagnostics: {\n warnings,\n errors,\n },\n isUsing,\n }\n }\n\n return {\n ok: true,\n diagnostics: { warnings },\n isUsing,\n }\n}\n", "import { GetPrismaClientConfig } from '@prisma/client-common'\n\ntype Config = Pick<GetPrismaClientConfig, 'generator'>\n\n/**\n * Get preview features from the configuration stored in the generated client.\n */\nexport function getPreviewFeatures({ generator }: Config): string[] {\n return generator?.previewFeatures ?? []\n}\n", "export const rawCommandArgsMapper = (command: object) => ({\n command,\n})\n", "import { Debug } from '@prisma/debug'\nimport { Sql } from 'sql-template-tag'\n\nimport { MiddlewareArgsMapper } from '../../getPrismaClient'\nimport { mssqlPreparedStatement } from '../../utils/mssqlPreparedStatement'\nimport { serializeRawParameters } from '../../utils/serializeRawParameters'\nimport { isTypedSql } from '../types/exported'\nimport { RawQueryArgs } from '../types/exported/RawQueryArgs'\n\nconst ALTER_RE = /^(\\s*alter\\s)/i\n\nconst debug = Debug('prisma:client')\n\n// TODO also check/disallow for CREATE, DROP\nexport function checkAlter(activeProvider: string, query: string, values: unknown[], invalidCall: string) {\n if (activeProvider !== 'postgresql' && activeProvider !== 'cockroachdb') {\n return\n }\n if (values.length > 0 && ALTER_RE.exec(query)) {\n // See https://github.com/prisma/prisma-client-js/issues/940 for more info\n throw new Error(`Running ALTER using ${invalidCall} is not supported\nUsing the example below you can still execute your query with Prisma, but please note that it is vulnerable to SQL injection attacks and requires you to take care of input sanitization.\n\nExample:\n await prisma.$executeRawUnsafe(\\`ALTER USER prisma WITH PASSWORD '\\${password}'\\`)\n\nMore Information: https://pris.ly/d/execute-raw\n`)\n }\n}\n\ntype RawQueryArgsMapperInput = {\n clientMethod: string\n activeProvider: string\n}\n\nexport const rawQueryArgsMapper =\n ({ clientMethod, activeProvider }: RawQueryArgsMapperInput) =>\n (args: RawQueryArgs) => {\n // TODO Clean up types\n let queryString = ''\n let parameters: { values: string; __prismaRawParameters__: true } | undefined\n if (isTypedSql(args)) {\n queryString = args.sql\n parameters = {\n values: serializeRawParameters(args.values),\n __prismaRawParameters__: true,\n }\n } else if (Array.isArray(args)) {\n // If this was called as prisma.$executeRaw(<SQL>, [...values]), assume it is a pre-prepared SQL statement, and forward it without any changes\n const [query, ...values] = args\n queryString = query\n parameters = {\n values: serializeRawParameters(values || []),\n __prismaRawParameters__: true,\n }\n } else {\n // If this was called as prisma.$executeRaw`<SQL>` try to generate a SQL prepared statement\n switch (activeProvider) {\n case 'sqlite':\n case 'mysql': {\n queryString = args.sql\n parameters = {\n values: serializeRawParameters(args.values),\n __prismaRawParameters__: true,\n }\n break\n }\n\n case 'cockroachdb':\n case 'postgresql':\n case 'postgres': {\n queryString = args.text\n\n parameters = {\n values: serializeRawParameters(args.values),\n __prismaRawParameters__: true,\n }\n break\n }\n\n case 'sqlserver': {\n queryString = mssqlPreparedStatement(args)\n parameters = {\n values: serializeRawParameters(args.values),\n __prismaRawParameters__: true,\n }\n break\n }\n default: {\n throw new Error(`The ${activeProvider} provider does not support ${clientMethod}`)\n }\n }\n }\n\n if (parameters?.values) {\n debug(`prisma.${clientMethod}(${queryString}, ${parameters.values})`)\n } else {\n debug(`prisma.${clientMethod}(${queryString})`)\n }\n\n return { query: queryString, parameters }\n }\n\ntype MiddlewareRawArgsTemplateString = [string[], ...unknown[]]\ntype MiddlewareRawArgsSql = [Sql]\n\nexport const templateStringMiddlewareArgsMapper: MiddlewareArgsMapper<Sql, MiddlewareRawArgsTemplateString> = {\n requestArgsToMiddlewareArgs(sql) {\n return [sql.strings, ...sql.values]\n },\n\n middlewareArgsToRequestArgs(requestArgs) {\n const [strings, ...values] = requestArgs\n return new Sql(strings, values)\n },\n}\n\nexport const sqlMiddlewareArgsMapper: MiddlewareArgsMapper<Sql, MiddlewareRawArgsSql> = {\n requestArgsToMiddlewareArgs(sql) {\n return [sql]\n },\n\n middlewareArgsToRequestArgs(requestArgs) {\n return requestArgs[0]\n },\n}\n", "import type { Sql } from 'sql-template-tag'\n\n// Generate something like: SELECT * FROM User WHERE name = @P1 AND email = @P2 ...\nexport const mssqlPreparedStatement = (sql: Sql) => {\n return sql.strings.reduce((acc, str, idx) => `${acc}@P${idx}${str}`)\n}\n", "import Decimal from 'decimal.js'\n\nimport { isDate } from './date'\n\nexport function serializeRawParameters(parameters: any[]): string {\n try {\n return serializeRawParametersInternal(parameters, 'fast')\n } catch (error) {\n // Got TypeError, try replacing values unsupported by JSON (i.e., BigInts)\n // with strings inside arrays and objects.\n return serializeRawParametersInternal(parameters, 'slow')\n }\n}\n\nfunction serializeRawParametersInternal(parameters: any[], objectSerialization: 'fast' | 'slow'): string {\n return JSON.stringify(parameters.map((parameter) => encodeParameter(parameter, objectSerialization)))\n}\n\nfunction encodeParameter(parameter: any, objectSerialization: 'fast' | 'slow'): unknown {\n if (Array.isArray(parameter)) {\n return parameter.map((item) => encodeParameter(item, objectSerialization))\n }\n if (typeof parameter === 'bigint') {\n return {\n prisma__type: 'bigint',\n prisma__value: parameter.toString(),\n }\n }\n\n if (isDate(parameter)) {\n return {\n prisma__type: 'date',\n prisma__value: parameter.toJSON(),\n }\n }\n\n if (Decimal.isDecimal(parameter)) {\n return {\n prisma__type: 'decimal',\n prisma__value: parameter.toJSON(),\n }\n }\n\n if (Buffer.isBuffer(parameter)) {\n return {\n prisma__type: 'bytes',\n prisma__value: parameter.toString('base64'),\n }\n }\n\n if (isArrayBufferLike(parameter)) {\n return {\n prisma__type: 'bytes',\n prisma__value: Buffer.from(parameter).toString('base64'),\n }\n }\n\n if (ArrayBuffer.isView(parameter)) {\n const { buffer, byteOffset, byteLength } = parameter\n return {\n prisma__type: 'bytes',\n prisma__value: Buffer.from(buffer, byteOffset, byteLength).toString('base64'),\n }\n }\n\n if (typeof parameter === 'object' && objectSerialization === 'slow') {\n return preprocessObject(parameter)\n }\n\n return parameter\n}\n\nfunction isArrayBufferLike(value: any): value is ArrayBufferLike {\n if (value instanceof ArrayBuffer || value instanceof SharedArrayBuffer) {\n return true\n }\n\n if (typeof value === 'object' && value !== null) {\n return value[Symbol.toStringTag] === 'ArrayBuffer' || value[Symbol.toStringTag] === 'SharedArrayBuffer'\n }\n\n return false\n}\n\nfunction preprocessObject(obj: any): unknown {\n if (typeof obj !== 'object' || obj === null) {\n return obj\n }\n\n if (typeof obj.toJSON === 'function') {\n return obj.toJSON()\n }\n\n // TODO: map from blaze would've been convenient here to map arrays and objects uniformly,\n // but importing it in this file causes compilation errors in tsd tests.\n\n if (Array.isArray(obj)) {\n return obj.map(preprocessValueInObject)\n }\n\n const result = {} as any\n\n for (const key of Object.keys(obj as object)) {\n result[key] = preprocessValueInObject(obj[key])\n }\n\n return result\n}\n\nfunction preprocessValueInObject(value: any): unknown {\n if (typeof value === 'bigint') {\n return value.toString()\n }\n\n return preprocessObject(value)\n}\n", "import type { PrismaOperationSpec, PrismaPromise, PrismaPromiseTransaction } from './PrismaPromise'\n\nexport type PrismaPromiseCallback = (transaction?: PrismaPromiseTransaction) => Promise<unknown>\n\n/**\n * Creates a [[PrismaPromise]]. It is Prisma's implementation of `Promise` which\n * is essentially a proxy for `Promise`. All the transaction-compatible client\n * methods return one, this allows for pre-preparing queries without executing\n * them until `.then` is called. It's the foundation of Prisma's query batching.\n * @param callback that will be wrapped within our promise implementation\n * @see [[PrismaPromise]]\n * @returns\n */\nexport type PrismaPromiseFactory = <T extends PrismaOperationSpec<unknown>>(\n callback: PrismaPromiseCallback,\n op?: T,\n) => PrismaPromise<unknown>\n\n/**\n * Creates a factory, that allows creating PrismaPromises, bound to a specific transactions\n * @param transaction\n * @returns\n */\nexport function createPrismaPromiseFactory(transaction?: PrismaPromiseTransaction): PrismaPromiseFactory {\n return function createPrismaPromise<TSpec extends PrismaOperationSpec<unknown>>(\n callback: PrismaPromiseCallback,\n op?: TSpec,\n ): PrismaPromise<unknown, TSpec> {\n let promise: PrismaPromise<unknown> | undefined\n const _callback = (callbackTransaction = transaction): PrismaPromise<unknown> => {\n try {\n // promises cannot be triggered twice after resolving\n if (callbackTransaction === undefined || callbackTransaction?.kind === 'itx') {\n return (promise ??= valueToPromise(callback(callbackTransaction)))\n }\n\n // but for batch tx we can trigger them again & again\n return valueToPromise(callback(callbackTransaction))\n } catch (error) {\n // if the callback throws, then we reject the promise\n // and that is because exceptions are not always async\n return Promise.reject(error) as PrismaPromise<unknown>\n }\n }\n\n return {\n get spec() {\n return op!\n },\n\n then(onFulfilled, onRejected) {\n return _callback().then(onFulfilled, onRejected)\n },\n catch(onRejected) {\n return _callback().catch(onRejected)\n },\n finally(onFinally) {\n return _callback().finally(onFinally)\n },\n\n requestTransaction(batchTransaction) {\n const promise = _callback(batchTransaction)\n\n if (promise.requestTransaction) {\n // we want to have support for nested promises\n return promise.requestTransaction(batchTransaction)\n }\n\n return promise\n },\n [Symbol.toStringTag]: 'PrismaPromise',\n }\n }\n}\n\nfunction valueToPromise<T>(thing: T): PrismaPromise<T> {\n if (typeof thing['then'] === 'function') {\n return thing as PrismaPromise<T>\n }\n\n return Promise.resolve(thing) as PrismaPromise<T>\n}\n", "import type { Context } from '@opentelemetry/api'\nimport { EngineSpan, ExtendedSpanOptions, SpanCallback, TracingHelper, version } from '@prisma/internals'\n\nconst majorVersion = version.split('.')[0]\n\nexport const disabledTracingHelper: TracingHelper = {\n isEnabled() {\n return false\n },\n getTraceParent() {\n // https://www.w3.org/TR/trace-context/#examples-of-http-traceparent-headers\n // If traceparent ends with -00 this trace will not be sampled\n // the query engine needs the `10` for the span and trace id otherwise it does not parse this\n return `00-10-10-00`\n },\n\n dispatchEngineSpans() {},\n\n getActiveContext() {\n return undefined\n },\n\n runInChildSpan<R>(options: string | ExtendedSpanOptions, callback: SpanCallback<R>): R {\n return callback()\n },\n}\n\n/**\n * Tracing helper that can dynamically switch between enabled/disabled states\n * Needed because tracing can be disabled and enabled with the calls to\n * PrismaInstrumentation::disable/enable at any point\n */\nclass DynamicTracingHelper implements TracingHelper {\n isEnabled(): boolean {\n return this.getGlobalTracingHelper().isEnabled()\n }\n getTraceParent(context: Context) {\n return this.getGlobalTracingHelper().getTraceParent(context)\n }\n\n dispatchEngineSpans(spans: EngineSpan[]) {\n return this.getGlobalTracingHelper().dispatchEngineSpans(spans)\n }\n\n getActiveContext() {\n return this.getGlobalTracingHelper().getActiveContext()\n }\n runInChildSpan<R>(options: string | ExtendedSpanOptions, callback: SpanCallback<R>): R {\n return this.getGlobalTracingHelper().runInChildSpan(options, callback)\n }\n\n private getGlobalTracingHelper(): TracingHelper {\n // These globals are defined in `@prisma/instrumentation`\n const versionedPrismaInstrumentationGlobal = globalThis[`V${majorVersion}_PRISMA_INSTRUMENTATION`]\n const fallbackPrismaInstrumentationGlobal = globalThis.PRISMA_INSTRUMENTATION\n\n return (\n versionedPrismaInstrumentationGlobal?.helper ??\n // TODO(v7): In future major versions, the tracing helper should only be read from the versioned global field.\n // This is to ensure that instrumentation libraries (including `@prisma/instrumentation`) can register tracing helpers with compatible interfaces for each major version - thus preventing potential crashes in case instrumentation libraries are not yet updated for a new major, allowing for easier migration.\n // Currently, the versioned helper is preferred and the fallback helper is picked up for backwards compatibility.\n fallbackPrismaInstrumentationGlobal?.helper ??\n disabledTracingHelper\n )\n }\n}\n\nexport function getTracingHelper(): TracingHelper {\n return new DynamicTracingHelper()\n}\n", "/**\n * Creates an exotic promise that opens after x `await`s.\n * @remarks\n * This is currently used for locking regular transactions.\n * This ensures that all queries are executed at once/batched.\n * Even if middlewares are in use, they'll all execute at once.\n * @param knock the amount of awaits to open the promise\n * @param cb the callback to execute and value to return\n * @returns\n */\nexport function getLockCountPromise<V = void>(knock: number, cb: () => V | void = () => {}) {\n let resolve: (v: V | void) => void\n const lock = new Promise<V | void>((res) => (resolve = res))\n\n return {\n then(onFulfilled) {\n if (--knock === 0) resolve(cb())\n\n return onFulfilled?.(lock as unknown as V | void)\n },\n } as PromiseLike<V | void>\n}\n", "type LogLevel = 'info' | 'query' | 'warn' | 'error'\ntype LogDefinition = {\n level: LogLevel\n emit: 'stdout' | 'event'\n}\n\nexport function getLogLevel(log: LogLevel | Array<LogLevel | LogDefinition>): LogLevel | undefined {\n if (typeof log === 'string') {\n return log\n }\n return log.reduce<LogLevel | undefined>((acc, curr) => {\n const currentLevel = typeof curr === 'string' ? curr : curr.level\n if (currentLevel === 'query') {\n return acc\n }\n if (!acc) {\n return currentLevel\n }\n if (curr === 'info' || acc === 'info') {\n // info has precedence\n return 'info'\n }\n return currentLevel\n }, undefined)\n}\n", "import { Context } from '@opentelemetry/api'\nimport { deserializeJsonResponse } from '@prisma/client-engine-runtime'\nimport { Debug } from '@prisma/debug'\nimport { assertNever } from '@prisma/internals'\nimport stripAnsi from 'strip-ansi'\n\nimport {\n EngineValidationError,\n InteractiveTransactionOptions,\n JsonQuery,\n LogEmitter,\n TransactionOptions,\n} from '../runtime/core/engines'\nimport {\n PrismaClientInitializationError,\n PrismaClientKnownRequestError,\n PrismaClientRustPanicError,\n PrismaClientUnknownRequestError,\n} from '.'\nimport { AccelerateExtensionFetchDecorator } from './core/engines/common/Engine'\nimport { QueryEngineResultData } from './core/engines/common/types/QueryEngine'\nimport { throwValidationException } from './core/errorRendering/throwValidationException'\nimport { hasBatchIndex } from './core/errors/ErrorWithBatchIndex'\nimport { createApplyBatchExtensionsFunction } from './core/extensions/applyQueryExtensions'\nimport { MergedExtensionsList } from './core/extensions/MergedExtensionsList'\nimport { getBatchId } from './core/jsonProtocol/getBatchId'\nimport { isWrite } from './core/jsonProtocol/isWrite'\nimport { GlobalOmitOptions } from './core/jsonProtocol/serializeJsonQuery'\nimport { PrismaPromiseInteractiveTransaction, PrismaPromiseTransaction } from './core/request/PrismaPromise'\nimport { Action, JsArgs } from './core/types/exported/JsApi'\nimport { DataLoader } from './DataLoader'\nimport type { Client, Unpacker } from './getPrismaClient'\nimport { CallSite } from './utils/CallSite'\nimport { createErrorMessageWithContext } from './utils/createErrorMessageWithContext'\nimport { deepGet } from './utils/deep-set'\nimport { deserializeRawResult, RawResponse } from './utils/deserializeRawResults'\n\nconst debug = Debug('prisma:client:request_handler')\n\nexport type RequestParams = {\n modelName?: string\n action: Action\n protocolQuery: JsonQuery\n dataPath: string[]\n clientMethod: string\n callsite?: CallSite\n transaction?: PrismaPromiseTransaction\n extensions: MergedExtensionsList\n args?: any\n headers?: Record<string, string>\n unpacker?: Unpacker\n otelParentCtx?: Context\n otelChildCtx?: Context\n globalOmit?: GlobalOmitOptions\n customDataProxyFetch?: AccelerateExtensionFetchDecorator\n}\n\nexport type HandleErrorParams = {\n args: JsArgs\n error: any\n clientMethod: string\n callsite?: CallSite\n transaction?: PrismaPromiseTransaction\n modelName?: string\n globalOmit?: GlobalOmitOptions\n}\n\nexport class RequestHandler {\n client: Client\n dataloader: DataLoader<RequestParams>\n private logEmitter?: LogEmitter\n\n constructor(client: Client, logEmitter?: LogEmitter) {\n this.logEmitter = logEmitter\n this.client = client\n\n this.dataloader = new DataLoader({\n batchLoader: createApplyBatchExtensionsFunction(async ({ requests, customDataProxyFetch }) => {\n const { transaction, otelParentCtx } = requests[0]\n const queries = requests.map((r) => r.protocolQuery)\n const traceparent = this.client._tracingHelper.getTraceParent(otelParentCtx)\n\n // TODO: pass the child information to QE for it to issue links to queries\n // const links = requests.map((r) => trace.getSpanContext(r.otelChildCtx!))\n\n const containsWrite = requests.some((r) => isWrite(r.protocolQuery.action))\n\n const results = await this.client._engine.requestBatch(queries, {\n traceparent,\n transaction: getTransactionOptions(transaction),\n containsWrite,\n customDataProxyFetch,\n })\n\n return results.map((result, i) => {\n if (result instanceof Error) {\n return result\n }\n\n try {\n return this.mapQueryEngineResult(requests[i], result)\n } catch (error) {\n return error\n }\n })\n }),\n\n singleLoader: async (request) => {\n const interactiveTransaction =\n request.transaction?.kind === 'itx' ? getItxTransactionOptions(request.transaction) : undefined\n\n const response = await this.client._engine.request(request.protocolQuery, {\n traceparent: this.client._tracingHelper.getTraceParent(),\n interactiveTransaction,\n isWrite: isWrite(request.protocolQuery.action),\n customDataProxyFetch: request.customDataProxyFetch,\n })\n return this.mapQueryEngineResult(request, response)\n },\n\n batchBy: (request) => {\n if (request.transaction?.id) {\n return `transaction-${request.transaction.id}`\n }\n\n return getBatchId(request.protocolQuery)\n },\n\n batchOrder(requestA, requestB) {\n if (requestA.transaction?.kind === 'batch' && requestB.transaction?.kind === 'batch') {\n return requestA.transaction.index - requestB.transaction.index\n }\n return 0\n },\n })\n }\n\n async request(params: RequestParams) {\n try {\n return await this.dataloader.request(params)\n } catch (error) {\n const { clientMethod, callsite, transaction, args, modelName } = params\n this.handleAndLogRequestError({\n error,\n clientMethod,\n callsite,\n transaction,\n args,\n modelName,\n globalOmit: params.globalOmit,\n })\n }\n }\n\n mapQueryEngineResult({ dataPath, unpacker }: RequestParams, response: QueryEngineResultData<any>) {\n const data = response?.data\n\n /**\n * Unpack\n */\n const result = this.unpack(data, dataPath, unpacker)\n if (process.env.PRISMA_CLIENT_GET_TIME) {\n return { data: result }\n }\n return result\n }\n\n /**\n * Handles the error and logs it, logging the error is done synchronously waiting for the event\n * handlers to finish.\n */\n handleAndLogRequestError(params: HandleErrorParams): never {\n try {\n this.handleRequestError(params)\n } catch (err) {\n if (this.logEmitter) {\n this.logEmitter.emit('error', { message: err.message, target: params.clientMethod, timestamp: new Date() })\n }\n throw err\n }\n }\n\n handleRequestError({\n error,\n clientMethod,\n callsite,\n transaction,\n args,\n modelName,\n globalOmit,\n }: HandleErrorParams): never {\n debug(error)\n\n if (isMismatchingBatchIndex(error, transaction)) {\n // if this is batch error and current request was not it's cause, we don't add\n // context information to the error: this wasn't a request that caused batch to fail\n throw error\n }\n\n if (error instanceof PrismaClientKnownRequestError && isValidationError(error)) {\n const validationError = convertValidationError(error.meta as EngineValidationError)\n throwValidationException({\n args,\n errors: [validationError],\n callsite,\n errorFormat: this.client._errorFormat,\n originalMethod: clientMethod,\n clientVersion: this.client._clientVersion,\n globalOmit,\n })\n }\n\n let message = error.message\n if (callsite) {\n message = createErrorMessageWithContext({\n callsite,\n originalMethod: clientMethod,\n isPanic: error.isPanic,\n showColors: this.client._errorFormat === 'pretty',\n message,\n })\n }\n\n message = this.sanitizeMessage(message)\n // TODO: Do request with callsite instead, so we don't need to rethrow\n if (error.code) {\n const meta = modelName ? { modelName, ...error.meta } : error.meta\n throw new PrismaClientKnownRequestError(message, {\n code: error.code,\n clientVersion: this.client._clientVersion,\n meta,\n batchRequestIdx: error.batchRequestIdx,\n })\n } else if (error.isPanic) {\n throw new PrismaClientRustPanicError(message, this.client._clientVersion)\n } else if (error instanceof PrismaClientUnknownRequestError) {\n throw new PrismaClientUnknownRequestError(message, {\n clientVersion: this.client._clientVersion,\n batchRequestIdx: error.batchRequestIdx,\n })\n } else if (error instanceof PrismaClientInitializationError) {\n throw new PrismaClientInitializationError(message, this.client._clientVersion)\n } else if (error instanceof PrismaClientRustPanicError) {\n throw new PrismaClientRustPanicError(message, this.client._clientVersion)\n }\n\n error.clientVersion = this.client._clientVersion\n\n throw error\n }\n\n sanitizeMessage(message) {\n if (this.client._errorFormat && this.client._errorFormat !== 'pretty') {\n return stripAnsi(message)\n }\n return message\n }\n\n unpack(data: unknown, dataPath: string[], unpacker?: Unpacker) {\n if (!data) {\n return data\n }\n if (data['data']) {\n data = data['data']\n }\n\n if (!data) {\n return data\n }\n const operation = Object.keys(data)[0]\n const response = Object.values(data)[0]\n const pathForGet = dataPath.filter((key) => key !== 'select' && key !== 'include')\n const extractedResponse = deepGet(response, pathForGet)\n const deserializedResponse =\n operation === 'queryRaw'\n ? deserializeRawResult(extractedResponse as RawResponse)\n : (deserializeJsonResponse(extractedResponse) as unknown)\n\n return unpacker ? unpacker(deserializedResponse) : deserializedResponse\n }\n\n get [Symbol.toStringTag]() {\n return 'RequestHandler'\n }\n}\n\nfunction getTransactionOptions<PayloadType>(\n transaction?: PrismaPromiseTransaction<PayloadType>,\n): TransactionOptions<PayloadType> | undefined {\n if (!transaction) {\n return undefined\n }\n\n if (transaction.kind === 'batch') {\n return {\n kind: 'batch',\n options: {\n isolationLevel: transaction.isolationLevel,\n },\n }\n }\n\n if (transaction.kind === 'itx') {\n return {\n kind: 'itx',\n options: getItxTransactionOptions(transaction),\n }\n }\n\n assertNever(transaction, 'Unknown transaction kind')\n}\n\nfunction getItxTransactionOptions<PayloadType>(\n transaction: PrismaPromiseInteractiveTransaction<PayloadType>,\n): InteractiveTransactionOptions<PayloadType> {\n return {\n id: transaction.id,\n payload: transaction.payload,\n }\n}\n\nfunction isMismatchingBatchIndex(error: any, transaction: PrismaPromiseTransaction | undefined) {\n return hasBatchIndex(error) && transaction?.kind === 'batch' && error.batchRequestIdx !== transaction.index\n}\n\nfunction isValidationError(error: PrismaClientKnownRequestError) {\n return (\n error.code === 'P2009' || // validation error\n error.code === 'P2012' // required argument missing\n )\n}\n\n/**\n * Engine validation errors include extra segment for selectionPath - root query field.\n * This function removes it (since it does not exist on js arguments). In case of `Union`\n * error type, removes heading element from selectionPath of nested errors as well.\n * @param error\n * @returns\n */\nfunction convertValidationError(error: EngineValidationError): EngineValidationError {\n if (error.kind === 'Union') {\n return {\n kind: 'Union',\n errors: error.errors.map(convertValidationError),\n }\n }\n\n if (Array.isArray(error['selectionPath'])) {\n const [, ...selectionPath] = error['selectionPath']\n\n return {\n ...error,\n selectionPath,\n } as EngineValidationError\n }\n\n return error\n}\n", "export interface ErrorWithBatchIndex {\n batchRequestIdx?: number\n}\n\nexport function hasBatchIndex(value: object): value is Required<ErrorWithBatchIndex> {\n return typeof value['batchRequestIdx'] === 'number'\n}\n", "import { JsonQuery } from '../engines'\n\nexport function getBatchId(query: JsonQuery): string | undefined {\n if (query.action !== 'findUnique' && query.action !== 'findUniqueOrThrow') {\n return undefined\n }\n const parts: string[] = []\n if (query.modelName) {\n parts.push(query.modelName)\n }\n\n if (query.query.arguments) {\n parts.push(buildKeysString(query.query.arguments))\n }\n parts.push(buildKeysString(query.query.selection))\n\n return parts.join('')\n}\n\nfunction buildKeysString(obj: object): string {\n const keysArray = Object.keys(obj)\n .sort()\n .map((key) => {\n const value = obj[key]\n if (typeof value === 'object' && value !== null) {\n return `(${key} ${buildKeysString(value)})`\n }\n return key\n })\n\n return `(${keysArray.join(' ')})`\n}\n", "import { JsonQueryAction } from '../engines'\n\nconst writeMap: Record<JsonQueryAction, boolean> = {\n aggregate: false,\n aggregateRaw: false,\n createMany: true,\n createManyAndReturn: true,\n createOne: true,\n deleteMany: true,\n deleteOne: true,\n executeRaw: true,\n findFirst: false,\n findFirstOrThrow: false,\n findMany: false,\n findRaw: false,\n findUnique: false,\n findUniqueOrThrow: false,\n groupBy: false,\n queryRaw: false,\n runCommandRaw: true,\n updateMany: true,\n updateManyAndReturn: true,\n updateOne: true,\n upsertOne: true,\n}\n\nexport function isWrite(action: JsonQueryAction): boolean {\n return writeMap[action]\n}\n", "interface Job {\n resolve: (data: any) => void\n reject: (data: any) => void\n request: any\n}\n\nexport type DataLoaderOptions<T> = {\n singleLoader: (request: T) => Promise<any>\n batchLoader: (request: T[]) => Promise<any[]>\n batchBy: (request: T) => string | undefined\n // Specifies the order in which requests in a batch would\n // be sorted. See Array.prototype.sort callback\n batchOrder: (requestA: T, requestB: T) => number\n}\n\nexport class DataLoader<T = unknown> {\n batches: { [key: string]: Job[] }\n private tickActive = false\n constructor(private options: DataLoaderOptions<T>) {\n this.batches = {}\n }\n\n request(request: T): Promise<any> {\n const hash = this.options.batchBy(request)\n if (!hash) {\n return this.options.singleLoader(request)\n }\n if (!this.batches[hash]) {\n this.batches[hash] = []\n\n // make sure, that we only tick once at a time\n if (!this.tickActive) {\n this.tickActive = true\n process.nextTick(() => {\n this.dispatchBatches()\n this.tickActive = false\n })\n }\n }\n\n return new Promise((resolve, reject) => {\n this.batches[hash].push({\n request,\n resolve,\n reject,\n })\n })\n }\n\n private dispatchBatches() {\n for (const key in this.batches) {\n const batch = this.batches[key]\n delete this.batches[key]\n\n // only batch if necessary\n // this might occur, if there's e.g. only 1 findUnique in the batch\n if (batch.length === 1) {\n this.options\n .singleLoader(batch[0].request)\n .then((result) => {\n if (result instanceof Error) {\n batch[0].reject(result)\n } else {\n batch[0].resolve(result)\n }\n })\n .catch((e) => {\n batch[0].reject(e)\n })\n } else {\n batch.sort((a, b) => this.options.batchOrder(a.request, b.request))\n this.options\n .batchLoader(batch.map((j) => j.request))\n .then((results) => {\n if (results instanceof Error) {\n for (let i = 0; i < batch.length; i++) {\n batch[i].reject(results)\n }\n } else {\n for (let i = 0; i < batch.length; i++) {\n const value = results[i]\n if (value instanceof Error) {\n batch[i].reject(value)\n } else {\n batch[i].resolve(value)\n }\n }\n }\n })\n .catch((e) => {\n for (let i = 0; i < batch.length; i++) {\n batch[i].reject(e)\n }\n })\n }\n }\n }\n\n get [Symbol.toStringTag]() {\n return 'DataLoader'\n }\n}\n", "import type { QueryIntrospectionBuiltinType } from '@prisma/generator'\nimport Decimal from 'decimal.js'\n\nexport type RawResponse = {\n columns: string[]\n types: QueryIntrospectionBuiltinType[]\n rows: unknown[][]\n}\n\nfunction deserializeValue(type: QueryIntrospectionBuiltinType, value: unknown): unknown {\n if (value === null) {\n return value\n }\n\n switch (type) {\n case 'bigint':\n return BigInt(value as string)\n\n case 'bytes': {\n const { buffer, byteOffset, byteLength } = Buffer.from(value as string, 'base64')\n return new Uint8Array(buffer, byteOffset, byteLength)\n }\n\n case 'decimal':\n return new Decimal(value as string)\n\n case 'datetime':\n case 'date':\n return new Date(value as string)\n\n case 'time':\n return new Date(`1970-01-01T${value}Z`)\n\n case 'bigint-array':\n return (value as unknown[]).map((v: unknown) => deserializeValue('bigint', v))\n case 'bytes-array':\n return (value as unknown[]).map((v: unknown) => deserializeValue('bytes', v))\n case 'decimal-array':\n return (value as unknown[]).map((v: unknown) => deserializeValue('decimal', v))\n case 'datetime-array':\n return (value as unknown[]).map((v: unknown) => deserializeValue('datetime', v))\n case 'date-array':\n return (value as unknown[]).map((v: unknown) => deserializeValue('date', v))\n case 'time-array':\n return (value as unknown[]).map((v: unknown) => deserializeValue('time', v))\n\n default:\n return value\n }\n}\n\ntype DeserializedResponse = Array<Record<string, unknown>>\n\nexport function deserializeRawResult(response: RawResponse): DeserializedResponse {\n const deserializedResponse: DeserializedResponse = []\n // Performance optimization. See https://github.com/brianc/node-postgres/issues/3042\n const prebuiltEmptyObject = createPrebuiltEmptyResultObject(response)\n\n for (let i = 0; i < response.rows.length; i++) {\n const row = response.rows[i]\n const mappedRow = { ...prebuiltEmptyObject } as Record<string, unknown>\n\n for (let j = 0; j < row.length; j++) {\n mappedRow[response.columns[j]] = deserializeValue(response.types[j], row[j])\n }\n\n deserializedResponse.push(mappedRow)\n }\n\n return deserializedResponse\n}\n\nfunction createPrebuiltEmptyResultObject(response: RawResponse): Record<string, null> {\n const row = {}\n\n for (let i = 0; i < response.columns.length; i++) {\n row[response.columns[i]] = null\n }\n\n return row\n}\n", "import { version } from '../../../package.json'\n\nexport const clientVersion = version as string\n", "import { GetPrismaClientConfig, RuntimeDataModel, RuntimeModel, uncapitalize } from '@prisma/client-common'\nimport { ClientEngineType, getClientEngineType } from '@prisma/internals'\nimport leven from 'js-levenshtein'\n\nimport { buildArgumentsRenderingTree, renderArgsTree } from '../core/errorRendering/ArgumentsRenderingTree'\nimport { PrismaClientConstructorValidationError } from '../core/errors/PrismaClientConstructorValidationError'\nimport type { ErrorFormat, LogLevel, PrismaClientOptions } from '../getPrismaClient'\n\nconst knownProperties = [\n 'datasources',\n 'datasourceUrl',\n 'errorFormat',\n 'adapter',\n 'log',\n 'transactionOptions',\n 'omit',\n '__internal',\n]\nconst errorFormats: ErrorFormat[] = ['pretty', 'colorless', 'minimal']\nconst logLevels: LogLevel[] = ['info', 'query', 'warn', 'error']\n\ntype OmitValidationError =\n | { kind: 'UnknownModel'; modelKey: string }\n | { kind: 'UnknownField'; modelKey: string; fieldName: string }\n | { kind: 'RelationInOmit'; modelKey: string; fieldName: string }\n | { kind: 'InvalidFieldValue'; modelKey: string; fieldName: string }\n\n/**\n * Subset of `GetPrismaClientConfig` which is used during validation.\n * Feel free to allow more properties when necessary but don't forget to add\n * them in the mock config in `validatePrismaClientOptions.test.ts`.\n */\ntype ClientConfig = Pick<GetPrismaClientConfig, 'datasourceNames' | 'generator' | 'runtimeDataModel'>\n\nconst validators: {\n [K in keyof PrismaClientOptions]-?: (\n option: PrismaClientOptions[K],\n config: ClientConfig,\n dataModel: RuntimeDataModel,\n ) => void\n} = {\n datasources: (options, { datasourceNames }) => {\n if (!options) {\n return\n }\n if (typeof options !== 'object' || Array.isArray(options)) {\n throw new PrismaClientConstructorValidationError(\n `Invalid value ${JSON.stringify(options)} for \"datasources\" provided to PrismaClient constructor`,\n )\n }\n\n for (const [key, value] of Object.entries(options)) {\n if (!datasourceNames.includes(key)) {\n const didYouMean =\n getDidYouMean(key, datasourceNames) || ` Available datasources: ${datasourceNames.join(', ')}`\n throw new PrismaClientConstructorValidationError(\n `Unknown datasource ${key} provided to PrismaClient constructor.${didYouMean}`,\n )\n }\n if (typeof value !== 'object' || Array.isArray(value)) {\n throw new PrismaClientConstructorValidationError(\n `Invalid value ${JSON.stringify(options)} for datasource \"${key}\" provided to PrismaClient constructor.\nIt should have this form: { url: \"CONNECTION_STRING\" }`,\n )\n }\n if (value && typeof value === 'object') {\n for (const [key1, value1] of Object.entries(value)) {\n if (key1 !== 'url') {\n throw new PrismaClientConstructorValidationError(\n `Invalid value ${JSON.stringify(options)} for datasource \"${key}\" provided to PrismaClient constructor.\nIt should have this form: { url: \"CONNECTION_STRING\" }`,\n )\n }\n if (typeof value1 !== 'string') {\n throw new PrismaClientConstructorValidationError(\n `Invalid value ${JSON.stringify(value1)} for datasource \"${key}\" provided to PrismaClient constructor.\nIt should have this form: { url: \"CONNECTION_STRING\" }`,\n )\n }\n }\n }\n }\n },\n adapter: (adapter, config) => {\n if (!adapter && getClientEngineType(config.generator) === ClientEngineType.Client) {\n throw new PrismaClientConstructorValidationError(\n `Using engine type \"client\" requires a driver adapter to be provided to PrismaClient constructor.`,\n )\n }\n\n if (adapter === null) {\n return\n }\n\n if (adapter === undefined) {\n throw new PrismaClientConstructorValidationError(\n `\"adapter\" property must not be undefined, use null to conditionally disable driver adapters.`,\n )\n }\n\n if (getClientEngineType(config.generator) === ClientEngineType.Binary) {\n throw new PrismaClientConstructorValidationError(\n `Cannot use a driver adapter with the \"binary\" Query Engine. Please use the \"library\" Query Engine.`,\n )\n }\n },\n datasourceUrl: (options) => {\n if (typeof options !== 'undefined' && typeof options !== 'string') {\n throw new PrismaClientConstructorValidationError(\n `Invalid value ${JSON.stringify(options)} for \"datasourceUrl\" provided to PrismaClient constructor.\nExpected string or undefined.`,\n )\n }\n },\n errorFormat: (options) => {\n if (!options) {\n return\n }\n if (typeof options !== 'string') {\n throw new PrismaClientConstructorValidationError(\n `Invalid value ${JSON.stringify(options)} for \"errorFormat\" provided to PrismaClient constructor.`,\n )\n }\n if (!errorFormats.includes(options as ErrorFormat)) {\n const didYouMean = getDidYouMean(options, errorFormats)\n throw new PrismaClientConstructorValidationError(\n `Invalid errorFormat ${options} provided to PrismaClient constructor.${didYouMean}`,\n )\n }\n },\n log: (options) => {\n if (!options) {\n return\n }\n if (!Array.isArray(options)) {\n throw new PrismaClientConstructorValidationError(\n `Invalid value ${JSON.stringify(options)} for \"log\" provided to PrismaClient constructor.`,\n )\n }\n\n function validateLogLevel(level: any) {\n if (typeof level === 'string') {\n if (!logLevels.includes(level as LogLevel)) {\n const didYouMean = getDidYouMean(level, logLevels)\n throw new PrismaClientConstructorValidationError(\n `Invalid log level \"${level}\" provided to PrismaClient constructor.${didYouMean}`,\n )\n }\n }\n }\n\n for (const option of options) {\n validateLogLevel(option)\n\n const logValidators = {\n level: validateLogLevel,\n emit: (value) => {\n const emits = ['stdout', 'event']\n if (!emits.includes(value)) {\n const didYouMean = getDidYouMean(value, emits)\n throw new PrismaClientConstructorValidationError(\n `Invalid value ${JSON.stringify(\n value,\n )} for \"emit\" in logLevel provided to PrismaClient constructor.${didYouMean}`,\n )\n }\n },\n }\n\n if (option && typeof option === 'object') {\n for (const [key, value] of Object.entries(option)) {\n if (logValidators[key]) {\n logValidators[key](value)\n } else {\n throw new PrismaClientConstructorValidationError(\n `Invalid property ${key} for \"log\" provided to PrismaClient constructor`,\n )\n }\n }\n }\n }\n },\n transactionOptions: (options: any) => {\n if (!options) {\n return\n }\n\n const maxWait = options.maxWait\n if (maxWait != null && maxWait <= 0) {\n throw new PrismaClientConstructorValidationError(\n `Invalid value ${maxWait} for maxWait in \"transactionOptions\" provided to PrismaClient constructor. maxWait needs to be greater than 0`,\n )\n }\n\n const timeout = options.timeout\n if (timeout != null && timeout <= 0) {\n throw new PrismaClientConstructorValidationError(\n `Invalid value ${timeout} for timeout in \"transactionOptions\" provided to PrismaClient constructor. timeout needs to be greater than 0`,\n )\n }\n },\n omit: (options: unknown, config) => {\n if (typeof options !== 'object') {\n throw new PrismaClientConstructorValidationError(`\"omit\" option is expected to be an object.`)\n }\n if (options === null) {\n throw new PrismaClientConstructorValidationError(`\"omit\" option can not be \\`null\\``)\n }\n\n const validationErrors: OmitValidationError[] = []\n for (const [modelKey, modelConfig] of Object.entries(options)) {\n const modelOrType = getModelOrTypeByKey(modelKey, config.runtimeDataModel)\n if (!modelOrType) {\n validationErrors.push({ kind: 'UnknownModel', modelKey: modelKey })\n continue\n }\n for (const [fieldName, value] of Object.entries(modelConfig)) {\n const field = modelOrType.fields.find((field) => field.name === fieldName)\n if (!field) {\n validationErrors.push({ kind: 'UnknownField', modelKey, fieldName })\n continue\n }\n if (field.relationName) {\n validationErrors.push({ kind: 'RelationInOmit', modelKey, fieldName })\n continue\n }\n if (typeof value !== 'boolean') {\n validationErrors.push({ kind: 'InvalidFieldValue', modelKey, fieldName })\n }\n }\n }\n if (validationErrors.length > 0) {\n throw new PrismaClientConstructorValidationError(\n renderOmitValidationErrors(options as Record<string, unknown>, validationErrors),\n )\n }\n },\n __internal: (value) => {\n if (!value) {\n return\n }\n const knownKeys = ['debug', 'engine', 'configOverride']\n if (typeof value !== 'object') {\n throw new PrismaClientConstructorValidationError(\n `Invalid value ${JSON.stringify(value)} for \"__internal\" to PrismaClient constructor`,\n )\n }\n for (const [key] of Object.entries(value)) {\n if (!knownKeys.includes(key)) {\n const didYouMean = getDidYouMean(key, knownKeys)\n throw new PrismaClientConstructorValidationError(\n `Invalid property ${JSON.stringify(key)} for \"__internal\" provided to PrismaClient constructor.${didYouMean}`,\n )\n }\n }\n // TODO: Add more validation here\n // but as this is an internal, non user-facing api, it's not urgent\n },\n}\n\nexport function validatePrismaClientOptions(options: PrismaClientOptions, config: ClientConfig) {\n for (const [key, value] of Object.entries(options)) {\n if (!knownProperties.includes(key)) {\n const didYouMean = getDidYouMean(key, knownProperties)\n throw new PrismaClientConstructorValidationError(\n `Unknown property ${key} provided to PrismaClient constructor.${didYouMean}`,\n )\n }\n validators[key](value, config)\n }\n\n if (options.datasourceUrl && options.datasources) {\n throw new PrismaClientConstructorValidationError(\n 'Can not use \"datasourceUrl\" and \"datasources\" options at the same time. Pick one of them',\n )\n }\n}\n\nfunction getDidYouMean(str: string, options: string[]): string {\n if (options.length === 0) {\n return ''\n }\n\n if (typeof str !== 'string') {\n return ''\n }\n\n const alternative = getAlternative(str, options)\n if (!alternative) {\n return ''\n }\n\n return ` Did you mean \"${alternative}\"?`\n}\n\nfunction getAlternative(str: string, options: string[]): null | string {\n if (options.length === 0) {\n return null\n }\n\n const optionsWithDistances = options.map((value) => ({\n value,\n distance: leven(str, value),\n }))\n\n optionsWithDistances.sort((a, b) => {\n return a.distance < b.distance ? -1 : 1\n })\n\n const bestAlternative = optionsWithDistances[0]\n if (bestAlternative.distance < 3) {\n return bestAlternative.value\n }\n\n return null\n}\n\nfunction getModelOrTypeByKey(modelKey: string, runtimeDataModel: RuntimeDataModel): RuntimeModel | undefined {\n return findByKey(runtimeDataModel.models, modelKey) ?? findByKey(runtimeDataModel.types, modelKey)\n}\n\nfunction findByKey<T>(map: Record<string, T>, key: string): T | undefined {\n const foundKey = Object.keys(map).find((mapKey) => uncapitalize(mapKey) === key)\n if (foundKey) {\n return map[foundKey]\n }\n return undefined\n}\n\nfunction renderOmitValidationErrors(\n omitConfig: Record<PropertyKey, unknown>,\n validationErrors: OmitValidationError[],\n): string {\n const argsTree = buildArgumentsRenderingTree(omitConfig)\n for (const error of validationErrors) {\n switch (error.kind) {\n case 'UnknownModel':\n argsTree.arguments.getField(error.modelKey)?.markAsError()\n argsTree.addErrorMessage(() => `Unknown model name: ${error.modelKey}.`)\n break\n case 'UnknownField':\n argsTree.arguments.getDeepField([error.modelKey, error.fieldName])?.markAsError()\n argsTree.addErrorMessage(() => `Model \"${error.modelKey}\" does not have a field named \"${error.fieldName}\".`)\n break\n case 'RelationInOmit':\n argsTree.arguments.getDeepField([error.modelKey, error.fieldName])?.markAsError()\n argsTree.addErrorMessage(() => `Relations are already excluded by default and can not be specified in \"omit\".`)\n break\n case 'InvalidFieldValue':\n argsTree.arguments.getDeepFieldValue([error.modelKey, error.fieldName])?.markAsError()\n argsTree.addErrorMessage(() => `Omit field option value must be a boolean.`)\n break\n }\n }\n const { message, args } = renderArgsTree(argsTree, 'colorless')\n return `Error validating \"omit\" option:\\n\\n${args}\\n\\n${message}`\n}\n", "import { setClassName } from '@prisma/internals'\n\nexport class PrismaClientConstructorValidationError extends Error {\n constructor(message: string) {\n super(message + `\\nRead more at https://pris.ly/d/client-constructor`)\n this.name = 'PrismaClientConstructorValidationError'\n }\n get [Symbol.toStringTag]() {\n return 'PrismaClientConstructorValidationError'\n }\n}\nsetClassName(PrismaClientConstructorValidationError, 'PrismaClientConstructorValidationError')\n", "import { hasBatchIndex } from '../core/errors/ErrorWithBatchIndex'\n\n/**\n * Waits for result of batch $transaction and picks the best possible error to report if any\n * of the request fails. Best error is determined as follows:\n *\n * - if engine have reported an error without batch request index, then the batch is immediately rejected\n * with this error without waiting for other promises\n * - if engine have reported and index of failed request in the batch and that index matches the position of the\n * particular request in the batch, batch is rejected with that error\n * - if batch request index is reported and it does not match current request position, wait for other requests. If no indices\n * match request positions, reject with the earliest error in the batch\n *\n * @param promises\n * @returns\n */\nexport function waitForBatch<T extends PromiseLike<unknown>[]>(\n promises: T,\n): Promise<{ [K in keyof T]: Awaited<T[K]> }> {\n if (promises.length === 0) {\n return Promise.resolve([] as { [K in keyof T]: Awaited<T[K]> })\n }\n return new Promise((resolve, reject) => {\n const successfulResults = new Array(promises.length) as { [K in keyof T]: Awaited<T[K]> }\n let bestError: unknown = null\n let done = false\n let settledPromisesCount = 0\n\n const settleOnePromise = () => {\n if (done) {\n return\n }\n settledPromisesCount++\n if (settledPromisesCount === promises.length) {\n done = true\n if (bestError) {\n reject(bestError)\n } else {\n resolve(successfulResults)\n }\n }\n }\n\n const immediatelyReject = (error: unknown) => {\n if (!done) {\n done = true\n reject(error)\n }\n }\n\n for (let i = 0; i < promises.length; i++) {\n promises[i].then(\n (result) => {\n successfulResults[i] = result\n settleOnePromise()\n },\n (error) => {\n if (!hasBatchIndex(error)) {\n immediatelyReject(error)\n return\n }\n\n if (error.batchRequestIdx === i) {\n immediatelyReject(error)\n } else {\n if (!bestError) {\n bestError = error\n }\n settleOnePromise()\n }\n },\n )\n }\n })\n}\n", "/**\n * List of properties that won't throw exception on access and return undefined instead\n */\nconst allowList = new Set([\n 'toJSON', // used by JSON.stringify\n '$$typeof', // used by old React tooling\n 'asymmetricMatch', // used by Jest\n Symbol.iterator, // used by various JS constructs/methods\n Symbol.toStringTag, // Used by .toString()\n Symbol.isConcatSpreadable, // Used by Array#concat,\n Symbol.toPrimitive, // Used when getting converted to primitive values\n])\n/**\n * Generates more strict variant of an enum which, unlike regular enum,\n * throws on non-existing property access. This can be useful in following situations:\n * - we have an API, that accepts both `undefined` and `SomeEnumType` as an input\n * - enum values are generated dynamically from DMMF.\n *\n * In that case, if using normal enums and no compile-time typechecking, using non-existing property\n * will result in `undefined` value being used, which will be accepted. Using strict enum\n * in this case will help to have a runtime exception, telling you that you are probably doing something wrong.\n *\n * Note: if you need to check for existence of a value in the enum you can still use either\n * `in` operator or `hasOwnProperty` function.\n *\n * @param definition\n * @returns\n */\nexport function makeStrictEnum<T extends Record<PropertyKey, string | number>>(definition: T): T {\n return new Proxy(definition, {\n get(target, property) {\n if (property in target) {\n return target[property]\n }\n if (allowList.has(property)) {\n return undefined\n }\n throw new TypeError(`Invalid enum value: ${String(property)}`)\n },\n })\n}\n", ""],
5
- "mappings": "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",
6
- "names": ["process", "cwd", "init_process", "__esmMin", "fn", "args", "performance", "init_perf_hooks", "__esmMin", "origin", "fn", "init_function", "__esmMin", "WeakRef", "init_weakref", "__esmMin", "value", "require_buffer6f96acfa", "__commonJSMin", "exports", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "q", "i", "r", "H", "C", "sr", "ar", "xr", "B", "w", "pr", "N", "m", "W", "j", "t", "n", "lr", "e", "o", "u", "f", "c", "yr", "wr", "V", "M", "l", "s", "p", "F", "x", "L", "cr", "k", "U", "X", "h", "Ir", "S", "Br", "d", "P", "Z", "dr", "gr", "E", "$", "mr", "Q", "Er", "O", "v", "D", "Y", "b", "fr", "Fr", "Mr", "tr", "Lr", "Nr", "Sr", "kr", "I", "rr", "z", "Ar", "Ur", "_", "Rr", "Pr", "Tr", "Cr", "Or", "_r", "J", "Gr", "a", "g", "R", "T", "y", "ir", "hr", "nr", "er", "or", "ur", "A", "G", "K", "Dr", "$r", "br", "Yr", "import_buffer", "init_buffer", "__esmMin", "existsSync", "lstatSync", "statSync", "readdirSync", "readdir", "cb", "readlinkSync", "realpathSync", "chmodSync", "renameSync", "mkdirSync", "rmdirSync", "rmSync", "unlinkSync", "watchFile", "unwatchFile", "watch", "stat", "path", "callback", "promises", "fs", "fs_default", "init_fs", "__esmMin", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "require_package", "__commonJSMin", "exports", "module", "resolve", "args", "join", "parse", "path", "base", "basename", "dir", "dirname", "name", "ext", "parts", "normalize", "part", "normalized", "result", "sep", "delimiter", "posix", "path_default", "init_path", "__esmMin", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "require_min_indent", "__commonJSMin", "exports", "module", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "string", "match", "a", "require_indent_string", "__commonJSMin", "exports", "module", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "string", "count", "options", "regex", "require_new_github_issue_url", "__commonJSMin", "exports", "module", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "options", "repoUrl", "url", "types", "type", "value", "require_js_levenshtein", "__commonJSMin", "exports", "module", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "_min", "d0", "d1", "d2", "bx", "ay", "a", "b", "tmp", "la", "lb", "offset", "x", "y", "d3", "dd", "dy", "bx0", "bx1", "bx2", "bx3", "vector", "len", "init_TypeBuilder", "__esmMin", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_KeyType", "__esmMin", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "require_package", "__commonJSMin", "exports", "module", "EventEmitter", "init_events", "__esmMin", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "event", "listener", "args", "index_exports", "__export", "src_exports", "Debug", "decimal_default", "extensions_exports", "MetricsClient", "PrismaClientInitializationError", "PrismaClientKnownRequestError", "PrismaClientRustPanicError", "PrismaClientUnknownRequestError", "PrismaClientValidationError", "public_exports", "Sql", "createParam", "defineDmmfProperty", "deserializeJsonResponse", "deserializeRawResult", "dmmfToRuntimeDataModel", "empty", "getPrismaClient", "getRuntime", "join", "makeStrictEnum", "makeTypedQueryFactory", "objectEnumValues", "raw", "serializeJsonQuery", "skip", "sql", "warnOnce", "__toCommonJS", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "extensions_exports", "__export", "defineExtension", "getExtensionContext", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "defineExtension", "ext", "client", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "getExtensionContext", "that", "public_exports", "__export", "validator", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "validator", "_args", "args", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "colors_exports", "__export", "$", "bgBlack", "bgBlue", "bgCyan", "bgGreen", "bgMagenta", "bgRed", "bgWhite", "bgYellow", "black", "blue", "bold", "cyan", "dim", "gray", "green", "grey", "hidden", "inverse", "italic", "magenta", "red", "reset", "strikethrough", "underline", "white", "yellow", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "FORCE_COLOR", "NODE_DISABLE_COLORS", "NO_COLOR", "TERM", "isTTY", "process", "init", "x", "y", "rgx", "open", "close", "txt", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "MAX_ARGS_HISTORY", "COLORS", "argsHistory", "lastTimestamp", "lastColor", "processEnv", "process", "topProps", "namespace", "prev", "listenedNamespaces", "s", "isListened", "listenedNamespace", "isExcluded", "args", "format", "rest", "debugCreate", "instanceProps", "debugCall", "enabled", "color", "log", "stringArgs", "arg", "safeStringify", "ms", "colors_exports", "bold", "_", "prop", "value", "Debug", "indent", "cache", "key", "getLogs", "numChars", "logs", "clearLogs", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "binaryTargets", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "packageJson", "version", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "getClientEngineType", "generatorConfig", "engineTypeFromEnvVar", "getEngineTypeFromEnvVar", "getDefaultEngineType", "engineType", "process", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "isDriverAdapterError", "error", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "ok", "value", "fn", "err", "error", "debug", "Debug", "ErrorRegistryInternal", "id", "error", "i", "bindAdapter", "adapter", "errorRegistry", "ErrorRegistryInternal", "boundAdapter", "wrapAsync", "args", "ctx", "bindTransaction", "wrapSync", "transaction", "registry", "fn", "ok", "error", "debug", "isDriverAdapterError", "err", "id", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "import_min_indent", "stripIndent", "string", "indent", "minIndent", "regex", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "PRISMA_POSTGRES_PROVIDER", "PRISMA_POSTGRES_PROTOCOL", "isPrismaPostgres", "connectionString", "logger_exports", "__export", "error", "info", "log", "query", "should", "tags", "warn", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "tags", "red", "yellow", "cyan", "blue", "should", "process", "log", "data", "warn", "message", "optionalParams", "info", "error", "query", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "assertAlways", "condition", "message", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "assertNever", "arg", "errorMessage", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "ansiRegex", "onlyFirst", "pattern", "regex", "ansiRegex", "stripAnsi", "string", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_path", "pathToPosix", "filePath", "path_default", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "hasOwnProperty", "object", "key", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "mapObjectValues", "object", "mapper", "result", "key", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "maxWithComparator", "items", "comparator", "result", "i", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "setClassName", "classObject", "name", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "alreadyWarned", "warnOnce", "key", "message", "args", "warn", "PrismaClientInitializationError", "_PrismaClientInitializationError", "message", "clientVersion", "errorCode", "setClassName", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "PrismaClientKnownRequestError", "message", "code", "clientVersion", "meta", "batchRequestIdx", "setClassName", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "PrismaClientRustPanicError", "message", "clientVersion", "setClassName", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "PrismaClientUnknownRequestError", "message", "clientVersion", "batchRequestIdx", "setClassName", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "PrismaClientValidationError", "message", "clientVersion", "setClassName", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "Cache", "key", "value", "create", "cached", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "uncapitalize", "self", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "keyBy", "collection", "prop", "acc", "obj", "key", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "lazyProperty", "compute", "resultContainer", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "dmmfToRuntimeDataModel", "dmmfDataModel", "buildMapForRuntime", "buildMapForRuntime", "list", "result", "name", "rest", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "isDate", "value", "isValidDate", "date", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "EXP_LIMIT", "MAX_DIGITS", "NUMERALS", "LN10", "PI", "DEFAULTS", "inexact", "quadrant", "external", "decimalError", "invalidArgument", "precisionLimitExceeded", "cryptoUnavailable", "tag", "mathfloor", "mathpow", "isBinary", "isHex", "isOctal", "isDecimal", "BASE", "LOG_BASE", "MAX_SAFE_INTEGER", "LN10_PRECISION", "PI_PRECISION", "P", "x", "finalise", "min", "max", "k", "Ctor", "y", "i", "j", "xdL", "ydL", "xd", "yd", "xs", "ys", "pr", "rm", "cosine", "toLessThanHalfPi", "m", "n", "r", "rep", "s", "sd", "t", "t3", "t3plusx", "digitsToString", "divide", "w", "d", "len", "one", "tinyPow", "taylorSeries", "cosh2_x", "d8", "sinh2_x", "d5", "d16", "d20", "getPi", "wpr", "xsd", "halfPi", "px", "x2", "base", "isBase10", "denominator", "inf", "num", "arg", "guard", "naturalLogarithm", "getLn10", "checkRoundingDigits", "e", "xe", "xLTy", "getBase10Exponent", "q", "naturalExponential", "carry", "z", "getPrecision", "sine", "rL", "toStringBinary", "dp", "checkInt32", "str", "finiteToString", "maxD", "d0", "d1", "d2", "n0", "n1", "yn", "intPow", "ws", "indexOfLastWord", "getZeroString", "repeating", "di", "rd", "convertBase", "baseIn", "baseOut", "arr", "arrL", "strL", "cos2x", "multiplyInteger", "temp", "compare", "a", "b", "aL", "bL", "subtract", "cmp", "logBase", "more", "prod", "prodL", "qd", "rem", "remL", "rem0", "xi", "xL", "yd0", "yL", "yz", "sign", "isTruncated", "digits", "roundUp", "xdi", "out", "isExp", "nonFiniteToString", "zs", "truncate", "isOdd", "maxOrMin", "args", "pow", "sum", "c", "c0", "numerator", "x1", "parseDecimal", "parseOther", "divisor", "isFloat", "p", "Decimal", "sin2_x", "isHyperbolic", "u", "isNeg", "pi", "abs", "acos", "acosh", "add", "asin", "asinh", "atan", "atanh", "atan2", "cbrt", "ceil", "clamp", "config", "obj", "v", "useDefaults", "ps", "cos", "cosh", "clone", "isDecimalInstance", "div", "exp", "floor", "hypot", "ln", "log", "log10", "log2", "mod", "mul", "random", "round", "sin", "sinh", "sqrt", "sub", "tan", "tanh", "trunc", "decimal_default", "isDecimalJsLike", "value", "Decimal", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "src_exports", "__export", "ModelAction", "datamodelEnumToSchemaEnum", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "datamodelEnumToSchemaEnum", "datamodelEnum", "v", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "ModelAction", "import_indent_string", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_fs", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "theme", "cyan", "s", "bold", "blue", "green", "yellow", "gray", "identity", "str", "_self", "uniqueId", "Prism", "tokens", "Token", "anyTokens", "o", "obj", "deepClone", "visited", "clone", "id", "type", "key", "v", "i", "redef", "lang", "inside", "before", "insert", "root", "grammar", "ret", "token", "newToken", "old", "value", "DFS", "callback", "objId", "property", "propertyType", "text", "language", "env", "strarr", "index", "startPos", "oneshot", "target", "patterns", "j", "pattern", "lookbehind", "greedy", "lookbehindLength", "alias", "flags", "pos", "match", "from", "to", "k", "p", "len", "delNum", "after", "args", "wrapped", "rest", "name", "hooks", "callbacks", "content", "matchedStr", "element", "getColorForSyntaxKind", "syntaxKind", "theme", "highlightTS", "str", "highlight", "Prism", "grammar", "t", "Token", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "dedent", "str", "stripIndent", "SourceFileSlice", "_SourceFileSlice", "filePath", "content", "fs_default", "lines", "firstLine", "lineNumber", "mapFn", "idx", "newLines", "line", "i", "atLine", "str", "fromLine", "toLine", "slicedLines", "dedent", "highlighted", "highlightTS", "colorsEnabled", "red", "gray", "dim", "bold", "underline", "source", "colorsDisabled", "str", "getRawTemplateParameters", "message", "originalMethod", "isPanic", "callArguments", "getTemplateParameters", "callsite", "colors", "templateParameters", "process", "callLocation", "contextFirstLine", "SourceFileSlice", "invocationLine", "invocationLineIndent", "getIndent", "invocationCallCode", "findPrismaActionCall", "line", "numberColumnWidth", "lineNumber", "indentValue", "indentString", "allActions", "ModelAction", "match", "openingBraceIndex", "statementStart", "spaceCount", "i", "stringifyErrorMessage", "functionName", "location", "contextLines", "lines", "introSuffix", "stringifyLocationInFile", "contextLineParts", "parts", "createErrorMessageWithContext", "args", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "import_js_levenshtein", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "applyUnionError", "error", "args", "globalOmit", "allErrors", "flattenUnionError", "merged", "mergeInvalidArgumentTypeErrors", "bestError", "getBestScoringError", "applyValidationError", "errorList", "invalidArgsError", "result", "key", "prevError", "uniqueConcat", "head", "tail", "errors", "maxWithComparator", "errorA", "errorB", "aPathLength", "getCombinedPathLength", "bPathLength", "getErrorTypeScore", "score", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "ObjectFieldSuggestion", "name", "value", "writer", "green", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_KeyType", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "Writer", "startingIndent", "context", "value", "separator", "values", "writeItem", "item", "w", "last", "i", "line", "afterNextNewLineCallback", "callback", "symbol", "init_TypeBuilder", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "ArrayField", "value", "writer", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "noop", "str", "inactiveColors", "activeColors", "bold", "red", "green", "dim", "fieldsSeparator", "writer", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "FormattedString", "contents", "str", "color", "writer", "paddingSize", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "Value", "ArrayValue", "Value", "item", "ArrayField", "index", "writer", "output", "FormattedString", "colors", "fieldsSeparator", "ObjectValue", "_ObjectValue", "Value", "field", "suggestion", "key", "path", "head", "tail", "firstField", "segment", "nextField", "ArrayValue", "selection", "next", "thisParent", "parent", "nextParent", "select", "include", "fields", "f", "writer", "output", "FormattedString", "fieldsSeparator", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "ScalarValue", "Value", "text", "writer", "string", "FormattedString", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "SuggestionObjectValue", "name", "value", "writer", "green", "dim", "fieldsSeparator", "applyValidationError", "error", "args", "globalOmit", "applyMutuallyExclusiveFieldsError", "applyIncludeOnScalarError", "applyEmptySelectionError", "applyUnknownSelectionFieldError", "applyInvalidSelectionValueError", "applyUnknownArgumentError", "applyUnknownInputFieldError", "applyRequiredArgumentMissingError", "applyInvalidArgumentTypeError", "applyInvalidArgumentValueError", "applyValueTooLargeError", "applySomeFieldsMissingError", "applyTooManyFieldsGivenError", "applyUnionError", "argsTree", "object", "colors", "selectionPath", "field", "splitPath", "outputType", "ObjectFieldSuggestion", "msg", "availableOptionsMessage", "subSelection", "omit", "applyEmptySelectionErrorOmit", "applyEmptySelectionErrorSelect", "uncapitalize", "applyEmptySelectionErrorGlobalOmit", "omitValue", "selection", "isEmpty", "addSelectionSuggestions", "suggestedOmitConfig", "SuggestionObjectValue", "omitSuggestion", "parentPath", "fieldName", "fieldValue", "ObjectValue", "locateResult", "locateSelectionField", "parent", "addInclusionSuggestions", "addOmissionSuggestions", "parts", "argName", "addArgumentsSuggestions", "unknownArgumentMessage", "arg", "argParentPath", "argParent", "addInputSuggestions", "f", "options", "suggestion", "getSuggestion", "existingField", "ScalarValue", "argumentName", "objectSuggestion", "typeName", "getInputTypeName", "dependentArgumentName", "description", "expected", "joinWithPreposition", "type", "printedValue", "value", "argument", "providedArguments", "argumentsParent", "select", "include", "inputType", "path", "green", "enabled", "preposition", "items", "itemsCopy", "lastItem", "MAX_EDIT_DISTANCE", "str", "minDistance", "result", "option", "editDistance", "levenshtein", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "FieldRefImpl", "modelName", "name", "fieldType", "isList", "isEnum", "listPrefix", "enumPrefix", "isFieldRef", "value", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "secret", "representations", "ObjectEnumValue", "arg", "NullTypesEnumValue", "DbNull", "#_brand_DbNull", "setClassName", "JsonNull", "#_brand_JsonNull", "AnyNull", "#_brand_AnyNull", "objectEnumValues", "classObject", "name", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "separator", "ObjectField", "name", "value", "writer", "FormattedString", "ArgumentsRenderingTree", "args", "writer", "renderer", "colors", "messageRenderer", "buildArgumentsRenderingTree", "buildInputObject", "inputObject", "object", "ObjectValue", "key", "value", "field", "ObjectField", "buildInputValue", "ScalarValue", "isDecimalJsLike", "dateStr", "isValidDate", "ObjectEnumValue", "isFieldRef", "uncapitalize", "buildInputArray", "array", "result", "ArrayValue", "item", "renderArgsTree", "argsTree", "errorFormat", "activeColors", "inactiveColors", "message", "Writer", "throwValidationException", "args", "errors", "errorFormat", "callsite", "originalMethod", "clientVersion", "globalOmit", "argsTree", "buildArgumentsRenderingTree", "error", "applyValidationError", "message", "renderedArgs", "renderArgsTree", "messageWithContext", "createErrorMessageWithContext", "PrismaClientValidationError", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "dmmfToJSModelName", "name", "str", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "getComputedFields", "previousComputedFields", "extension", "dmmfModelName", "jsName", "dmmfToJSModelName", "resolveDependencies", "getComputedFieldsFromModel", "computedFields", "cache", "Cache", "resolveNeeds", "fieldName", "visitedFields", "fieldDep", "mapObjectValues", "field", "name", "modelResult", "needs", "compute", "key", "composeCompute", "nextCompute", "previousCompute", "model", "computeEngineSideSelection", "selection", "result", "dependency", "computeEngineSideOmissions", "omission", "MergedExtensionsListNode", "extension", "previous", "Cache", "lazyProperty", "newCb", "dmmfModelName", "getComputedFields", "jsModelName", "dmmfToJSModelName", "operation", "prevCbs", "newCbs", "query", "MergedExtensionsList", "_MergedExtensionsList", "head", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "ParamImpl", "name", "isParam", "value", "createParam", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "secret", "Skip", "param", "value", "skip", "isSkip", "jsActionToProtocolAction", "STRICT_UNDEFINED_ERROR_MESSAGE", "serializeJsonQuery", "modelName", "action", "args", "runtimeDataModel", "extensions", "MergedExtensionsList", "callsite", "clientMethod", "errorFormat", "clientVersion", "previewFeatures", "globalOmit", "context", "SerializeContext", "serializeFieldSelection", "select", "include", "omit", "serializeArgumentsObject", "serializeSelectionSet", "createExplicitSelection", "createImplicitSelection", "selectionSet", "addIncludedRelations", "omitFields", "key", "value", "isSkip", "nestedContext", "validateSelectionForUndefined", "field", "localOmit", "computedFields", "combinedOmits", "omitWithComputedFields", "computeEngineSideOmissions", "selectWithComputedFields", "computeEngineSideSelection", "serializeArgumentsValue", "jsValue", "isDate", "isValidDate", "isParam", "isFieldRef", "serializeArgumentsArray", "buffer", "byteOffset", "byteLength", "isRawParameters", "isDecimalJsLike", "ObjectEnumValue", "objectEnumValues", "isJSONConvertible", "object", "result", "array", "i", "itemContext", "valueName", "_SerializeContext", "params", "error", "throwValidationException", "previewFeature", "name", "fieldName", "uncapitalize", "assertNever", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "checkPreviewFeatureFlag", "client", "PrismaClientValidationError", "MetricsClient", "options", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "defineDmmfProperty", "target", "runtimeDataModel", "dmmfLazy", "lazyProperty", "runtimeDataModelToBaseDmmf", "buildDMMFList", "map", "name", "props", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "internals", "TypedSqlMarker", "TypedSql", "sql", "values", "makeTypedQueryFactory", "isTypedSql", "value", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "import_package", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_events", "init_fs", "init_path", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "Sql", "_Sql", "rawStrings", "rawValues", "valuesLength", "len", "value", "pos", "child", "rawString", "childIndex", "i", "join", "values", "separator", "prefix", "suffix", "raw", "value", "Sql", "empty", "sql", "strings", "values", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "addObjectProperties", "object", "key", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "addProperty", "key", "factory", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "cacheProperties", "baseLayer", "cache", "Cache", "key", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "defaultPropertyDescriptor", "defaultProxyHandlers", "ownKeys", "_ownKeys", "target", "prop", "value", "customInspect", "createCompositeProxy", "target", "layers", "keysToLayerMap", "mapKeysToLayers", "overwrittenKeys", "proxy", "prop", "layer", "targetKeys", "getExistingKeys", "layerKeys", "value", "original", "defaultPropertyDescriptor", "property", "attributes", "toLog", "keys", "key", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "removeProperties", "keys", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "getBatchRequestPayload", "batch", "transaction", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "prettyPrintArguments", "args", "tree", "buildArgumentsRenderingTree", "Writer", "inactiveColors", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "TOO_MANY_CONNECTIONS_ERROR", "prismaGraphQLToJSError", "error", "user_facing_error", "clientVersion", "activeProvider", "PrismaClientKnownRequestError", "getKnownErrorMessage", "PrismaClientUnknownRequestError", "userFacingError", "message", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "UNKNOWN_FUNCTION", "parse", "stackString", "lines", "stack", "line", "parseResult", "parseChrome", "parseWinjs", "parseGecko", "parseNode", "parseJSC", "chromeRe", "chromeEvalRe", "parts", "isNative", "isEval", "submatch", "winjsRe", "geckoRe", "geckoEvalRe", "javaScriptCoreRe", "nodeRe", "DisabledCallSite", "EnabledCallSite", "stack", "frame", "parse", "t", "posixFile", "pathToPosix", "getCallSite", "errorFormat", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "aggregateMap", "desugarUserArgs", "args", "_args", "desugarCountInUserArgs", "aggregateArgs", "key", "value", "aggregateMap", "createUnpacker", "data", "aggregate", "modelAction", "aggregateUnpacker", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "desugarUserArgs", "args", "select", "_args", "createUnpacker", "data", "count", "modelAction", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "desugarUserArgs", "args", "_args", "key", "createUnpacker", "data", "row", "groupBy", "modelAction", "applyAggregates", "client", "action", "modelAction", "userArgs", "aggregate", "count", "groupBy", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "applyFieldsProxy", "modelName", "model", "scalarFieldsList", "field", "scalarFields", "keyBy", "target", "prop", "dmmfField", "FieldRefImpl", "defaultProxyHandlers", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "keys", "ks", "deepGet", "o", "kp", "k", "deepSet", "v", "i", "getNextDataPath", "fluentPropName", "prevDataPath", "getNextUserArgs", "callArgs", "prevArgs", "nextDataPath", "deepSet", "applyFluent", "client", "dmmfModelName", "modelAction", "prevUserArgs", "dmmfModelFieldMap", "acc", "field", "userArgs", "callsite", "getCallSite", "nextUserArgs", "prismaPromise", "ownKeys", "getOwnKeys", "target", "prop", "modelArgs", "dataArgs", "defaultProxyHandlers", "fluentProps", "aggregateProps", "applyModel", "client", "dmmfModelName", "modelExtensions", "layers", "modelActionsLayer", "fieldsPropertyLayer", "addObjectProperties", "addProperty", "createCompositeProxy", "jsModelName", "dmmfToJSModelName", "ownKeys", "ModelAction", "key", "dmmfActionName", "action", "paramOverrides", "userArgs", "callSite", "getCallSite", "transaction", "params", "applyFluent", "isValidAggregateName", "applyAggregates", "cacheProperties", "model", "applyFieldsProxy", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "jsToDMMFModelName", "name", "str", "rawClient", "applyModelsAndClientExtensions", "client", "layers", "rootLayer", "modelsLayer", "addProperty", "clientExtensions", "addObjectProperties", "createCompositeProxy", "prototype", "allKeys", "prop", "dmmfModelKeys", "jsModelKeys", "dmmfToJSModelName", "cacheProperties", "dmmfModelName", "jsToDMMFModelName", "applyModel", "key", "unApplyModelsAndClientExtensions", "$extends", "extension", "Engine", "newClient", "applyModelsAndClientExtensions", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "applyResultExtensions", "result", "modelName", "select", "omit", "extensions", "computedFields", "computedPropertiesLayers", "maskingLayers", "field", "toMask", "prop", "removeProperties", "areNeedsMet", "computedPropertyLayer", "createCompositeProxy", "neededProperties", "property", "hasOwnProperty", "cacheProperties", "addProperty", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "visitQueryResult", "visitor", "result", "args", "runtimeDataModel", "modelName", "i", "visitResult", "visitNested", "includeOrSelect", "parentModelName", "fieldName", "subConfig", "isSkip", "field", "applyAllResultExtensions", "result", "modelName", "args", "extensions", "runtimeDataModel", "globalOmit", "visitQueryResult", "value", "dmmfModelName", "jsName", "dmmfToJSModelName", "applyResultExtensions", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "denylist", "itxClientDenyList", "deepCloneArgs", "args", "Sql", "cloneSql", "isTypedSql", "cloneTypedSql", "clone", "i", "deepCloneValue", "k", "rawParam", "TypedSql", "x", "ObjectEnumValue", "isFieldRef", "isDecimalJsLike", "decimal_default", "isDate", "copy", "assertNever", "iterateAndCallQueryCallbacks", "client", "params", "queryCbs", "i", "transaction", "prevCustomFetch", "deepCloneArgs", "args", "__internalParams", "currCustomFetch", "composeCustomDataProxyFetch", "applyQueryExtensions", "jsModelName", "action", "clientMethod", "operation", "cbs", "createApplyBatchExtensionsFunction", "executeBatch", "requests", "callbacks", "iterateAndCallBatchCallbacks", "prevFetch", "request", "_args", "nextFetch", "noopFetch", "f", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "debug", "Debug", "cachingPlatforms", "checkPlatformCaching", "postinstall", "ciName", "clientVersion", "generator", "message", "PrismaClientInitializationError", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "getDatasourceOverrides", "options", "datasourceNames", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "maskQuery", "query", "substr", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "normalizeLogs", "logs", "l", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "import_new_github_issue_url", "getGitHubIssueUrl", "title", "user", "repo", "template", "body", "newGitHubIssueUrl", "getErrorMessageWithLink", "version", "binaryTarget", "title", "description", "engineVersion", "database", "query", "gotLogs", "getLogs", "logs", "normalizeLogs", "stripAnsi", "moreInfo", "body", "process", "maskQuery", "url", "getGitHubIssueUrl", "underline", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "assertNever", "_", "message", "isTaggedValue", "value", "mapObjectValues", "object", "mapper", "result", "key", "deserializeJsonResponse", "isTaggedValue", "deserializeTaggedValue", "$type", "value", "buffer", "byteOffset", "byteLength", "Decimal", "assertNever", "version", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "isNode", "isBun", "isDeno", "isNetlify", "isEdgeLight", "isWorkerd", "detectRuntime", "check", "runtimesPrettyNames", "getRuntime", "runtimeId", "resolveDatasourceUrl", "inlineDatasources", "overrideDatasources", "env", "clientVersion", "resolvedUrl", "datasourceName", "datasourceUrl", "overrideUrl", "PrismaClientInitializationError", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "getInteractiveTransactionId", "transaction", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "ReactNativeQueryEngine", "config", "logger", "_adapter", "process", "headers", "requestId", "requestStr", "headersStr", "transactionId", "_traceparent", "options", "traceHeaders", "id", "_options", "reactNativeLibraryLoader", "PrismaClientInitializationError", "DRIVER_ADAPTER_EXTERNAL_ERROR", "debug", "Debug", "isQueryEvent", "event", "isPanicEvent", "knownBinaryTargets", "binaryTargets", "MAX_REQUEST_ID", "NEXT_REQUEST_ID", "nextRequestId", "requestId", "LibraryEngine", "config", "libraryLoader", "reactNativeLibraryLoader", "dsOverrideName", "dsOverrideUrl", "engine", "fn", "args", "traceJson", "trace", "action", "headers", "arg", "adapter", "headerStr", "result", "jsonOptions", "response", "isUserFacingError", "externalError", "PrismaClientKnownRequestError", "PrismaClientUnknownRequestError", "weakThis", "WeakRef", "bindAdapter", "process", "log", "_e", "e", "error", "PrismaClientInitializationError", "PrismaClientRustPanicError", "getErrorMessageWithLink", "str", "startFn", "err", "stopFn", "r", "message", "query", "traceparent", "interactiveTransaction", "queryStr", "data", "queries", "transaction", "request", "getBatchRequestPayload", "getInteractiveTransactionId", "batchResult", "errors", "registry", "prismaGraphQLToJSError", "id", "assertAlways", "errorRecord", "options", "responseString", "title", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "validateEngineInstanceConfig", "url", "adapter", "copyEngine", "targetBuildType", "warnings", "errors", "pushWarning", "input", "pushError", "value", "isUsingPrismaAccelerate", "isUsingPrismaPostgres", "isPrismaPostgres", "isUsingDriverAdapters", "isAccelerateUrlScheme", "isAccelerateConfigured", "isUsing", "isNonEmptyArray", "arr", "getEngineInstance", "copyEngine", "engineConfig", "url", "resolveDatasourceUrl", "process", "ok", "isUsing", "diagnostics", "validateEngineInstanceConfig", "warning", "warnOnce", "error", "PrismaClientValidationError", "engineType", "getClientEngineType", "libraryEngineConfigured", "binaryEngineConfigured", "clientEngineConfigured", "clientEngineUsesRemoteExecutor", "LibraryEngine", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "getPreviewFeatures", "generator", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "rawCommandArgsMapper", "command", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "mssqlPreparedStatement", "sql", "acc", "str", "idx", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "serializeRawParameters", "parameters", "serializeRawParametersInternal", "objectSerialization", "parameter", "encodeParameter", "item", "isDate", "decimal_default", "isArrayBufferLike", "buffer", "byteOffset", "byteLength", "preprocessObject", "value", "obj", "preprocessValueInObject", "result", "key", "ALTER_RE", "debug", "Debug", "checkAlter", "activeProvider", "query", "values", "invalidCall", "rawQueryArgsMapper", "clientMethod", "args", "queryString", "parameters", "isTypedSql", "serializeRawParameters", "mssqlPreparedStatement", "templateStringMiddlewareArgsMapper", "sql", "requestArgs", "strings", "Sql", "sqlMiddlewareArgsMapper", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "createPrismaPromiseFactory", "transaction", "callback", "op", "promise", "_callback", "callbackTransaction", "valueToPromise", "error", "onFulfilled", "onRejected", "onFinally", "batchTransaction", "thing", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "majorVersion", "version", "disabledTracingHelper", "options", "callback", "DynamicTracingHelper", "context", "spans", "versionedPrismaInstrumentationGlobal", "fallbackPrismaInstrumentationGlobal", "getTracingHelper", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "getLockCountPromise", "knock", "cb", "resolve", "lock", "res", "onFulfilled", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "getLogLevel", "log", "acc", "curr", "currentLevel", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "hasBatchIndex", "value", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "getBatchId", "query", "parts", "buildKeysString", "obj", "key", "value", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "writeMap", "isWrite", "action", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "DataLoader", "options", "request", "hash", "process", "resolve", "reject", "key", "batch", "result", "e", "a", "b", "j", "results", "value", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "deserializeValue", "type", "value", "buffer", "byteOffset", "byteLength", "decimal_default", "v", "deserializeRawResult", "response", "deserializedResponse", "prebuiltEmptyObject", "createPrebuiltEmptyResultObject", "i", "row", "mappedRow", "j", "debug", "Debug", "RequestHandler", "client", "logEmitter", "DataLoader", "createApplyBatchExtensionsFunction", "requests", "customDataProxyFetch", "transaction", "otelParentCtx", "queries", "r", "traceparent", "containsWrite", "isWrite", "getTransactionOptions", "result", "i", "error", "request", "interactiveTransaction", "getItxTransactionOptions", "response", "getBatchId", "requestA", "requestB", "params", "clientMethod", "callsite", "args", "modelName", "dataPath", "unpacker", "data", "process", "err", "globalOmit", "isMismatchingBatchIndex", "PrismaClientKnownRequestError", "isValidationError", "validationError", "convertValidationError", "throwValidationException", "message", "createErrorMessageWithContext", "meta", "PrismaClientRustPanicError", "PrismaClientUnknownRequestError", "PrismaClientInitializationError", "stripAnsi", "operation", "pathForGet", "key", "extractedResponse", "deepGet", "deserializedResponse", "deserializeRawResult", "deserializeJsonResponse", "assertNever", "hasBatchIndex", "selectionPath", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "clientVersion", "version", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "import_js_levenshtein", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "PrismaClientConstructorValidationError", "message", "setClassName", "knownProperties", "errorFormats", "logLevels", "validators", "options", "datasourceNames", "PrismaClientConstructorValidationError", "key", "value", "didYouMean", "getDidYouMean", "key1", "value1", "adapter", "config", "getClientEngineType", "validateLogLevel", "level", "option", "logValidators", "emits", "maxWait", "timeout", "validationErrors", "modelKey", "modelConfig", "modelOrType", "getModelOrTypeByKey", "fieldName", "field", "renderOmitValidationErrors", "knownKeys", "validatePrismaClientOptions", "str", "alternative", "getAlternative", "optionsWithDistances", "leven", "a", "b", "bestAlternative", "runtimeDataModel", "findByKey", "map", "foundKey", "mapKey", "uncapitalize", "omitConfig", "argsTree", "buildArgumentsRenderingTree", "error", "message", "args", "renderArgsTree", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "waitForBatch", "promises", "resolve", "reject", "successfulResults", "bestError", "done", "settledPromisesCount", "settleOnePromise", "immediatelyReject", "error", "i", "result", "hasBatchIndex", "debug", "Debug", "noopMiddlewareArgsMapper", "param", "TX_ID", "BatchTxIdCounter", "getPrismaClient", "config", "PrismaClient", "createPrismaPromiseFactory", "optionsArg", "checkPlatformCaching", "validatePrismaClientOptions", "logEmitter", "EventEmitter", "MergedExtensionsList", "getPreviewFeatures", "clientVersion", "getTracingHelper", "envPaths", "path_default", "adapter", "expectedDriverAdapterProvider", "PrismaClientInitializationError", "loadedEnv", "options", "internal", "useDebug", "cwd", "fs_default", "engineConfig", "process", "getLogLevel", "o", "getDatasourceOverrides", "resolveDatasourceUrl", "getBatchRequestPayload", "prismaGraphQLToJSError", "PrismaClientUnknownRequestError", "PrismaClientKnownRequestError", "enginesVersion", "getEngineInstance", "RequestHandler", "log", "level", "event", "logger_exports", "e", "applyModelsAndClientExtensions", "eventType", "callback", "clearLogs", "transaction", "clientMethod", "args", "middlewareArgsMapper", "activeProvider", "rawQueryArgsMapper", "getCallSite", "query", "values", "sql", "argsMapper", "toSql", "checkAlter", "PrismaClientValidationError", "command", "rawCommandArgsMapper", "typedSql", "promises", "id", "lock", "getLockCountPromise", "requests", "request", "index", "isolationLevel", "waitForBatch", "headers", "optionsWithDefaults", "info", "result", "createCompositeProxy", "unApplyModelsAndClientExtensions", "addProperty", "removeProperties", "itxClientDenyList", "input", "spanOptions", "internalParams", "params", "consumer", "changedMiddlewareParams", "runInTransaction", "changedRequestParams", "requestParams", "applyQueryExtensions", "applyAllResultExtensions", "dataPath", "callsite", "action", "model", "unpacker", "otelParentCtx", "customDataProxyFetch", "message", "serializeJsonQuery", "prettyPrintArguments", "MetricsClient", "feature", "$extends", "isTemplateStringArray", "Sql", "templateStringMiddlewareArgsMapper", "sqlMiddlewareArgsMapper", "value", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "allowList", "makeStrictEnum", "definition", "target", "property", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref"]
3
+ "sources": ["../../../helpers/compile/plugins/fill-plugin/fillers/process.ts", "../../../helpers/compile/plugins/fill-plugin/fillers/perf_hooks.ts", "../../../helpers/compile/plugins/fill-plugin/fillers/function.ts", "../../../helpers/compile/plugins/fill-plugin/fillers/weakref.ts", "../../../../../../../../tmp/esbuild/bufferc59db99c.js", "../../../helpers/compile/plugins/fill-plugin/fillers/buffer.ts", "../../../helpers/compile/plugins/fill-plugin/fillers/fs.ts", "../../internals/package.json", "../../../helpers/compile/plugins/fill-plugin/fillers/path.ts", "../../../node_modules/.pnpm/min-indent@1.0.1/node_modules/min-indent/index.js", "../../../node_modules/.pnpm/indent-string@4.0.0/node_modules/indent-string/index.js", "../../../node_modules/.pnpm/new-github-issue-url@0.2.1/node_modules/new-github-issue-url/index.js", "../../../node_modules/.pnpm/js-levenshtein@1.1.6/node_modules/js-levenshtein/index.js", "../../ts-builders/src/TypeBuilder.ts", "../../ts-builders/src/KeyType.ts", "../../../node_modules/.pnpm/@prisma+engines-version@7.1.1-3.c2990dca591cba766e3b7ef5d9e8a84796e47ab7/node_modules/@prisma/engines-version/package.json", "../../../helpers/compile/plugins/fill-plugin/fillers/events.ts", "../src/runtime/index.ts", "../src/runtime/core/extensions/index.ts", "../src/runtime/core/extensions/defineExtension.ts", "../src/runtime/core/extensions/getExtensionContext.ts", "../src/runtime/core/public/index.ts", "../src/runtime/core/public/validator.ts", "../src/runtime/core/errors/PrismaClientInitializationError.ts", "../../internals/src/index.ts", "../../../node_modules/.pnpm/kleur@4.1.5/node_modules/kleur/colors.mjs", "../../debug/src/index.ts", "../../get-platform/src/index.ts", "../../get-platform/src/binaryTargets.ts", "../../internals/src/utils/getVersionFromPackageJson.ts", "../../internals/src/client/getClientEngineType.ts", "../../driver-adapter-utils/src/index.ts", "../../driver-adapter-utils/src/binder.ts", "../../driver-adapter-utils/src/debug.ts", "../../driver-adapter-utils/src/error.ts", "../../driver-adapter-utils/src/result.ts", "../../../node_modules/.pnpm/strip-indent@4.0.0/node_modules/strip-indent/index.js", "../../internals/src/utils/prismaPostgres.ts", "../../internals/src/logger.ts", "../../internals/src/utils/assertAlways.ts", "../../internals/src/utils/assertNever.ts", "../../../node_modules/.pnpm/strip-ansi@7.1.0/node_modules/strip-ansi/index.js", "../../../node_modules/.pnpm/ansi-regex@6.1.0/node_modules/ansi-regex/index.js", "../../internals/src/utils/path.ts", "../../internals/src/utils/hasOwnProperty.ts", "../../internals/src/utils/mapObjectValues.ts", "../../internals/src/utils/max.ts", "../../internals/src/utils/setClassName.ts", "../../internals/src/warnOnce.ts", "../src/runtime/core/errors/PrismaClientKnownRequestError.ts", "../src/runtime/core/errors/PrismaClientRustPanicError.ts", "../src/runtime/core/errors/PrismaClientUnknownRequestError.ts", "../src/runtime/core/errors/PrismaClientValidationError.ts", "../src/runtime/core/jsonProtocol/serializeJsonQuery.ts", "../../client-common/src/index.ts", "../../client-common/src/Cache.ts", "../../client-common/src/casing.ts", "../../client-common/src/Dictionary.ts", "../../client-common/src/lazyProperty.ts", "../../client-common/src/runtimeDataModel.ts", "../src/runtime/utils/date.ts", "../src/runtime/utils/decimalJsLike.ts", "../../../node_modules/.pnpm/decimal.js@10.5.0/node_modules/decimal.js/decimal.mjs", "../src/runtime/core/errorRendering/throwValidationException.ts", "../src/runtime/utils/createErrorMessageWithContext.ts", "../../dmmf/src/index.ts", "../../dmmf/src/convert.ts", "../../dmmf/src/dmmf.ts", "../src/runtime/utils/SourceFileSlice.ts", "../src/runtime/highlight/highlight.ts", "../src/runtime/highlight/prism.ts", "../src/runtime/highlight/theme.ts", "../src/runtime/utils/dedent.ts", "../src/runtime/core/errorRendering/applyValidationError.ts", "../src/runtime/core/errorRendering/applyUnionError.ts", "../src/runtime/core/errorRendering/ObjectFieldSuggestion.ts", "../src/runtime/core/errorRendering/ObjectValue.ts", "../../ts-builders/src/index.ts", "../../ts-builders/src/Writer.ts", "../src/runtime/core/errorRendering/ArrayValue.ts", "../src/runtime/core/errorRendering/ArrayField.ts", "../src/runtime/core/errorRendering/base.ts", "../src/runtime/core/errorRendering/FormattedString.ts", "../src/runtime/core/errorRendering/Value.ts", "../src/runtime/core/errorRendering/ScalarValue.ts", "../src/runtime/core/errorRendering/SuggestionObjectValue.ts", "../src/runtime/core/errorRendering/ArgumentsRenderingTree.ts", "../src/runtime/core/model/FieldRef.ts", "../src/runtime/core/types/exported/ObjectEnums.ts", "../src/runtime/core/errorRendering/ObjectField.ts", "../src/runtime/core/extensions/MergedExtensionsList.ts", "../src/runtime/core/model/utils/dmmfToJSModelName.ts", "../src/runtime/core/extensions/resultUtils.ts", "../src/runtime/core/model/Param.ts", "../src/runtime/core/types/index.ts", "../src/runtime/core/types/exported/Skip.ts", "../src/runtime/core/metrics/MetricsClient.ts", "../src/runtime/core/runtimeDataModel.ts", "../src/runtime/core/types/exported/TypedSql.ts", "../src/runtime/getPrismaClient.ts", "fill-plugin-4tll7:async_hooks", "../../../node_modules/.pnpm/sql-template-tag@5.2.1/node_modules/sql-template-tag/src/index.ts", "../src/runtime/core/compositeProxy/index.ts", "../src/runtime/core/compositeProxy/addObjectProperties.ts", "../src/runtime/core/compositeProxy/addProperty.ts", "../src/runtime/core/compositeProxy/cacheProperties.ts", "../src/runtime/core/compositeProxy/createCompositeProxy.ts", "../src/runtime/core/model/utils/defaultProxyHandlers.ts", "../src/runtime/core/compositeProxy/removeProperties.ts", "../src/runtime/core/engines/common/utils/getBatchRequestPayload.ts", "../src/runtime/core/errorRendering/prettyPrintArguments.ts", "../src/runtime/core/errors/utils/prismaGraphQLToJSError.ts", "../src/runtime/core/extensions/$extends.ts", "../src/runtime/core/model/applyModelsAndClientExtensions.ts", "../src/runtime/core/model/applyModel.ts", "../src/runtime/utils/CallSite.ts", "../../../node_modules/.pnpm/stacktrace-parser@0.1.11/node_modules/stacktrace-parser/dist/stack-trace-parser.esm.js", "../src/runtime/core/model/applyAggregates.ts", "../src/runtime/core/model/aggregates/aggregate.ts", "../src/runtime/core/model/aggregates/utils/aggregateMap.ts", "../src/runtime/core/model/aggregates/count.ts", "../src/runtime/core/model/aggregates/groupBy.ts", "../src/runtime/core/model/applyFieldsProxy.ts", "../src/runtime/core/model/applyFluent.ts", "../src/runtime/utils/deep-set.ts", "../src/runtime/core/model/utils/jsToDMMFModelName.ts", "../src/runtime/core/extensions/applyAllResultExtensions.ts", "../src/runtime/core/extensions/applyResultExtensions.ts", "../src/runtime/core/extensions/visitQueryResult.ts", "../src/runtime/core/extensions/applyQueryExtensions.ts", "../src/runtime/utils/deepCloneArgs.ts", "../src/runtime/core/types/exported/itxClientDenyList.ts", "../src/runtime/core/init/checkPlatformCaching.ts", "../src/runtime/core/init/getDatasourceOverrides.ts", "../src/runtime/core/init/getEngineInstance.ts", "../src/runtime/core/engines/index.ts", "../src/runtime/core/engines/common/utils/getErrorMessageWithLink.ts", "../src/runtime/core/engines/common/utils/maskQuery.ts", "../src/runtime/core/engines/common/utils/normalizeLogs.ts", "../src/runtime/core/engines/common/utils/util.ts", "../../client-engine-runtime/src/index.ts", "../../client-engine-runtime/src/json-protocol.ts", "../../client-engine-runtime/src/utils.ts", "../package.json", "../src/runtime/core/init/resolveDatasourceUrl.ts", "../src/runtime/utils/getRuntime.ts", "../src/runtime/core/engines/library/LibraryEngine.ts", "../src/runtime/core/engines/common/utils/getInteractiveTransactionId.ts", "../src/runtime/core/engines/library/ReactNativeLibraryLoader.ts", "../src/runtime/core/init/validateEngineInstanceConfig.ts", "../src/runtime/core/init/getPreviewFeatures.ts", "../src/runtime/core/raw-query/rawCommandArgsMapper.ts", "../src/runtime/core/raw-query/rawQueryArgsMapper.ts", "../src/runtime/utils/mssqlPreparedStatement.ts", "../src/runtime/utils/serializeRawParameters.ts", "../src/runtime/core/request/createPrismaPromise.ts", "../src/runtime/core/tracing/TracingHelper.ts", "../src/runtime/core/transaction/utils/createLockCountPromise.ts", "../src/runtime/getLogLevel.ts", "../src/runtime/RequestHandler.ts", "../src/runtime/core/errors/ErrorWithBatchIndex.ts", "../src/runtime/core/jsonProtocol/getBatchId.ts", "../src/runtime/core/jsonProtocol/isWrite.ts", "../src/runtime/DataLoader.ts", "../src/runtime/utils/deserializeRawResults.ts", "../src/runtime/utils/clientVersion.ts", "../src/runtime/utils/validatePrismaClientOptions.ts", "../src/runtime/core/errors/PrismaClientConstructorValidationError.ts", "../src/runtime/utils/waitForBatch.ts", "../src/runtime/strictEnum.ts", "fill-plugin-4tll7:./warnEnvConflicts"],
4
+ "sourcesContent": ["export const process: Partial<NodeJS.Process> = {\n nextTick: (fn: Function, ...args: unknown[]) => {\n setTimeout(() => {\n fn(...args)\n }, 0)\n },\n env: {},\n version: '',\n cwd: () => '/',\n stderr: {} as any,\n argv: ['/bin/node'],\n pid: 10000,\n}\n\nexport const { cwd } = process\nexport default process\n", "const performance =\n globalThis['performance'] ??\n (() => {\n const origin = Date.now()\n return {\n now: () => Date.now() - origin,\n }\n })()\n\nexport { performance }\nexport default { performance }\n", "export const fn = () => {}\n\nfn.prototype = fn\n", "export class WeakRef<T> {\n value: T\n\n constructor(value: T) {\n this.value = value\n }\n\n deref() {\n return this.value\n }\n}\n", "\"use strict\";var q=(i,r)=>()=>(r||i((r={exports:{}}).exports,r),r.exports);var H=q(C=>{\"use strict\";C.byteLength=sr;C.toByteArray=ar;C.fromByteArray=xr;var B=[],w=[],pr=typeof Uint8Array<\"u\"?Uint8Array:Array,N=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";for(m=0,W=N.length;m<W;++m)B[m]=N[m],w[N.charCodeAt(m)]=m;var m,W;w[45]=62;w[95]=63;function j(i){var r=i.length;if(r%4>0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var t=i.indexOf(\"=\");t===-1&&(t=r);var n=t===r?0:4-t%4;return[t,n]}function sr(i){var r=j(i),t=r[0],n=r[1];return(t+n)*3/4-n}function lr(i,r,t){return(r+t)*3/4-t}function ar(i){var r,t=j(i),n=t[0],e=t[1],o=new pr(lr(i,n,e)),u=0,f=e>0?n-4:n,c;for(c=0;c<f;c+=4)r=w[i.charCodeAt(c)]<<18|w[i.charCodeAt(c+1)]<<12|w[i.charCodeAt(c+2)]<<6|w[i.charCodeAt(c+3)],o[u++]=r>>16&255,o[u++]=r>>8&255,o[u++]=r&255;return e===2&&(r=w[i.charCodeAt(c)]<<2|w[i.charCodeAt(c+1)]>>4,o[u++]=r&255),e===1&&(r=w[i.charCodeAt(c)]<<10|w[i.charCodeAt(c+1)]<<4|w[i.charCodeAt(c+2)]>>2,o[u++]=r>>8&255,o[u++]=r&255),o}function yr(i){return B[i>>18&63]+B[i>>12&63]+B[i>>6&63]+B[i&63]}function wr(i,r,t){for(var n,e=[],o=r;o<t;o+=3)n=(i[o]<<16&16711680)+(i[o+1]<<8&65280)+(i[o+2]&255),e.push(yr(n));return e.join(\"\")}function xr(i){for(var r,t=i.length,n=t%3,e=[],o=16383,u=0,f=t-n;u<f;u+=o)e.push(wr(i,u,u+o>f?f:u+o));return n===1?(r=i[t-1],e.push(B[r>>2]+B[r<<4&63]+\"==\")):n===2&&(r=(i[t-2]<<8)+i[t-1],e.push(B[r>>10]+B[r>>4&63]+B[r<<2&63]+\"=\")),e.join(\"\")}});var V=q(M=>{M.read=function(i,r,t,n,e){var o,u,f=e*8-n-1,c=(1<<f)-1,l=c>>1,s=-7,p=t?e-1:0,F=t?-1:1,x=i[r+p];for(p+=F,o=x&(1<<-s)-1,x>>=-s,s+=f;s>0;o=o*256+i[r+p],p+=F,s-=8);for(u=o&(1<<-s)-1,o>>=-s,s+=n;s>0;u=u*256+i[r+p],p+=F,s-=8);if(o===0)o=1-l;else{if(o===c)return u?NaN:(x?-1:1)*(1/0);u=u+Math.pow(2,n),o=o-l}return(x?-1:1)*u*Math.pow(2,o-n)};M.write=function(i,r,t,n,e,o){var u,f,c,l=o*8-e-1,s=(1<<l)-1,p=s>>1,F=e===23?Math.pow(2,-24)-Math.pow(2,-77):0,x=n?0:o-1,L=n?1:-1,cr=r<0||r===0&&1/r<0?1:0;for(r=Math.abs(r),isNaN(r)||r===1/0?(f=isNaN(r)?1:0,u=s):(u=Math.floor(Math.log(r)/Math.LN2),r*(c=Math.pow(2,-u))<1&&(u--,c*=2),u+p>=1?r+=F/c:r+=F*Math.pow(2,1-p),r*c>=2&&(u++,c/=2),u+p>=s?(f=0,u=s):u+p>=1?(f=(r*c-1)*Math.pow(2,e),u=u+p):(f=r*Math.pow(2,p-1)*Math.pow(2,e),u=0));e>=8;i[t+x]=f&255,x+=L,f/=256,e-=8);for(u=u<<e|f,l+=e;l>0;i[t+x]=u&255,x+=L,u/=256,l-=8);i[t+x-L]|=cr*128}});var k=H(),U=V(),X=typeof Symbol==\"function\"&&typeof Symbol.for==\"function\"?Symbol.for(\"nodejs.util.inspect.custom\"):null;exports.Buffer=h;exports.SlowBuffer=Ir;exports.INSPECT_MAX_BYTES=50;var S=2147483647;exports.kMaxLength=S;h.TYPED_ARRAY_SUPPORT=Br();!h.TYPED_ARRAY_SUPPORT&&typeof console<\"u\"&&typeof console.error==\"function\"&&console.error(\"This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.\");function Br(){try{let i=new Uint8Array(1),r={foo:function(){return 42}};return Object.setPrototypeOf(r,Uint8Array.prototype),Object.setPrototypeOf(i,r),i.foo()===42}catch{return!1}}Object.defineProperty(h.prototype,\"parent\",{enumerable:!0,get:function(){if(h.isBuffer(this))return this.buffer}});Object.defineProperty(h.prototype,\"offset\",{enumerable:!0,get:function(){if(h.isBuffer(this))return this.byteOffset}});function d(i){if(i>S)throw new RangeError('The value \"'+i+'\" is invalid for option \"size\"');let r=new Uint8Array(i);return Object.setPrototypeOf(r,h.prototype),r}function h(i,r,t){if(typeof i==\"number\"){if(typeof r==\"string\")throw new TypeError('The \"string\" argument must be of type string. Received type number');return P(i)}return Z(i,r,t)}h.poolSize=8192;function Z(i,r,t){if(typeof i==\"string\")return dr(i,r);if(ArrayBuffer.isView(i))return gr(i);if(i==null)throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof i);if(E(i,ArrayBuffer)||i&&E(i.buffer,ArrayBuffer)||typeof SharedArrayBuffer<\"u\"&&(E(i,SharedArrayBuffer)||i&&E(i.buffer,SharedArrayBuffer)))return $(i,r,t);if(typeof i==\"number\")throw new TypeError('The \"value\" argument must not be of type number. Received type number');let n=i.valueOf&&i.valueOf();if(n!=null&&n!==i)return h.from(n,r,t);let e=mr(i);if(e)return e;if(typeof Symbol<\"u\"&&Symbol.toPrimitive!=null&&typeof i[Symbol.toPrimitive]==\"function\")return h.from(i[Symbol.toPrimitive](\"string\"),r,t);throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof i)}h.from=function(i,r,t){return Z(i,r,t)};Object.setPrototypeOf(h.prototype,Uint8Array.prototype);Object.setPrototypeOf(h,Uint8Array);function Q(i){if(typeof i!=\"number\")throw new TypeError('\"size\" argument must be of type number');if(i<0)throw new RangeError('The value \"'+i+'\" is invalid for option \"size\"')}function Er(i,r,t){return Q(i),i<=0?d(i):r!==void 0?typeof t==\"string\"?d(i).fill(r,t):d(i).fill(r):d(i)}h.alloc=function(i,r,t){return Er(i,r,t)};function P(i){return Q(i),d(i<0?0:O(i)|0)}h.allocUnsafe=function(i){return P(i)};h.allocUnsafeSlow=function(i){return P(i)};function dr(i,r){if((typeof r!=\"string\"||r===\"\")&&(r=\"utf8\"),!h.isEncoding(r))throw new TypeError(\"Unknown encoding: \"+r);let t=v(i,r)|0,n=d(t),e=n.write(i,r);return e!==t&&(n=n.slice(0,e)),n}function D(i){let r=i.length<0?0:O(i.length)|0,t=d(r);for(let n=0;n<r;n+=1)t[n]=i[n]&255;return t}function gr(i){if(E(i,Uint8Array)){let r=new Uint8Array(i);return $(r.buffer,r.byteOffset,r.byteLength)}return D(i)}function $(i,r,t){if(r<0||i.byteLength<r)throw new RangeError('\"offset\" is outside of buffer bounds');if(i.byteLength<r+(t||0))throw new RangeError('\"length\" is outside of buffer bounds');let n;return r===void 0&&t===void 0?n=new Uint8Array(i):t===void 0?n=new Uint8Array(i,r):n=new Uint8Array(i,r,t),Object.setPrototypeOf(n,h.prototype),n}function mr(i){if(h.isBuffer(i)){let r=O(i.length)|0,t=d(r);return t.length===0||i.copy(t,0,0,r),t}if(i.length!==void 0)return typeof i.length!=\"number\"||Y(i.length)?d(0):D(i);if(i.type===\"Buffer\"&&Array.isArray(i.data))return D(i.data)}function O(i){if(i>=S)throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+S.toString(16)+\" bytes\");return i|0}function Ir(i){return+i!=i&&(i=0),h.alloc(+i)}h.isBuffer=function(r){return r!=null&&r._isBuffer===!0&&r!==h.prototype};h.compare=function(r,t){if(E(r,Uint8Array)&&(r=h.from(r,r.offset,r.byteLength)),E(t,Uint8Array)&&(t=h.from(t,t.offset,t.byteLength)),!h.isBuffer(r)||!h.isBuffer(t))throw new TypeError('The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array');if(r===t)return 0;let n=r.length,e=t.length;for(let o=0,u=Math.min(n,e);o<u;++o)if(r[o]!==t[o]){n=r[o],e=t[o];break}return n<e?-1:e<n?1:0};h.isEncoding=function(r){switch(String(r).toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"latin1\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return!0;default:return!1}};h.concat=function(r,t){if(!Array.isArray(r))throw new TypeError('\"list\" argument must be an Array of Buffers');if(r.length===0)return h.alloc(0);let n;if(t===void 0)for(t=0,n=0;n<r.length;++n)t+=r[n].length;let e=h.allocUnsafe(t),o=0;for(n=0;n<r.length;++n){let u=r[n];if(E(u,Uint8Array))o+u.length>e.length?(h.isBuffer(u)||(u=h.from(u)),u.copy(e,o)):Uint8Array.prototype.set.call(e,u,o);else if(h.isBuffer(u))u.copy(e,o);else throw new TypeError('\"list\" argument must be an Array of Buffers');o+=u.length}return e};function v(i,r){if(h.isBuffer(i))return i.length;if(ArrayBuffer.isView(i)||E(i,ArrayBuffer))return i.byteLength;if(typeof i!=\"string\")throw new TypeError('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof i);let t=i.length,n=arguments.length>2&&arguments[2]===!0;if(!n&&t===0)return 0;let e=!1;for(;;)switch(r){case\"ascii\":case\"latin1\":case\"binary\":return t;case\"utf8\":case\"utf-8\":return b(i).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return t*2;case\"hex\":return t>>>1;case\"base64\":return fr(i).length;default:if(e)return n?-1:b(i).length;r=(\"\"+r).toLowerCase(),e=!0}}h.byteLength=v;function Fr(i,r,t){let n=!1;if((r===void 0||r<0)&&(r=0),r>this.length||((t===void 0||t>this.length)&&(t=this.length),t<=0)||(t>>>=0,r>>>=0,t<=r))return\"\";for(i||(i=\"utf8\");;)switch(i){case\"hex\":return Mr(this,r,t);case\"utf8\":case\"utf-8\":return tr(this,r,t);case\"ascii\":return Lr(this,r,t);case\"latin1\":case\"binary\":return Nr(this,r,t);case\"base64\":return Sr(this,r,t);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return kr(this,r,t);default:if(n)throw new TypeError(\"Unknown encoding: \"+i);i=(i+\"\").toLowerCase(),n=!0}}h.prototype._isBuffer=!0;function I(i,r,t){let n=i[r];i[r]=i[t],i[t]=n}h.prototype.swap16=function(){let r=this.length;if(r%2!==0)throw new RangeError(\"Buffer size must be a multiple of 16-bits\");for(let t=0;t<r;t+=2)I(this,t,t+1);return this};h.prototype.swap32=function(){let r=this.length;if(r%4!==0)throw new RangeError(\"Buffer size must be a multiple of 32-bits\");for(let t=0;t<r;t+=4)I(this,t,t+3),I(this,t+1,t+2);return this};h.prototype.swap64=function(){let r=this.length;if(r%8!==0)throw new RangeError(\"Buffer size must be a multiple of 64-bits\");for(let t=0;t<r;t+=8)I(this,t,t+7),I(this,t+1,t+6),I(this,t+2,t+5),I(this,t+3,t+4);return this};h.prototype.toString=function(){let r=this.length;return r===0?\"\":arguments.length===0?tr(this,0,r):Fr.apply(this,arguments)};h.prototype.toLocaleString=h.prototype.toString;h.prototype.equals=function(r){if(!h.isBuffer(r))throw new TypeError(\"Argument must be a Buffer\");return this===r?!0:h.compare(this,r)===0};h.prototype.inspect=function(){let r=\"\",t=exports.INSPECT_MAX_BYTES;return r=this.toString(\"hex\",0,t).replace(/(.{2})/g,\"$1 \").trim(),this.length>t&&(r+=\" ... \"),\"<Buffer \"+r+\">\"};X&&(h.prototype[X]=h.prototype.inspect);h.prototype.compare=function(r,t,n,e,o){if(E(r,Uint8Array)&&(r=h.from(r,r.offset,r.byteLength)),!h.isBuffer(r))throw new TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. Received type '+typeof r);if(t===void 0&&(t=0),n===void 0&&(n=r?r.length:0),e===void 0&&(e=0),o===void 0&&(o=this.length),t<0||n>r.length||e<0||o>this.length)throw new RangeError(\"out of range index\");if(e>=o&&t>=n)return 0;if(e>=o)return-1;if(t>=n)return 1;if(t>>>=0,n>>>=0,e>>>=0,o>>>=0,this===r)return 0;let u=o-e,f=n-t,c=Math.min(u,f),l=this.slice(e,o),s=r.slice(t,n);for(let p=0;p<c;++p)if(l[p]!==s[p]){u=l[p],f=s[p];break}return u<f?-1:f<u?1:0};function rr(i,r,t,n,e){if(i.length===0)return-1;if(typeof t==\"string\"?(n=t,t=0):t>2147483647?t=2147483647:t<-2147483648&&(t=-2147483648),t=+t,Y(t)&&(t=e?0:i.length-1),t<0&&(t=i.length+t),t>=i.length){if(e)return-1;t=i.length-1}else if(t<0)if(e)t=0;else return-1;if(typeof r==\"string\"&&(r=h.from(r,n)),h.isBuffer(r))return r.length===0?-1:z(i,r,t,n,e);if(typeof r==\"number\")return r=r&255,typeof Uint8Array.prototype.indexOf==\"function\"?e?Uint8Array.prototype.indexOf.call(i,r,t):Uint8Array.prototype.lastIndexOf.call(i,r,t):z(i,[r],t,n,e);throw new TypeError(\"val must be string, number or Buffer\")}function z(i,r,t,n,e){let o=1,u=i.length,f=r.length;if(n!==void 0&&(n=String(n).toLowerCase(),n===\"ucs2\"||n===\"ucs-2\"||n===\"utf16le\"||n===\"utf-16le\")){if(i.length<2||r.length<2)return-1;o=2,u/=2,f/=2,t/=2}function c(s,p){return o===1?s[p]:s.readUInt16BE(p*o)}let l;if(e){let s=-1;for(l=t;l<u;l++)if(c(i,l)===c(r,s===-1?0:l-s)){if(s===-1&&(s=l),l-s+1===f)return s*o}else s!==-1&&(l-=l-s),s=-1}else for(t+f>u&&(t=u-f),l=t;l>=0;l--){let s=!0;for(let p=0;p<f;p++)if(c(i,l+p)!==c(r,p)){s=!1;break}if(s)return l}return-1}h.prototype.includes=function(r,t,n){return this.indexOf(r,t,n)!==-1};h.prototype.indexOf=function(r,t,n){return rr(this,r,t,n,!0)};h.prototype.lastIndexOf=function(r,t,n){return rr(this,r,t,n,!1)};function Ar(i,r,t,n){t=Number(t)||0;let e=i.length-t;n?(n=Number(n),n>e&&(n=e)):n=e;let o=r.length;n>o/2&&(n=o/2);let u;for(u=0;u<n;++u){let f=parseInt(r.substr(u*2,2),16);if(Y(f))return u;i[t+u]=f}return u}function Ur(i,r,t,n){return _(b(r,i.length-t),i,t,n)}function Rr(i,r,t,n){return _(Pr(r),i,t,n)}function Tr(i,r,t,n){return _(fr(r),i,t,n)}function Cr(i,r,t,n){return _(Or(r,i.length-t),i,t,n)}h.prototype.write=function(r,t,n,e){if(t===void 0)e=\"utf8\",n=this.length,t=0;else if(n===void 0&&typeof t==\"string\")e=t,n=this.length,t=0;else if(isFinite(t))t=t>>>0,isFinite(n)?(n=n>>>0,e===void 0&&(e=\"utf8\")):(e=n,n=void 0);else throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");let o=this.length-t;if((n===void 0||n>o)&&(n=o),r.length>0&&(n<0||t<0)||t>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");e||(e=\"utf8\");let u=!1;for(;;)switch(e){case\"hex\":return Ar(this,r,t,n);case\"utf8\":case\"utf-8\":return Ur(this,r,t,n);case\"ascii\":case\"latin1\":case\"binary\":return Rr(this,r,t,n);case\"base64\":return Tr(this,r,t,n);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return Cr(this,r,t,n);default:if(u)throw new TypeError(\"Unknown encoding: \"+e);e=(\"\"+e).toLowerCase(),u=!0}};h.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};function Sr(i,r,t){return r===0&&t===i.length?k.fromByteArray(i):k.fromByteArray(i.slice(r,t))}function tr(i,r,t){t=Math.min(i.length,t);let n=[],e=r;for(;e<t;){let o=i[e],u=null,f=o>239?4:o>223?3:o>191?2:1;if(e+f<=t){let c,l,s,p;switch(f){case 1:o<128&&(u=o);break;case 2:c=i[e+1],(c&192)===128&&(p=(o&31)<<6|c&63,p>127&&(u=p));break;case 3:c=i[e+1],l=i[e+2],(c&192)===128&&(l&192)===128&&(p=(o&15)<<12|(c&63)<<6|l&63,p>2047&&(p<55296||p>57343)&&(u=p));break;case 4:c=i[e+1],l=i[e+2],s=i[e+3],(c&192)===128&&(l&192)===128&&(s&192)===128&&(p=(o&15)<<18|(c&63)<<12|(l&63)<<6|s&63,p>65535&&p<1114112&&(u=p))}}u===null?(u=65533,f=1):u>65535&&(u-=65536,n.push(u>>>10&1023|55296),u=56320|u&1023),n.push(u),e+=f}return _r(n)}var J=4096;function _r(i){let r=i.length;if(r<=J)return String.fromCharCode.apply(String,i);let t=\"\",n=0;for(;n<r;)t+=String.fromCharCode.apply(String,i.slice(n,n+=J));return t}function Lr(i,r,t){let n=\"\";t=Math.min(i.length,t);for(let e=r;e<t;++e)n+=String.fromCharCode(i[e]&127);return n}function Nr(i,r,t){let n=\"\";t=Math.min(i.length,t);for(let e=r;e<t;++e)n+=String.fromCharCode(i[e]);return n}function Mr(i,r,t){let n=i.length;(!r||r<0)&&(r=0),(!t||t<0||t>n)&&(t=n);let e=\"\";for(let o=r;o<t;++o)e+=Gr[i[o]];return e}function kr(i,r,t){let n=i.slice(r,t),e=\"\";for(let o=0;o<n.length-1;o+=2)e+=String.fromCharCode(n[o]+n[o+1]*256);return e}h.prototype.slice=function(r,t){let n=this.length;r=~~r,t=t===void 0?n:~~t,r<0?(r+=n,r<0&&(r=0)):r>n&&(r=n),t<0?(t+=n,t<0&&(t=0)):t>n&&(t=n),t<r&&(t=r);let e=this.subarray(r,t);return Object.setPrototypeOf(e,h.prototype),e};function a(i,r,t){if(i%1!==0||i<0)throw new RangeError(\"offset is not uint\");if(i+r>t)throw new RangeError(\"Trying to access beyond buffer length\")}h.prototype.readUintLE=h.prototype.readUIntLE=function(r,t,n){r=r>>>0,t=t>>>0,n||a(r,t,this.length);let e=this[r],o=1,u=0;for(;++u<t&&(o*=256);)e+=this[r+u]*o;return e};h.prototype.readUintBE=h.prototype.readUIntBE=function(r,t,n){r=r>>>0,t=t>>>0,n||a(r,t,this.length);let e=this[r+--t],o=1;for(;t>0&&(o*=256);)e+=this[r+--t]*o;return e};h.prototype.readUint8=h.prototype.readUInt8=function(r,t){return r=r>>>0,t||a(r,1,this.length),this[r]};h.prototype.readUint16LE=h.prototype.readUInt16LE=function(r,t){return r=r>>>0,t||a(r,2,this.length),this[r]|this[r+1]<<8};h.prototype.readUint16BE=h.prototype.readUInt16BE=function(r,t){return r=r>>>0,t||a(r,2,this.length),this[r]<<8|this[r+1]};h.prototype.readUint32LE=h.prototype.readUInt32LE=function(r,t){return r=r>>>0,t||a(r,4,this.length),(this[r]|this[r+1]<<8|this[r+2]<<16)+this[r+3]*16777216};h.prototype.readUint32BE=h.prototype.readUInt32BE=function(r,t){return r=r>>>0,t||a(r,4,this.length),this[r]*16777216+(this[r+1]<<16|this[r+2]<<8|this[r+3])};h.prototype.readBigUInt64LE=g(function(r){r=r>>>0,R(r,\"offset\");let t=this[r],n=this[r+7];(t===void 0||n===void 0)&&T(r,this.length-8);let e=t+this[++r]*2**8+this[++r]*2**16+this[++r]*2**24,o=this[++r]+this[++r]*2**8+this[++r]*2**16+n*2**24;return BigInt(e)+(BigInt(o)<<BigInt(32))});h.prototype.readBigUInt64BE=g(function(r){r=r>>>0,R(r,\"offset\");let t=this[r],n=this[r+7];(t===void 0||n===void 0)&&T(r,this.length-8);let e=t*2**24+this[++r]*2**16+this[++r]*2**8+this[++r],o=this[++r]*2**24+this[++r]*2**16+this[++r]*2**8+n;return(BigInt(e)<<BigInt(32))+BigInt(o)});h.prototype.readIntLE=function(r,t,n){r=r>>>0,t=t>>>0,n||a(r,t,this.length);let e=this[r],o=1,u=0;for(;++u<t&&(o*=256);)e+=this[r+u]*o;return o*=128,e>=o&&(e-=Math.pow(2,8*t)),e};h.prototype.readIntBE=function(r,t,n){r=r>>>0,t=t>>>0,n||a(r,t,this.length);let e=t,o=1,u=this[r+--e];for(;e>0&&(o*=256);)u+=this[r+--e]*o;return o*=128,u>=o&&(u-=Math.pow(2,8*t)),u};h.prototype.readInt8=function(r,t){return r=r>>>0,t||a(r,1,this.length),this[r]&128?(255-this[r]+1)*-1:this[r]};h.prototype.readInt16LE=function(r,t){r=r>>>0,t||a(r,2,this.length);let n=this[r]|this[r+1]<<8;return n&32768?n|4294901760:n};h.prototype.readInt16BE=function(r,t){r=r>>>0,t||a(r,2,this.length);let n=this[r+1]|this[r]<<8;return n&32768?n|4294901760:n};h.prototype.readInt32LE=function(r,t){return r=r>>>0,t||a(r,4,this.length),this[r]|this[r+1]<<8|this[r+2]<<16|this[r+3]<<24};h.prototype.readInt32BE=function(r,t){return r=r>>>0,t||a(r,4,this.length),this[r]<<24|this[r+1]<<16|this[r+2]<<8|this[r+3]};h.prototype.readBigInt64LE=g(function(r){r=r>>>0,R(r,\"offset\");let t=this[r],n=this[r+7];(t===void 0||n===void 0)&&T(r,this.length-8);let e=this[r+4]+this[r+5]*2**8+this[r+6]*2**16+(n<<24);return(BigInt(e)<<BigInt(32))+BigInt(t+this[++r]*2**8+this[++r]*2**16+this[++r]*2**24)});h.prototype.readBigInt64BE=g(function(r){r=r>>>0,R(r,\"offset\");let t=this[r],n=this[r+7];(t===void 0||n===void 0)&&T(r,this.length-8);let e=(t<<24)+this[++r]*2**16+this[++r]*2**8+this[++r];return(BigInt(e)<<BigInt(32))+BigInt(this[++r]*2**24+this[++r]*2**16+this[++r]*2**8+n)});h.prototype.readFloatLE=function(r,t){return r=r>>>0,t||a(r,4,this.length),U.read(this,r,!0,23,4)};h.prototype.readFloatBE=function(r,t){return r=r>>>0,t||a(r,4,this.length),U.read(this,r,!1,23,4)};h.prototype.readDoubleLE=function(r,t){return r=r>>>0,t||a(r,8,this.length),U.read(this,r,!0,52,8)};h.prototype.readDoubleBE=function(r,t){return r=r>>>0,t||a(r,8,this.length),U.read(this,r,!1,52,8)};function y(i,r,t,n,e,o){if(!h.isBuffer(i))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(r>e||r<o)throw new RangeError('\"value\" argument is out of bounds');if(t+n>i.length)throw new RangeError(\"Index out of range\")}h.prototype.writeUintLE=h.prototype.writeUIntLE=function(r,t,n,e){if(r=+r,t=t>>>0,n=n>>>0,!e){let f=Math.pow(2,8*n)-1;y(this,r,t,n,f,0)}let o=1,u=0;for(this[t]=r&255;++u<n&&(o*=256);)this[t+u]=r/o&255;return t+n};h.prototype.writeUintBE=h.prototype.writeUIntBE=function(r,t,n,e){if(r=+r,t=t>>>0,n=n>>>0,!e){let f=Math.pow(2,8*n)-1;y(this,r,t,n,f,0)}let o=n-1,u=1;for(this[t+o]=r&255;--o>=0&&(u*=256);)this[t+o]=r/u&255;return t+n};h.prototype.writeUint8=h.prototype.writeUInt8=function(r,t,n){return r=+r,t=t>>>0,n||y(this,r,t,1,255,0),this[t]=r&255,t+1};h.prototype.writeUint16LE=h.prototype.writeUInt16LE=function(r,t,n){return r=+r,t=t>>>0,n||y(this,r,t,2,65535,0),this[t]=r&255,this[t+1]=r>>>8,t+2};h.prototype.writeUint16BE=h.prototype.writeUInt16BE=function(r,t,n){return r=+r,t=t>>>0,n||y(this,r,t,2,65535,0),this[t]=r>>>8,this[t+1]=r&255,t+2};h.prototype.writeUint32LE=h.prototype.writeUInt32LE=function(r,t,n){return r=+r,t=t>>>0,n||y(this,r,t,4,4294967295,0),this[t+3]=r>>>24,this[t+2]=r>>>16,this[t+1]=r>>>8,this[t]=r&255,t+4};h.prototype.writeUint32BE=h.prototype.writeUInt32BE=function(r,t,n){return r=+r,t=t>>>0,n||y(this,r,t,4,4294967295,0),this[t]=r>>>24,this[t+1]=r>>>16,this[t+2]=r>>>8,this[t+3]=r&255,t+4};function ir(i,r,t,n,e){hr(r,n,e,i,t,7);let o=Number(r&BigInt(4294967295));i[t++]=o,o=o>>8,i[t++]=o,o=o>>8,i[t++]=o,o=o>>8,i[t++]=o;let u=Number(r>>BigInt(32)&BigInt(4294967295));return i[t++]=u,u=u>>8,i[t++]=u,u=u>>8,i[t++]=u,u=u>>8,i[t++]=u,t}function nr(i,r,t,n,e){hr(r,n,e,i,t,7);let o=Number(r&BigInt(4294967295));i[t+7]=o,o=o>>8,i[t+6]=o,o=o>>8,i[t+5]=o,o=o>>8,i[t+4]=o;let u=Number(r>>BigInt(32)&BigInt(4294967295));return i[t+3]=u,u=u>>8,i[t+2]=u,u=u>>8,i[t+1]=u,u=u>>8,i[t]=u,t+8}h.prototype.writeBigUInt64LE=g(function(r,t=0){return ir(this,r,t,BigInt(0),BigInt(\"0xffffffffffffffff\"))});h.prototype.writeBigUInt64BE=g(function(r,t=0){return nr(this,r,t,BigInt(0),BigInt(\"0xffffffffffffffff\"))});h.prototype.writeIntLE=function(r,t,n,e){if(r=+r,t=t>>>0,!e){let c=Math.pow(2,8*n-1);y(this,r,t,n,c-1,-c)}let o=0,u=1,f=0;for(this[t]=r&255;++o<n&&(u*=256);)r<0&&f===0&&this[t+o-1]!==0&&(f=1),this[t+o]=(r/u>>0)-f&255;return t+n};h.prototype.writeIntBE=function(r,t,n,e){if(r=+r,t=t>>>0,!e){let c=Math.pow(2,8*n-1);y(this,r,t,n,c-1,-c)}let o=n-1,u=1,f=0;for(this[t+o]=r&255;--o>=0&&(u*=256);)r<0&&f===0&&this[t+o+1]!==0&&(f=1),this[t+o]=(r/u>>0)-f&255;return t+n};h.prototype.writeInt8=function(r,t,n){return r=+r,t=t>>>0,n||y(this,r,t,1,127,-128),r<0&&(r=255+r+1),this[t]=r&255,t+1};h.prototype.writeInt16LE=function(r,t,n){return r=+r,t=t>>>0,n||y(this,r,t,2,32767,-32768),this[t]=r&255,this[t+1]=r>>>8,t+2};h.prototype.writeInt16BE=function(r,t,n){return r=+r,t=t>>>0,n||y(this,r,t,2,32767,-32768),this[t]=r>>>8,this[t+1]=r&255,t+2};h.prototype.writeInt32LE=function(r,t,n){return r=+r,t=t>>>0,n||y(this,r,t,4,2147483647,-2147483648),this[t]=r&255,this[t+1]=r>>>8,this[t+2]=r>>>16,this[t+3]=r>>>24,t+4};h.prototype.writeInt32BE=function(r,t,n){return r=+r,t=t>>>0,n||y(this,r,t,4,2147483647,-2147483648),r<0&&(r=4294967295+r+1),this[t]=r>>>24,this[t+1]=r>>>16,this[t+2]=r>>>8,this[t+3]=r&255,t+4};h.prototype.writeBigInt64LE=g(function(r,t=0){return ir(this,r,t,-BigInt(\"0x8000000000000000\"),BigInt(\"0x7fffffffffffffff\"))});h.prototype.writeBigInt64BE=g(function(r,t=0){return nr(this,r,t,-BigInt(\"0x8000000000000000\"),BigInt(\"0x7fffffffffffffff\"))});function er(i,r,t,n,e,o){if(t+n>i.length)throw new RangeError(\"Index out of range\");if(t<0)throw new RangeError(\"Index out of range\")}function or(i,r,t,n,e){return r=+r,t=t>>>0,e||er(i,r,t,4,34028234663852886e22,-34028234663852886e22),U.write(i,r,t,n,23,4),t+4}h.prototype.writeFloatLE=function(r,t,n){return or(this,r,t,!0,n)};h.prototype.writeFloatBE=function(r,t,n){return or(this,r,t,!1,n)};function ur(i,r,t,n,e){return r=+r,t=t>>>0,e||er(i,r,t,8,17976931348623157e292,-17976931348623157e292),U.write(i,r,t,n,52,8),t+8}h.prototype.writeDoubleLE=function(r,t,n){return ur(this,r,t,!0,n)};h.prototype.writeDoubleBE=function(r,t,n){return ur(this,r,t,!1,n)};h.prototype.copy=function(r,t,n,e){if(!h.isBuffer(r))throw new TypeError(\"argument should be a Buffer\");if(n||(n=0),!e&&e!==0&&(e=this.length),t>=r.length&&(t=r.length),t||(t=0),e>0&&e<n&&(e=n),e===n||r.length===0||this.length===0)return 0;if(t<0)throw new RangeError(\"targetStart out of bounds\");if(n<0||n>=this.length)throw new RangeError(\"Index out of range\");if(e<0)throw new RangeError(\"sourceEnd out of bounds\");e>this.length&&(e=this.length),r.length-t<e-n&&(e=r.length-t+n);let o=e-n;return this===r&&typeof Uint8Array.prototype.copyWithin==\"function\"?this.copyWithin(t,n,e):Uint8Array.prototype.set.call(r,this.subarray(n,e),t),o};h.prototype.fill=function(r,t,n,e){if(typeof r==\"string\"){if(typeof t==\"string\"?(e=t,t=0,n=this.length):typeof n==\"string\"&&(e=n,n=this.length),e!==void 0&&typeof e!=\"string\")throw new TypeError(\"encoding must be a string\");if(typeof e==\"string\"&&!h.isEncoding(e))throw new TypeError(\"Unknown encoding: \"+e);if(r.length===1){let u=r.charCodeAt(0);(e===\"utf8\"&&u<128||e===\"latin1\")&&(r=u)}}else typeof r==\"number\"?r=r&255:typeof r==\"boolean\"&&(r=Number(r));if(t<0||this.length<t||this.length<n)throw new RangeError(\"Out of range index\");if(n<=t)return this;t=t>>>0,n=n===void 0?this.length:n>>>0,r||(r=0);let o;if(typeof r==\"number\")for(o=t;o<n;++o)this[o]=r;else{let u=h.isBuffer(r)?r:h.from(r,e),f=u.length;if(f===0)throw new TypeError('The value \"'+r+'\" is invalid for argument \"value\"');for(o=0;o<n-t;++o)this[o+t]=u[o%f]}return this};var A={};function G(i,r,t){A[i]=class extends t{constructor(){super(),Object.defineProperty(this,\"message\",{value:r.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${i}]`,this.stack,delete this.name}get code(){return i}set code(e){Object.defineProperty(this,\"code\",{configurable:!0,enumerable:!0,value:e,writable:!0})}toString(){return`${this.name} [${i}]: ${this.message}`}}}G(\"ERR_BUFFER_OUT_OF_BOUNDS\",function(i){return i?`${i} is outside of buffer bounds`:\"Attempt to access memory outside buffer bounds\"},RangeError);G(\"ERR_INVALID_ARG_TYPE\",function(i,r){return`The \"${i}\" argument must be of type number. Received type ${typeof r}`},TypeError);G(\"ERR_OUT_OF_RANGE\",function(i,r,t){let n=`The value of \"${i}\" is out of range.`,e=t;return Number.isInteger(t)&&Math.abs(t)>2**32?e=K(String(t)):typeof t==\"bigint\"&&(e=String(t),(t>BigInt(2)**BigInt(32)||t<-(BigInt(2)**BigInt(32)))&&(e=K(e)),e+=\"n\"),n+=` It must be ${r}. Received ${e}`,n},RangeError);function K(i){let r=\"\",t=i.length,n=i[0]===\"-\"?1:0;for(;t>=n+4;t-=3)r=`_${i.slice(t-3,t)}${r}`;return`${i.slice(0,t)}${r}`}function Dr(i,r,t){R(r,\"offset\"),(i[r]===void 0||i[r+t]===void 0)&&T(r,i.length-(t+1))}function hr(i,r,t,n,e,o){if(i>t||i<r){let u=typeof r==\"bigint\"?\"n\":\"\",f;throw o>3?r===0||r===BigInt(0)?f=`>= 0${u} and < 2${u} ** ${(o+1)*8}${u}`:f=`>= -(2${u} ** ${(o+1)*8-1}${u}) and < 2 ** ${(o+1)*8-1}${u}`:f=`>= ${r}${u} and <= ${t}${u}`,new A.ERR_OUT_OF_RANGE(\"value\",f,i)}Dr(n,e,o)}function R(i,r){if(typeof i!=\"number\")throw new A.ERR_INVALID_ARG_TYPE(r,\"number\",i)}function T(i,r,t){throw Math.floor(i)!==i?(R(i,t),new A.ERR_OUT_OF_RANGE(t||\"offset\",\"an integer\",i)):r<0?new A.ERR_BUFFER_OUT_OF_BOUNDS:new A.ERR_OUT_OF_RANGE(t||\"offset\",`>= ${t?1:0} and <= ${r}`,i)}var $r=/[^+/0-9A-Za-z-_]/g;function br(i){if(i=i.split(\"=\")[0],i=i.trim().replace($r,\"\"),i.length<2)return\"\";for(;i.length%4!==0;)i=i+\"=\";return i}function b(i,r){r=r||1/0;let t,n=i.length,e=null,o=[];for(let u=0;u<n;++u){if(t=i.charCodeAt(u),t>55295&&t<57344){if(!e){if(t>56319){(r-=3)>-1&&o.push(239,191,189);continue}else if(u+1===n){(r-=3)>-1&&o.push(239,191,189);continue}e=t;continue}if(t<56320){(r-=3)>-1&&o.push(239,191,189),e=t;continue}t=(e-55296<<10|t-56320)+65536}else e&&(r-=3)>-1&&o.push(239,191,189);if(e=null,t<128){if((r-=1)<0)break;o.push(t)}else if(t<2048){if((r-=2)<0)break;o.push(t>>6|192,t&63|128)}else if(t<65536){if((r-=3)<0)break;o.push(t>>12|224,t>>6&63|128,t&63|128)}else if(t<1114112){if((r-=4)<0)break;o.push(t>>18|240,t>>12&63|128,t>>6&63|128,t&63|128)}else throw new Error(\"Invalid code point\")}return o}function Pr(i){let r=[];for(let t=0;t<i.length;++t)r.push(i.charCodeAt(t)&255);return r}function Or(i,r){let t,n,e,o=[];for(let u=0;u<i.length&&!((r-=2)<0);++u)t=i.charCodeAt(u),n=t>>8,e=t%256,o.push(e),o.push(n);return o}function fr(i){return k.toByteArray(br(i))}function _(i,r,t,n){let e;for(e=0;e<n&&!(e+t>=r.length||e>=i.length);++e)r[e+t]=i[e];return e}function E(i,r){return i instanceof r||i!=null&&i.constructor!=null&&i.constructor.name!=null&&i.constructor.name===r.name}function Y(i){return i!==i}var Gr=function(){let i=\"0123456789abcdef\",r=new Array(256);for(let t=0;t<16;++t){let n=t*16;for(let e=0;e<16;++e)r[n+e]=i[t]+i[e]}return r}();function g(i){return typeof BigInt>\"u\"?Yr:i}function Yr(){throw new Error(\"BigInt not supported\")}\n/*! Bundled license information:\n\nieee754/index.js:\n (*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> *)\n\nbuffer/index.js:\n (*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n *)\n*/\n", "export { Buffer } from 'buffer'\n", "export function existsSync() {\n return false\n}\n\nexport function lstatSync() {\n return {\n dev: 0,\n ino: 0,\n mode: 0,\n nlink: 0,\n uid: 0,\n gid: 0,\n rdev: 0,\n size: 0,\n blksize: 0,\n blocks: 0,\n atimeMs: 0,\n mtimeMs: 0,\n ctimeMs: 0,\n birthtimeMs: 0,\n atime: new Date(),\n mtime: new Date(),\n ctime: new Date(),\n birthtime: new Date(),\n }\n}\n\nexport function statSync() {\n return lstatSync()\n}\n\nexport function readdirSync() {\n return []\n}\n\nexport function readdir(cb: (err: Error | null, files: string[]) => void) {\n cb(null, [])\n}\n\nexport function readFileSync() {\n return ''\n}\n\nexport function readlinkSync() {\n return ''\n}\n\nexport function realpathSync() {\n return ''\n}\n\nexport function chmodSync() {}\n\nexport function renameSync() {}\n\nexport function mkdirSync() {}\n\nexport function rmdirSync() {}\n\nexport function rmSync() {}\n\nexport function unlinkSync() {}\n\nexport function watchFile() {}\n\nexport function unwatchFile() {}\n\nexport function watch() {\n return {\n close: () => {},\n on: () => {},\n removeAllListeners: () => {},\n }\n}\n\nexport function stat(path: string, callback: (err: Error | null, stats?: any) => void) {\n callback(null, lstatSync())\n}\n\nexport const promises = {}\n\n/**\n * A stub for fs for tryLoadEnv not to attempt loading .env\n */\nconst fs = {\n existsSync,\n lstatSync,\n stat,\n statSync,\n readdirSync,\n readdir,\n readlinkSync,\n realpathSync,\n chmodSync,\n renameSync,\n mkdirSync,\n rmdirSync,\n rmSync,\n unlinkSync,\n watchFile,\n unwatchFile,\n watch,\n promises,\n}\n\nexport default fs\n", "{\n \"name\": \"@prisma/internals\",\n \"version\": \"7.3.0-integration-prisma6-fix-cloudflare-engine.3\",\n \"description\": \"This package is intended for Prisma's internal use\",\n \"main\": \"dist/index.js\",\n \"types\": \"dist/index.d.ts\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/prisma/prisma.git\",\n \"directory\": \"packages/internals\"\n },\n \"homepage\": \"https://www.prisma.io\",\n \"author\": \"Tim Suchanek <suchanek@prisma.io>\",\n \"bugs\": \"https://github.com/prisma/prisma/issues\",\n \"license\": \"Apache-2.0\",\n \"scripts\": {\n \"dev\": \"DEV=true tsx helpers/build.ts\",\n \"build\": \"tsx helpers/build.ts\",\n \"test\": \"dotenv -e ../../.db.env -- jest --silent\",\n \"prepublishOnly\": \"pnpm run build\"\n },\n \"files\": [\n \"README.md\",\n \"dist\",\n \"!**/libquery_engine*\",\n \"!dist/get-generators/engines/*\",\n \"scripts\"\n ],\n \"devDependencies\": {\n \"@babel/helper-validator-identifier\": \"7.25.9\",\n \"@opentelemetry/api\": \"1.9.0\",\n \"@swc/core\": \"1.11.5\",\n \"@swc/jest\": \"0.2.37\",\n \"@types/babel__helper-validator-identifier\": \"7.15.2\",\n \"@types/jest\": \"29.5.14\",\n \"@types/node\": \"18.19.76\",\n \"@types/resolve\": \"1.20.6\",\n \"archiver\": \"6.0.2\",\n \"checkpoint-client\": \"1.1.33\",\n \"cli-truncate\": \"4.0.0\",\n \"dotenv\": \"16.5.0\",\n \"empathic\": \"2.0.0\",\n \"escape-string-regexp\": \"5.0.0\",\n \"execa\": \"8.0.1\",\n \"fast-glob\": \"3.3.3\",\n \"find-up\": \"7.0.0\",\n \"fp-ts\": \"2.16.9\",\n \"fs-extra\": \"11.3.0\",\n \"global-directory\": \"4.0.0\",\n \"globby\": \"11.1.0\",\n \"identifier-regex\": \"1.0.0\",\n \"indent-string\": \"4.0.0\",\n \"is-windows\": \"1.0.2\",\n \"is-wsl\": \"3.1.0\",\n \"jest\": \"29.7.0\",\n \"jest-junit\": \"16.0.0\",\n \"kleur\": \"4.1.5\",\n \"mock-stdin\": \"1.0.0\",\n \"new-github-issue-url\": \"0.2.1\",\n \"node-fetch\": \"3.3.2\",\n \"npm-packlist\": \"5.1.3\",\n \"open\": \"7.4.2\",\n \"p-map\": \"4.0.0\",\n \"resolve\": \"1.22.10\",\n \"string-width\": \"7.2.0\",\n \"strip-indent\": \"4.0.0\",\n \"temp-dir\": \"2.0.0\",\n \"tempy\": \"1.0.1\",\n \"terminal-link\": \"4.0.0\",\n \"tmp\": \"0.2.3\",\n \"ts-pattern\": \"5.6.2\",\n \"ts-toolbelt\": \"9.6.0\",\n \"typescript\": \"5.4.5\",\n \"yarn\": \"1.22.22\"\n },\n \"dependencies\": {\n \"@prisma/config\": \"workspace:*\",\n \"@prisma/debug\": \"workspace:*\",\n \"@prisma/dmmf\": \"workspace:*\",\n \"@prisma/driver-adapter-utils\": \"workspace:*\",\n \"@prisma/engines\": \"workspace:*\",\n \"@prisma/fetch-engine\": \"workspace:*\",\n \"@prisma/generator\": \"workspace:*\",\n \"@prisma/generator-helper\": \"workspace:*\",\n \"@prisma/get-platform\": \"workspace:*\",\n \"@prisma/prisma-schema-wasm\": \"7.1.1-3.c2990dca591cba766e3b7ef5d9e8a84796e47ab7\",\n \"@prisma/schema-engine-wasm\": \"7.1.1-3.c2990dca591cba766e3b7ef5d9e8a84796e47ab7\",\n \"@prisma/schema-files-loader\": \"workspace:*\",\n \"arg\": \"5.0.2\",\n \"prompts\": \"2.4.2\"\n },\n \"peerDependencies\": {\n \"typescript\": \">=5.1.0\"\n },\n \"peerDependenciesMeta\": {\n \"typescript\": {\n \"optional\": true\n }\n },\n \"sideEffects\": false\n}", "export function resolve(...args: any[]) {\n return args.join('/')\n}\n\nexport function join(...args: any[]) {\n return args.join('/')\n}\n\nexport function parse(path: string) {\n const base = basename(path)\n const dir = dirname(path)\n const [name, ext] = base.split('.')\n return { root: '/', dir, base, ext, name }\n}\n\nexport function basename(path: string) {\n const parts = path.split('/')\n return parts[parts.length - 1]\n}\n\nexport function dirname(path: string) {\n const parts = path.split('/')\n return parts.slice(0, -1).join('/')\n}\n\nexport const sep = '/'\nexport const delimiter = ':'\n\nexport function normalize(path: string) {\n // Simple normalization - remove duplicate slashes and resolve . and ..\n const parts = path.split('/').filter((part) => part !== '' && part !== '.')\n const normalized: string[] = []\n\n for (const part of parts) {\n if (part === '..') {\n normalized.pop()\n } else {\n normalized.push(part)\n }\n }\n\n const result = normalized.join('/')\n return path.startsWith('/') ? '/' + result : result\n}\n\nexport const posix = {\n sep,\n}\n\n/**\n * A poor man's shim for the \"path\" module\n */\nconst path = {\n basename,\n delimiter,\n dirname,\n join,\n normalize,\n parse,\n posix,\n resolve,\n sep,\n}\n\nexport default path\n", "'use strict';\nmodule.exports = string => {\n\tconst match = string.match(/^[ \\t]*(?=\\S)/gm);\n\n\tif (!match) {\n\t\treturn 0;\n\t}\n\n\treturn match.reduce((r, a) => Math.min(r, a.length), Infinity);\n};\n", "'use strict';\n\nmodule.exports = (string, count = 1, options) => {\n\toptions = {\n\t\tindent: ' ',\n\t\tincludeEmptyLines: false,\n\t\t...options\n\t};\n\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(\n\t\t\t`Expected \\`input\\` to be a \\`string\\`, got \\`${typeof string}\\``\n\t\t);\n\t}\n\n\tif (typeof count !== 'number') {\n\t\tthrow new TypeError(\n\t\t\t`Expected \\`count\\` to be a \\`number\\`, got \\`${typeof count}\\``\n\t\t);\n\t}\n\n\tif (typeof options.indent !== 'string') {\n\t\tthrow new TypeError(\n\t\t\t`Expected \\`options.indent\\` to be a \\`string\\`, got \\`${typeof options.indent}\\``\n\t\t);\n\t}\n\n\tif (count === 0) {\n\t\treturn string;\n\t}\n\n\tconst regex = options.includeEmptyLines ? /^/gm : /^(?!\\s*$)/gm;\n\n\treturn string.replace(regex, options.indent.repeat(count));\n};\n", "'use strict';\n\nmodule.exports = (options = {}) => {\n\tlet repoUrl;\n\tif (options.repoUrl) {\n\t\trepoUrl = options.repoUrl;\n\t} else if (options.user && options.repo) {\n\t\trepoUrl = `https://github.com/${options.user}/${options.repo}`;\n\t} else {\n\t\tthrow new Error('You need to specify either the `repoUrl` option or both the `user` and `repo` options');\n\t}\n\n\tconst url = new URL(`${repoUrl}/issues/new`);\n\n\tconst types = [\n\t\t'body',\n\t\t'title',\n\t\t'labels',\n\t\t'template',\n\t\t'milestone',\n\t\t'assignee',\n\t\t'projects'\n\t];\n\n\tfor (const type of types) {\n\t\tlet value = options[type];\n\t\tif (value === undefined) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (type === 'labels' || type === 'projects') {\n\t\t\tif (!Array.isArray(value)) {\n\t\t\t\tthrow new TypeError(`The \\`${type}\\` option should be an array`);\n\t\t\t}\n\n\t\t\tvalue = value.join(',');\n\t\t}\n\n\t\turl.searchParams.set(type, value);\n\t}\n\n\treturn url.toString();\n};\n\n// TODO: Remove this for the next major release\nmodule.exports.default = module.exports;\n", "'use strict';\nmodule.exports = (function()\n{\n function _min(d0, d1, d2, bx, ay)\n {\n return d0 < d1 || d2 < d1\n ? d0 > d2\n ? d2 + 1\n : d0 + 1\n : bx === ay\n ? d1\n : d1 + 1;\n }\n\n return function(a, b)\n {\n if (a === b) {\n return 0;\n }\n\n if (a.length > b.length) {\n var tmp = a;\n a = b;\n b = tmp;\n }\n\n var la = a.length;\n var lb = b.length;\n\n while (la > 0 && (a.charCodeAt(la - 1) === b.charCodeAt(lb - 1))) {\n la--;\n lb--;\n }\n\n var offset = 0;\n\n while (offset < la && (a.charCodeAt(offset) === b.charCodeAt(offset))) {\n offset++;\n }\n\n la -= offset;\n lb -= offset;\n\n if (la === 0 || lb < 3) {\n return lb;\n }\n\n var x = 0;\n var y;\n var d0;\n var d1;\n var d2;\n var d3;\n var dd;\n var dy;\n var ay;\n var bx0;\n var bx1;\n var bx2;\n var bx3;\n\n var vector = [];\n\n for (y = 0; y < la; y++) {\n vector.push(y + 1);\n vector.push(a.charCodeAt(offset + y));\n }\n\n var len = vector.length - 1;\n\n for (; x < lb - 3;) {\n bx0 = b.charCodeAt(offset + (d0 = x));\n bx1 = b.charCodeAt(offset + (d1 = x + 1));\n bx2 = b.charCodeAt(offset + (d2 = x + 2));\n bx3 = b.charCodeAt(offset + (d3 = x + 3));\n dd = (x += 4);\n for (y = 0; y < len; y += 2) {\n dy = vector[y];\n ay = vector[y + 1];\n d0 = _min(dy, d0, d1, bx0, ay);\n d1 = _min(d0, d1, d2, bx1, ay);\n d2 = _min(d1, d2, d3, bx2, ay);\n dd = _min(d2, d3, dd, bx3, ay);\n vector[y] = dd;\n d3 = d2;\n d2 = d1;\n d1 = d0;\n d0 = dy;\n }\n }\n\n for (; x < lb;) {\n bx0 = b.charCodeAt(offset + (d0 = x));\n dd = ++x;\n for (y = 0; y < len; y += 2) {\n dy = vector[y];\n vector[y] = dd = _min(dy, d0, dd, bx0, vector[y + 1]);\n d0 = dy;\n }\n }\n\n return dd;\n };\n})();\n\n", "import { BasicBuilder } from './BasicBuilder'\nimport type { KeyType } from './KeyType'\nimport { Writer } from './Writer'\n\nexport abstract class TypeBuilder implements BasicBuilder {\n // TODO(@SevInf): this should be replaced with precedence system that would\n // automatically add parenthesis where they are needed\n needsParenthesisWhenIndexed = false\n needsParenthesisInKeyof = false\n needsParenthesisInUnion = false\n needsParenthesisInIntersection = false\n\n abstract write(writer: Writer): void\n\n subKey(key: string): KeyType {\n // TODO: since we translating ESM to CommonJS during bundling, we\n // can't handle circular dependencies the same way ESM does. We have to delay KeyType import\n // to resolve it. Once we stop doing this, we can move this import to top of the file.\n const { KeyType } = require('./KeyType')\n return new KeyType(this, key)\n }\n\n writeIndexed(writer: Writer) {\n if (this.needsParenthesisWhenIndexed) {\n writer.write('(')\n }\n\n writer.write(this)\n\n if (this.needsParenthesisWhenIndexed) {\n writer.write(')')\n }\n }\n}\n", "import { TypeBuilder } from './TypeBuilder'\nimport { Writer } from './Writer'\n\nexport class KeyType extends TypeBuilder {\n constructor(\n public baseType: TypeBuilder,\n public key: string,\n ) {\n super()\n }\n write(writer: Writer): void {\n this.baseType.writeIndexed(writer)\n\n writer.write('[').write(`\"${this.key}\"`).write(']')\n }\n}\n\nexport function keyType(baseType: TypeBuilder, key: string) {\n return new KeyType(baseType, key)\n}\n", "{\n \"name\": \"@prisma/engines-version\",\n \"version\": \"7.1.1-3.c2990dca591cba766e3b7ef5d9e8a84796e47ab7\",\n \"main\": \"index.js\",\n \"types\": \"index.d.ts\",\n \"license\": \"Apache-2.0\",\n \"author\": \"Tim Suchanek <suchanek@prisma.io>\",\n \"prisma\": {\n \"enginesVersion\": \"c2990dca591cba766e3b7ef5d9e8a84796e47ab7\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/prisma/engines-wrapper.git\",\n \"directory\": \"packages/engines-version\"\n },\n \"devDependencies\": {\n \"@types/node\": \"18.19.76\",\n \"typescript\": \"4.9.5\"\n },\n \"files\": [\n \"index.js\",\n \"index.d.ts\"\n ],\n \"scripts\": {\n \"build\": \"tsc -d\"\n }\n}", "type Listener = (...args: any[]) => void\n\nexport class EventEmitter {\n private events: Record<string, Listener[]> = {}\n\n on(event: string, listener: Listener) {\n if (!this.events[event]) {\n this.events[event] = []\n }\n\n this.events[event].push(listener)\n\n return this\n }\n\n emit(event: string, ...args: any[]) {\n if (!this.events[event]) {\n return false\n }\n\n this.events[event].forEach((listener) => {\n listener(...args)\n })\n\n return true\n }\n}\n\n/**\n * A poor man's shim for the \"events\" module\n */\nconst events = {\n EventEmitter,\n}\n\nexport default events\n", "import * as Extensions from './core/extensions'\nimport * as Public from './core/public'\nimport * as Types from './core/types'\n\nexport { type Types }\nexport { Extensions }\nexport { Public }\n\nexport { type JsonBatchQuery, type JsonQuery } from './core/engines'\nexport { PrismaClientInitializationError } from './core/errors/PrismaClientInitializationError'\nexport { PrismaClientKnownRequestError } from './core/errors/PrismaClientKnownRequestError'\nexport { PrismaClientRustPanicError } from './core/errors/PrismaClientRustPanicError'\nexport { PrismaClientUnknownRequestError } from './core/errors/PrismaClientUnknownRequestError'\nexport { PrismaClientValidationError } from './core/errors/PrismaClientValidationError'\nexport { serializeJsonQuery } from './core/jsonProtocol/serializeJsonQuery'\nexport {\n type Metric,\n type MetricHistogram,\n type MetricHistogramBucket,\n type Metrics,\n MetricsClient,\n} from './core/metrics/MetricsClient'\nexport { createParam } from './core/model/Param'\nexport { defineDmmfProperty } from './core/runtimeDataModel'\nexport type * from './core/types/exported'\nexport type { ITXClientDenyList } from './core/types/exported/itxClientDenyList'\nexport { objectEnumValues } from './core/types/exported/ObjectEnums'\nexport { skip } from './core/types/exported/Skip'\nexport { makeTypedQueryFactory } from './core/types/exported/TypedSql'\nexport type { PrismaClientOptions } from './getPrismaClient'\nexport { getPrismaClient } from './getPrismaClient'\nexport { makeStrictEnum } from './strictEnum'\nexport { deserializeRawResult } from './utils/deserializeRawResults'\nexport { getRuntime } from './utils/getRuntime'\nexport { warnEnvConflicts } from './warnEnvConflicts'\nexport {\n type BaseDMMF,\n dmmfToRuntimeDataModel,\n type GetPrismaClientConfig,\n type Operation,\n type RuntimeDataModel,\n} from '@prisma/client-common'\nexport { deserializeJsonResponse } from '@prisma/client-engine-runtime'\nexport { Debug } from '@prisma/debug'\nexport * as DMMF from '@prisma/dmmf'\nexport type { SqlDriverAdapterFactory } from '@prisma/driver-adapter-utils'\nexport { warnOnce } from '@prisma/internals'\nexport { default as Decimal } from 'decimal.js'\nexport type { RawValue, Value } from 'sql-template-tag'\nexport { empty, join, raw, Sql, default as sqltag } from 'sql-template-tag'\n", "import { defineExtension } from './defineExtension'\nimport { getExtensionContext } from './getExtensionContext'\n\nexport { defineExtension }\nexport { getExtensionContext }\n", "import { Client } from '../../getPrismaClient'\nimport { ExtensionArgs } from '../types/exported/ExtensionArgs'\n\nexport function defineExtension(ext: ExtensionArgs | ((client: Client) => Client)) {\n if (typeof ext === 'function') {\n return ext\n }\n\n return (client: Client) => client.$extends(ext)\n}\n", "/*\n * Because we use a symbol to store the context, we need to merge the context\n * with the original this type. We manage the context via `getExtensionContext`\n * to circumvent the limitations of `this` inference in TS, while also providing\n * a unified API for context management in generic and non-generic extensions.\n */\n\n/* eslint-disable prettier/prettier */\nexport type Context<T> = T extends { [K: symbol]: { ctx: infer C } }\n ? C &\n T & {\n /**\n * @deprecated Use `$name` instead.\n */\n name?: string\n $name?: string\n $parent?: unknown\n }\n : T & {\n /**\n * @deprecated Use `$name` instead.\n */\n name?: string\n $name?: string\n $parent?: unknown\n }\n\nexport function getExtensionContext<T>(that: T) {\n return that as any as Context<T>\n}\n", "import { validator } from './validator'\n\n/*\n * /!\\ These exports are exposed to the user. Proceed with caution.\n *\n * TODO: Move more hardcoded utils from generation into here\n */\n\nexport { validator }\n", "import { Args, Operation } from '../types/exported/Public'\nimport { Exact } from '../types/exported/Utils'\n\nexport function validator<V>(): <S>(select: Exact<S, V>) => S\nexport function validator<C, M extends Exclude<keyof C, `$${string}`>, O extends keyof C[M] & Operation>(\n client: C,\n model: M,\n operation: O,\n): <S>(select: Exact<S, Args<C[M], O>>) => S\nexport function validator<\n C,\n M extends Exclude<keyof C, `$${string}`>,\n O extends keyof C[M] & Operation,\n P extends keyof Args<C[M], O>,\n>(client: C, model: M, operation: O, prop: P): <S>(select: Exact<S, Args<C[M], O>[P]>) => S\nexport function validator(..._args: any[]) {\n return (args: any) => args\n}\n", "import { setClassName } from '@prisma/internals'\n\nexport class PrismaClientInitializationError extends Error {\n clientVersion: string\n errorCode?: string\n retryable?: boolean\n\n constructor(message: string, clientVersion: string, errorCode?: string) {\n super(message)\n this.name = 'PrismaClientInitializationError'\n\n this.clientVersion = clientVersion\n this.errorCode = errorCode\n Error.captureStackTrace(PrismaClientInitializationError)\n }\n get [Symbol.toStringTag]() {\n return 'PrismaClientInitializationError'\n }\n}\n\nsetClassName(PrismaClientInitializationError, 'PrismaClientInitializationError')\n", "export { checkUnsupportedDataProxy } from './cli/checkUnsupportedDataProxy'\nexport { checkUnsupportedSchemaEngineWasm } from './cli/checkUnsupportedSchemaEngineWasm'\nexport { type DirectoryConfig, inferDirectoryConfig } from './cli/directoryConfig'\nexport { getGeneratorSuccessMessage } from './cli/getGeneratorSuccessMessage'\nexport {\n type GetSchemaOptions,\n getSchemaWithPath,\n getSchemaWithPathOptional,\n printSchemaLoadedMessage,\n} from './cli/getSchema'\nexport { getTypescriptVersion } from './cli/getTypescriptVersion'\nexport { getCLIPathHash, getProjectHash } from './cli/hashes'\nexport { unknownCommand } from './cli/Help'\nexport { HelpError } from './cli/Help'\nexport { loadSchemaContext, processSchemaResult, type SchemaContext } from './cli/schemaContext'\nexport type {\n Command,\n Commands,\n CompiledGeneratorDefinition,\n Dictionary,\n GeneratorConfig,\n GeneratorDefinition,\n GeneratorDefinitionWithPackage,\n GeneratorFunction,\n GeneratorOptions,\n} from './cli/types'\nexport { arg, format, isError } from './cli/utils'\nexport { ClientEngineType, getClientEngineType } from './client/getClientEngineType'\nexport { credentialsToUri, protocolToConnectorType, uriToCredentials } from './convertCredentials'\nexport * from './engine-commands'\nexport { resolveUrl } from './engine-commands/getConfig'\nexport { relativizePathInPSLError } from './engine-commands/relativizePathInPSLError'\nexport { Generator } from './Generator'\nexport {\n type GeneratorRegistry,\n type GeneratorRegistryEntry,\n getGenerator,\n getGenerators,\n} from './get-generators/getGenerators'\nexport { fixBinaryTargets } from './get-generators/utils/fixBinaryTargets'\nexport { printGeneratorConfig } from './get-generators/utils/printGeneratorConfig'\nexport { getPackedPackage } from './getPackedPackage'\nexport { highlightDatamodel, highlightSql, highlightTS } from './highlight/highlight'\nexport * as logger from './logger'\nexport type { MigrateTypes } from './migrateTypes'\nexport { ErrorArea, getWasmError, isRustPanic, isWasmPanic, RustPanic } from './panic'\nexport { BinaryType } from './resolveBinary'\nexport { engineEnvVarMap, resolveBinary } from './resolveBinary'\nexport { resolvePkg } from './resolvePkg'\nexport type { SchemaEngineLogLine } from './schemaEngineCommands'\nexport { canConnectToDatabase, createDatabase, dropDatabase } from './schemaEngineCommands'\nexport { SchemaEngineExitCode } from './schemaEngineCommands'\nexport { sendPanic } from './sendPanic'\nexport * from './tracing/types'\nexport type { DatabaseCredentials } from './types'\nexport { assertAlways } from './utils/assertAlways'\nexport { assertNever } from './utils/assertNever'\nexport { binaryTargetRegex } from './utils/binaryTargetRegex'\nexport { default as byline } from './utils/byline'\nexport { callOnceOnSuccess } from './utils/callOnce'\nexport { canPrompt } from './utils/canPrompt'\nexport { chmodPlusX } from './utils/chmodPlusX'\nexport { locateLocalCloudflareD1 } from './utils/cloudflareD1'\nexport { drawBox } from './utils/drawBox'\nexport { extractPreviewFeatures } from './utils/extractPreviewFeatures'\nexport { formatms } from './utils/formatms'\nexport { formatTable } from './utils/formatTable'\nexport * as fsFunctional from './utils/fs-functional'\nexport * as fsUtils from './utils/fs-utils'\nexport { getCommandWithExecutor } from './utils/getCommandWithExecutor'\nexport { getEnvPaths } from './utils/getEnvPaths'\nexport { getMigrateConfigDir } from './utils/getMigrateConfigDir'\nexport { version } from './utils/getVersionFromPackageJson'\nexport { handleLibraryLoadingErrors } from './utils/handleEngineLoadingErrors'\nexport { handlePanic } from './utils/handlePanic'\nexport { hasOwnProperty } from './utils/hasOwnProperty'\nexport { isCi } from './utils/isCi'\nexport { isCurrentBinInstalledGlobally } from './utils/isCurrentBinInstalledGlobally'\nexport { isInContainer } from './utils/isInContainer'\nexport { isInNpmLifecycleHook } from './utils/isInNpmLifecycleHook'\nexport { isInteractive } from './utils/isInteractive'\nexport { isPromiseLike } from './utils/isPromiseLike'\nexport { isValidJsIdentifier } from './utils/isValidJsIdentifier'\nexport { keyBy } from './utils/keyBy'\nexport { link } from './utils/link'\nexport { loadLibrary as load } from './utils/load'\nexport { loadEnvFile } from './utils/loadEnvFile'\nexport { mapObjectValues } from './utils/mapObjectValues'\nexport { maskSchema } from './utils/maskSchema'\nexport { maxBy, maxWithComparator } from './utils/max'\nexport { maybeInGitHook } from './utils/maybeInGitHook'\nexport { missingGeneratorMessage } from './utils/missingGeneratorMessage'\nexport { parseAWSNodejsRuntimeEnvVarVersion } from './utils/parseAWSNodejsRuntimeEnvVarVersion'\nexport { parseBinaryTargetsEnvValue, parseEnvValue } from './utils/parseEnvValue'\nexport { longestCommonPathPrefix, pathToPosix } from './utils/path'\nexport { pick } from './utils/pick'\nexport { printConfigWarnings } from './utils/printConfigWarnings'\nexport {\n isPrismaPostgres,\n isPrismaPostgresDev,\n PRISMA_POSTGRES_PROTOCOL,\n PRISMA_POSTGRES_PROVIDER,\n} from './utils/prismaPostgres'\nexport { extractSchemaContent, type SchemaFileInput } from './utils/schemaFileInput'\nexport { type MultipleSchemas } from './utils/schemaFileInput'\nexport { serializeQueryEngineName } from './utils/serializeQueryEngineName'\nexport { setClassName } from './utils/setClassName'\nexport { toSchemasContainer, toSchemasWithConfigDir } from './utils/toSchemasContainer'\nexport { type LoadedEnv, tryLoadEnvs } from './utils/tryLoadEnvs'\nexport { vercelPkgPathRegex } from './utils/vercelPkgPathRegex'\nexport { warnOnce } from './warnOnce'\nexport * as wasm from './wasm'\nexport { wasmSchemaEngineLoader } from './WasmSchemaEngineLoader'\nexport type { EnvPaths } from '@prisma/generator'\nexport type { BinaryTarget } from '@prisma/get-platform'\nexport { getBinaryTargetForCurrentPlatform, getNodeAPIName } from '@prisma/get-platform'\nexport type { GetSchemaResult } from '@prisma/schema-files-loader'\n", "let FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM, isTTY=true;\nif (typeof process !== 'undefined') {\n\t({ FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM } = process.env || {});\n\tisTTY = process.stdout && process.stdout.isTTY;\n}\n\nexport const $ = {\n\tenabled: !NODE_DISABLE_COLORS && NO_COLOR == null && TERM !== 'dumb' && (\n\t\tFORCE_COLOR != null && FORCE_COLOR !== '0' || isTTY\n\t)\n}\n\nfunction init(x, y) {\n\tlet rgx = new RegExp(`\\\\x1b\\\\[${y}m`, 'g');\n\tlet open = `\\x1b[${x}m`, close = `\\x1b[${y}m`;\n\n\treturn function (txt) {\n\t\tif (!$.enabled || txt == null) return txt;\n\t\treturn open + (!!~(''+txt).indexOf(close) ? txt.replace(rgx, close + open) : txt) + close;\n\t};\n}\n\n// modifiers\nexport const reset = init(0, 0);\nexport const bold = init(1, 22);\nexport const dim = init(2, 22);\nexport const italic = init(3, 23);\nexport const underline = init(4, 24);\nexport const inverse = init(7, 27);\nexport const hidden = init(8, 28);\nexport const strikethrough = init(9, 29);\n\n// colors\nexport const black = init(30, 39);\nexport const red = init(31, 39);\nexport const green = init(32, 39);\nexport const yellow = init(33, 39);\nexport const blue = init(34, 39);\nexport const magenta = init(35, 39);\nexport const cyan = init(36, 39);\nexport const white = init(37, 39);\nexport const gray = init(90, 39);\nexport const grey = init(90, 39);\n\n// background colors\nexport const bgBlack = init(40, 49);\nexport const bgRed = init(41, 49);\nexport const bgGreen = init(42, 49);\nexport const bgYellow = init(43, 49);\nexport const bgBlue = init(44, 49);\nexport const bgMagenta = init(45, 49);\nexport const bgCyan = init(46, 49);\nexport const bgWhite = init(47, 49);\n", "import * as kleur from 'kleur/colors'\nimport { bold } from 'kleur/colors'\n\nconst MAX_ARGS_HISTORY = 100\nconst COLORS = ['green', 'yellow', 'blue', 'magenta', 'cyan', 'red']\n\nconst argsHistory: [namespace: string, ...unknown[]][] = []\nlet lastTimestamp = Date.now()\nlet lastColor = 0\n\nconst processEnv = typeof process !== 'undefined' ? process.env : {}\n\nglobalThis.DEBUG ??= processEnv.DEBUG ?? ''\nglobalThis.DEBUG_COLORS ??= processEnv.DEBUG_COLORS ? processEnv.DEBUG_COLORS === 'true' : true\n\n/**\n * Top-level utilities to configure the debug module.\n *\n * @example\n * ```ts\n * import Debug from '@prisma/debug'\n * Debug.enable('prisma:client')\n * const debug = Debug('prisma:client')\n * debug('Hello World')\n * ```\n */\nconst topProps = {\n enable(namespace: any) {\n if (typeof namespace === 'string') {\n globalThis.DEBUG = namespace\n }\n },\n disable() {\n const prev = globalThis.DEBUG\n globalThis.DEBUG = ''\n return prev\n },\n // this is the core logic to check if logging should happen or not\n enabled(namespace: string) {\n // these are the namespaces that we are listening to in DEBUG=...\n const listenedNamespaces: string[] = globalThis.DEBUG.split(',').map((s: string) => {\n return s.replace(/[.+?^${}()|[\\]\\\\]/g, '\\\\$&') // escape regex except \"*\"\n })\n\n // we take incoming namespaces and check then against listened\n const isListened = listenedNamespaces.some((listenedNamespace) => {\n if (listenedNamespace === '' || listenedNamespace[0] === '-') return false\n\n return namespace.match(RegExp(listenedNamespace.split('*').join('.*') + '$'))\n })\n\n // we take incoming namespaces and check then against excluded\n const isExcluded = listenedNamespaces.some((listenedNamespace) => {\n if (listenedNamespace === '' || listenedNamespace[0] !== '-') return false\n\n return namespace.match(RegExp(listenedNamespace.slice(1).split('*').join('.*') + '$'))\n })\n\n return isListened && !isExcluded\n },\n log: (...args: string[]) => {\n const [namespace, format, ...rest] = args\n // Note: `console.warn` / `console.log` use `util.format` internally, so they can handle\n // `printf`-style string interpolation.\n const logWithFormatting = console.warn ?? console.log\n\n // console only formats first arg, concat ns+format\n logWithFormatting(`${namespace} ${format}`, ...rest)\n },\n formatters: {}, // not implemented\n}\n\n/**\n * Create a new debug instance with the given namespace.\n *\n * @example\n * ```ts\n * import Debug from '@prisma/debug'\n * const debug = Debug('prisma:client')\n * debug('Hello World')\n * ```\n */\nfunction debugCreate(namespace: string) {\n const instanceProps = {\n color: COLORS[lastColor++ % COLORS.length],\n enabled: topProps.enabled(namespace),\n namespace: namespace,\n log: topProps.log,\n extend: () => {}, // not implemented\n }\n\n const debugCall = (...args: any[]) => {\n const { enabled, namespace, color, log } = instanceProps\n\n // we push the args to our history of args\n if (args.length !== 0) {\n argsHistory.push([namespace, ...args])\n }\n\n // if it is too big, then we remove some\n if (argsHistory.length > MAX_ARGS_HISTORY) {\n argsHistory.shift()\n }\n\n if (topProps.enabled(namespace) || enabled) {\n const stringArgs = args.map((arg) => {\n if (typeof arg === 'string') {\n return arg\n }\n\n return safeStringify(arg)\n })\n\n const ms = `+${Date.now() - lastTimestamp}ms`\n lastTimestamp = Date.now()\n\n if (globalThis.DEBUG_COLORS) {\n log(kleur[color](bold(namespace)), ...stringArgs, kleur[color](ms))\n } else {\n log(namespace, ...stringArgs, ms)\n }\n }\n }\n\n return new Proxy(debugCall, {\n get: (_, prop) => instanceProps[prop],\n set: (_, prop, value) => (instanceProps[prop] = value),\n }) as typeof debugCall & typeof instanceProps\n}\n\nconst Debug = new Proxy(debugCreate, {\n get: (_, prop) => topProps[prop],\n set: (_, prop, value) => (topProps[prop] = value),\n}) as typeof debugCreate & typeof topProps\n\nfunction safeStringify(value: any, indent = 2) {\n const cache = new Set<any>()\n\n return JSON.stringify(\n value,\n (key, value) => {\n if (typeof value === 'object' && value !== null) {\n if (cache.has(value)) {\n return `[Circular *]`\n }\n\n cache.add(value)\n } else if (typeof value === 'bigint') {\n return value.toString()\n }\n\n return value\n },\n indent,\n )\n}\n\n/**\n * We can get the logs for all the last {@link MAX_ARGS_HISTORY} ${@link debugCall} that\n * have happened in the different packages. Useful to generate error report links.\n * @see https://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-a-url-in-different-browsers\n * @param numChars\n * @returns\n */\nexport function getLogs(numChars = 7500): string {\n const logs = argsHistory\n .map(([namespace, ...args]) => {\n return `${namespace} ${args\n .map((arg) => {\n if (typeof arg === 'string') {\n return arg\n } else {\n return JSON.stringify(arg)\n }\n })\n .join(' ')}`\n })\n .join('\\n')\n\n if (logs.length < numChars) {\n return logs\n }\n\n return logs.slice(-numChars)\n}\n\nexport function clearLogs() {\n argsHistory.length = 0\n}\n\nexport { Debug }\nexport default Debug\n", "export { assertNodeAPISupported } from './assertNodeAPISupported'\nexport { type BinaryTarget, binaryTargets } from './binaryTargets'\nexport { getNodeAPIName } from './getNodeAPIName'\nexport type { PlatformInfo } from './getPlatform'\nexport { getBinaryTargetForCurrentPlatform, getos, getPlatformInfo } from './getPlatform'\nexport { link } from './link'\nexport * from './test-utils'\n", "export type BinaryTarget =\n | 'native'\n | 'darwin'\n | 'darwin-arm64'\n | 'debian-openssl-1.0.x'\n | 'debian-openssl-1.1.x'\n | 'debian-openssl-3.0.x'\n | 'rhel-openssl-1.0.x'\n | 'rhel-openssl-1.1.x'\n | 'rhel-openssl-3.0.x'\n | 'linux-arm64-openssl-1.1.x'\n | 'linux-arm64-openssl-1.0.x'\n | 'linux-arm64-openssl-3.0.x'\n | 'linux-arm-openssl-1.1.x'\n | 'linux-arm-openssl-1.0.x'\n | 'linux-arm-openssl-3.0.x'\n | 'linux-musl'\n | 'linux-musl-openssl-3.0.x'\n | 'linux-musl-arm64-openssl-1.1.x'\n | 'linux-musl-arm64-openssl-3.0.x'\n | 'linux-nixos'\n | 'linux-static-x64'\n | 'linux-static-arm64'\n | 'windows'\n | 'freebsd11'\n | 'freebsd12'\n | 'freebsd13'\n | 'freebsd14'\n | 'freebsd15'\n | 'openbsd'\n | 'netbsd'\n | 'arm'\n\nexport const binaryTargets: BinaryTarget[] = [\n 'darwin',\n 'darwin-arm64',\n 'debian-openssl-1.0.x',\n 'debian-openssl-1.1.x',\n 'debian-openssl-3.0.x',\n 'rhel-openssl-1.0.x',\n 'rhel-openssl-1.1.x',\n 'rhel-openssl-3.0.x',\n 'linux-arm64-openssl-1.1.x',\n 'linux-arm64-openssl-1.0.x',\n 'linux-arm64-openssl-3.0.x',\n 'linux-arm-openssl-1.1.x',\n 'linux-arm-openssl-1.0.x',\n 'linux-arm-openssl-3.0.x',\n 'linux-musl',\n 'linux-musl-openssl-3.0.x',\n 'linux-musl-arm64-openssl-1.1.x',\n 'linux-musl-arm64-openssl-3.0.x',\n 'linux-nixos',\n 'linux-static-x64',\n 'linux-static-arm64',\n 'windows',\n 'freebsd11',\n 'freebsd12',\n 'freebsd13',\n 'freebsd14',\n 'freebsd15',\n 'openbsd',\n 'netbsd',\n 'arm',\n]\n", "// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst packageJson = require('../../package.json')\n\nexport const version: string = packageJson.version\n", "import type { GeneratorConfig } from '@prisma/generator'\n\nexport enum ClientEngineType {\n Library = 'library',\n Binary = 'binary',\n Client = 'client',\n}\n\nexport function getClientEngineType(generatorConfig?: GeneratorConfig): ClientEngineType {\n const engineTypeFromEnvVar = getEngineTypeFromEnvVar()\n if (engineTypeFromEnvVar) return engineTypeFromEnvVar\n if (generatorConfig?.config.engineType === ClientEngineType.Library) {\n return ClientEngineType.Library\n } else if (generatorConfig?.config.engineType === ClientEngineType.Binary) {\n return ClientEngineType.Binary\n } else if (generatorConfig?.config.engineType === ClientEngineType.Client) {\n return ClientEngineType.Client\n } else {\n return getDefaultEngineType()\n }\n}\n\nfunction getEngineTypeFromEnvVar() {\n const engineType = process.env.PRISMA_CLIENT_ENGINE_TYPE\n if (engineType === ClientEngineType.Library) {\n return ClientEngineType.Library\n } else if (engineType === ClientEngineType.Binary) {\n return ClientEngineType.Binary\n } else if (engineType === ClientEngineType.Client) {\n return ClientEngineType.Client\n } else {\n return undefined\n }\n}\n\nfunction getDefaultEngineType(): ClientEngineType {\n return ClientEngineType.Library\n}\n", "export { bindAdapter, bindMigrationAwareSqlAdapterFactory, bindSqlAdapterFactory } from './binder'\nexport { ColumnTypeEnum } from './const'\nexport { Debug } from './debug'\nexport { DriverAdapterError, isDriverAdapterError } from './error'\nexport * from './mock'\nexport { err, ok, type Result } from './result'\nexport type {\n ArgScalarType,\n ArgType,\n Arity,\n ColumnType,\n ConnectionInfo,\n DriverAdapterFactory,\n Error,\n ErrorCapturingSqlDriverAdapter,\n ErrorCapturingSqlDriverAdapterFactory,\n ErrorCapturingSqlMigrationAwareDriverAdapterFactory,\n ErrorCapturingSqlQueryable,\n ErrorCapturingTransaction,\n ErrorRecord,\n ErrorRegistry,\n IsolationLevel,\n MappedError,\n OfficialDriverAdapterName,\n Provider,\n Queryable,\n ResultValue,\n SqlDriverAdapter,\n SqlDriverAdapterFactory,\n SqlMigrationAwareDriverAdapterFactory,\n SqlQuery,\n SqlQueryable,\n SqlResultSet,\n Transaction,\n TransactionOptions,\n} from './types'\n", "import { Debug } from './debug'\nimport { isDriverAdapterError } from './error'\nimport { err, ok, Result } from './result'\nimport type {\n ErrorCapturingSqlDriverAdapter,\n ErrorCapturingSqlDriverAdapterFactory,\n ErrorCapturingSqlMigrationAwareDriverAdapterFactory,\n ErrorCapturingTransaction,\n ErrorRecord,\n ErrorRegistry,\n SqlDriverAdapter,\n SqlDriverAdapterFactory,\n SqlMigrationAwareDriverAdapterFactory,\n Transaction,\n} from './types'\n\nconst debug = Debug('driver-adapter-utils')\n\nclass ErrorRegistryInternal implements ErrorRegistry {\n private registeredErrors: ErrorRecord[] = []\n\n consumeError(id: number): ErrorRecord | undefined {\n return this.registeredErrors[id]\n }\n\n registerNewError(error: unknown) {\n let i = 0\n while (this.registeredErrors[i] !== undefined) {\n i++\n }\n this.registeredErrors[i] = { error }\n return i\n }\n}\n\nfunction copySymbolsFromSource<S extends object, T extends object>(source: S, target: T) {\n const symbols = Object.getOwnPropertySymbols(source)\n const symbolObject = Object.fromEntries(symbols.map((symbol) => [symbol, true]))\n Object.assign(target, symbolObject)\n}\n\nexport const bindMigrationAwareSqlAdapterFactory = (\n adapterFactory: SqlMigrationAwareDriverAdapterFactory,\n): ErrorCapturingSqlMigrationAwareDriverAdapterFactory => {\n const errorRegistry = new ErrorRegistryInternal()\n\n const boundFactory: ErrorCapturingSqlMigrationAwareDriverAdapterFactory = {\n adapterName: adapterFactory.adapterName,\n provider: adapterFactory.provider,\n errorRegistry,\n connect: async (...args) => {\n const ctx = await wrapAsync(errorRegistry, adapterFactory.connect.bind(adapterFactory))(...args)\n return ctx.map((ctx) => bindAdapter(ctx, errorRegistry))\n },\n connectToShadowDb: async (...args) => {\n const ctx = await wrapAsync(errorRegistry, adapterFactory.connectToShadowDb.bind(adapterFactory))(...args)\n return ctx.map((ctx) => bindAdapter(ctx, errorRegistry))\n },\n }\n\n copySymbolsFromSource(adapterFactory, boundFactory)\n\n return boundFactory\n}\n\nexport const bindSqlAdapterFactory = (\n adapterFactory: SqlDriverAdapterFactory,\n): ErrorCapturingSqlDriverAdapterFactory => {\n const errorRegistry = new ErrorRegistryInternal()\n\n const boundFactory: ErrorCapturingSqlDriverAdapterFactory = {\n adapterName: adapterFactory.adapterName,\n provider: adapterFactory.provider,\n errorRegistry,\n connect: async (...args) => {\n const ctx = await wrapAsync(errorRegistry, adapterFactory.connect.bind(adapterFactory))(...args)\n return ctx.map((ctx) => bindAdapter(ctx, errorRegistry))\n },\n }\n\n copySymbolsFromSource(adapterFactory, boundFactory)\n\n return boundFactory\n}\n\n// *.bind(adapter) is required to preserve the `this` context of functions whose\n// execution is delegated to napi.rs.\nexport const bindAdapter = (\n adapter: SqlDriverAdapter,\n errorRegistry = new ErrorRegistryInternal(),\n): ErrorCapturingSqlDriverAdapter => {\n const boundAdapter: ErrorCapturingSqlDriverAdapter = {\n adapterName: adapter.adapterName,\n errorRegistry,\n queryRaw: wrapAsync(errorRegistry, adapter.queryRaw.bind(adapter)),\n executeRaw: wrapAsync(errorRegistry, adapter.executeRaw.bind(adapter)),\n executeScript: wrapAsync(errorRegistry, adapter.executeScript.bind(adapter)),\n dispose: wrapAsync(errorRegistry, adapter.dispose.bind(adapter)),\n provider: adapter.provider,\n startTransaction: async (...args) => {\n const ctx = await wrapAsync(errorRegistry, adapter.startTransaction.bind(adapter))(...args)\n return ctx.map((ctx) => bindTransaction(errorRegistry, ctx))\n },\n }\n\n if (adapter.getConnectionInfo) {\n boundAdapter.getConnectionInfo = wrapSync(errorRegistry, adapter.getConnectionInfo.bind(adapter))\n }\n\n return boundAdapter\n}\n\n// *.bind(transaction) is required to preserve the `this` context of functions whose\n// execution is delegated to napi.rs.\nconst bindTransaction = (errorRegistry: ErrorRegistryInternal, transaction: Transaction): ErrorCapturingTransaction => {\n return {\n adapterName: transaction.adapterName,\n provider: transaction.provider,\n options: transaction.options,\n queryRaw: wrapAsync(errorRegistry, transaction.queryRaw.bind(transaction)),\n executeRaw: wrapAsync(errorRegistry, transaction.executeRaw.bind(transaction)),\n commit: wrapAsync(errorRegistry, transaction.commit.bind(transaction)),\n rollback: wrapAsync(errorRegistry, transaction.rollback.bind(transaction)),\n }\n}\n\nfunction wrapAsync<A extends unknown[], R>(\n registry: ErrorRegistryInternal,\n fn: (...args: A) => Promise<R>,\n): (...args: A) => Promise<Result<R>> {\n return async (...args) => {\n try {\n return ok(await fn(...args))\n } catch (error) {\n debug('[error@wrapAsync]', error)\n\n // unwrap the cause of exceptions thrown by driver adapters if there is one\n if (isDriverAdapterError(error)) {\n return err(error.cause)\n }\n const id = registry.registerNewError(error)\n return err({ kind: 'GenericJs', id })\n }\n }\n}\n\nfunction wrapSync<A extends unknown[], R>(\n registry: ErrorRegistryInternal,\n fn: (...args: A) => R,\n): (...args: A) => Result<R> {\n return (...args) => {\n try {\n return ok(fn(...args))\n } catch (error) {\n debug('[error@wrapSync]', error)\n\n // unwrap the cause of exceptions thrown by driver adapters if there is one\n if (isDriverAdapterError(error)) {\n return err(error.cause)\n }\n const id = registry.registerNewError(error)\n return err({ kind: 'GenericJs', id })\n }\n }\n}\n", "import { Debug } from '@prisma/debug'\n\nexport { Debug }\nexport default Debug\n", "import { Error as ErrorObject } from './types'\n\nexport class DriverAdapterError extends Error {\n name = 'DriverAdapterError'\n cause: ErrorObject\n\n constructor(payload: ErrorObject) {\n super(typeof payload['message'] === 'string' ? payload['message'] : payload.kind)\n this.cause = payload\n }\n}\n\nexport function isDriverAdapterError(error: any): error is DriverAdapterError {\n return error['name'] === 'DriverAdapterError' && typeof error['cause'] === 'object'\n}\n", "import { Error } from './types'\n\nexport type Result<T> = {\n // common methods\n map<U>(fn: (value: T) => U): Result<U>\n flatMap<U>(fn: (value: T) => Result<U>): Result<U>\n} & (\n | {\n readonly ok: true\n readonly value: T\n }\n | {\n readonly ok: false\n readonly error: Error\n }\n)\n\nexport function ok<T>(value: T): Result<T> {\n return {\n ok: true,\n value,\n map(fn) {\n return ok(fn(value))\n },\n flatMap(fn) {\n return fn(value)\n },\n }\n}\n\nexport function err<T>(error: Error): Result<T> {\n return {\n ok: false,\n error,\n map() {\n return err(error)\n },\n flatMap() {\n return err(error)\n },\n }\n}\n", "import minIndent from 'min-indent';\n\nexport default function stripIndent(string) {\n\tconst indent = minIndent(string);\n\n\tif (indent === 0) {\n\t\treturn string;\n\t}\n\n\tconst regex = new RegExp(`^[ \\\\t]{${indent}}`, 'gm');\n\n\treturn string.replace(regex, '');\n}\n", "export const PRISMA_POSTGRES_PROVIDER = 'prisma+postgres'\n\nexport const PRISMA_POSTGRES_PROTOCOL = `${PRISMA_POSTGRES_PROVIDER}:`\n\ndeclare const prismaPostgresBrand: unique symbol\ndeclare const prismaPostgresDevBrand: unique symbol\n\nexport type PrismaPostgresUrl<T extends string | URL> = T & {\n readonly [prismaPostgresBrand]: true\n}\n\nexport type PrismaPostgresDevUrl<T extends string | URL> = PrismaPostgresUrl<T> & {\n readonly [prismaPostgresDevBrand]: true\n}\n\nexport function isPrismaPostgres<T extends string | URL>(\n connectionString?: T,\n): connectionString is PrismaPostgresUrl<T> {\n return connectionString?.toString().startsWith(`${PRISMA_POSTGRES_PROTOCOL}//`) ?? false\n}\n\nexport function isPrismaPostgresDev<T extends string | URL>(\n connectionString?: T,\n): connectionString is PrismaPostgresDevUrl<T> {\n if (!isPrismaPostgres(connectionString)) {\n return false\n }\n\n const { host } = new URL(connectionString)\n\n return host.includes('localhost') || host.includes('127.0.0.1') || host.includes('[::1]')\n}\n", "import { blue, cyan, red, yellow } from 'kleur/colors'\n\nexport const tags = {\n error: red('prisma:error'),\n warn: yellow('prisma:warn'),\n info: cyan('prisma:info'),\n query: blue('prisma:query'),\n}\nexport const should = {\n warn: () => !process.env.PRISMA_DISABLE_WARNINGS,\n}\nexport function log(...data: any[]) {\n console.log(...data)\n}\nexport function warn(message: any, ...optionalParams: any[]) {\n if (should.warn()) {\n console.warn(`${tags.warn} ${message}`, ...optionalParams)\n }\n}\nexport function info(message: any, ...optionalParams: any[]) {\n console.info(`${tags.info} ${message}`, ...optionalParams)\n}\nexport function error(message: any, ...optionalParams: any[]) {\n console.error(`${tags.error} ${message}`, ...optionalParams)\n}\nexport function query(message: any, ...optionalParams: any[]) {\n console.log(`${tags.query} ${message}`, ...optionalParams)\n}\n", "/**\n * Assertion function for internal consistency checks that should never fail\n * in the correct code. It's purpose is pretty much:\n * - ensuring we get more helpful error message if invariant does not hold due to a bug\n * - have a better way of dealing with overly broad type definition than typecasting to `any`\n * or more narrow type.\n *\n * This function should be for assertions only on the values where we control both the input and the output: engine to client, generator to generated client, etc.\n * Don't use this function for assertion for any external input.\n *\n * @param condition\n * @param message\n */\nexport function assertAlways(condition: unknown, message: string): asserts condition {\n if (!condition) {\n throw new Error(\n `${message}. This should never happen. If you see this error, please, open an issue at https://pris.ly/prisma-prisma-bug-report`,\n )\n }\n}\n", "/**\n * Utility function to ensure exhaustive checks for union types.\n *\n * @example\n * ```ts\n * declare const fruit: 'Apple' | 'Orange'\n *\n * switch (fruit) {\n * case 'Apple:\n * // do apple things\n * break;\n * case 'Orange:\n * // do orange things\n * break;\n * default:\n * // in case `fruit` type will expand in the future,\n * // we'll get a compile-time error here, listing all unhandled\n * // cases\n * assertNever(fruit, 'Unknown fruit')\n * }\n * ```\n * @param arg variable of the any union type. By the time `assertNever` is called\n * all possible cases of this union must already be handled\n * @param errorMessage error message to throw in runtime. Normally, should never happen\n * unless compile-time check is skipped\n */\nexport function assertNever(arg: never, errorMessage: string): never {\n throw new Error(errorMessage)\n}\n", "import ansiRegex from 'ansi-regex';\n\nconst regex = ansiRegex();\n\nexport default function stripAnsi(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\t// Even though the regex is global, we don't need to reset the `.lastIndex`\n\t// because unlike `.exec()` and `.test()`, `.replace()` does it automatically\n\t// and doing it manually has a performance penalty.\n\treturn string.replace(regex, '');\n}\n", "export default function ansiRegex({onlyFirst = false} = {}) {\n\t// Valid string terminator sequences are BEL, ESC\\, and 0x9c\n\tconst ST = '(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)';\n\tconst pattern = [\n\t\t`[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?${ST})`,\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))',\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n", "import path from 'path'\n\n/**\n * Normalize `filePath` to use forward slashes as a separator. `filePath` is\n * treated as a path specific to the current platform, so backslashes will only\n * be replaced with forward slashes on Windows. On other platforms, where a\n * backslash is a valid filename character, it will be treated as such and will\n * not be replaced.\n */\nexport function pathToPosix(filePath: string): string {\n if (path.sep === path.posix.sep) {\n return filePath\n }\n return filePath.split(path.sep).join(path.posix.sep)\n}\n\n/**\n * Returns the longest common path ancestor of the two paths (which may also be equal to one or both of them).\n * If they don't share a common ancestor (which may be the case on Windows if both paths are on different disks),\n * returns `undefined`.\n */\nexport function longestCommonPathPrefix(pathA: string, pathB: string): string | undefined {\n if (!path.isAbsolute(pathA) || !path.isAbsolute(pathB)) {\n throw new Error('longestCommonPathPrefix expects absolute paths')\n }\n\n if (process.platform === 'win32' && (pathA.startsWith('\\\\\\\\') || pathB.startsWith('\\\\\\\\'))) {\n // Make both paths namespaced if at least one of them is.\n pathA = path.toNamespacedPath(pathA)\n pathB = path.toNamespacedPath(pathB)\n }\n\n const commonPrefix = longestCommonPrefix(pathA.split(path.sep), pathB.split(path.sep)).join(path.sep)\n\n if (commonPrefix === '') {\n return process.platform === 'win32' ? undefined : '/'\n }\n\n if (process.platform === 'win32' && ['\\\\', '\\\\\\\\?', '\\\\\\\\.'].includes(commonPrefix)) {\n return undefined\n }\n\n if (process.platform === 'win32' && commonPrefix.endsWith(':')) {\n // Disk specifier without a backslash at the end is not an absolute path on windows,\n // it refers to current working directory on that disk.\n return commonPrefix + '\\\\'\n }\n\n return commonPrefix\n}\n\nfunction longestCommonPrefix<T>(sequenceA: T[], sequenceB: T[]): T[] {\n const maxLen = Math.min(sequenceA.length, sequenceB.length)\n let sliceLen = 0\n\n while (sliceLen <= maxLen && sequenceA[sliceLen] === sequenceB[sliceLen]) {\n sliceLen++\n }\n\n return sequenceA.slice(0, sliceLen)\n}\n", "export function hasOwnProperty(object: object, key: PropertyKey): boolean {\n return Object.prototype.hasOwnProperty.call(object, key)\n}\n", "export function mapObjectValues<K extends PropertyKey, T, U>(\n object: Record<K, T>,\n mapper: (value: T, key: K) => U,\n): Record<K, U> {\n const result = {} as Record<K, U>\n\n for (const key of Object.keys(object)) {\n result[key] = mapper(object[key] as T, key as K)\n }\n\n return result\n}\n", "/**\n * Accepts an array and comparator function (similar to Array.prototype.sort)\n * and returns max element of that array, ordered with that comparator.\n * Functionally, equivalent of items.sort(comparator).at(-1), but performed non-destructively\n * in O(n)\n * @param items\n * @param comparator callback specifying the relative order of two items. See `Array.prototype.sort`\n * @returns\n */\nexport function maxWithComparator<T>(items: T[], comparator: (a: T, b: T) => number): T | undefined {\n if (items.length === 0) {\n return undefined\n }\n let result = items[0]\n\n for (let i = 1; i < items.length; i++) {\n const compareValue = comparator(result, items[i])\n // comparator returning negative number means that b>a\n if (compareValue < 0) {\n result = items[i]\n }\n }\n return result\n}\n\nexport function maxBy<T>(items: T[], callback: (item: T) => number): T | undefined {\n return maxWithComparator(items, (a, b) => callback(a) - callback(b))\n}\n", "/**\n * Used for preserving class names for minified class instances\n * Useful for error objects and other classes where public name\n * actually matters\n *\n * @param classObject\n * @param name\n */\nexport function setClassName(classObject: Function, name: string) {\n Object.defineProperty(classObject, 'name', {\n value: name,\n configurable: true,\n })\n}\n", "import { warn } from './logger'\n\nconst alreadyWarned = new Set()\n\nexport const warnOnce = (key: string, message: string, ...args: unknown[]) => {\n if (!alreadyWarned.has(key)) {\n alreadyWarned.add(key)\n warn(message, ...args)\n }\n}\n", "import { setClassName } from '@prisma/internals'\n\nimport { ErrorWithBatchIndex } from './ErrorWithBatchIndex'\n\ntype KnownErrorParams = {\n code: string\n clientVersion: string\n meta?: Record<string, unknown>\n batchRequestIdx?: number\n}\n\nexport class PrismaClientKnownRequestError extends Error implements ErrorWithBatchIndex {\n code: string\n meta?: Record<string, unknown>\n clientVersion: string\n batchRequestIdx?: number\n\n constructor(message: string, { code, clientVersion, meta, batchRequestIdx }: KnownErrorParams) {\n super(message)\n this.name = 'PrismaClientKnownRequestError'\n\n this.code = code\n this.clientVersion = clientVersion\n this.meta = meta\n Object.defineProperty(this, 'batchRequestIdx', {\n value: batchRequestIdx,\n enumerable: false,\n writable: true,\n })\n }\n get [Symbol.toStringTag]() {\n return 'PrismaClientKnownRequestError'\n }\n}\n\nsetClassName(PrismaClientKnownRequestError, 'PrismaClientKnownRequestError')\n", "import { setClassName } from '@prisma/internals'\n\nexport class PrismaClientRustPanicError extends Error {\n clientVersion: string\n\n constructor(message: string, clientVersion: string) {\n super(message)\n this.name = 'PrismaClientRustPanicError'\n\n this.clientVersion = clientVersion\n }\n get [Symbol.toStringTag]() {\n return 'PrismaClientRustPanicError'\n }\n}\n\nsetClassName(PrismaClientRustPanicError, 'PrismaClientRustPanicError')\n", "import { setClassName } from '@prisma/internals'\n\nimport { ErrorWithBatchIndex } from './ErrorWithBatchIndex'\n\ntype UnknownErrorParams = {\n clientVersion: string\n batchRequestIdx?: number\n}\n\nexport class PrismaClientUnknownRequestError extends Error implements ErrorWithBatchIndex {\n clientVersion: string\n batchRequestIdx?: number\n\n constructor(message: string, { clientVersion, batchRequestIdx }: UnknownErrorParams) {\n super(message)\n this.name = 'PrismaClientUnknownRequestError'\n\n this.clientVersion = clientVersion\n Object.defineProperty(this, 'batchRequestIdx', {\n value: batchRequestIdx,\n writable: true,\n enumerable: false,\n })\n }\n get [Symbol.toStringTag]() {\n return 'PrismaClientUnknownRequestError'\n }\n}\n\nsetClassName(PrismaClientUnknownRequestError, 'PrismaClientUnknownRequestError')\n", "import { setClassName } from '@prisma/internals'\n\ntype Options = {\n clientVersion: string\n}\nexport class PrismaClientValidationError extends Error {\n name = 'PrismaClientValidationError'\n clientVersion: string\n\n constructor(message: string, { clientVersion }: Options) {\n super(message)\n this.clientVersion = clientVersion\n }\n\n get [Symbol.toStringTag]() {\n return 'PrismaClientValidationError'\n }\n}\nsetClassName(PrismaClientValidationError, 'PrismaClientValidationError')\n", "import { RuntimeDataModel, RuntimeModel, uncapitalize } from '@prisma/client-common'\nimport { assertNever } from '@prisma/internals'\n\nimport { ErrorFormat } from '../../getPrismaClient'\nimport { CallSite } from '../../utils/CallSite'\nimport { isDate, isValidDate } from '../../utils/date'\nimport { isDecimalJsLike } from '../../utils/decimalJsLike'\nimport {\n JsonArgumentValue,\n JsonFieldSelection,\n JsonQuery,\n JsonQueryAction,\n JsonSelectionSet,\n OutputTypeDescription,\n RawTaggedValue,\n} from '../engines'\nimport { throwValidationException } from '../errorRendering/throwValidationException'\nimport { MergedExtensionsList } from '../extensions/MergedExtensionsList'\nimport { computeEngineSideOmissions, computeEngineSideSelection } from '../extensions/resultUtils'\nimport { isFieldRef } from '../model/FieldRef'\nimport { isParam } from '../model/Param'\nimport { isSkip, Skip } from '../types'\nimport {\n Action,\n JsArgs,\n JsInputValue,\n JsonConvertible,\n Omission,\n RawParameters,\n Selection,\n} from '../types/exported/JsApi'\nimport { ObjectEnumValue, objectEnumValues } from '../types/exported/ObjectEnums'\nimport { ValidationError } from '../types/ValidationError'\n\nconst jsActionToProtocolAction: Record<Action, JsonQueryAction> = {\n findUnique: 'findUnique',\n findUniqueOrThrow: 'findUniqueOrThrow',\n findFirst: 'findFirst',\n findFirstOrThrow: 'findFirstOrThrow',\n findMany: 'findMany',\n count: 'aggregate',\n create: 'createOne',\n createMany: 'createMany',\n createManyAndReturn: 'createManyAndReturn',\n update: 'updateOne',\n updateMany: 'updateMany',\n updateManyAndReturn: 'updateManyAndReturn',\n upsert: 'upsertOne',\n delete: 'deleteOne',\n deleteMany: 'deleteMany',\n executeRaw: 'executeRaw',\n queryRaw: 'queryRaw',\n aggregate: 'aggregate',\n groupBy: 'groupBy',\n runCommandRaw: 'runCommandRaw',\n findRaw: 'findRaw',\n aggregateRaw: 'aggregateRaw',\n}\n\nexport type GlobalOmitOptions = {\n [modelName: string]: {\n [fieldName: string]: boolean\n }\n}\n\nexport type SerializeParams = {\n runtimeDataModel: RuntimeDataModel\n modelName?: string\n action: Action\n args?: JsArgs\n extensions?: MergedExtensionsList\n callsite?: CallSite\n clientMethod: string\n clientVersion: string\n errorFormat: ErrorFormat\n previewFeatures: string[]\n globalOmit?: GlobalOmitOptions\n}\n\nconst STRICT_UNDEFINED_ERROR_MESSAGE = 'explicitly `undefined` values are not allowed'\n\nexport function serializeJsonQuery({\n modelName,\n action,\n args,\n runtimeDataModel,\n extensions = MergedExtensionsList.empty(),\n callsite,\n clientMethod,\n errorFormat,\n clientVersion,\n previewFeatures,\n globalOmit,\n}: SerializeParams): JsonQuery {\n const context = new SerializeContext({\n runtimeDataModel,\n modelName,\n action,\n rootArgs: args,\n callsite,\n extensions,\n selectionPath: [],\n argumentPath: [],\n originalMethod: clientMethod,\n errorFormat,\n clientVersion,\n previewFeatures,\n globalOmit,\n })\n return {\n modelName,\n action: jsActionToProtocolAction[action],\n query: serializeFieldSelection(args, context),\n }\n}\n\nfunction serializeFieldSelection(\n { select, include, ...args }: JsArgs = {},\n context: SerializeContext,\n): JsonFieldSelection {\n const omit = args.omit\n delete args.omit\n return {\n arguments: serializeArgumentsObject(args, context),\n selection: serializeSelectionSet(select, include, omit, context),\n }\n}\n\nfunction serializeSelectionSet(\n select: Selection | undefined,\n include: Selection | undefined,\n omit: Omission | undefined,\n context: SerializeContext,\n): JsonSelectionSet {\n if (select) {\n if (include) {\n context.throwValidationError({\n kind: 'MutuallyExclusiveFields',\n firstField: 'include',\n secondField: 'select',\n selectionPath: context.getSelectionPath(),\n })\n } else if (omit) {\n context.throwValidationError({\n kind: 'MutuallyExclusiveFields',\n firstField: 'omit',\n secondField: 'select',\n selectionPath: context.getSelectionPath(),\n })\n }\n return createExplicitSelection(select, context)\n }\n\n return createImplicitSelection(context, include, omit)\n}\n\nfunction createImplicitSelection(\n context: SerializeContext,\n include: Selection | undefined,\n omit: Omission | undefined,\n) {\n const selectionSet: JsonSelectionSet = {}\n\n if (context.modelOrType && !context.isRawAction()) {\n selectionSet.$composites = true\n selectionSet.$scalars = true\n }\n\n if (include) {\n addIncludedRelations(selectionSet, include, context)\n }\n\n omitFields(selectionSet, omit, context)\n\n return selectionSet\n}\n\nfunction addIncludedRelations(selectionSet: JsonSelectionSet, include: Selection, context: SerializeContext) {\n for (const [key, value] of Object.entries(include)) {\n if (isSkip(value)) {\n continue\n }\n const nestedContext = context.nestSelection(key)\n validateSelectionForUndefined(value, nestedContext)\n if (value === false || value === undefined) {\n selectionSet[key] = false\n continue\n }\n\n const field = context.findField(key)\n if (field && field.kind !== 'object') {\n context.throwValidationError({\n kind: 'IncludeOnScalar',\n selectionPath: context.getSelectionPath().concat(key),\n outputType: context.getOutputTypeDescription(),\n })\n }\n if (field) {\n selectionSet[key] = serializeFieldSelection(value === true ? {} : value, nestedContext)\n continue\n }\n\n if (value === true) {\n selectionSet[key] = true\n continue\n }\n\n // value is an object, field is unknown\n // this can either be user error (in that case, qe will respond with an error)\n // or virtual field not present on datamodel (like `_count`).\n // Since we don't know which one cast is, we still attempt to serialize selection\n selectionSet[key] = serializeFieldSelection(value, nestedContext)\n }\n}\n\nfunction omitFields(selectionSet: JsonSelectionSet, localOmit: Omission | undefined, context: SerializeContext) {\n const computedFields = context.getComputedFields()\n const combinedOmits = { ...context.getGlobalOmit(), ...localOmit }\n const omitWithComputedFields = computeEngineSideOmissions(combinedOmits, computedFields)\n for (const [key, value] of Object.entries(omitWithComputedFields)) {\n if (isSkip(value)) {\n continue\n }\n validateSelectionForUndefined(value, context.nestSelection(key))\n const field = context.findField(key)\n if (computedFields?.[key] && !field) {\n continue\n }\n selectionSet[key] = !value\n }\n}\n\nfunction createExplicitSelection(select: Selection, context: SerializeContext) {\n const selectionSet: JsonSelectionSet = {}\n const computedFields = context.getComputedFields()\n const selectWithComputedFields = computeEngineSideSelection(select, computedFields)\n\n for (const [key, value] of Object.entries(selectWithComputedFields)) {\n if (isSkip(value)) {\n continue\n }\n const nestedContext = context.nestSelection(key)\n validateSelectionForUndefined(value, nestedContext)\n const field = context.findField(key)\n if (computedFields?.[key] && !field) {\n continue\n }\n if (value === false || value === undefined || isSkip(value)) {\n selectionSet[key] = false\n continue\n }\n if (value === true) {\n if (field?.kind === 'object') {\n selectionSet[key] = serializeFieldSelection({}, nestedContext)\n } else {\n selectionSet[key] = true\n }\n continue\n }\n selectionSet[key] = serializeFieldSelection(value, nestedContext)\n }\n return selectionSet\n}\n\nfunction serializeArgumentsValue(\n jsValue: Exclude<JsInputValue, undefined | Skip>,\n context: SerializeContext,\n): JsonArgumentValue {\n if (jsValue === null) {\n return null\n }\n\n if (typeof jsValue === 'string' || typeof jsValue === 'number' || typeof jsValue === 'boolean') {\n return jsValue\n }\n\n if (typeof jsValue === 'bigint') {\n return { $type: 'BigInt', value: String(jsValue) }\n }\n\n if (isDate(jsValue)) {\n if (isValidDate(jsValue)) {\n return { $type: 'DateTime', value: jsValue.toISOString() }\n } else {\n context.throwValidationError({\n kind: 'InvalidArgumentValue',\n selectionPath: context.getSelectionPath(),\n argumentPath: context.getArgumentPath(),\n argument: {\n name: context.getArgumentName(),\n typeNames: ['Date'],\n },\n underlyingError: 'Provided Date object is invalid',\n })\n }\n }\n\n if (isParam(jsValue)) {\n return { $type: 'Param', value: jsValue.name }\n }\n\n if (isFieldRef(jsValue)) {\n return { $type: 'FieldRef', value: { _ref: jsValue.name, _container: jsValue.modelName } }\n }\n\n if (Array.isArray(jsValue)) {\n return serializeArgumentsArray(jsValue, context)\n }\n\n if (ArrayBuffer.isView(jsValue)) {\n const { buffer, byteOffset, byteLength } = jsValue\n return { $type: 'Bytes', value: Buffer.from(buffer, byteOffset, byteLength).toString('base64') }\n }\n\n if (isRawParameters(jsValue)) {\n return jsValue.values\n }\n\n if (isDecimalJsLike(jsValue)) {\n return { $type: 'Decimal', value: jsValue.toFixed() }\n }\n\n if (jsValue instanceof ObjectEnumValue) {\n if (jsValue !== objectEnumValues.instances[jsValue._getName()]) {\n throw new Error('Invalid ObjectEnumValue')\n }\n return { $type: 'Enum', value: jsValue._getName() }\n }\n\n if (isJSONConvertible(jsValue)) {\n return jsValue.toJSON() as JsonArgumentValue\n }\n\n if (typeof jsValue === 'object') {\n return serializeArgumentsObject(jsValue, context)\n }\n\n context.throwValidationError({\n kind: 'InvalidArgumentValue',\n selectionPath: context.getSelectionPath(),\n argumentPath: context.getArgumentPath(),\n argument: {\n name: context.getArgumentName(),\n typeNames: [],\n },\n underlyingError: `We could not serialize ${Object.prototype.toString.call(\n jsValue,\n )} value. Serialize the object to JSON or implement a \".toJSON()\" method on it`,\n })\n}\n\nfunction serializeArgumentsObject(\n object: Record<string, JsInputValue>,\n context: SerializeContext,\n): Record<string, JsonArgumentValue> | RawTaggedValue {\n if (object['$type']) {\n return { $type: 'Raw', value: object }\n }\n const result: Record<string, JsonArgumentValue> = {}\n for (const key in object) {\n const value = object[key]\n const nestedContext = context.nestArgument(key)\n if (isSkip(value)) {\n continue\n }\n if (value !== undefined) {\n result[key] = serializeArgumentsValue(value, nestedContext)\n } else if (context.isPreviewFeatureOn('strictUndefinedChecks')) {\n context.throwValidationError({\n kind: 'InvalidArgumentValue',\n argumentPath: nestedContext.getArgumentPath(),\n selectionPath: context.getSelectionPath(),\n argument: { name: context.getArgumentName(), typeNames: [] },\n underlyingError: STRICT_UNDEFINED_ERROR_MESSAGE,\n })\n }\n }\n return result\n}\n\nfunction serializeArgumentsArray(array: JsInputValue[], context: SerializeContext): JsonArgumentValue[] {\n const result: JsonArgumentValue[] = []\n for (let i = 0; i < array.length; i++) {\n const itemContext = context.nestArgument(String(i))\n const value = array[i]\n if (value === undefined || isSkip(value)) {\n const valueName = value === undefined ? 'undefined' : `Prisma.skip`\n context.throwValidationError({\n kind: 'InvalidArgumentValue',\n selectionPath: itemContext.getSelectionPath(),\n argumentPath: itemContext.getArgumentPath(),\n argument: {\n name: `${context.getArgumentName()}[${i}]`,\n typeNames: [],\n },\n underlyingError: `Can not use \\`${valueName}\\` value within array. Use \\`null\\` or filter out \\`${valueName}\\` values`,\n })\n }\n result.push(serializeArgumentsValue(value, itemContext))\n }\n return result\n}\n\nfunction isRawParameters(value: JsInputValue): value is RawParameters {\n return typeof value === 'object' && value !== null && value['__prismaRawParameters__'] === true\n}\n\nfunction isJSONConvertible(value: JsInputValue): value is JsonConvertible {\n return typeof value === 'object' && value !== null && typeof value['toJSON'] === 'function'\n}\n\nfunction validateSelectionForUndefined(value: unknown, context: SerializeContext) {\n if (value === undefined && context.isPreviewFeatureOn('strictUndefinedChecks')) {\n context.throwValidationError({\n kind: 'InvalidSelectionValue',\n selectionPath: context.getSelectionPath(),\n underlyingError: STRICT_UNDEFINED_ERROR_MESSAGE,\n })\n }\n}\n\ntype ContextParams = {\n runtimeDataModel: RuntimeDataModel\n originalMethod: string\n rootArgs: JsArgs | undefined\n extensions: MergedExtensionsList\n selectionPath: string[]\n argumentPath: string[]\n modelName?: string\n action: Action\n callsite?: CallSite\n errorFormat: ErrorFormat\n clientVersion: string\n previewFeatures: string[]\n globalOmit?: GlobalOmitOptions\n}\n\nclass SerializeContext {\n public readonly modelOrType: RuntimeModel | undefined\n constructor(private params: ContextParams) {\n if (this.params.modelName) {\n // TODO: throw if not found\n this.modelOrType =\n this.params.runtimeDataModel.models[this.params.modelName] ??\n this.params.runtimeDataModel.types[this.params.modelName]\n }\n }\n\n throwValidationError(error: ValidationError): never {\n throwValidationException({\n errors: [error],\n originalMethod: this.params.originalMethod,\n args: this.params.rootArgs ?? {},\n callsite: this.params.callsite,\n errorFormat: this.params.errorFormat,\n clientVersion: this.params.clientVersion,\n globalOmit: this.params.globalOmit,\n })\n }\n\n getSelectionPath() {\n return this.params.selectionPath\n }\n\n getArgumentPath() {\n return this.params.argumentPath\n }\n\n getArgumentName() {\n return this.params.argumentPath[this.params.argumentPath.length - 1]\n }\n\n getOutputTypeDescription(): OutputTypeDescription | undefined {\n if (!this.params.modelName || !this.modelOrType) {\n return undefined\n }\n return {\n name: this.params.modelName,\n fields: this.modelOrType.fields.map((field) => ({\n name: field.name,\n typeName: 'boolean',\n isRelation: field.kind === 'object',\n })),\n }\n }\n\n isRawAction() {\n return ['executeRaw', 'queryRaw', 'runCommandRaw', 'findRaw', 'aggregateRaw'].includes(this.params.action)\n }\n\n isPreviewFeatureOn(previewFeature: string) {\n return this.params.previewFeatures.includes(previewFeature)\n }\n\n getComputedFields() {\n if (!this.params.modelName) {\n return undefined\n }\n\n return this.params.extensions.getAllComputedFields(this.params.modelName)\n }\n\n findField(name: string) {\n return this.modelOrType?.fields.find((field) => field.name === name)\n }\n\n nestSelection(fieldName: string) {\n const field = this.findField(fieldName)\n const modelName = field?.kind === 'object' ? field.type : undefined\n\n return new SerializeContext({\n ...this.params,\n modelName,\n selectionPath: this.params.selectionPath.concat(fieldName),\n })\n }\n\n getGlobalOmit(): Record<string, boolean> {\n if (this.params.modelName && this.shouldApplyGlobalOmit()) {\n return this.params.globalOmit?.[uncapitalize(this.params.modelName)] ?? {}\n }\n return {}\n }\n\n shouldApplyGlobalOmit(): boolean {\n switch (this.params.action) {\n case 'findFirst':\n case 'findFirstOrThrow':\n case 'findUniqueOrThrow':\n case 'findMany':\n case 'upsert':\n case 'findUnique':\n case 'createManyAndReturn':\n case 'create':\n case 'update':\n case 'updateManyAndReturn':\n case 'delete':\n return true\n case 'executeRaw':\n case 'aggregateRaw':\n case 'runCommandRaw':\n case 'findRaw':\n case 'createMany':\n case 'deleteMany':\n case 'groupBy':\n case 'updateMany':\n case 'count':\n case 'aggregate':\n case 'queryRaw':\n return false\n default:\n assertNever(this.params.action, 'Unknown action')\n }\n }\n\n nestArgument(fieldName: string) {\n return new SerializeContext({\n ...this.params,\n argumentPath: this.params.argumentPath.concat(fieldName),\n })\n }\n}\n", "export * from './Cache'\nexport * from './casing'\nexport * from './client-config'\nexport * from './Dictionary'\nexport * from './dmmf'\nexport * from './enums'\nexport * from './lazyProperty'\nexport * from './omit'\nexport * from './operations'\nexport * from './QueryCompiler'\nexport * from './QueryEngine'\nexport * from './runtimeDataModel'\nexport * from './uniqueBy'\n", "type CacheEntry<V> = {\n value: V\n}\nexport class Cache<K, V> {\n private _map = new Map<K, CacheEntry<V>>()\n\n get(key: K): V | undefined {\n return this._map.get(key)?.value\n }\n\n set(key: K, value: V): void {\n this._map.set(key, { value })\n }\n\n getOrCreate(key: K, create: () => V): V {\n const cached = this._map.get(key)\n if (cached) {\n return cached.value\n }\n const value = create()\n this.set(key, value)\n return value\n }\n}\n", "/**\n * Converts the first character of a word to upper case.\n */\nexport function capitalize<T extends string>(self: T): Capitalize<T> {\n if (self.length === 0) return self as Capitalize<T>\n\n return (self[0].toUpperCase() + self.slice(1)) as Capitalize<T>\n}\n\n/**\n * Converts the first character of a word to lower case.\n */\nexport function uncapitalize<T extends string>(self: T): Uncapitalize<T> {\n return (self.substring(0, 1).toLowerCase() + self.substring(1)) as Uncapitalize<T>\n}\n", "export interface Dictionary<T> {\n [key: string]: T\n}\n\nexport function keyBy<P extends PropertyKey, T extends { [key in P]: string }>(\n collection: readonly T[],\n prop: P,\n): Dictionary<T> {\n const acc: Dictionary<T> = {}\n\n for (const obj of collection) {\n const key = obj[prop]\n acc[key] = obj\n }\n\n return acc\n}\n", "export type LazyProperty<T> = {\n get: () => T\n}\n\nexport function lazyProperty<T>(compute: () => T): LazyProperty<T> {\n let resultContainer: undefined | { value: T }\n\n return {\n get() {\n if (resultContainer) {\n return resultContainer.value\n }\n resultContainer = { value: compute() }\n return resultContainer.value\n },\n }\n}\n", "import type * as DMMF from '@prisma/dmmf'\n\nexport type RuntimeModel = Omit<DMMF.Model, 'name'>\nexport type RuntimeEnum = Omit<DMMF.DatamodelEnum, 'name'>\n\nexport type RuntimeDataModel = {\n readonly models: Record<string, RuntimeModel>\n readonly enums: Record<string, RuntimeEnum>\n readonly types: Record<string, RuntimeModel>\n}\n\nexport type PrunedRuntimeModel = {\n readonly dbName: RuntimeModel['dbName']\n readonly fields: Pick<RuntimeModel['fields'][number], 'name' | 'kind' | 'type' | 'relationName' | 'dbName'>[]\n}\n\nexport type PrunedRuntimeDataModel = {\n readonly models: Record<string, PrunedRuntimeModel>\n readonly enums: {}\n readonly types: {}\n}\n\nexport function dmmfToRuntimeDataModel(dmmfDataModel: DMMF.Datamodel): RuntimeDataModel {\n return {\n models: buildMapForRuntime(dmmfDataModel.models),\n enums: buildMapForRuntime(dmmfDataModel.enums),\n types: buildMapForRuntime(dmmfDataModel.types),\n }\n}\n\n/**\n * Minimal version of the runtime datamodel for the Client to work\n * @param runtimeDataModel\n * @returns\n */\nexport function pruneRuntimeDataModel({ models }: RuntimeDataModel) {\n const prunedModels: PrunedRuntimeDataModel['models'] = {}\n\n for (const modelName of Object.keys(models)) {\n prunedModels[modelName] = { fields: [], dbName: models[modelName].dbName }\n\n for (const { name, kind, type, relationName, dbName } of models[modelName].fields) {\n prunedModels[modelName].fields.push({ name, kind, type, relationName, dbName })\n }\n }\n\n return { models: prunedModels, enums: {}, types: {} }\n}\n\nfunction buildMapForRuntime<T extends { name: string }>(list: readonly T[]): Record<string, Omit<T, 'name'>> {\n const result: Record<string, Omit<T, 'name'>> = {}\n for (const { name, ...rest } of list) {\n result[name] = rest\n }\n return result\n}\n", "export function isDate(value: unknown): value is Date {\n return (\n value instanceof Date ||\n // date created in other JS context (for example, worker)\n Object.prototype.toString.call(value) === '[object Date]'\n )\n}\n\nexport function isValidDate(date: Date) {\n return date.toString() !== 'Invalid Date'\n}\n", "import { Decimal } from 'decimal.js'\n\nimport { DecimalJsLike } from '../core/types/exported/DecimalJsLike'\n\nexport function isDecimalJsLike(value: unknown): value is DecimalJsLike {\n if (Decimal.isDecimal(value)) {\n return true\n }\n return (\n value !== null &&\n typeof value === 'object' &&\n typeof value['s'] === 'number' &&\n typeof value['e'] === 'number' &&\n typeof value['toFixed'] === 'function' &&\n Array.isArray(value['d'])\n )\n}\n", "/*!\r\n * decimal.js v10.5.0\r\n * An arbitrary-precision Decimal type for JavaScript.\r\n * https://github.com/MikeMcl/decimal.js\r\n * Copyright (c) 2025 Michael Mclaughlin <M8ch88l@gmail.com>\r\n * MIT Licence\r\n */\r\n\r\n\r\n// ----------------------------------- EDITABLE DEFAULTS ------------------------------------ //\r\n\r\n\r\n // The maximum exponent magnitude.\r\n // The limit on the value of `toExpNeg`, `toExpPos`, `minE` and `maxE`.\r\nvar EXP_LIMIT = 9e15, // 0 to 9e15\r\n\r\n // The limit on the value of `precision`, and on the value of the first argument to\r\n // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n MAX_DIGITS = 1e9, // 0 to 1e9\r\n\r\n // Base conversion alphabet.\r\n NUMERALS = '0123456789abcdef',\r\n\r\n // The natural logarithm of 10 (1025 digits).\r\n LN10 = '2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058',\r\n\r\n // Pi (1025 digits).\r\n PI = '3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789',\r\n\r\n\r\n // The initial configuration properties of the Decimal constructor.\r\n DEFAULTS = {\r\n\r\n // These values must be integers within the stated ranges (inclusive).\r\n // Most of these values can be changed at run-time using the `Decimal.config` method.\r\n\r\n // The maximum number of significant digits of the result of a calculation or base conversion.\r\n // E.g. `Decimal.config({ precision: 20 });`\r\n precision: 20, // 1 to MAX_DIGITS\r\n\r\n // The rounding mode used when rounding to `precision`.\r\n //\r\n // ROUND_UP 0 Away from zero.\r\n // ROUND_DOWN 1 Towards zero.\r\n // ROUND_CEIL 2 Towards +Infinity.\r\n // ROUND_FLOOR 3 Towards -Infinity.\r\n // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n //\r\n // E.g.\r\n // `Decimal.rounding = 4;`\r\n // `Decimal.rounding = Decimal.ROUND_HALF_UP;`\r\n rounding: 4, // 0 to 8\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend (JavaScript %).\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 The IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)). Always positive.\r\n //\r\n // Truncated division (1), floored division (3), the IEEE 754 remainder (6), and Euclidian\r\n // division (9) are commonly used for the modulus operation. The other rounding modes can also\r\n // be used, but they may not give useful results.\r\n modulo: 1, // 0 to 9\r\n\r\n // The exponent value at and beneath which `toString` returns exponential notation.\r\n // JavaScript numbers: -7\r\n toExpNeg: -7, // 0 to -EXP_LIMIT\r\n\r\n // The exponent value at and above which `toString` returns exponential notation.\r\n // JavaScript numbers: 21\r\n toExpPos: 21, // 0 to EXP_LIMIT\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // JavaScript numbers: -324 (5e-324)\r\n minE: -EXP_LIMIT, // -1 to -EXP_LIMIT\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // JavaScript numbers: 308 (1.7976931348623157e+308)\r\n maxE: EXP_LIMIT, // 1 to EXP_LIMIT\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n crypto: false // true/false\r\n },\r\n\r\n\r\n// ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- //\r\n\r\n\r\n inexact, quadrant,\r\n external = true,\r\n\r\n decimalError = '[DecimalError] ',\r\n invalidArgument = decimalError + 'Invalid argument: ',\r\n precisionLimitExceeded = decimalError + 'Precision limit exceeded',\r\n cryptoUnavailable = decimalError + 'crypto unavailable',\r\n tag = '[object Decimal]',\r\n\r\n mathfloor = Math.floor,\r\n mathpow = Math.pow,\r\n\r\n isBinary = /^0b([01]+(\\.[01]*)?|\\.[01]+)(p[+-]?\\d+)?$/i,\r\n isHex = /^0x([0-9a-f]+(\\.[0-9a-f]*)?|\\.[0-9a-f]+)(p[+-]?\\d+)?$/i,\r\n isOctal = /^0o([0-7]+(\\.[0-7]*)?|\\.[0-7]+)(p[+-]?\\d+)?$/i,\r\n isDecimal = /^(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,\r\n\r\n BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_SAFE_INTEGER = 9007199254740991,\r\n\r\n LN10_PRECISION = LN10.length - 1,\r\n PI_PRECISION = PI.length - 1,\r\n\r\n // Decimal.prototype object\r\n P = { toStringTag: tag };\r\n\r\n\r\n// Decimal prototype methods\r\n\r\n\r\n/*\r\n * absoluteValue abs\r\n * ceil\r\n * clampedTo clamp\r\n * comparedTo cmp\r\n * cosine cos\r\n * cubeRoot cbrt\r\n * decimalPlaces dp\r\n * dividedBy div\r\n * dividedToIntegerBy divToInt\r\n * equals eq\r\n * floor\r\n * greaterThan gt\r\n * greaterThanOrEqualTo gte\r\n * hyperbolicCosine cosh\r\n * hyperbolicSine sinh\r\n * hyperbolicTangent tanh\r\n * inverseCosine acos\r\n * inverseHyperbolicCosine acosh\r\n * inverseHyperbolicSine asinh\r\n * inverseHyperbolicTangent atanh\r\n * inverseSine asin\r\n * inverseTangent atan\r\n * isFinite\r\n * isInteger isInt\r\n * isNaN\r\n * isNegative isNeg\r\n * isPositive isPos\r\n * isZero\r\n * lessThan lt\r\n * lessThanOrEqualTo lte\r\n * logarithm log\r\n * [maximum] [max]\r\n * [minimum] [min]\r\n * minus sub\r\n * modulo mod\r\n * naturalExponential exp\r\n * naturalLogarithm ln\r\n * negated neg\r\n * plus add\r\n * precision sd\r\n * round\r\n * sine sin\r\n * squareRoot sqrt\r\n * tangent tan\r\n * times mul\r\n * toBinary\r\n * toDecimalPlaces toDP\r\n * toExponential\r\n * toFixed\r\n * toFraction\r\n * toHexadecimal toHex\r\n * toNearest\r\n * toNumber\r\n * toOctal\r\n * toPower pow\r\n * toPrecision\r\n * toSignificantDigits toSD\r\n * toString\r\n * truncated trunc\r\n * valueOf toJSON\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the absolute value of this Decimal.\r\n *\r\n */\r\nP.absoluteValue = P.abs = function () {\r\n var x = new this.constructor(this);\r\n if (x.s < 0) x.s = 1;\r\n return finalise(x);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n * direction of positive Infinity.\r\n *\r\n */\r\nP.ceil = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 2);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal clamped to the range\r\n * delineated by `min` and `max`.\r\n *\r\n * min {number|string|bigint|Decimal}\r\n * max {number|string|bigint|Decimal}\r\n *\r\n */\r\nP.clampedTo = P.clamp = function (min, max) {\r\n var k,\r\n x = this,\r\n Ctor = x.constructor;\r\n min = new Ctor(min);\r\n max = new Ctor(max);\r\n if (!min.s || !max.s) return new Ctor(NaN);\r\n if (min.gt(max)) throw Error(invalidArgument + max);\r\n k = x.cmp(min);\r\n return k < 0 ? min : x.cmp(max) > 0 ? max : new Ctor(x);\r\n};\r\n\r\n\r\n/*\r\n * Return\r\n * 1 if the value of this Decimal is greater than the value of `y`,\r\n * -1 if the value of this Decimal is less than the value of `y`,\r\n * 0 if they have the same value,\r\n * NaN if the value of either Decimal is NaN.\r\n *\r\n */\r\nP.comparedTo = P.cmp = function (y) {\r\n var i, j, xdL, ydL,\r\n x = this,\r\n xd = x.d,\r\n yd = (y = new x.constructor(y)).d,\r\n xs = x.s,\r\n ys = y.s;\r\n\r\n // Either NaN or \u00B1Infinity?\r\n if (!xd || !yd) {\r\n return !xs || !ys ? NaN : xs !== ys ? xs : xd === yd ? 0 : !xd ^ xs < 0 ? 1 : -1;\r\n }\r\n\r\n // Either zero?\r\n if (!xd[0] || !yd[0]) return xd[0] ? xs : yd[0] ? -ys : 0;\r\n\r\n // Signs differ?\r\n if (xs !== ys) return xs;\r\n\r\n // Compare exponents.\r\n if (x.e !== y.e) return x.e > y.e ^ xs < 0 ? 1 : -1;\r\n\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Compare digit by digit.\r\n for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) {\r\n if (xd[i] !== yd[i]) return xd[i] > yd[i] ^ xs < 0 ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return xdL === ydL ? 0 : xdL > ydL ^ xs < 0 ? 1 : -1;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cosine of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * cos(0) = 1\r\n * cos(-0) = 1\r\n * cos(Infinity) = NaN\r\n * cos(-Infinity) = NaN\r\n * cos(NaN) = NaN\r\n *\r\n */\r\nP.cosine = P.cos = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.d) return new Ctor(NaN);\r\n\r\n // cos(0) = cos(-0) = 1\r\n if (!x.d[0]) return new Ctor(1);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\r\n Ctor.rounding = 1;\r\n\r\n x = cosine(Ctor, toLessThanHalfPi(Ctor, x));\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant == 2 || quadrant == 3 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n *\r\n * Return a new Decimal whose value is the cube root of the value of this Decimal, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * cbrt(0) = 0\r\n * cbrt(-0) = -0\r\n * cbrt(1) = 1\r\n * cbrt(-1) = -1\r\n * cbrt(N) = N\r\n * cbrt(-I) = -I\r\n * cbrt(I) = I\r\n *\r\n * Math.cbrt(x) = (x < 0 ? -Math.pow(-x, 1/3) : Math.pow(x, 1/3))\r\n *\r\n */\r\nP.cubeRoot = P.cbrt = function () {\r\n var e, m, n, r, rep, s, sd, t, t3, t3plusx,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = x.s * mathpow(x.s * x, 1 / 3);\r\n\r\n // Math.cbrt underflow/overflow?\r\n // Pass x to Math.pow as integer, then adjust the exponent of the result.\r\n if (!s || Math.abs(s) == 1 / 0) {\r\n n = digitsToString(x.d);\r\n e = x.e;\r\n\r\n // Adjust n exponent so it is a multiple of 3 away from x exponent.\r\n if (s = (e - n.length + 1) % 3) n += (s == 1 || s == -2 ? '0' : '00');\r\n s = mathpow(n, 1 / 3);\r\n\r\n // Rarely, e may be one less than the result exponent value.\r\n e = mathfloor((e + 1) / 3) - (e % 3 == (e < 0 ? -1 : 2));\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n r.s = x.s;\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n sd = (e = Ctor.precision) + 3;\r\n\r\n // Halley's method.\r\n // TODO? Compare Newton's method.\r\n for (;;) {\r\n t = r;\r\n t3 = t.times(t).times(t);\r\n t3plusx = t3.plus(x);\r\n r = divide(t3plusx.plus(x).times(t), t3plusx.plus(t3), sd + 2, 1);\r\n\r\n // TODO? Replace with for-loop and checkRoundingDigits.\r\n if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\r\n n = n.slice(sd - 3, sd + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or 4999\r\n // , i.e. approaching a rounding boundary, continue the iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n if (!rep) {\r\n finalise(t, e + 1, 0);\r\n\r\n if (t.times(t).times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n sd += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\r\n // If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n finalise(r, e + 1, 1);\r\n m = !r.times(r).times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, e, Ctor.rounding, m);\r\n};\r\n\r\n\r\n/*\r\n * Return the number of decimal places of the value of this Decimal.\r\n *\r\n */\r\nP.decimalPlaces = P.dp = function () {\r\n var w,\r\n d = this.d,\r\n n = NaN;\r\n\r\n if (d) {\r\n w = d.length - 1;\r\n n = (w - mathfloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n w = d[w];\r\n if (w) for (; w % 10 == 0; w /= 10) n--;\r\n if (n < 0) n = 0;\r\n }\r\n\r\n return n;\r\n};\r\n\r\n\r\n/*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal divided by `y`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.dividedBy = P.div = function (y) {\r\n return divide(this, new this.constructor(y));\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the integer part of dividing the value of this Decimal\r\n * by the value of `y`, rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.dividedToIntegerBy = P.divToInt = function (y) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return finalise(divide(x, new Ctor(y), 0, 1, 1), Ctor.precision, Ctor.rounding);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false.\r\n *\r\n */\r\nP.equals = P.eq = function (y) {\r\n return this.cmp(y) === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n * direction of negative Infinity.\r\n *\r\n */\r\nP.floor = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 3);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is greater than the value of `y`, otherwise return\r\n * false.\r\n *\r\n */\r\nP.greaterThan = P.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is greater than or equal to the value of `y`,\r\n * otherwise return false.\r\n *\r\n */\r\nP.greaterThanOrEqualTo = P.gte = function (y) {\r\n var k = this.cmp(y);\r\n return k == 1 || k === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic cosine of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [1, Infinity]\r\n *\r\n * cosh(x) = 1 + x^2/2! + x^4/4! + x^6/6! + ...\r\n *\r\n * cosh(0) = 1\r\n * cosh(-0) = 1\r\n * cosh(Infinity) = Infinity\r\n * cosh(-Infinity) = Infinity\r\n * cosh(NaN) = NaN\r\n *\r\n * x time taken (ms) result\r\n * 1000 9 9.8503555700852349694e+433\r\n * 10000 25 4.4034091128314607936e+4342\r\n * 100000 171 1.4033316802130615897e+43429\r\n * 1000000 3817 1.5166076984010437725e+434294\r\n * 10000000 abandoned after 2 minute wait\r\n *\r\n * TODO? Compare performance of cosh(x) = 0.5 * (exp(x) + exp(-x))\r\n *\r\n */\r\nP.hyperbolicCosine = P.cosh = function () {\r\n var k, n, pr, rm, len,\r\n x = this,\r\n Ctor = x.constructor,\r\n one = new Ctor(1);\r\n\r\n if (!x.isFinite()) return new Ctor(x.s ? 1 / 0 : NaN);\r\n if (x.isZero()) return one;\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n len = x.d.length;\r\n\r\n // Argument reduction: cos(4x) = 1 - 8cos^2(x) + 8cos^4(x) + 1\r\n // i.e. cos(x) = 1 - cos^2(x/4)(8 - 8cos^2(x/4))\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n // TODO? Estimation reused from cosine() and may not be optimal here.\r\n if (len < 32) {\r\n k = Math.ceil(len / 3);\r\n n = (1 / tinyPow(4, k)).toString();\r\n } else {\r\n k = 16;\r\n n = '2.3283064365386962890625e-10';\r\n }\r\n\r\n x = taylorSeries(Ctor, 1, x.times(n), new Ctor(1), true);\r\n\r\n // Reverse argument reduction\r\n var cosh2_x,\r\n i = k,\r\n d8 = new Ctor(8);\r\n for (; i--;) {\r\n cosh2_x = x.times(x);\r\n x = one.minus(cosh2_x.times(d8.minus(cosh2_x.times(d8))));\r\n }\r\n\r\n return finalise(x, Ctor.precision = pr, Ctor.rounding = rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic sine of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * sinh(x) = x + x^3/3! + x^5/5! + x^7/7! + ...\r\n *\r\n * sinh(0) = 0\r\n * sinh(-0) = -0\r\n * sinh(Infinity) = Infinity\r\n * sinh(-Infinity) = -Infinity\r\n * sinh(NaN) = NaN\r\n *\r\n * x time taken (ms)\r\n * 10 2 ms\r\n * 100 5 ms\r\n * 1000 14 ms\r\n * 10000 82 ms\r\n * 100000 886 ms 1.4033316802130615897e+43429\r\n * 200000 2613 ms\r\n * 300000 5407 ms\r\n * 400000 8824 ms\r\n * 500000 13026 ms 8.7080643612718084129e+217146\r\n * 1000000 48543 ms\r\n *\r\n * TODO? Compare performance of sinh(x) = 0.5 * (exp(x) - exp(-x))\r\n *\r\n */\r\nP.hyperbolicSine = P.sinh = function () {\r\n var k, pr, rm, len,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n len = x.d.length;\r\n\r\n if (len < 3) {\r\n x = taylorSeries(Ctor, 2, x, x, true);\r\n } else {\r\n\r\n // Alternative argument reduction: sinh(3x) = sinh(x)(3 + 4sinh^2(x))\r\n // i.e. sinh(x) = sinh(x/3)(3 + 4sinh^2(x/3))\r\n // 3 multiplications and 1 addition\r\n\r\n // Argument reduction: sinh(5x) = sinh(x)(5 + sinh^2(x)(20 + 16sinh^2(x)))\r\n // i.e. sinh(x) = sinh(x/5)(5 + sinh^2(x/5)(20 + 16sinh^2(x/5)))\r\n // 4 multiplications and 2 additions\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n k = 1.4 * Math.sqrt(len);\r\n k = k > 16 ? 16 : k | 0;\r\n\r\n x = x.times(1 / tinyPow(5, k));\r\n x = taylorSeries(Ctor, 2, x, x, true);\r\n\r\n // Reverse argument reduction\r\n var sinh2_x,\r\n d5 = new Ctor(5),\r\n d16 = new Ctor(16),\r\n d20 = new Ctor(20);\r\n for (; k--;) {\r\n sinh2_x = x.times(x);\r\n x = x.times(d5.plus(sinh2_x.times(d16.times(sinh2_x).plus(d20))));\r\n }\r\n }\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic tangent of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * tanh(x) = sinh(x) / cosh(x)\r\n *\r\n * tanh(0) = 0\r\n * tanh(-0) = -0\r\n * tanh(Infinity) = 1\r\n * tanh(-Infinity) = -1\r\n * tanh(NaN) = NaN\r\n *\r\n */\r\nP.hyperbolicTangent = P.tanh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(x.s);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 7;\r\n Ctor.rounding = 1;\r\n\r\n return divide(x.sinh(), x.cosh(), Ctor.precision = pr, Ctor.rounding = rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arccosine (inverse cosine) in radians of the value of\r\n * this Decimal.\r\n *\r\n * Domain: [-1, 1]\r\n * Range: [0, pi]\r\n *\r\n * acos(x) = pi/2 - asin(x)\r\n *\r\n * acos(0) = pi/2\r\n * acos(-0) = pi/2\r\n * acos(1) = 0\r\n * acos(-1) = pi\r\n * acos(1/2) = pi/3\r\n * acos(-1/2) = 2*pi/3\r\n * acos(|x| > 1) = NaN\r\n * acos(NaN) = NaN\r\n *\r\n */\r\nP.inverseCosine = P.acos = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n k = x.abs().cmp(1),\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding;\r\n\r\n if (k !== -1) {\r\n return k === 0\r\n // |x| is 1\r\n ? x.isNeg() ? getPi(Ctor, pr, rm) : new Ctor(0)\r\n // |x| > 1 or x is NaN\r\n : new Ctor(NaN);\r\n }\r\n\r\n if (x.isZero()) return getPi(Ctor, pr + 4, rm).times(0.5);\r\n\r\n // TODO? Special case acos(0.5) = pi/3 and acos(-0.5) = 2*pi/3\r\n\r\n Ctor.precision = pr + 6;\r\n Ctor.rounding = 1;\r\n\r\n // See https://github.com/MikeMcl/decimal.js/pull/217\r\n x = new Ctor(1).minus(x).div(x.plus(1)).sqrt().atan();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(2);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic cosine in radians of the\r\n * value of this Decimal.\r\n *\r\n * Domain: [1, Infinity]\r\n * Range: [0, Infinity]\r\n *\r\n * acosh(x) = ln(x + sqrt(x^2 - 1))\r\n *\r\n * acosh(x < 1) = NaN\r\n * acosh(NaN) = NaN\r\n * acosh(Infinity) = Infinity\r\n * acosh(-Infinity) = NaN\r\n * acosh(0) = NaN\r\n * acosh(-0) = NaN\r\n * acosh(1) = 0\r\n * acosh(-1) = NaN\r\n *\r\n */\r\nP.inverseHyperbolicCosine = P.acosh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (x.lte(1)) return new Ctor(x.eq(1) ? 0 : NaN);\r\n if (!x.isFinite()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(Math.abs(x.e), x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n external = false;\r\n\r\n x = x.times(x).minus(1).sqrt().plus(x);\r\n\r\n external = true;\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.ln();\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic sine in radians of the value\r\n * of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * asinh(x) = ln(x + sqrt(x^2 + 1))\r\n *\r\n * asinh(NaN) = NaN\r\n * asinh(Infinity) = Infinity\r\n * asinh(-Infinity) = -Infinity\r\n * asinh(0) = 0\r\n * asinh(-0) = -0\r\n *\r\n */\r\nP.inverseHyperbolicSine = P.asinh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 2 * Math.max(Math.abs(x.e), x.sd()) + 6;\r\n Ctor.rounding = 1;\r\n external = false;\r\n\r\n x = x.times(x).plus(1).sqrt().plus(x);\r\n\r\n external = true;\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.ln();\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic tangent in radians of the\r\n * value of this Decimal.\r\n *\r\n * Domain: [-1, 1]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * atanh(x) = 0.5 * ln((1 + x) / (1 - x))\r\n *\r\n * atanh(|x| > 1) = NaN\r\n * atanh(NaN) = NaN\r\n * atanh(Infinity) = NaN\r\n * atanh(-Infinity) = NaN\r\n * atanh(0) = 0\r\n * atanh(-0) = -0\r\n * atanh(1) = Infinity\r\n * atanh(-1) = -Infinity\r\n *\r\n */\r\nP.inverseHyperbolicTangent = P.atanh = function () {\r\n var pr, rm, wpr, xsd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.e >= 0) return new Ctor(x.abs().eq(1) ? x.s / 0 : x.isZero() ? x : NaN);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n xsd = x.sd();\r\n\r\n if (Math.max(xsd, pr) < 2 * -x.e - 1) return finalise(new Ctor(x), pr, rm, true);\r\n\r\n Ctor.precision = wpr = xsd - x.e;\r\n\r\n x = divide(x.plus(1), new Ctor(1).minus(x), wpr + pr, 1);\r\n\r\n Ctor.precision = pr + 4;\r\n Ctor.rounding = 1;\r\n\r\n x = x.ln();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(0.5);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arcsine (inverse sine) in radians of the value of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi/2, pi/2]\r\n *\r\n * asin(x) = 2*atan(x/(1 + sqrt(1 - x^2)))\r\n *\r\n * asin(0) = 0\r\n * asin(-0) = -0\r\n * asin(1/2) = pi/6\r\n * asin(-1/2) = -pi/6\r\n * asin(1) = pi/2\r\n * asin(-1) = -pi/2\r\n * asin(|x| > 1) = NaN\r\n * asin(NaN) = NaN\r\n *\r\n * TODO? Compare performance of Taylor series.\r\n *\r\n */\r\nP.inverseSine = P.asin = function () {\r\n var halfPi, k,\r\n pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n k = x.abs().cmp(1);\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n if (k !== -1) {\r\n\r\n // |x| is 1\r\n if (k === 0) {\r\n halfPi = getPi(Ctor, pr + 4, rm).times(0.5);\r\n halfPi.s = x.s;\r\n return halfPi;\r\n }\r\n\r\n // |x| > 1 or x is NaN\r\n return new Ctor(NaN);\r\n }\r\n\r\n // TODO? Special case asin(1/2) = pi/6 and asin(-1/2) = -pi/6\r\n\r\n Ctor.precision = pr + 6;\r\n Ctor.rounding = 1;\r\n\r\n x = x.div(new Ctor(1).minus(x.times(x)).sqrt().plus(1)).atan();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(2);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent (inverse tangent) in radians of the value\r\n * of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi/2, pi/2]\r\n *\r\n * atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n *\r\n * atan(0) = 0\r\n * atan(-0) = -0\r\n * atan(1) = pi/4\r\n * atan(-1) = -pi/4\r\n * atan(Infinity) = pi/2\r\n * atan(-Infinity) = -pi/2\r\n * atan(NaN) = NaN\r\n *\r\n */\r\nP.inverseTangent = P.atan = function () {\r\n var i, j, k, n, px, t, r, wpr, x2,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding;\r\n\r\n if (!x.isFinite()) {\r\n if (!x.s) return new Ctor(NaN);\r\n if (pr + 4 <= PI_PRECISION) {\r\n r = getPi(Ctor, pr + 4, rm).times(0.5);\r\n r.s = x.s;\r\n return r;\r\n }\r\n } else if (x.isZero()) {\r\n return new Ctor(x);\r\n } else if (x.abs().eq(1) && pr + 4 <= PI_PRECISION) {\r\n r = getPi(Ctor, pr + 4, rm).times(0.25);\r\n r.s = x.s;\r\n return r;\r\n }\r\n\r\n Ctor.precision = wpr = pr + 10;\r\n Ctor.rounding = 1;\r\n\r\n // TODO? if (x >= 1 && pr <= PI_PRECISION) atan(x) = halfPi * x.s - atan(1 / x);\r\n\r\n // Argument reduction\r\n // Ensure |x| < 0.42\r\n // atan(x) = 2 * atan(x / (1 + sqrt(1 + x^2)))\r\n\r\n k = Math.min(28, wpr / LOG_BASE + 2 | 0);\r\n\r\n for (i = k; i; --i) x = x.div(x.times(x).plus(1).sqrt().plus(1));\r\n\r\n external = false;\r\n\r\n j = Math.ceil(wpr / LOG_BASE);\r\n n = 1;\r\n x2 = x.times(x);\r\n r = new Ctor(x);\r\n px = x;\r\n\r\n // atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n for (; i !== -1;) {\r\n px = px.times(x2);\r\n t = r.minus(px.div(n += 2));\r\n\r\n px = px.times(x2);\r\n r = t.plus(px.div(n += 2));\r\n\r\n if (r.d[j] !== void 0) for (i = j; r.d[i] === t.d[i] && i--;);\r\n }\r\n\r\n if (k) r = r.times(2 << (k - 1));\r\n\r\n external = true;\r\n\r\n return finalise(r, Ctor.precision = pr, Ctor.rounding = rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is a finite number, otherwise return false.\r\n *\r\n */\r\nP.isFinite = function () {\r\n return !!this.d;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is an integer, otherwise return false.\r\n *\r\n */\r\nP.isInteger = P.isInt = function () {\r\n return !!this.d && mathfloor(this.e / LOG_BASE) > this.d.length - 2;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is NaN, otherwise return false.\r\n *\r\n */\r\nP.isNaN = function () {\r\n return !this.s;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is negative, otherwise return false.\r\n *\r\n */\r\nP.isNegative = P.isNeg = function () {\r\n return this.s < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is positive, otherwise return false.\r\n *\r\n */\r\nP.isPositive = P.isPos = function () {\r\n return this.s > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is 0 or -0, otherwise return false.\r\n *\r\n */\r\nP.isZero = function () {\r\n return !!this.d && this.d[0] === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is less than `y`, otherwise return false.\r\n *\r\n */\r\nP.lessThan = P.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false.\r\n *\r\n */\r\nP.lessThanOrEqualTo = P.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n};\r\n\r\n\r\n/*\r\n * Return the logarithm of the value of this Decimal to the specified base, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * If no base is specified, return log[10](arg).\r\n *\r\n * log[base](arg) = ln(arg) / ln(base)\r\n *\r\n * The result will always be correctly rounded if the base of the log is 10, and 'almost always'\r\n * otherwise:\r\n *\r\n * Depending on the rounding mode, the result may be incorrectly rounded if the first fifteen\r\n * rounding digits are [49]99999999999999 or [50]00000000000000. In that case, the maximum error\r\n * between the result and the correctly rounded result will be one ulp (unit in the last place).\r\n *\r\n * log[-b](a) = NaN\r\n * log[0](a) = NaN\r\n * log[1](a) = NaN\r\n * log[NaN](a) = NaN\r\n * log[Infinity](a) = NaN\r\n * log[b](0) = -Infinity\r\n * log[b](-0) = -Infinity\r\n * log[b](-a) = NaN\r\n * log[b](1) = 0\r\n * log[b](Infinity) = Infinity\r\n * log[b](NaN) = NaN\r\n *\r\n * [base] {number|string|bigint|Decimal} The base of the logarithm.\r\n *\r\n */\r\nP.logarithm = P.log = function (base) {\r\n var isBase10, d, denominator, k, inf, num, sd, r,\r\n arg = this,\r\n Ctor = arg.constructor,\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding,\r\n guard = 5;\r\n\r\n // Default base is 10.\r\n if (base == null) {\r\n base = new Ctor(10);\r\n isBase10 = true;\r\n } else {\r\n base = new Ctor(base);\r\n d = base.d;\r\n\r\n // Return NaN if base is negative, or non-finite, or is 0 or 1.\r\n if (base.s < 0 || !d || !d[0] || base.eq(1)) return new Ctor(NaN);\r\n\r\n isBase10 = base.eq(10);\r\n }\r\n\r\n d = arg.d;\r\n\r\n // Is arg negative, non-finite, 0 or 1?\r\n if (arg.s < 0 || !d || !d[0] || arg.eq(1)) {\r\n return new Ctor(d && !d[0] ? -1 / 0 : arg.s != 1 ? NaN : d ? 0 : 1 / 0);\r\n }\r\n\r\n // The result will have a non-terminating decimal expansion if base is 10 and arg is not an\r\n // integer power of 10.\r\n if (isBase10) {\r\n if (d.length > 1) {\r\n inf = true;\r\n } else {\r\n for (k = d[0]; k % 10 === 0;) k /= 10;\r\n inf = k !== 1;\r\n }\r\n }\r\n\r\n external = false;\r\n sd = pr + guard;\r\n num = naturalLogarithm(arg, sd);\r\n denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\r\n\r\n // The result will have 5 rounding digits.\r\n r = divide(num, denominator, sd, 1);\r\n\r\n // If at a rounding boundary, i.e. the result's rounding digits are [49]9999 or [50]0000,\r\n // calculate 10 further digits.\r\n //\r\n // If the result is known to have an infinite decimal expansion, repeat this until it is clear\r\n // that the result is above or below the boundary. Otherwise, if after calculating the 10\r\n // further digits, the last 14 are nines, round up and assume the result is exact.\r\n // Also assume the result is exact if the last 14 are zero.\r\n //\r\n // Example of a result that will be incorrectly rounded:\r\n // log[1048576](4503599627370502) = 2.60000000000000009610279511444746...\r\n // The above result correctly rounded using ROUND_CEIL to 1 decimal place should be 2.7, but it\r\n // will be given as 2.6 as there are 15 zeros immediately after the requested decimal place, so\r\n // the exact result would be assumed to be 2.6, which rounded using ROUND_CEIL to 1 decimal\r\n // place is still 2.6.\r\n if (checkRoundingDigits(r.d, k = pr, rm)) {\r\n\r\n do {\r\n sd += 10;\r\n num = naturalLogarithm(arg, sd);\r\n denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\r\n r = divide(num, denominator, sd, 1);\r\n\r\n if (!inf) {\r\n\r\n // Check for 14 nines from the 2nd rounding digit, as the first may be 4.\r\n if (+digitsToString(r.d).slice(k + 1, k + 15) + 1 == 1e14) {\r\n r = finalise(r, pr + 1, 0);\r\n }\r\n\r\n break;\r\n }\r\n } while (checkRoundingDigits(r.d, k += 10, rm));\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, pr, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the maximum of the arguments and the value of this Decimal.\r\n *\r\n * arguments {number|string|bigint|Decimal}\r\n *\r\nP.max = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, -1);\r\n};\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the minimum of the arguments and the value of this Decimal.\r\n *\r\n * arguments {number|string|bigint|Decimal}\r\n *\r\nP.min = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, 1);\r\n};\r\n */\r\n\r\n\r\n/*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal minus `y`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.minus = P.sub = function (y) {\r\n var d, e, i, j, k, len, pr, rm, xd, xe, xLTy, yd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // If either is not finite...\r\n if (!x.d || !y.d) {\r\n\r\n // Return NaN if either is NaN.\r\n if (!x.s || !y.s) y = new Ctor(NaN);\r\n\r\n // Return y negated if x is finite and y is \u00B1Infinity.\r\n else if (x.d) y.s = -y.s;\r\n\r\n // Return x if y is finite and x is \u00B1Infinity.\r\n // Return x if both are \u00B1Infinity with different signs.\r\n // Return NaN if both are \u00B1Infinity with the same sign.\r\n else y = new Ctor(y.d || x.s !== y.s ? x : NaN);\r\n\r\n return y;\r\n }\r\n\r\n // If signs differ...\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.plus(y);\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n // If either is zero...\r\n if (!xd[0] || !yd[0]) {\r\n\r\n // Return y negated if x is zero and y is non-zero.\r\n if (yd[0]) y.s = -y.s;\r\n\r\n // Return x if y is zero and x is non-zero.\r\n else if (xd[0]) y = new Ctor(x);\r\n\r\n // Return zero if both are zero.\r\n // From IEEE 754 (2008) 6.3: 0 - 0 = -0 - -0 = -0 when rounding to -Infinity.\r\n else return new Ctor(rm === 3 ? -0 : 0);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n }\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n // Calculate base 1e7 exponents.\r\n e = mathfloor(y.e / LOG_BASE);\r\n xe = mathfloor(x.e / LOG_BASE);\r\n\r\n xd = xd.slice();\r\n k = xe - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (k) {\r\n xLTy = k < 0;\r\n\r\n if (xLTy) {\r\n d = xd;\r\n k = -k;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = xe;\r\n len = xd.length;\r\n }\r\n\r\n // Numbers with massively different exponents would result in a very high number of\r\n // zeros needing to be prepended, but this can be avoided while still ensuring correct\r\n // rounding by limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`.\r\n i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;\r\n\r\n if (k > i) {\r\n k = i;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents.\r\n d.reverse();\r\n for (i = k; i--;) d.push(0);\r\n d.reverse();\r\n\r\n // Base 1e7 exponents equal.\r\n } else {\r\n\r\n // Check digits to determine which is the bigger number.\r\n\r\n i = xd.length;\r\n len = yd.length;\r\n xLTy = i < len;\r\n if (xLTy) len = i;\r\n\r\n for (i = 0; i < len; i++) {\r\n if (xd[i] != yd[i]) {\r\n xLTy = xd[i] < yd[i];\r\n break;\r\n }\r\n }\r\n\r\n k = 0;\r\n }\r\n\r\n if (xLTy) {\r\n d = xd;\r\n xd = yd;\r\n yd = d;\r\n y.s = -y.s;\r\n }\r\n\r\n len = xd.length;\r\n\r\n // Append zeros to `xd` if shorter.\r\n // Don't add zeros to `yd` if shorter as subtraction only needs to start at `yd` length.\r\n for (i = yd.length - len; i > 0; --i) xd[len++] = 0;\r\n\r\n // Subtract yd from xd.\r\n for (i = yd.length; i > k;) {\r\n\r\n if (xd[--i] < yd[i]) {\r\n for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1;\r\n --xd[j];\r\n xd[i] += BASE;\r\n }\r\n\r\n xd[i] -= yd[i];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] === 0;) xd.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xd[0] === 0; xd.shift()) --e;\r\n\r\n // Zero?\r\n if (!xd[0]) return new Ctor(rm === 3 ? -0 : 0);\r\n\r\n y.d = xd;\r\n y.e = getBase10Exponent(xd, e);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n};\r\n\r\n\r\n/*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal modulo `y`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * The result depends on the modulo mode.\r\n *\r\n */\r\nP.modulo = P.mod = function (y) {\r\n var q,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // Return NaN if x is \u00B1Infinity or NaN, or y is NaN or \u00B10.\r\n if (!x.d || !y.s || y.d && !y.d[0]) return new Ctor(NaN);\r\n\r\n // Return x if y is \u00B1Infinity or x is \u00B10.\r\n if (!y.d || x.d && !x.d[0]) {\r\n return finalise(new Ctor(x), Ctor.precision, Ctor.rounding);\r\n }\r\n\r\n // Prevent rounding of intermediate calculations.\r\n external = false;\r\n\r\n if (Ctor.modulo == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // result = x - q * y where 0 <= result < abs(y)\r\n q = divide(x, y.abs(), 0, 3, 1);\r\n q.s *= y.s;\r\n } else {\r\n q = divide(x, y, 0, Ctor.modulo, 1);\r\n }\r\n\r\n q = q.times(y);\r\n\r\n external = true;\r\n\r\n return x.minus(q);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of the value of this Decimal,\r\n * i.e. the base e raised to the power the value of this Decimal, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.naturalExponential = P.exp = function () {\r\n return naturalExponential(this);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of the value of this Decimal,\r\n * rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.naturalLogarithm = P.ln = function () {\r\n return naturalLogarithm(this);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by\r\n * -1.\r\n *\r\n */\r\nP.negated = P.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s;\r\n return finalise(x);\r\n};\r\n\r\n\r\n/*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal plus `y`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.plus = P.add = function (y) {\r\n var carry, d, e, i, k, len, pr, rm, xd, yd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // If either is not finite...\r\n if (!x.d || !y.d) {\r\n\r\n // Return NaN if either is NaN.\r\n if (!x.s || !y.s) y = new Ctor(NaN);\r\n\r\n // Return x if y is finite and x is \u00B1Infinity.\r\n // Return x if both are \u00B1Infinity with the same sign.\r\n // Return NaN if both are \u00B1Infinity with different signs.\r\n // Return y if x is finite and y is \u00B1Infinity.\r\n else if (!x.d) y = new Ctor(y.d || x.s === y.s ? x : NaN);\r\n\r\n return y;\r\n }\r\n\r\n // If signs differ...\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.minus(y);\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n // If either is zero...\r\n if (!xd[0] || !yd[0]) {\r\n\r\n // Return x if y is zero.\r\n // Return y if y is non-zero.\r\n if (!yd[0]) y = new Ctor(x);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n }\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n // Calculate base 1e7 exponents.\r\n k = mathfloor(x.e / LOG_BASE);\r\n e = mathfloor(y.e / LOG_BASE);\r\n\r\n xd = xd.slice();\r\n i = k - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (i) {\r\n\r\n if (i < 0) {\r\n d = xd;\r\n i = -i;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = k;\r\n len = xd.length;\r\n }\r\n\r\n // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1.\r\n k = Math.ceil(pr / LOG_BASE);\r\n len = k > len ? k + 1 : len + 1;\r\n\r\n if (i > len) {\r\n i = len;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts.\r\n d.reverse();\r\n for (; i--;) d.push(0);\r\n d.reverse();\r\n }\r\n\r\n len = xd.length;\r\n i = yd.length;\r\n\r\n // If yd is longer than xd, swap xd and yd so xd points to the longer array.\r\n if (len - i < 0) {\r\n i = len;\r\n d = yd;\r\n yd = xd;\r\n xd = d;\r\n }\r\n\r\n // Only start adding at yd.length - 1 as the further digits of xd can be left as they are.\r\n for (carry = 0; i;) {\r\n carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;\r\n xd[i] %= BASE;\r\n }\r\n\r\n if (carry) {\r\n xd.unshift(carry);\r\n ++e;\r\n }\r\n\r\n // Remove trailing zeros.\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n for (len = xd.length; xd[--len] == 0;) xd.pop();\r\n\r\n y.d = xd;\r\n y.e = getBase10Exponent(xd, e);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n};\r\n\r\n\r\n/*\r\n * Return the number of significant digits of the value of this Decimal.\r\n *\r\n * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0.\r\n *\r\n */\r\nP.precision = P.sd = function (z) {\r\n var k,\r\n x = this;\r\n\r\n if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z);\r\n\r\n if (x.d) {\r\n k = getPrecision(x.d);\r\n if (z && x.e + 1 > k) k = x.e + 1;\r\n } else {\r\n k = NaN;\r\n }\r\n\r\n return k;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using\r\n * rounding mode `rounding`.\r\n *\r\n */\r\nP.round = function () {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n return finalise(new Ctor(x), x.e + 1, Ctor.rounding);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sine of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * sin(x) = x - x^3/3! + x^5/5! - ...\r\n *\r\n * sin(0) = 0\r\n * sin(-0) = -0\r\n * sin(Infinity) = NaN\r\n * sin(-Infinity) = NaN\r\n * sin(NaN) = NaN\r\n *\r\n */\r\nP.sine = P.sin = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\r\n Ctor.rounding = 1;\r\n\r\n x = sine(Ctor, toLessThanHalfPi(Ctor, x));\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant > 2 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of this Decimal, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n */\r\nP.squareRoot = P.sqrt = function () {\r\n var m, n, sd, r, rep, t,\r\n x = this,\r\n d = x.d,\r\n e = x.e,\r\n s = x.s,\r\n Ctor = x.constructor;\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !d || !d[0]) {\r\n return new Ctor(!s || s < 0 && (!d || d[0]) ? NaN : d ? x : 1 / 0);\r\n }\r\n\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+x);\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = digitsToString(d);\r\n\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(n);\r\n e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n sd = (e = Ctor.precision) + 3;\r\n\r\n // Newton-Raphson iteration.\r\n for (;;) {\r\n t = r;\r\n r = t.plus(divide(x, t, sd + 2, 1)).times(0.5);\r\n\r\n // TODO? Replace with for-loop and checkRoundingDigits.\r\n if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\r\n n = n.slice(sd - 3, sd + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or\r\n // 4999, i.e. approaching a rounding boundary, continue the iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n if (!rep) {\r\n finalise(t, e + 1, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n sd += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\r\n // If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n finalise(r, e + 1, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, e, Ctor.rounding, m);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the tangent of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * tan(0) = 0\r\n * tan(-0) = -0\r\n * tan(Infinity) = NaN\r\n * tan(-Infinity) = NaN\r\n * tan(NaN) = NaN\r\n *\r\n */\r\nP.tangent = P.tan = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 10;\r\n Ctor.rounding = 1;\r\n\r\n x = x.sin();\r\n x.s = 1;\r\n x = divide(x, new Ctor(1).minus(x.times(x)).sqrt(), pr + 10, 0);\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant == 2 || quadrant == 4 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new Decimal whose value is this Decimal times `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.times = P.mul = function (y) {\r\n var carry, e, i, k, r, rL, t, xdL, ydL,\r\n x = this,\r\n Ctor = x.constructor,\r\n xd = x.d,\r\n yd = (y = new Ctor(y)).d;\r\n\r\n y.s *= x.s;\r\n\r\n // If either is NaN, \u00B1Infinity or \u00B10...\r\n if (!xd || !xd[0] || !yd || !yd[0]) {\r\n\r\n return new Ctor(!y.s || xd && !xd[0] && !yd || yd && !yd[0] && !xd\r\n\r\n // Return NaN if either is NaN.\r\n // Return NaN if x is \u00B10 and y is \u00B1Infinity, or y is \u00B10 and x is \u00B1Infinity.\r\n ? NaN\r\n\r\n // Return \u00B1Infinity if either is \u00B1Infinity.\r\n // Return \u00B10 if either is \u00B10.\r\n : !xd || !yd ? y.s / 0 : y.s * 0);\r\n }\r\n\r\n e = mathfloor(x.e / LOG_BASE) + mathfloor(y.e / LOG_BASE);\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Ensure xd points to the longer array.\r\n if (xdL < ydL) {\r\n r = xd;\r\n xd = yd;\r\n yd = r;\r\n rL = xdL;\r\n xdL = ydL;\r\n ydL = rL;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n r = [];\r\n rL = xdL + ydL;\r\n for (i = rL; i--;) r.push(0);\r\n\r\n // Multiply!\r\n for (i = ydL; --i >= 0;) {\r\n carry = 0;\r\n for (k = xdL + i; k > i;) {\r\n t = r[k] + yd[i] * xd[k - i - 1] + carry;\r\n r[k--] = t % BASE | 0;\r\n carry = t / BASE | 0;\r\n }\r\n\r\n r[k] = (r[k] + carry) % BASE | 0;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; !r[--rL];) r.pop();\r\n\r\n if (carry) ++e;\r\n else r.shift();\r\n\r\n y.d = r;\r\n y.e = getBase10Exponent(r, e);\r\n\r\n return external ? finalise(y, Ctor.precision, Ctor.rounding) : y;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 2, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toBinary = function (sd, rm) {\r\n return toStringBinary(this, 2, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp`\r\n * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted.\r\n *\r\n * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toDecimalPlaces = P.toDP = function (dp, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n if (dp === void 0) return x;\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n return finalise(x, dp + x.e + 1, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in exponential notation rounded to\r\n * `dp` fixed decimal places using rounding mode `rounding`.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toExponential = function (dp, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = finiteToString(x, true);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = finalise(new Ctor(x), dp + 1, rm);\r\n str = finiteToString(x, true, dp + 1);\r\n }\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in normal (fixed-point) notation to\r\n * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is\r\n * omitted.\r\n *\r\n * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n * (-0).toFixed(3) is '0.000'.\r\n * (-0.5).toFixed(0) is '-0'.\r\n *\r\n */\r\nP.toFixed = function (dp, rm) {\r\n var str, y,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = finiteToString(x);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n y = finalise(new Ctor(x), dp + x.e + 1, rm);\r\n str = finiteToString(y, false, dp + y.e + 1);\r\n }\r\n\r\n // To determine whether to add the minus sign look at the value before it was rounded,\r\n // i.e. look at `x` rather than `y`.\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return an array representing the value of this Decimal as a simple fraction with an integer\r\n * numerator and an integer denominator.\r\n *\r\n * The denominator will be a positive non-zero value less than or equal to the specified maximum\r\n * denominator. If a maximum denominator is not specified, the denominator will be the lowest\r\n * value necessary to represent the number exactly.\r\n *\r\n * [maxD] {number|string|bigint|Decimal} Maximum denominator. Integer >= 1 and < Infinity.\r\n *\r\n */\r\nP.toFraction = function (maxD) {\r\n var d, d0, d1, d2, e, k, n, n0, n1, pr, q, r,\r\n x = this,\r\n xd = x.d,\r\n Ctor = x.constructor;\r\n\r\n if (!xd) return new Ctor(x);\r\n\r\n n1 = d0 = new Ctor(1);\r\n d1 = n0 = new Ctor(0);\r\n\r\n d = new Ctor(d1);\r\n e = d.e = getPrecision(xd) - x.e - 1;\r\n k = e % LOG_BASE;\r\n d.d[0] = mathpow(10, k < 0 ? LOG_BASE + k : k);\r\n\r\n if (maxD == null) {\r\n\r\n // d is 10**e, the minimum max-denominator needed.\r\n maxD = e > 0 ? d : n1;\r\n } else {\r\n n = new Ctor(maxD);\r\n if (!n.isInt() || n.lt(n1)) throw Error(invalidArgument + n);\r\n maxD = n.gt(d) ? (e > 0 ? d : n1) : n;\r\n }\r\n\r\n external = false;\r\n n = new Ctor(digitsToString(xd));\r\n pr = Ctor.precision;\r\n Ctor.precision = e = xd.length * LOG_BASE * 2;\r\n\r\n for (;;) {\r\n q = divide(n, d, 0, 1, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.cmp(maxD) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n d2 = n1;\r\n n1 = n0.plus(q.times(d2));\r\n n0 = d2;\r\n d2 = d;\r\n d = n.minus(q.times(d2));\r\n n = d2;\r\n }\r\n\r\n d2 = divide(maxD.minus(d0), d1, 0, 1, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1?\r\n r = divide(n1, d1, e, 1).minus(x).abs().cmp(divide(n0, d0, e, 1).minus(x).abs()) < 1\r\n ? [n1, d1] : [n0, d0];\r\n\r\n Ctor.precision = pr;\r\n external = true;\r\n\r\n return r;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 16, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toHexadecimal = P.toHex = function (sd, rm) {\r\n return toStringBinary(this, 16, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Returns a new Decimal whose value is the nearest multiple of `y` in the direction of rounding\r\n * mode `rm`, or `Decimal.rounding` if `rm` is omitted, to the value of this Decimal.\r\n *\r\n * The return value will always have the same sign as this Decimal, unless either this Decimal\r\n * or `y` is NaN, in which case the return value will be also be NaN.\r\n *\r\n * The return value is not affected by the value of `precision`.\r\n *\r\n * y {number|string|bigint|Decimal} The magnitude to round to a multiple of.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toNearest() rounding mode not an integer: {rm}'\r\n * 'toNearest() rounding mode out of range: {rm}'\r\n *\r\n */\r\nP.toNearest = function (y, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n\r\n if (y == null) {\r\n\r\n // If x is not finite, return x.\r\n if (!x.d) return x;\r\n\r\n y = new Ctor(1);\r\n rm = Ctor.rounding;\r\n } else {\r\n y = new Ctor(y);\r\n if (rm === void 0) {\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(rm, 0, 8);\r\n }\r\n\r\n // If x is not finite, return x if y is not NaN, else NaN.\r\n if (!x.d) return y.s ? x : y;\r\n\r\n // If y is not finite, return Infinity with the sign of x if y is Infinity, else NaN.\r\n if (!y.d) {\r\n if (y.s) y.s = x.s;\r\n return y;\r\n }\r\n }\r\n\r\n // If y is not zero, calculate the nearest multiple of y to x.\r\n if (y.d[0]) {\r\n external = false;\r\n x = divide(x, y, 0, rm, 1).times(y);\r\n external = true;\r\n finalise(x);\r\n\r\n // If y is zero, return zero with the sign of x.\r\n } else {\r\n y.s = x.s;\r\n x = y;\r\n }\r\n\r\n return x;\r\n};\r\n\r\n\r\n/*\r\n * Return the value of this Decimal converted to a number primitive.\r\n * Zero keeps its sign.\r\n *\r\n */\r\nP.toNumber = function () {\r\n return +this;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 8, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toOctal = function (sd, rm) {\r\n return toStringBinary(this, 8, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal raised to the power `y`, rounded\r\n * to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * ECMAScript compliant.\r\n *\r\n * pow(x, NaN) = NaN\r\n * pow(x, \u00B10) = 1\r\n\r\n * pow(NaN, non-zero) = NaN\r\n * pow(abs(x) > 1, +Infinity) = +Infinity\r\n * pow(abs(x) > 1, -Infinity) = +0\r\n * pow(abs(x) == 1, \u00B1Infinity) = NaN\r\n * pow(abs(x) < 1, +Infinity) = +0\r\n * pow(abs(x) < 1, -Infinity) = +Infinity\r\n * pow(+Infinity, y > 0) = +Infinity\r\n * pow(+Infinity, y < 0) = +0\r\n * pow(-Infinity, odd integer > 0) = -Infinity\r\n * pow(-Infinity, even integer > 0) = +Infinity\r\n * pow(-Infinity, odd integer < 0) = -0\r\n * pow(-Infinity, even integer < 0) = +0\r\n * pow(+0, y > 0) = +0\r\n * pow(+0, y < 0) = +Infinity\r\n * pow(-0, odd integer > 0) = -0\r\n * pow(-0, even integer > 0) = +0\r\n * pow(-0, odd integer < 0) = -Infinity\r\n * pow(-0, even integer < 0) = +Infinity\r\n * pow(finite x < 0, finite non-integer) = NaN\r\n *\r\n * For non-integer or very large exponents pow(x, y) is calculated using\r\n *\r\n * x^y = exp(y*ln(x))\r\n *\r\n * Assuming the first 15 rounding digits are each equally likely to be any digit 0-9, the\r\n * probability of an incorrectly rounded result\r\n * P([49]9{14} | [50]0{14}) = 2 * 0.2 * 10^-14 = 4e-15 = 1/2.5e+14\r\n * i.e. 1 in 250,000,000,000,000\r\n *\r\n * If a result is incorrectly rounded the maximum error will be 1 ulp (unit in last place).\r\n *\r\n * y {number|string|bigint|Decimal} The power to which to raise this Decimal.\r\n *\r\n */\r\nP.toPower = P.pow = function (y) {\r\n var e, k, pr, r, rm, s,\r\n x = this,\r\n Ctor = x.constructor,\r\n yn = +(y = new Ctor(y));\r\n\r\n // Either \u00B1Infinity, NaN or \u00B10?\r\n if (!x.d || !y.d || !x.d[0] || !y.d[0]) return new Ctor(mathpow(+x, yn));\r\n\r\n x = new Ctor(x);\r\n\r\n if (x.eq(1)) return x;\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n if (y.eq(1)) return finalise(x, pr, rm);\r\n\r\n // y exponent\r\n e = mathfloor(y.e / LOG_BASE);\r\n\r\n // If y is a small integer use the 'exponentiation by squaring' algorithm.\r\n if (e >= y.d.length - 1 && (k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {\r\n r = intPow(Ctor, x, k, pr);\r\n return y.s < 0 ? new Ctor(1).div(r) : finalise(r, pr, rm);\r\n }\r\n\r\n s = x.s;\r\n\r\n // if x is negative\r\n if (s < 0) {\r\n\r\n // if y is not an integer\r\n if (e < y.d.length - 1) return new Ctor(NaN);\r\n\r\n // Result is positive if x is negative and the last digit of integer y is even.\r\n if ((y.d[e] & 1) == 0) s = 1;\r\n\r\n // if x.eq(-1)\r\n if (x.e == 0 && x.d[0] == 1 && x.d.length == 1) {\r\n x.s = s;\r\n return x;\r\n }\r\n }\r\n\r\n // Estimate result exponent.\r\n // x^y = 10^e, where e = y * log10(x)\r\n // log10(x) = log10(x_significand) + x_exponent\r\n // log10(x_significand) = ln(x_significand) / ln(10)\r\n k = mathpow(+x, yn);\r\n e = k == 0 || !isFinite(k)\r\n ? mathfloor(yn * (Math.log('0.' + digitsToString(x.d)) / Math.LN10 + x.e + 1))\r\n : new Ctor(k + '').e;\r\n\r\n // Exponent estimate may be incorrect e.g. x: 0.999999999999999999, y: 2.29, e: 0, r.e: -1.\r\n\r\n // Overflow/underflow?\r\n if (e > Ctor.maxE + 1 || e < Ctor.minE - 1) return new Ctor(e > 0 ? s / 0 : 0);\r\n\r\n external = false;\r\n Ctor.rounding = x.s = 1;\r\n\r\n // Estimate the extra guard digits needed to ensure five correct rounding digits from\r\n // naturalLogarithm(x). Example of failure without these extra digits (precision: 10):\r\n // new Decimal(2.32456).pow('2087987436534566.46411')\r\n // should be 1.162377823e+764914905173815, but is 1.162355823e+764914905173815\r\n k = Math.min(12, (e + '').length);\r\n\r\n // r = x^y = exp(y*ln(x))\r\n r = naturalExponential(y.times(naturalLogarithm(x, pr + k)), pr);\r\n\r\n // r may be Infinity, e.g. (0.9999999999999999).pow(-1e+40)\r\n if (r.d) {\r\n\r\n // Truncate to the required precision plus five rounding digits.\r\n r = finalise(r, pr + 5, 1);\r\n\r\n // If the rounding digits are [49]9999 or [50]0000 increase the precision by 10 and recalculate\r\n // the result.\r\n if (checkRoundingDigits(r.d, pr, rm)) {\r\n e = pr + 10;\r\n\r\n // Truncate to the increased precision plus five rounding digits.\r\n r = finalise(naturalExponential(y.times(naturalLogarithm(x, e + k)), e), e + 5, 1);\r\n\r\n // Check for 14 nines from the 2nd rounding digit (the first rounding digit may be 4 or 9).\r\n if (+digitsToString(r.d).slice(pr + 1, pr + 15) + 1 == 1e14) {\r\n r = finalise(r, pr + 1, 0);\r\n }\r\n }\r\n }\r\n\r\n r.s = s;\r\n external = true;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(r, pr, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal rounded to `sd` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * Return exponential notation if `sd` is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toPrecision = function (sd, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = finalise(new Ctor(x), sd, rm);\r\n str = finiteToString(x, sd <= x.e || x.e <= Ctor.toExpNeg, sd);\r\n }\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd`\r\n * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if\r\n * omitted.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toSD() digits out of range: {sd}'\r\n * 'toSD() digits not an integer: {sd}'\r\n * 'toSD() rounding mode not an integer: {rm}'\r\n * 'toSD() rounding mode out of range: {rm}'\r\n *\r\n */\r\nP.toSignificantDigits = P.toSD = function (sd, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n }\r\n\r\n return finalise(new Ctor(x), sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal.\r\n *\r\n * Return exponential notation if this Decimal has a positive exponent equal to or greater than\r\n * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`.\r\n *\r\n */\r\nP.toString = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal truncated to a whole number.\r\n *\r\n */\r\nP.truncated = P.trunc = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 1);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal.\r\n * Unlike `toString`, negative zero will include the minus sign.\r\n *\r\n */\r\nP.valueOf = P.toJSON = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n\r\n return x.isNeg() ? '-' + str : str;\r\n};\r\n\r\n\r\n// Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers.\r\n\r\n\r\n/*\r\n * digitsToString P.cubeRoot, P.logarithm, P.squareRoot, P.toFraction, P.toPower,\r\n * finiteToString, naturalExponential, naturalLogarithm\r\n * checkInt32 P.toDecimalPlaces, P.toExponential, P.toFixed, P.toNearest,\r\n * P.toPrecision, P.toSignificantDigits, toStringBinary, random\r\n * checkRoundingDigits P.logarithm, P.toPower, naturalExponential, naturalLogarithm\r\n * convertBase toStringBinary, parseOther\r\n * cos P.cos\r\n * divide P.atanh, P.cubeRoot, P.dividedBy, P.dividedToIntegerBy,\r\n * P.logarithm, P.modulo, P.squareRoot, P.tan, P.tanh, P.toFraction,\r\n * P.toNearest, toStringBinary, naturalExponential, naturalLogarithm,\r\n * taylorSeries, atan2, parseOther\r\n * finalise P.absoluteValue, P.atan, P.atanh, P.ceil, P.cos, P.cosh,\r\n * P.cubeRoot, P.dividedToIntegerBy, P.floor, P.logarithm, P.minus,\r\n * P.modulo, P.negated, P.plus, P.round, P.sin, P.sinh, P.squareRoot,\r\n * P.tan, P.times, P.toDecimalPlaces, P.toExponential, P.toFixed,\r\n * P.toNearest, P.toPower, P.toPrecision, P.toSignificantDigits,\r\n * P.truncated, divide, getLn10, getPi, naturalExponential,\r\n * naturalLogarithm, ceil, floor, round, trunc\r\n * finiteToString P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf,\r\n * toStringBinary\r\n * getBase10Exponent P.minus, P.plus, P.times, parseOther\r\n * getLn10 P.logarithm, naturalLogarithm\r\n * getPi P.acos, P.asin, P.atan, toLessThanHalfPi, atan2\r\n * getPrecision P.precision, P.toFraction\r\n * getZeroString digitsToString, finiteToString\r\n * intPow P.toPower, parseOther\r\n * isOdd toLessThanHalfPi\r\n * maxOrMin max, min\r\n * naturalExponential P.naturalExponential, P.toPower\r\n * naturalLogarithm P.acosh, P.asinh, P.atanh, P.logarithm, P.naturalLogarithm,\r\n * P.toPower, naturalExponential\r\n * nonFiniteToString finiteToString, toStringBinary\r\n * parseDecimal Decimal\r\n * parseOther Decimal\r\n * sin P.sin\r\n * taylorSeries P.cosh, P.sinh, cos, sin\r\n * toLessThanHalfPi P.cos, P.sin\r\n * toStringBinary P.toBinary, P.toHexadecimal, P.toOctal\r\n * truncate intPow\r\n *\r\n * Throws: P.logarithm, P.precision, P.toFraction, checkInt32, getLn10, getPi,\r\n * naturalLogarithm, config, parseOther, random, Decimal\r\n */\r\n\r\n\r\nfunction digitsToString(d) {\r\n var i, k, ws,\r\n indexOfLastWord = d.length - 1,\r\n str = '',\r\n w = d[0];\r\n\r\n if (indexOfLastWord > 0) {\r\n str += w;\r\n for (i = 1; i < indexOfLastWord; i++) {\r\n ws = d[i] + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n str += ws;\r\n }\r\n\r\n w = d[i];\r\n ws = w + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n } else if (w === 0) {\r\n return '0';\r\n }\r\n\r\n // Remove trailing zeros of last w.\r\n for (; w % 10 === 0;) w /= 10;\r\n\r\n return str + w;\r\n}\r\n\r\n\r\nfunction checkInt32(i, min, max) {\r\n if (i !== ~~i || i < min || i > max) {\r\n throw Error(invalidArgument + i);\r\n }\r\n}\r\n\r\n\r\n/*\r\n * Check 5 rounding digits if `repeating` is null, 4 otherwise.\r\n * `repeating == null` if caller is `log` or `pow`,\r\n * `repeating != null` if caller is `naturalLogarithm` or `naturalExponential`.\r\n */\r\nfunction checkRoundingDigits(d, i, rm, repeating) {\r\n var di, k, r, rd;\r\n\r\n // Get the length of the first word of the array d.\r\n for (k = d[0]; k >= 10; k /= 10) --i;\r\n\r\n // Is the rounding digit in the first word of d?\r\n if (--i < 0) {\r\n i += LOG_BASE;\r\n di = 0;\r\n } else {\r\n di = Math.ceil((i + 1) / LOG_BASE);\r\n i %= LOG_BASE;\r\n }\r\n\r\n // i is the index (0 - 6) of the rounding digit.\r\n // E.g. if within the word 3487563 the first rounding digit is 5,\r\n // then i = 4, k = 1000, rd = 3487563 % 1000 = 563\r\n k = mathpow(10, LOG_BASE - i);\r\n rd = d[di] % k | 0;\r\n\r\n if (repeating == null) {\r\n if (i < 3) {\r\n if (i == 0) rd = rd / 100 | 0;\r\n else if (i == 1) rd = rd / 10 | 0;\r\n r = rm < 4 && rd == 99999 || rm > 3 && rd == 49999 || rd == 50000 || rd == 0;\r\n } else {\r\n r = (rm < 4 && rd + 1 == k || rm > 3 && rd + 1 == k / 2) &&\r\n (d[di + 1] / k / 100 | 0) == mathpow(10, i - 2) - 1 ||\r\n (rd == k / 2 || rd == 0) && (d[di + 1] / k / 100 | 0) == 0;\r\n }\r\n } else {\r\n if (i < 4) {\r\n if (i == 0) rd = rd / 1000 | 0;\r\n else if (i == 1) rd = rd / 100 | 0;\r\n else if (i == 2) rd = rd / 10 | 0;\r\n r = (repeating || rm < 4) && rd == 9999 || !repeating && rm > 3 && rd == 4999;\r\n } else {\r\n r = ((repeating || rm < 4) && rd + 1 == k ||\r\n (!repeating && rm > 3) && rd + 1 == k / 2) &&\r\n (d[di + 1] / k / 1000 | 0) == mathpow(10, i - 3) - 1;\r\n }\r\n }\r\n\r\n return r;\r\n}\r\n\r\n\r\n// Convert string of `baseIn` to an array of numbers of `baseOut`.\r\n// Eg. convertBase('255', 10, 16) returns [15, 15].\r\n// Eg. convertBase('ff', 16, 10) returns [2, 5, 5].\r\nfunction convertBase(str, baseIn, baseOut) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n strL = str.length;\r\n\r\n for (; i < strL;) {\r\n for (arrL = arr.length; arrL--;) arr[arrL] *= baseIn;\r\n arr[0] += NUMERALS.indexOf(str.charAt(i++));\r\n for (j = 0; j < arr.length; j++) {\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] === void 0) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n}\r\n\r\n\r\n/*\r\n * cos(x) = 1 - x^2/2! + x^4/4! - ...\r\n * |x| < pi/2\r\n *\r\n */\r\nfunction cosine(Ctor, x) {\r\n var k, len, y;\r\n\r\n if (x.isZero()) return x;\r\n\r\n // Argument reduction: cos(4x) = 8*(cos^4(x) - cos^2(x)) + 1\r\n // i.e. cos(x) = 8*(cos^4(x/4) - cos^2(x/4)) + 1\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n len = x.d.length;\r\n if (len < 32) {\r\n k = Math.ceil(len / 3);\r\n y = (1 / tinyPow(4, k)).toString();\r\n } else {\r\n k = 16;\r\n y = '2.3283064365386962890625e-10';\r\n }\r\n\r\n Ctor.precision += k;\r\n\r\n x = taylorSeries(Ctor, 1, x.times(y), new Ctor(1));\r\n\r\n // Reverse argument reduction\r\n for (var i = k; i--;) {\r\n var cos2x = x.times(x);\r\n x = cos2x.times(cos2x).minus(cos2x).times(8).plus(1);\r\n }\r\n\r\n Ctor.precision -= k;\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Perform division in the specified base.\r\n */\r\nvar divide = (function () {\r\n\r\n // Assumes non-zero x and k, and hence non-zero result.\r\n function multiplyInteger(x, k, base) {\r\n var temp,\r\n carry = 0,\r\n i = x.length;\r\n\r\n for (x = x.slice(); i--;) {\r\n temp = x[i] * k + carry;\r\n x[i] = temp % base | 0;\r\n carry = temp / base | 0;\r\n }\r\n\r\n if (carry) x.unshift(carry);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, r;\r\n\r\n if (aL != bL) {\r\n r = aL > bL ? 1 : -1;\r\n } else {\r\n for (i = r = 0; i < aL; i++) {\r\n if (a[i] != b[i]) {\r\n r = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return r;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1;) a.shift();\r\n }\r\n\r\n return function (x, y, pr, rm, dp, base) {\r\n var cmp, e, i, k, logBase, more, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0,\r\n yL, yz,\r\n Ctor = x.constructor,\r\n sign = x.s == y.s ? 1 : -1,\r\n xd = x.d,\r\n yd = y.d;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xd || !xd[0] || !yd || !yd[0]) {\r\n\r\n return new Ctor(// Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xd ? yd && xd[0] == yd[0] : !yd) ? NaN :\r\n\r\n // Return \u00B10 if x is 0 or y is \u00B1Infinity, or return \u00B1Infinity as y is 0.\r\n xd && xd[0] == 0 || !yd ? sign * 0 : sign / 0);\r\n }\r\n\r\n if (base) {\r\n logBase = 1;\r\n e = x.e - y.e;\r\n } else {\r\n base = BASE;\r\n logBase = LOG_BASE;\r\n e = mathfloor(x.e / logBase) - mathfloor(y.e / logBase);\r\n }\r\n\r\n yL = yd.length;\r\n xL = xd.length;\r\n q = new Ctor(sign);\r\n qd = q.d = [];\r\n\r\n // Result exponent may be one less than e.\r\n // The digit array of a Decimal from toStringBinary may have trailing zeros.\r\n for (i = 0; yd[i] == (xd[i] || 0); i++);\r\n\r\n if (yd[i] > (xd[i] || 0)) e--;\r\n\r\n if (pr == null) {\r\n sd = pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else if (dp) {\r\n sd = pr + (x.e - y.e) + 1;\r\n } else {\r\n sd = pr;\r\n }\r\n\r\n if (sd < 0) {\r\n qd.push(1);\r\n more = true;\r\n } else {\r\n\r\n // Convert precision in number of base 10 digits to base 1e7 digits.\r\n sd = sd / logBase + 2 | 0;\r\n i = 0;\r\n\r\n // divisor < 1e7\r\n if (yL == 1) {\r\n k = 0;\r\n yd = yd[0];\r\n sd++;\r\n\r\n // k is the carry.\r\n for (; (i < xL || k) && sd--; i++) {\r\n t = k * base + (xd[i] || 0);\r\n qd[i] = t / yd | 0;\r\n k = t % yd | 0;\r\n }\r\n\r\n more = k || i < xL;\r\n\r\n // divisor >= 1e7\r\n } else {\r\n\r\n // Normalise xd and yd so highest order digit of yd is >= base/2\r\n k = base / (yd[0] + 1) | 0;\r\n\r\n if (k > 1) {\r\n yd = multiplyInteger(yd, k, base);\r\n xd = multiplyInteger(xd, k, base);\r\n yL = yd.length;\r\n xL = xd.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xd.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL;) rem[remL++] = 0;\r\n\r\n yz = yd.slice();\r\n yz.unshift(0);\r\n yd0 = yd[0];\r\n\r\n if (yd[1] >= base / 2) ++yd0;\r\n\r\n do {\r\n k = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, k.\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // k will be how many times the divisor goes into the current remainder.\r\n k = rem0 / yd0 | 0;\r\n\r\n // Algorithm:\r\n // 1. product = divisor * trial digit (k)\r\n // 2. if product > remainder: product -= divisor, k--\r\n // 3. remainder -= product\r\n // 4. if product was < remainder at 2:\r\n // 5. compare new remainder and divisor\r\n // 6. If remainder > divisor: remainder -= divisor, k++\r\n\r\n if (k > 1) {\r\n if (k >= base) k = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiplyInteger(yd, k, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n cmp = compare(prod, rem, prodL, remL);\r\n\r\n // product > remainder.\r\n if (cmp == 1) {\r\n k--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yd, prodL, base);\r\n }\r\n } else {\r\n\r\n // cmp is -1.\r\n // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1\r\n // to avoid it. If k is 1 there is a need to compare yd and rem again below.\r\n if (k == 0) cmp = k = 1;\r\n prod = yd.slice();\r\n }\r\n\r\n prodL = prod.length;\r\n if (prodL < remL) prod.unshift(0);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n\r\n // If product was < previous remainder.\r\n if (cmp == -1) {\r\n remL = rem.length;\r\n\r\n // Compare divisor and new remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n if (cmp < 1) {\r\n k++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yd, remL, base);\r\n }\r\n }\r\n\r\n remL = rem.length;\r\n } else if (cmp === 0) {\r\n k++;\r\n rem = [0];\r\n } // if cmp === 1, k will be 0\r\n\r\n // Add the next digit, k, to the result array.\r\n qd[i++] = k;\r\n\r\n // Update the remainder.\r\n if (cmp && rem[0]) {\r\n rem[remL++] = xd[xi] || 0;\r\n } else {\r\n rem = [xd[xi]];\r\n remL = 1;\r\n }\r\n\r\n } while ((xi++ < xL || rem[0] !== void 0) && sd--);\r\n\r\n more = rem[0] !== void 0;\r\n }\r\n\r\n // Leading zero?\r\n if (!qd[0]) qd.shift();\r\n }\r\n\r\n // logBase is 1 when divide is being used for base conversion.\r\n if (logBase == 1) {\r\n q.e = e;\r\n inexact = more;\r\n } else {\r\n\r\n // To calculate q.e, first get the number of digits of qd[0].\r\n for (i = 1, k = qd[0]; k >= 10; k /= 10) i++;\r\n q.e = i + e * logBase - 1;\r\n\r\n finalise(q, dp ? pr + q.e + 1 : pr, rm, more);\r\n }\r\n\r\n return q;\r\n };\r\n})();\r\n\r\n\r\n/*\r\n * Round `x` to `sd` significant digits using rounding mode `rm`.\r\n * Check for over/under-flow.\r\n */\r\n function finalise(x, sd, rm, isTruncated) {\r\n var digits, i, j, k, rd, roundUp, w, xd, xdi,\r\n Ctor = x.constructor;\r\n\r\n // Don't round if sd is null or undefined.\r\n out: if (sd != null) {\r\n xd = x.d;\r\n\r\n // Infinity/NaN.\r\n if (!xd) return x;\r\n\r\n // rd: the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // w: the word of xd containing rd, a base 1e7 number.\r\n // xdi: the index of w within xd.\r\n // digits: the number of digits of w.\r\n // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if\r\n // they had leading zeros)\r\n // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero).\r\n\r\n // Get the length of the first word of the digits array xd.\r\n for (digits = 1, k = xd[0]; k >= 10; k /= 10) digits++;\r\n i = sd - digits;\r\n\r\n // Is the rounding digit in the first word of xd?\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n w = xd[xdi = 0];\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = w / mathpow(10, digits - j - 1) % 10 | 0;\r\n } else {\r\n xdi = Math.ceil((i + 1) / LOG_BASE);\r\n k = xd.length;\r\n if (xdi >= k) {\r\n if (isTruncated) {\r\n\r\n // Needed by `naturalExponential`, `naturalLogarithm` and `squareRoot`.\r\n for (; k++ <= xdi;) xd.push(0);\r\n w = rd = 0;\r\n digits = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n w = k = xd[xdi];\r\n\r\n // Get the number of digits of w.\r\n for (digits = 1; k >= 10; k /= 10) digits++;\r\n\r\n // Get the index of rd within w.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within w, adjusted for leading zeros.\r\n // The number of leading zeros of w is given by LOG_BASE - digits.\r\n j = i - LOG_BASE + digits;\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = j < 0 ? 0 : w / mathpow(10, digits - j - 1) % 10 | 0;\r\n }\r\n }\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n isTruncated = isTruncated || sd < 0 ||\r\n xd[xdi + 1] !== void 0 || (j < 0 ? w : w % mathpow(10, digits - j - 1));\r\n\r\n // The expression `w % mathpow(10, digits - j - 1)` returns all the digits of w to the right\r\n // of the digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression\r\n // will give 714.\r\n\r\n roundUp = rm < 4\r\n ? (rd || isTruncated) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || isTruncated || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? w / mathpow(10, digits - j) : 0 : xd[xdi - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xd[0]) {\r\n xd.length = 0;\r\n if (roundUp) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xd[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xd.length = xdi;\r\n k = 1;\r\n xdi--;\r\n } else {\r\n xd.length = xdi + 1;\r\n k = mathpow(10, LOG_BASE - i);\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of w.\r\n xd[xdi] = j > 0 ? (w / mathpow(10, digits - j) % mathpow(10, j) | 0) * k : 0;\r\n }\r\n\r\n if (roundUp) {\r\n for (;;) {\r\n\r\n // Is the digit to be rounded up in the first word of xd?\r\n if (xdi == 0) {\r\n\r\n // i will be the length of xd[0] before k is added.\r\n for (i = 1, j = xd[0]; j >= 10; j /= 10) i++;\r\n j = xd[0] += k;\r\n for (k = 1; j >= 10; j /= 10) k++;\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xd[0] == BASE) xd[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xd[xdi] += k;\r\n if (xd[xdi] != BASE) break;\r\n xd[xdi--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xd.length; xd[--i] === 0;) xd.pop();\r\n }\r\n\r\n if (external) {\r\n\r\n // Overflow?\r\n if (x.e > Ctor.maxE) {\r\n\r\n // Infinity.\r\n x.d = null;\r\n x.e = NaN;\r\n\r\n // Underflow?\r\n } else if (x.e < Ctor.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n // Ctor.underflow = true;\r\n } // else Ctor.underflow = false;\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\nfunction finiteToString(x, isExp, sd) {\r\n if (!x.isFinite()) return nonFiniteToString(x);\r\n var k,\r\n e = x.e,\r\n str = digitsToString(x.d),\r\n len = str.length;\r\n\r\n if (isExp) {\r\n if (sd && (k = sd - len) > 0) {\r\n str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k);\r\n } else if (len > 1) {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n\r\n str = str + (x.e < 0 ? 'e' : 'e+') + x.e;\r\n } else if (e < 0) {\r\n str = '0.' + getZeroString(-e - 1) + str;\r\n if (sd && (k = sd - len) > 0) str += getZeroString(k);\r\n } else if (e >= len) {\r\n str += getZeroString(e + 1 - len);\r\n if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k);\r\n } else {\r\n if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k);\r\n if (sd && (k = sd - len) > 0) {\r\n if (e + 1 === len) str += '.';\r\n str += getZeroString(k);\r\n }\r\n }\r\n\r\n return str;\r\n}\r\n\r\n\r\n// Calculate the base 10 exponent from the base 1e7 exponent.\r\nfunction getBase10Exponent(digits, e) {\r\n var w = digits[0];\r\n\r\n // Add the number of digits of the first word of the digits array.\r\n for ( e *= LOG_BASE; w >= 10; w /= 10) e++;\r\n return e;\r\n}\r\n\r\n\r\nfunction getLn10(Ctor, sd, pr) {\r\n if (sd > LN10_PRECISION) {\r\n\r\n // Reset global state in case the exception is caught.\r\n external = true;\r\n if (pr) Ctor.precision = pr;\r\n throw Error(precisionLimitExceeded);\r\n }\r\n return finalise(new Ctor(LN10), sd, 1, true);\r\n}\r\n\r\n\r\nfunction getPi(Ctor, sd, rm) {\r\n if (sd > PI_PRECISION) throw Error(precisionLimitExceeded);\r\n return finalise(new Ctor(PI), sd, rm, true);\r\n}\r\n\r\n\r\nfunction getPrecision(digits) {\r\n var w = digits.length - 1,\r\n len = w * LOG_BASE + 1;\r\n\r\n w = digits[w];\r\n\r\n // If non-zero...\r\n if (w) {\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n for (; w % 10 == 0; w /= 10) len--;\r\n\r\n // Add the number of digits of the first word.\r\n for (w = digits[0]; w >= 10; w /= 10) len++;\r\n }\r\n\r\n return len;\r\n}\r\n\r\n\r\nfunction getZeroString(k) {\r\n var zs = '';\r\n for (; k--;) zs += '0';\r\n return zs;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of Decimal `x` to the power `n`, where `n` is an\r\n * integer of type number.\r\n *\r\n * Implements 'exponentiation by squaring'. Called by `pow` and `parseOther`.\r\n *\r\n */\r\nfunction intPow(Ctor, x, n, pr) {\r\n var isTruncated,\r\n r = new Ctor(1),\r\n\r\n // Max n of 9007199254740991 takes 53 loop iterations.\r\n // Maximum digits array length; leaves [28, 34] guard digits.\r\n k = Math.ceil(pr / LOG_BASE + 4);\r\n\r\n external = false;\r\n\r\n for (;;) {\r\n if (n % 2) {\r\n r = r.times(x);\r\n if (truncate(r.d, k)) isTruncated = true;\r\n }\r\n\r\n n = mathfloor(n / 2);\r\n if (n === 0) {\r\n\r\n // To ensure correct rounding when r.d is truncated, increment the last word if it is zero.\r\n n = r.d.length - 1;\r\n if (isTruncated && r.d[n] === 0) ++r.d[n];\r\n break;\r\n }\r\n\r\n x = x.times(x);\r\n truncate(x.d, k);\r\n }\r\n\r\n external = true;\r\n\r\n return r;\r\n}\r\n\r\n\r\nfunction isOdd(n) {\r\n return n.d[n.d.length - 1] & 1;\r\n}\r\n\r\n\r\n/*\r\n * Handle `max` (`n` is -1) and `min` (`n` is 1).\r\n */\r\nfunction maxOrMin(Ctor, args, n) {\r\n var k, y,\r\n x = new Ctor(args[0]),\r\n i = 0;\r\n\r\n for (; ++i < args.length;) {\r\n y = new Ctor(args[i]);\r\n\r\n // NaN?\r\n if (!y.s) {\r\n x = y;\r\n break;\r\n }\r\n\r\n k = x.cmp(y);\r\n\r\n if (k === n || k === 0 && x.s === n) {\r\n x = y;\r\n }\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of `x` rounded to `sd` significant\r\n * digits.\r\n *\r\n * Taylor/Maclaurin series.\r\n *\r\n * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ...\r\n *\r\n * Argument reduction:\r\n * Repeat x = x / 32, k += 5, until |x| < 0.1\r\n * exp(x) = exp(x / 2^k)^(2^k)\r\n *\r\n * Previously, the argument was initially reduced by\r\n * exp(x) = exp(r) * 10^k where r = x - k * ln10, k = floor(x / ln10)\r\n * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was\r\n * found to be slower than just dividing repeatedly by 32 as above.\r\n *\r\n * Max integer argument: exp('20723265836946413') = 6.3e+9000000000000000\r\n * Min integer argument: exp('-20723265836946411') = 1.2e-9000000000000000\r\n * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324)\r\n *\r\n * exp(Infinity) = Infinity\r\n * exp(-Infinity) = 0\r\n * exp(NaN) = NaN\r\n * exp(\u00B10) = 1\r\n *\r\n * exp(x) is non-terminating for any finite, non-zero x.\r\n *\r\n * The result will always be correctly rounded.\r\n *\r\n */\r\nfunction naturalExponential(x, sd) {\r\n var denominator, guard, j, pow, sum, t, wpr,\r\n rep = 0,\r\n i = 0,\r\n k = 0,\r\n Ctor = x.constructor,\r\n rm = Ctor.rounding,\r\n pr = Ctor.precision;\r\n\r\n // 0/NaN/Infinity?\r\n if (!x.d || !x.d[0] || x.e > 17) {\r\n\r\n return new Ctor(x.d\r\n ? !x.d[0] ? 1 : x.s < 0 ? 0 : 1 / 0\r\n : x.s ? x.s < 0 ? 0 : x : 0 / 0);\r\n }\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n t = new Ctor(0.03125);\r\n\r\n // while abs(x) >= 0.1\r\n while (x.e > -2) {\r\n\r\n // x = x / 2^5\r\n x = x.times(t);\r\n k += 5;\r\n }\r\n\r\n // Use 2 * log10(2^k) + 5 (empirically derived) to estimate the increase in precision\r\n // necessary to ensure the first 4 rounding digits are correct.\r\n guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;\r\n wpr += guard;\r\n denominator = pow = sum = new Ctor(1);\r\n Ctor.precision = wpr;\r\n\r\n for (;;) {\r\n pow = finalise(pow.times(x), wpr, 1);\r\n denominator = denominator.times(++i);\r\n t = sum.plus(divide(pow, denominator, wpr, 1));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n j = k;\r\n while (j--) sum = finalise(sum.times(sum), wpr, 1);\r\n\r\n // Check to see if the first 4 rounding digits are [49]999.\r\n // If so, repeat the summation with a higher precision, otherwise\r\n // e.g. with precision: 18, rounding: 1\r\n // exp(18.404272462595034083567793919843761) = 98372560.1229999999 (should be 98372560.123)\r\n // `wpr - guard` is the index of first rounding digit.\r\n if (sd == null) {\r\n\r\n if (rep < 3 && checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\r\n Ctor.precision = wpr += 10;\r\n denominator = pow = t = new Ctor(1);\r\n i = 0;\r\n rep++;\r\n } else {\r\n return finalise(sum, Ctor.precision = pr, rm, external = true);\r\n }\r\n } else {\r\n Ctor.precision = pr;\r\n return sum;\r\n }\r\n }\r\n\r\n sum = t;\r\n }\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of `x` rounded to `sd` significant\r\n * digits.\r\n *\r\n * ln(-n) = NaN\r\n * ln(0) = -Infinity\r\n * ln(-0) = -Infinity\r\n * ln(1) = 0\r\n * ln(Infinity) = Infinity\r\n * ln(-Infinity) = NaN\r\n * ln(NaN) = NaN\r\n *\r\n * ln(n) (n != 1) is non-terminating.\r\n *\r\n */\r\nfunction naturalLogarithm(y, sd) {\r\n var c, c0, denominator, e, numerator, rep, sum, t, wpr, x1, x2,\r\n n = 1,\r\n guard = 10,\r\n x = y,\r\n xd = x.d,\r\n Ctor = x.constructor,\r\n rm = Ctor.rounding,\r\n pr = Ctor.precision;\r\n\r\n // Is x negative or Infinity, NaN, 0 or 1?\r\n if (x.s < 0 || !xd || !xd[0] || !x.e && xd[0] == 1 && xd.length == 1) {\r\n return new Ctor(xd && !xd[0] ? -1 / 0 : x.s != 1 ? NaN : xd ? 0 : x);\r\n }\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n Ctor.precision = wpr += guard;\r\n c = digitsToString(xd);\r\n c0 = c.charAt(0);\r\n\r\n if (Math.abs(e = x.e) < 1.5e15) {\r\n\r\n // Argument reduction.\r\n // The series converges faster the closer the argument is to 1, so using\r\n // ln(a^b) = b * ln(a), ln(a) = ln(a^b) / b\r\n // multiply the argument by itself until the leading digits of the significand are 7, 8, 9,\r\n // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can\r\n // later be divided by this number, then separate out the power of 10 using\r\n // ln(a*10^b) = ln(a) + b*ln(10).\r\n\r\n // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14).\r\n //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) {\r\n // max n is 6 (gives 0.7 - 1.3)\r\n while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {\r\n x = x.times(y);\r\n c = digitsToString(x.d);\r\n c0 = c.charAt(0);\r\n n++;\r\n }\r\n\r\n e = x.e;\r\n\r\n if (c0 > 1) {\r\n x = new Ctor('0.' + c);\r\n e++;\r\n } else {\r\n x = new Ctor(c0 + '.' + c.slice(1));\r\n }\r\n } else {\r\n\r\n // The argument reduction method above may result in overflow if the argument y is a massive\r\n // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this\r\n // function using ln(x*10^e) = ln(x) + e*ln(10).\r\n t = getLn10(Ctor, wpr + 2, pr).times(e + '');\r\n x = naturalLogarithm(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t);\r\n Ctor.precision = pr;\r\n\r\n return sd == null ? finalise(x, pr, rm, external = true) : x;\r\n }\r\n\r\n // x1 is x reduced to a value near 1.\r\n x1 = x;\r\n\r\n // Taylor series.\r\n // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...)\r\n // where x = (y - 1)/(y + 1) (|x| < 1)\r\n sum = numerator = x = divide(x.minus(1), x.plus(1), wpr, 1);\r\n x2 = finalise(x.times(x), wpr, 1);\r\n denominator = 3;\r\n\r\n for (;;) {\r\n numerator = finalise(numerator.times(x2), wpr, 1);\r\n t = sum.plus(divide(numerator, new Ctor(denominator), wpr, 1));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n sum = sum.times(2);\r\n\r\n // Reverse the argument reduction. Check that e is not 0 because, besides preventing an\r\n // unnecessary calculation, -0 + 0 = +0 and to ensure correct rounding -0 needs to stay -0.\r\n if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ''));\r\n sum = divide(sum, new Ctor(n), wpr, 1);\r\n\r\n // Is rm > 3 and the first 4 rounding digits 4999, or rm < 4 (or the summation has\r\n // been repeated previously) and the first 4 rounding digits 9999?\r\n // If so, restart the summation with a higher precision, otherwise\r\n // e.g. with precision: 12, rounding: 1\r\n // ln(135520028.6126091714265381533) = 18.7246299999 when it should be 18.72463.\r\n // `wpr - guard` is the index of first rounding digit.\r\n if (sd == null) {\r\n if (checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\r\n Ctor.precision = wpr += guard;\r\n t = numerator = x = divide(x1.minus(1), x1.plus(1), wpr, 1);\r\n x2 = finalise(x.times(x), wpr, 1);\r\n denominator = rep = 1;\r\n } else {\r\n return finalise(sum, Ctor.precision = pr, rm, external = true);\r\n }\r\n } else {\r\n Ctor.precision = pr;\r\n return sum;\r\n }\r\n }\r\n\r\n sum = t;\r\n denominator += 2;\r\n }\r\n}\r\n\r\n\r\n// \u00B1Infinity, NaN.\r\nfunction nonFiniteToString(x) {\r\n // Unsigned.\r\n return String(x.s * x.s / 0);\r\n}\r\n\r\n\r\n/*\r\n * Parse the value of a new Decimal `x` from string `str`.\r\n */\r\nfunction parseDecimal(x, str) {\r\n var e, i, len;\r\n\r\n // TODO BigInt str: no need to check for decimal point, exponential form or leading zeros.\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(len - 1) === 48; --len);\r\n str = str.slice(i, len);\r\n\r\n if (str) {\r\n len -= i;\r\n x.e = e = e - i - 1;\r\n x.d = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first word of the digits array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE;\r\n\r\n if (i < len) {\r\n if (i) x.d.push(+str.slice(0, i));\r\n for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE));\r\n str = str.slice(i);\r\n i = LOG_BASE - str.length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--;) str += '0';\r\n x.d.push(+str);\r\n\r\n if (external) {\r\n\r\n // Overflow?\r\n if (x.e > x.constructor.maxE) {\r\n\r\n // Infinity.\r\n x.d = null;\r\n x.e = NaN;\r\n\r\n // Underflow?\r\n } else if (x.e < x.constructor.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n // x.constructor.underflow = true;\r\n } // else x.constructor.underflow = false;\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Parse the value of a new Decimal `x` from a string `str`, which is not a decimal value.\r\n */\r\nfunction parseOther(x, str) {\r\n var base, Ctor, divisor, i, isFloat, len, p, xd, xe;\r\n\r\n if (str.indexOf('_') > -1) {\r\n str = str.replace(/(\\d)_(?=\\d)/g, '$1');\r\n if (isDecimal.test(str)) return parseDecimal(x, str);\r\n } else if (str === 'Infinity' || str === 'NaN') {\r\n if (!+str) x.s = NaN;\r\n x.e = NaN;\r\n x.d = null;\r\n return x;\r\n }\r\n\r\n if (isHex.test(str)) {\r\n base = 16;\r\n str = str.toLowerCase();\r\n } else if (isBinary.test(str)) {\r\n base = 2;\r\n } else if (isOctal.test(str)) {\r\n base = 8;\r\n } else {\r\n throw Error(invalidArgument + str);\r\n }\r\n\r\n // Is there a binary exponent part?\r\n i = str.search(/p/i);\r\n\r\n if (i > 0) {\r\n p = +str.slice(i + 1);\r\n str = str.substring(2, i);\r\n } else {\r\n str = str.slice(2);\r\n }\r\n\r\n // Convert `str` as an integer then divide the result by `base` raised to a power such that the\r\n // fraction part will be restored.\r\n i = str.indexOf('.');\r\n isFloat = i >= 0;\r\n Ctor = x.constructor;\r\n\r\n if (isFloat) {\r\n str = str.replace('.', '');\r\n len = str.length;\r\n i = len - i;\r\n\r\n // log[10](16) = 1.2041... , log[10](88) = 1.9444....\r\n divisor = intPow(Ctor, new Ctor(base), i, i * 2);\r\n }\r\n\r\n xd = convertBase(str, base, BASE);\r\n xe = xd.length - 1;\r\n\r\n // Remove trailing zeros.\r\n for (i = xe; xd[i] === 0; --i) xd.pop();\r\n if (i < 0) return new Ctor(x.s * 0);\r\n x.e = getBase10Exponent(xd, xe);\r\n x.d = xd;\r\n external = false;\r\n\r\n // At what precision to perform the division to ensure exact conversion?\r\n // maxDecimalIntegerPartDigitCount = ceil(log[10](b) * otherBaseIntegerPartDigitCount)\r\n // log[10](2) = 0.30103, log[10](8) = 0.90309, log[10](16) = 1.20412\r\n // E.g. ceil(1.2 * 3) = 4, so up to 4 decimal digits are needed to represent 3 hex int digits.\r\n // maxDecimalFractionPartDigitCount = {Hex:4|Oct:3|Bin:1} * otherBaseFractionPartDigitCount\r\n // Therefore using 4 * the number of digits of str will always be enough.\r\n if (isFloat) x = divide(x, divisor, len * 4);\r\n\r\n // Multiply by the binary exponent part if present.\r\n if (p) x = x.times(Math.abs(p) < 54 ? mathpow(2, p) : Decimal.pow(2, p));\r\n external = true;\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * sin(x) = x - x^3/3! + x^5/5! - ...\r\n * |x| < pi/2\r\n *\r\n */\r\nfunction sine(Ctor, x) {\r\n var k,\r\n len = x.d.length;\r\n\r\n if (len < 3) {\r\n return x.isZero() ? x : taylorSeries(Ctor, 2, x, x);\r\n }\r\n\r\n // Argument reduction: sin(5x) = 16*sin^5(x) - 20*sin^3(x) + 5*sin(x)\r\n // i.e. sin(x) = 16*sin^5(x/5) - 20*sin^3(x/5) + 5*sin(x/5)\r\n // and sin(x) = sin(x/5)(5 + sin^2(x/5)(16sin^2(x/5) - 20))\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n k = 1.4 * Math.sqrt(len);\r\n k = k > 16 ? 16 : k | 0;\r\n\r\n x = x.times(1 / tinyPow(5, k));\r\n x = taylorSeries(Ctor, 2, x, x);\r\n\r\n // Reverse argument reduction\r\n var sin2_x,\r\n d5 = new Ctor(5),\r\n d16 = new Ctor(16),\r\n d20 = new Ctor(20);\r\n for (; k--;) {\r\n sin2_x = x.times(x);\r\n x = x.times(d5.plus(sin2_x.times(d16.times(sin2_x).minus(d20))));\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n// Calculate Taylor series for `cos`, `cosh`, `sin` and `sinh`.\r\nfunction taylorSeries(Ctor, n, x, y, isHyperbolic) {\r\n var j, t, u, x2,\r\n i = 1,\r\n pr = Ctor.precision,\r\n k = Math.ceil(pr / LOG_BASE);\r\n\r\n external = false;\r\n x2 = x.times(x);\r\n u = new Ctor(y);\r\n\r\n for (;;) {\r\n t = divide(u.times(x2), new Ctor(n++ * n++), pr, 1);\r\n u = isHyperbolic ? y.plus(t) : y.minus(t);\r\n y = divide(t.times(x2), new Ctor(n++ * n++), pr, 1);\r\n t = u.plus(y);\r\n\r\n if (t.d[k] !== void 0) {\r\n for (j = k; t.d[j] === u.d[j] && j--;);\r\n if (j == -1) break;\r\n }\r\n\r\n j = u;\r\n u = y;\r\n y = t;\r\n t = j;\r\n i++;\r\n }\r\n\r\n external = true;\r\n t.d.length = k + 1;\r\n\r\n return t;\r\n}\r\n\r\n\r\n// Exponent e must be positive and non-zero.\r\nfunction tinyPow(b, e) {\r\n var n = b;\r\n while (--e) n *= b;\r\n return n;\r\n}\r\n\r\n\r\n// Return the absolute value of `x` reduced to less than or equal to half pi.\r\nfunction toLessThanHalfPi(Ctor, x) {\r\n var t,\r\n isNeg = x.s < 0,\r\n pi = getPi(Ctor, Ctor.precision, 1),\r\n halfPi = pi.times(0.5);\r\n\r\n x = x.abs();\r\n\r\n if (x.lte(halfPi)) {\r\n quadrant = isNeg ? 4 : 1;\r\n return x;\r\n }\r\n\r\n t = x.divToInt(pi);\r\n\r\n if (t.isZero()) {\r\n quadrant = isNeg ? 3 : 2;\r\n } else {\r\n x = x.minus(t.times(pi));\r\n\r\n // 0 <= x < pi\r\n if (x.lte(halfPi)) {\r\n quadrant = isOdd(t) ? (isNeg ? 2 : 3) : (isNeg ? 4 : 1);\r\n return x;\r\n }\r\n\r\n quadrant = isOdd(t) ? (isNeg ? 1 : 4) : (isNeg ? 3 : 2);\r\n }\r\n\r\n return x.minus(pi).abs();\r\n}\r\n\r\n\r\n/*\r\n * Return the value of Decimal `x` as a string in base `baseOut`.\r\n *\r\n * If the optional `sd` argument is present include a binary exponent suffix.\r\n */\r\nfunction toStringBinary(x, baseOut, sd, rm) {\r\n var base, e, i, k, len, roundUp, str, xd, y,\r\n Ctor = x.constructor,\r\n isExp = sd !== void 0;\r\n\r\n if (isExp) {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n } else {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n }\r\n\r\n if (!x.isFinite()) {\r\n str = nonFiniteToString(x);\r\n } else {\r\n str = finiteToString(x);\r\n i = str.indexOf('.');\r\n\r\n // Use exponential notation according to `toExpPos` and `toExpNeg`? No, but if required:\r\n // maxBinaryExponent = floor((decimalExponent + 1) * log[2](10))\r\n // minBinaryExponent = floor(decimalExponent * log[2](10))\r\n // log[2](10) = 3.321928094887362347870319429489390175864\r\n\r\n if (isExp) {\r\n base = 2;\r\n if (baseOut == 16) {\r\n sd = sd * 4 - 3;\r\n } else if (baseOut == 8) {\r\n sd = sd * 3 - 2;\r\n }\r\n } else {\r\n base = baseOut;\r\n }\r\n\r\n // Convert the number as an integer then divide the result by its base raised to a power such\r\n // that the fraction part will be restored.\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n str = str.replace('.', '');\r\n y = new Ctor(1);\r\n y.e = str.length - i;\r\n y.d = convertBase(finiteToString(y), 10, base);\r\n y.e = y.d.length;\r\n }\r\n\r\n xd = convertBase(str, 10, base);\r\n e = len = xd.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] == 0;) xd.pop();\r\n\r\n if (!xd[0]) {\r\n str = isExp ? '0p+0' : '0';\r\n } else {\r\n if (i < 0) {\r\n e--;\r\n } else {\r\n x = new Ctor(x);\r\n x.d = xd;\r\n x.e = e;\r\n x = divide(x, y, sd, rm, 0, base);\r\n xd = x.d;\r\n e = x.e;\r\n roundUp = inexact;\r\n }\r\n\r\n // The rounding digit, i.e. the digit after the digit that may be rounded up.\r\n i = xd[sd];\r\n k = base / 2;\r\n roundUp = roundUp || xd[sd + 1] !== void 0;\r\n\r\n roundUp = rm < 4\r\n ? (i !== void 0 || roundUp) && (rm === 0 || rm === (x.s < 0 ? 3 : 2))\r\n : i > k || i === k && (rm === 4 || roundUp || rm === 6 && xd[sd - 1] & 1 ||\r\n rm === (x.s < 0 ? 8 : 7));\r\n\r\n xd.length = sd;\r\n\r\n if (roundUp) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (; ++xd[--sd] > base - 1;) {\r\n xd[sd] = 0;\r\n if (!sd) {\r\n ++e;\r\n xd.unshift(1);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (len = xd.length; !xd[len - 1]; --len);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i < len; i++) str += NUMERALS.charAt(xd[i]);\r\n\r\n // Add binary exponent suffix?\r\n if (isExp) {\r\n if (len > 1) {\r\n if (baseOut == 16 || baseOut == 8) {\r\n i = baseOut == 16 ? 4 : 3;\r\n for (--len; len % i; len++) str += '0';\r\n xd = convertBase(str, base, baseOut);\r\n for (len = xd.length; !xd[len - 1]; --len);\r\n\r\n // xd[0] will always be be 1\r\n for (i = 1, str = '1.'; i < len; i++) str += NUMERALS.charAt(xd[i]);\r\n } else {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n }\r\n\r\n str = str + (e < 0 ? 'p' : 'p+') + e;\r\n } else if (e < 0) {\r\n for (; ++e;) str = '0' + str;\r\n str = '0.' + str;\r\n } else {\r\n if (++e > len) for (e -= len; e-- ;) str += '0';\r\n else if (e < len) str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n str = (baseOut == 16 ? '0x' : baseOut == 2 ? '0b' : baseOut == 8 ? '0o' : '') + str;\r\n }\r\n\r\n return x.s < 0 ? '-' + str : str;\r\n}\r\n\r\n\r\n// Does not strip trailing zeros.\r\nfunction truncate(arr, len) {\r\n if (arr.length > len) {\r\n arr.length = len;\r\n return true;\r\n }\r\n}\r\n\r\n\r\n// Decimal methods\r\n\r\n\r\n/*\r\n * abs\r\n * acos\r\n * acosh\r\n * add\r\n * asin\r\n * asinh\r\n * atan\r\n * atanh\r\n * atan2\r\n * cbrt\r\n * ceil\r\n * clamp\r\n * clone\r\n * config\r\n * cos\r\n * cosh\r\n * div\r\n * exp\r\n * floor\r\n * hypot\r\n * ln\r\n * log\r\n * log2\r\n * log10\r\n * max\r\n * min\r\n * mod\r\n * mul\r\n * pow\r\n * random\r\n * round\r\n * set\r\n * sign\r\n * sin\r\n * sinh\r\n * sqrt\r\n * sub\r\n * sum\r\n * tan\r\n * tanh\r\n * trunc\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the absolute value of `x`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction abs(x) {\r\n return new this(x).abs();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arccosine in radians of `x`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction acos(x) {\r\n return new this(x).acos();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic cosine of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction acosh(x) {\r\n return new this(x).acosh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sum of `x` and `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n * y {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction add(x, y) {\r\n return new this(x).plus(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arcsine in radians of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction asin(x) {\r\n return new this(x).asin();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic sine of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction asinh(x) {\r\n return new this(x).asinh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent in radians of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction atan(x) {\r\n return new this(x).atan();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic tangent of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction atanh(x) {\r\n return new this(x).atanh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent in radians of `y/x` in the range -pi to pi\r\n * (inclusive), rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi, pi]\r\n *\r\n * y {number|string|bigint|Decimal} The y-coordinate.\r\n * x {number|string|bigint|Decimal} The x-coordinate.\r\n *\r\n * atan2(\u00B10, -0) = \u00B1pi\r\n * atan2(\u00B10, +0) = \u00B10\r\n * atan2(\u00B10, -x) = \u00B1pi for x > 0\r\n * atan2(\u00B10, x) = \u00B10 for x > 0\r\n * atan2(-y, \u00B10) = -pi/2 for y > 0\r\n * atan2(y, \u00B10) = pi/2 for y > 0\r\n * atan2(\u00B1y, -Infinity) = \u00B1pi for finite y > 0\r\n * atan2(\u00B1y, +Infinity) = \u00B10 for finite y > 0\r\n * atan2(\u00B1Infinity, x) = \u00B1pi/2 for finite x\r\n * atan2(\u00B1Infinity, -Infinity) = \u00B13*pi/4\r\n * atan2(\u00B1Infinity, +Infinity) = \u00B1pi/4\r\n * atan2(NaN, x) = NaN\r\n * atan2(y, NaN) = NaN\r\n *\r\n */\r\nfunction atan2(y, x) {\r\n y = new this(y);\r\n x = new this(x);\r\n var r,\r\n pr = this.precision,\r\n rm = this.rounding,\r\n wpr = pr + 4;\r\n\r\n // Either NaN\r\n if (!y.s || !x.s) {\r\n r = new this(NaN);\r\n\r\n // Both \u00B1Infinity\r\n } else if (!y.d && !x.d) {\r\n r = getPi(this, wpr, 1).times(x.s > 0 ? 0.25 : 0.75);\r\n r.s = y.s;\r\n\r\n // x is \u00B1Infinity or y is \u00B10\r\n } else if (!x.d || y.isZero()) {\r\n r = x.s < 0 ? getPi(this, pr, rm) : new this(0);\r\n r.s = y.s;\r\n\r\n // y is \u00B1Infinity or x is \u00B10\r\n } else if (!y.d || x.isZero()) {\r\n r = getPi(this, wpr, 1).times(0.5);\r\n r.s = y.s;\r\n\r\n // Both non-zero and finite\r\n } else if (x.s < 0) {\r\n this.precision = wpr;\r\n this.rounding = 1;\r\n r = this.atan(divide(y, x, wpr, 1));\r\n x = getPi(this, wpr, 1);\r\n this.precision = pr;\r\n this.rounding = rm;\r\n r = y.s < 0 ? r.minus(x) : r.plus(x);\r\n } else {\r\n r = this.atan(divide(y, x, wpr, 1));\r\n }\r\n\r\n return r;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cube root of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction cbrt(x) {\r\n return new this(x).cbrt();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` rounded to an integer using `ROUND_CEIL`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction ceil(x) {\r\n return finalise(x = new this(x), x.e + 1, 2);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` clamped to the range delineated by `min` and `max`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n * min {number|string|bigint|Decimal}\r\n * max {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction clamp(x, min, max) {\r\n return new this(x).clamp(min, max);\r\n}\r\n\r\n\r\n/*\r\n * Configure global settings for a Decimal constructor.\r\n *\r\n * `obj` is an object with one or more of the following properties,\r\n *\r\n * precision {number}\r\n * rounding {number}\r\n * toExpNeg {number}\r\n * toExpPos {number}\r\n * maxE {number}\r\n * minE {number}\r\n * modulo {number}\r\n * crypto {boolean|number}\r\n * defaults {true}\r\n *\r\n * E.g. Decimal.config({ precision: 20, rounding: 4 })\r\n *\r\n */\r\nfunction config(obj) {\r\n if (!obj || typeof obj !== 'object') throw Error(decimalError + 'Object expected');\r\n var i, p, v,\r\n useDefaults = obj.defaults === true,\r\n ps = [\r\n 'precision', 1, MAX_DIGITS,\r\n 'rounding', 0, 8,\r\n 'toExpNeg', -EXP_LIMIT, 0,\r\n 'toExpPos', 0, EXP_LIMIT,\r\n 'maxE', 0, EXP_LIMIT,\r\n 'minE', -EXP_LIMIT, 0,\r\n 'modulo', 0, 9\r\n ];\r\n\r\n for (i = 0; i < ps.length; i += 3) {\r\n if (p = ps[i], useDefaults) this[p] = DEFAULTS[p];\r\n if ((v = obj[p]) !== void 0) {\r\n if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v;\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n if (p = 'crypto', useDefaults) this[p] = DEFAULTS[p];\r\n if ((v = obj[p]) !== void 0) {\r\n if (v === true || v === false || v === 0 || v === 1) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n this[p] = true;\r\n } else {\r\n throw Error(cryptoUnavailable);\r\n }\r\n } else {\r\n this[p] = false;\r\n }\r\n } else {\r\n throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n return this;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cosine of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction cos(x) {\r\n return new this(x).cos();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic cosine of `x`, rounded to precision\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction cosh(x) {\r\n return new this(x).cosh();\r\n}\r\n\r\n\r\n/*\r\n * Create and return a Decimal constructor with the same configuration properties as this Decimal\r\n * constructor.\r\n *\r\n */\r\nfunction clone(obj) {\r\n var i, p, ps;\r\n\r\n /*\r\n * The Decimal constructor and exported function.\r\n * Return a new Decimal instance.\r\n *\r\n * v {number|string|bigint|Decimal} A numeric value.\r\n *\r\n */\r\n function Decimal(v) {\r\n var e, i, t,\r\n x = this;\r\n\r\n // Decimal called without new.\r\n if (!(x instanceof Decimal)) return new Decimal(v);\r\n\r\n // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor\r\n // which points to Object.\r\n x.constructor = Decimal;\r\n\r\n if (isDecimalInstance(v)) {\r\n x.s = v.s;\r\n\r\n if (external) {\r\n if (!v.d || v.e > Decimal.maxE) {\r\n\r\n // Infinity.\r\n x.e = NaN;\r\n x.d = null;\r\n } else if (v.e < Decimal.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n } else {\r\n x.e = v.e;\r\n x.d = v.d.slice();\r\n }\r\n } else {\r\n x.e = v.e;\r\n x.d = v.d ? v.d.slice() : v.d;\r\n }\r\n\r\n return;\r\n }\r\n\r\n t = typeof v;\r\n\r\n if (t === 'number') {\r\n if (v === 0) {\r\n x.s = 1 / v < 0 ? -1 : 1;\r\n x.e = 0;\r\n x.d = [0];\r\n return;\r\n }\r\n\r\n if (v < 0) {\r\n v = -v;\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n // Fast path for small integers.\r\n if (v === ~~v && v < 1e7) {\r\n for (e = 0, i = v; i >= 10; i /= 10) e++;\r\n\r\n if (external) {\r\n if (e > Decimal.maxE) {\r\n x.e = NaN;\r\n x.d = null;\r\n } else if (e < Decimal.minE) {\r\n x.e = 0;\r\n x.d = [0];\r\n } else {\r\n x.e = e;\r\n x.d = [v];\r\n }\r\n } else {\r\n x.e = e;\r\n x.d = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n // Infinity or NaN?\r\n if (v * 0 !== 0) {\r\n if (!v) x.s = NaN;\r\n x.e = NaN;\r\n x.d = null;\r\n return;\r\n }\r\n\r\n return parseDecimal(x, v.toString());\r\n }\r\n\r\n if (t === 'string') {\r\n if ((i = v.charCodeAt(0)) === 45) { // minus sign\r\n v = v.slice(1);\r\n x.s = -1;\r\n } else {\r\n if (i === 43) v = v.slice(1); // plus sign\r\n x.s = 1;\r\n }\r\n\r\n return isDecimal.test(v) ? parseDecimal(x, v) : parseOther(x, v);\r\n }\r\n\r\n if (t === 'bigint') {\r\n if (v < 0) {\r\n v = -v;\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n return parseDecimal(x, v.toString());\r\n }\r\n\r\n throw Error(invalidArgument + v);\r\n }\r\n\r\n Decimal.prototype = P;\r\n\r\n Decimal.ROUND_UP = 0;\r\n Decimal.ROUND_DOWN = 1;\r\n Decimal.ROUND_CEIL = 2;\r\n Decimal.ROUND_FLOOR = 3;\r\n Decimal.ROUND_HALF_UP = 4;\r\n Decimal.ROUND_HALF_DOWN = 5;\r\n Decimal.ROUND_HALF_EVEN = 6;\r\n Decimal.ROUND_HALF_CEIL = 7;\r\n Decimal.ROUND_HALF_FLOOR = 8;\r\n Decimal.EUCLID = 9;\r\n\r\n Decimal.config = Decimal.set = config;\r\n Decimal.clone = clone;\r\n Decimal.isDecimal = isDecimalInstance;\r\n\r\n Decimal.abs = abs;\r\n Decimal.acos = acos;\r\n Decimal.acosh = acosh; // ES6\r\n Decimal.add = add;\r\n Decimal.asin = asin;\r\n Decimal.asinh = asinh; // ES6\r\n Decimal.atan = atan;\r\n Decimal.atanh = atanh; // ES6\r\n Decimal.atan2 = atan2;\r\n Decimal.cbrt = cbrt; // ES6\r\n Decimal.ceil = ceil;\r\n Decimal.clamp = clamp;\r\n Decimal.cos = cos;\r\n Decimal.cosh = cosh; // ES6\r\n Decimal.div = div;\r\n Decimal.exp = exp;\r\n Decimal.floor = floor;\r\n Decimal.hypot = hypot; // ES6\r\n Decimal.ln = ln;\r\n Decimal.log = log;\r\n Decimal.log10 = log10; // ES6\r\n Decimal.log2 = log2; // ES6\r\n Decimal.max = max;\r\n Decimal.min = min;\r\n Decimal.mod = mod;\r\n Decimal.mul = mul;\r\n Decimal.pow = pow;\r\n Decimal.random = random;\r\n Decimal.round = round;\r\n Decimal.sign = sign; // ES6\r\n Decimal.sin = sin;\r\n Decimal.sinh = sinh; // ES6\r\n Decimal.sqrt = sqrt;\r\n Decimal.sub = sub;\r\n Decimal.sum = sum;\r\n Decimal.tan = tan;\r\n Decimal.tanh = tanh; // ES6\r\n Decimal.trunc = trunc; // ES6\r\n\r\n if (obj === void 0) obj = {};\r\n if (obj) {\r\n if (obj.defaults !== true) {\r\n ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'maxE', 'minE', 'modulo', 'crypto'];\r\n for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p];\r\n }\r\n }\r\n\r\n Decimal.config(obj);\r\n\r\n return Decimal;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` divided by `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n * y {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction div(x, y) {\r\n return new this(x).div(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} The power to which to raise the base of the natural log.\r\n *\r\n */\r\nfunction exp(x) {\r\n return new this(x).exp();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` round to an integer using `ROUND_FLOOR`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction floor(x) {\r\n return finalise(x = new this(x), x.e + 1, 3);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of the sum of the squares of the arguments,\r\n * rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * hypot(a, b, ...) = sqrt(a^2 + b^2 + ...)\r\n *\r\n * arguments {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction hypot() {\r\n var i, n,\r\n t = new this(0);\r\n\r\n external = false;\r\n\r\n for (i = 0; i < arguments.length;) {\r\n n = new this(arguments[i++]);\r\n if (!n.d) {\r\n if (n.s) {\r\n external = true;\r\n return new this(1 / 0);\r\n }\r\n t = n;\r\n } else if (t.d) {\r\n t = t.plus(n.times(n));\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return t.sqrt();\r\n}\r\n\r\n\r\n/*\r\n * Return true if object is a Decimal instance (where Decimal is any Decimal constructor),\r\n * otherwise return false.\r\n *\r\n */\r\nfunction isDecimalInstance(obj) {\r\n return obj instanceof Decimal || obj && obj.toStringTag === tag || false;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction ln(x) {\r\n return new this(x).ln();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the log of `x` to the base `y`, or to base 10 if no base\r\n * is specified, rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * log[y](x)\r\n *\r\n * x {number|string|bigint|Decimal} The argument of the logarithm.\r\n * y {number|string|bigint|Decimal} The base of the logarithm.\r\n *\r\n */\r\nfunction log(x, y) {\r\n return new this(x).log(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the base 2 logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction log2(x) {\r\n return new this(x).log(2);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the base 10 logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction log10(x) {\r\n return new this(x).log(10);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction max() {\r\n return maxOrMin(this, arguments, -1);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction min() {\r\n return maxOrMin(this, arguments, 1);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` modulo `y`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n * y {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction mod(x, y) {\r\n return new this(x).mod(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` multiplied by `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n * y {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction mul(x, y) {\r\n return new this(x).mul(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` raised to the power `y`, rounded to precision\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} The base.\r\n * y {number|string|bigint|Decimal} The exponent.\r\n *\r\n */\r\nfunction pow(x, y) {\r\n return new this(x).pow(y);\r\n}\r\n\r\n\r\n/*\r\n * Returns a new Decimal with a random value equal to or greater than 0 and less than 1, and with\r\n * `sd`, or `Decimal.precision` if `sd` is omitted, significant digits (or less if trailing zeros\r\n * are produced).\r\n *\r\n * [sd] {number} Significant digits. Integer, 0 to MAX_DIGITS inclusive.\r\n *\r\n */\r\nfunction random(sd) {\r\n var d, e, k, n,\r\n i = 0,\r\n r = new this(1),\r\n rd = [];\r\n\r\n if (sd === void 0) sd = this.precision;\r\n else checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n k = Math.ceil(sd / LOG_BASE);\r\n\r\n if (!this.crypto) {\r\n for (; i < k;) rd[i++] = Math.random() * 1e7 | 0;\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n } else if (crypto.getRandomValues) {\r\n d = crypto.getRandomValues(new Uint32Array(k));\r\n\r\n for (; i < k;) {\r\n n = d[i];\r\n\r\n // 0 <= n < 4294967296\r\n // Probability n >= 4.29e9, is 4967296 / 4294967296 = 0.00116 (1 in 865).\r\n if (n >= 4.29e9) {\r\n d[i] = crypto.getRandomValues(new Uint32Array(1))[0];\r\n } else {\r\n\r\n // 0 <= n <= 4289999999\r\n // 0 <= (n % 1e7) <= 9999999\r\n rd[i++] = n % 1e7;\r\n }\r\n }\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n d = crypto.randomBytes(k *= 4);\r\n\r\n for (; i < k;) {\r\n\r\n // 0 <= n < 2147483648\r\n n = d[i] + (d[i + 1] << 8) + (d[i + 2] << 16) + ((d[i + 3] & 0x7f) << 24);\r\n\r\n // Probability n >= 2.14e9, is 7483648 / 2147483648 = 0.0035 (1 in 286).\r\n if (n >= 2.14e9) {\r\n crypto.randomBytes(4).copy(d, i);\r\n } else {\r\n\r\n // 0 <= n <= 2139999999\r\n // 0 <= (n % 1e7) <= 9999999\r\n rd.push(n % 1e7);\r\n i += 4;\r\n }\r\n }\r\n\r\n i = k / 4;\r\n } else {\r\n throw Error(cryptoUnavailable);\r\n }\r\n\r\n k = rd[--i];\r\n sd %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to sd.\r\n if (k && sd) {\r\n n = mathpow(10, LOG_BASE - sd);\r\n rd[i] = (k / n | 0) * n;\r\n }\r\n\r\n // Remove trailing words which are zero.\r\n for (; rd[i] === 0; i--) rd.pop();\r\n\r\n // Zero?\r\n if (i < 0) {\r\n e = 0;\r\n rd = [0];\r\n } else {\r\n e = -1;\r\n\r\n // Remove leading words which are zero and adjust exponent accordingly.\r\n for (; rd[0] === 0; e -= LOG_BASE) rd.shift();\r\n\r\n // Count the digits of the first word of rd to determine leading zeros.\r\n for (k = 1, n = rd[0]; n >= 10; n /= 10) k++;\r\n\r\n // Adjust the exponent for leading zeros of the first word of rd.\r\n if (k < LOG_BASE) e -= LOG_BASE - k;\r\n }\r\n\r\n r.e = e;\r\n r.d = rd;\r\n\r\n return r;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` rounded to an integer using rounding mode `rounding`.\r\n *\r\n * To emulate `Math.round`, set rounding to 7 (ROUND_HALF_CEIL).\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction round(x) {\r\n return finalise(x = new this(x), x.e + 1, this.rounding);\r\n}\r\n\r\n\r\n/*\r\n * Return\r\n * 1 if x > 0,\r\n * -1 if x < 0,\r\n * 0 if x is 0,\r\n * -0 if x is -0,\r\n * NaN otherwise\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction sign(x) {\r\n x = new this(x);\r\n return x.d ? (x.d[0] ? x.s : 0 * x.s) : x.s || NaN;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sine of `x`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction sin(x) {\r\n return new this(x).sin();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic sine of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction sinh(x) {\r\n return new this(x).sinh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction sqrt(x) {\r\n return new this(x).sqrt();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` minus `y`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n * y {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction sub(x, y) {\r\n return new this(x).sub(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sum of the arguments, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * Only the result is rounded, not the intermediate calculations.\r\n *\r\n * arguments {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction sum() {\r\n var i = 0,\r\n args = arguments,\r\n x = new this(args[i]);\r\n\r\n external = false;\r\n for (; x.s && ++i < args.length;) x = x.plus(args[i]);\r\n external = true;\r\n\r\n return finalise(x, this.precision, this.rounding);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the tangent of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction tan(x) {\r\n return new this(x).tan();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic tangent of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction tanh(x) {\r\n return new this(x).tanh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` truncated to an integer.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction trunc(x) {\r\n return finalise(x = new this(x), x.e + 1, 1);\r\n}\r\n\r\n\r\nP[Symbol.for('nodejs.util.inspect.custom')] = P.toString;\r\nP[Symbol.toStringTag] = 'Decimal';\r\n\r\n// Create and configure initial Decimal constructor.\r\nexport var Decimal = P.constructor = clone(DEFAULTS);\r\n\r\n// Create the internal constants from their string values.\r\nLN10 = new Decimal(LN10);\r\nPI = new Decimal(PI);\r\n\r\nexport default Decimal;\r\n", "import { ErrorFormat } from '../../getPrismaClient'\nimport { CallSite } from '../../utils/CallSite'\nimport { createErrorMessageWithContext } from '../../utils/createErrorMessageWithContext'\nimport { PrismaClientValidationError } from '../errors/PrismaClientValidationError'\nimport { GlobalOmitOptions } from '../jsonProtocol/serializeJsonQuery'\nimport { JsArgs } from '../types/exported/JsApi'\nimport { ValidationError } from '../types/ValidationError'\nimport { applyValidationError } from './applyValidationError'\nimport { buildArgumentsRenderingTree, renderArgsTree } from './ArgumentsRenderingTree'\n\ntype ExceptionParams = {\n errors: ValidationError[]\n args: JsArgs\n callsite?: CallSite\n originalMethod: string\n errorFormat: ErrorFormat\n clientVersion: string\n globalOmit?: GlobalOmitOptions\n}\n\nexport function throwValidationException({\n args,\n errors,\n errorFormat,\n callsite,\n originalMethod,\n clientVersion,\n globalOmit,\n}: ExceptionParams): never {\n const argsTree = buildArgumentsRenderingTree(args)\n for (const error of errors) {\n applyValidationError(error, argsTree, globalOmit)\n }\n\n const { message, args: renderedArgs } = renderArgsTree(argsTree, errorFormat)\n\n const messageWithContext = createErrorMessageWithContext({\n message,\n callsite,\n originalMethod,\n showColors: errorFormat === 'pretty',\n callArguments: renderedArgs,\n })\n\n throw new PrismaClientValidationError(messageWithContext, { clientVersion })\n}\n", "import * as DMMF from '@prisma/dmmf'\nimport indentString from 'indent-string'\nimport { bold, dim, gray, red, underline } from 'kleur/colors'\n\nimport { CallSite, LocationInFile } from './CallSite'\nimport { SourceFileSlice } from './SourceFileSlice'\n\ndeclare global {\n /**\n * a global variable that is injected by us via jest to make our snapshots\n * work in clients that cannot read from disk (e.g. wasm or edge clients)\n */\n let $getTemplateParameters: typeof getTemplateParameters | undefined\n}\n\nexport interface ErrorArgs {\n callsite?: CallSite\n originalMethod: string\n message: string\n isPanic?: boolean\n showColors?: boolean\n callArguments?: string\n}\n\ntype Colors = {\n red: (str: string) => string\n gray: (str: string) => string\n dim: (str: string) => string\n bold: (str: string) => string\n underline: (str: string) => string\n highlightSource: (source: SourceFileSlice) => SourceFileSlice\n}\n\nconst colorsEnabled: Colors = {\n red,\n gray,\n dim,\n bold,\n underline,\n highlightSource: (source) => source.highlight(),\n}\n\nconst colorsDisabled: Colors = {\n red: (str) => str,\n gray: (str) => str,\n dim: (str) => str,\n bold: (str) => str,\n underline: (str) => str,\n highlightSource: (source) => source,\n}\n\ntype ErrorContextTemplateParameters = {\n functionName: string\n message: string\n location?: LocationInFile\n contextLines?: SourceFileSlice\n callArguments?: string\n isPanic: boolean\n}\n\nfunction getRawTemplateParameters({\n message,\n originalMethod,\n isPanic,\n callArguments,\n}: ErrorArgs): ErrorContextTemplateParameters {\n return {\n functionName: `prisma.${originalMethod}()`,\n message,\n isPanic: isPanic ?? false,\n callArguments,\n }\n}\n\nexport function getTemplateParameters(\n { callsite, message, originalMethod, isPanic, callArguments }: ErrorArgs,\n colors: Colors,\n): ErrorContextTemplateParameters {\n const templateParameters = getRawTemplateParameters({ message, originalMethod, isPanic, callArguments })\n\n // @ts-ignore\n if (!callsite || typeof window !== 'undefined') {\n return templateParameters\n }\n\n if (process.env.NODE_ENV === 'production') {\n return templateParameters\n }\n\n const callLocation = callsite.getLocation()\n if (!callLocation || !callLocation.lineNumber || !callLocation.columnNumber) {\n return templateParameters\n }\n\n const contextFirstLine = Math.max(1, callLocation.lineNumber - 3)\n let source = SourceFileSlice.read(callLocation.fileName)?.slice(contextFirstLine, callLocation.lineNumber)\n const invocationLine = source?.lineAt(callLocation.lineNumber)\n if (source && invocationLine) {\n const invocationLineIndent = getIndent(invocationLine)\n const invocationCallCode = findPrismaActionCall(invocationLine)\n if (!invocationCallCode) {\n return templateParameters\n }\n templateParameters.functionName = `${invocationCallCode.code})`\n templateParameters.location = callLocation\n\n if (!isPanic) {\n source = source.mapLineAt(callLocation.lineNumber, (line) => line.slice(0, invocationCallCode.openingBraceIndex))\n }\n\n source = colors.highlightSource(source)\n const numberColumnWidth = String(source.lastLineNumber).length\n templateParameters.contextLines = source\n .mapLines((line, lineNumber) => colors.gray(String(lineNumber).padStart(numberColumnWidth)) + ' ' + line)\n .mapLines((line) => colors.dim(line))\n .prependSymbolAt(callLocation.lineNumber, colors.bold(colors.red('\u2192')))\n\n if (callArguments) {\n let indentValue = invocationLineIndent + numberColumnWidth + 1 /* space between number and code */\n indentValue += 2 // arrow + space between arrow and number\n\n // indent all lines but first, because first line of the arguments will be printed\n // on the same line as the function call\n templateParameters.callArguments = indentString(callArguments, indentValue).slice(indentValue)\n }\n }\n return templateParameters\n}\n\nfunction findPrismaActionCall(str: string): { code: string; openingBraceIndex: number } | null {\n const allActions = Object.keys(DMMF.ModelAction).join('|')\n const regexp = new RegExp(String.raw`\\.(${allActions})\\(`)\n const match = regexp.exec(str)\n if (match) {\n const openingBraceIndex = match.index + match[0].length\n // to get the code we are slicing the string up to a found brace. We start\n // with first non-space character if space is found in the line before that or\n // 0 if it is not.\n const statementStart = str.lastIndexOf(' ', match.index) + 1\n return {\n code: str.slice(statementStart, openingBraceIndex),\n openingBraceIndex,\n }\n }\n return null\n}\n\nfunction getIndent(line: string): number {\n let spaceCount = 0\n for (let i = 0; i < line.length; i++) {\n if (line.charAt(i) !== ' ') {\n return spaceCount\n }\n spaceCount++\n }\n\n return spaceCount\n}\n\nfunction stringifyErrorMessage(\n { functionName, location, message, isPanic, contextLines, callArguments }: ErrorContextTemplateParameters,\n colors: Colors,\n) {\n const lines: string[] = ['']\n\n const introSuffix = location ? ' in' : ':'\n if (isPanic) {\n lines.push(colors.red(`Oops, an unknown error occurred! This is ${colors.bold('on us')}, you did nothing wrong.`))\n lines.push(colors.red(`It occurred in the ${colors.bold(`\\`${functionName}\\``)} invocation${introSuffix}`))\n } else {\n lines.push(colors.red(`Invalid ${colors.bold(`\\`${functionName}\\``)} invocation${introSuffix}`))\n }\n\n if (location) {\n lines.push(colors.underline(stringifyLocationInFile(location)))\n }\n\n if (contextLines) {\n lines.push('')\n\n const contextLineParts = [contextLines.toString()]\n\n if (callArguments) {\n contextLineParts.push(callArguments)\n contextLineParts.push(colors.dim(')'))\n }\n lines.push(contextLineParts.join(''))\n if (callArguments) {\n lines.push('')\n }\n } else {\n lines.push('')\n if (callArguments) {\n lines.push(callArguments)\n }\n lines.push('')\n }\n\n lines.push(message)\n return lines.join('\\n')\n}\n\nfunction stringifyLocationInFile(location: LocationInFile): string {\n const parts = [location.fileName]\n if (location.lineNumber) {\n parts.push(String(location.lineNumber))\n }\n\n if (location.columnNumber) {\n parts.push(String(location.columnNumber))\n }\n\n return parts.join(':')\n}\n\nexport function createErrorMessageWithContext(args: ErrorArgs): string {\n const colors = args.showColors ? colorsEnabled : colorsDisabled\n let templateParameters: ErrorContextTemplateParameters\n\n if (\n TARGET_BUILD_TYPE === 'wasm-engine-edge' ||\n TARGET_BUILD_TYPE === 'wasm-compiler-edge' ||\n TARGET_BUILD_TYPE === 'edge'\n ) {\n if (typeof $getTemplateParameters !== 'undefined') {\n templateParameters = $getTemplateParameters(args, colors)\n } else {\n templateParameters = getRawTemplateParameters(args)\n }\n } else {\n templateParameters = getTemplateParameters(args, colors)\n }\n\n return stringifyErrorMessage(templateParameters, colors)\n}\n", "export * from './convert'\nexport * from './dmmf'\n", "import { DatamodelEnum, SchemaEnum } from './dmmf'\n\nexport function datamodelEnumToSchemaEnum(datamodelEnum: DatamodelEnum): SchemaEnum {\n return {\n name: datamodelEnum.name,\n values: datamodelEnum.values.map((v) => v.name),\n }\n}\n", "import { ReadonlyDeep } from './util'\n\nexport type Document = ReadonlyDeep<{\n datamodel: Datamodel\n schema: Schema\n mappings: Mappings\n}>\n\nexport type Mappings = ReadonlyDeep<{\n modelOperations: ModelMapping[]\n otherOperations: {\n read: string[]\n write: string[]\n }\n}>\n\nexport type OtherOperationMappings = ReadonlyDeep<{\n read: string[]\n write: string[]\n}>\n\nexport type DatamodelEnum = ReadonlyDeep<{\n name: string\n values: EnumValue[]\n dbName?: string | null\n documentation?: string\n}>\n\nexport type SchemaEnum = ReadonlyDeep<{\n name: string\n values: string[]\n}>\n\nexport type EnumValue = ReadonlyDeep<{\n name: string\n dbName: string | null\n}>\n\nexport type Datamodel = ReadonlyDeep<{\n models: Model[]\n enums: DatamodelEnum[]\n types: Model[]\n indexes: Index[]\n}>\n\nexport type uniqueIndex = ReadonlyDeep<{\n name: string\n fields: string[]\n}>\nexport type PrimaryKey = ReadonlyDeep<{\n name: string | null\n fields: string[]\n}>\nexport type Model = ReadonlyDeep<{\n name: string\n dbName: string | null\n schema: string | null\n fields: Field[]\n uniqueFields: string[][]\n uniqueIndexes: uniqueIndex[]\n documentation?: string\n primaryKey: PrimaryKey | null\n isGenerated?: boolean\n}>\n\nexport type FieldKind = 'scalar' | 'object' | 'enum' | 'unsupported'\n\nexport type FieldNamespace = 'model' | 'prisma'\nexport type FieldLocation = 'scalar' | 'inputObjectTypes' | 'outputObjectTypes' | 'enumTypes' | 'fieldRefTypes'\n\nexport type Field = ReadonlyDeep<{\n kind: FieldKind\n name: string\n isRequired: boolean\n isList: boolean\n isUnique: boolean\n isId: boolean\n isReadOnly: boolean\n isGenerated?: boolean // does not exist on 'type' but does on 'model'\n isUpdatedAt?: boolean // does not exist on 'type' but does on 'model'\n /**\n * Describes the data type in the same the way it is defined in the Prisma schema:\n * BigInt, Boolean, Bytes, DateTime, Decimal, Float, Int, JSON, String, $ModelName\n */\n type: string\n /**\n * Native database type, if specified.\n * For example, `@db.VarChar(191)` is encoded as `['VarChar', ['191']]`,\n * `@db.Text` is encoded as `['Text', []]`.\n */\n nativeType?: [string, string[]] | null\n dbName?: string | null\n hasDefaultValue: boolean\n default?: FieldDefault | FieldDefaultScalar | FieldDefaultScalar[]\n relationFromFields?: string[]\n relationToFields?: string[]\n relationOnDelete?: string\n relationOnUpdate?: string\n relationName?: string\n documentation?: string\n}>\n\nexport type FieldDefault = ReadonlyDeep<{\n name: string\n args: Array<string | number>\n}>\n\nexport type FieldDefaultScalar = string | boolean | number\n\nexport type Index = ReadonlyDeep<{\n model: string\n type: IndexType\n isDefinedOnField: boolean\n name?: string\n dbName?: string\n algorithm?: string\n clustered?: boolean\n fields: IndexField[]\n}>\n\nexport type IndexType = 'id' | 'normal' | 'unique' | 'fulltext'\n\nexport type IndexField = ReadonlyDeep<{\n name: string\n sortOrder?: SortOrder\n length?: number\n operatorClass?: string\n}>\n\nexport type SortOrder = 'asc' | 'desc'\n\nexport type Schema = ReadonlyDeep<{\n rootQueryType?: string\n rootMutationType?: string\n inputObjectTypes: {\n // For now there are no `model` InputTypes\n model?: InputType[]\n prisma?: InputType[]\n }\n outputObjectTypes: {\n model: OutputType[]\n prisma: OutputType[]\n }\n enumTypes: {\n model?: SchemaEnum[]\n prisma: SchemaEnum[]\n }\n fieldRefTypes: {\n prisma?: FieldRefType[]\n }\n}>\n\nexport type Query = ReadonlyDeep<{\n name: string\n args: SchemaArg[]\n output: QueryOutput\n}>\n\nexport type QueryOutput = ReadonlyDeep<{\n name: string\n isRequired: boolean\n isList: boolean\n}>\n\nexport type TypeRef<AllowedLocations extends FieldLocation> = {\n isList: boolean\n type: string\n location: AllowedLocations\n namespace?: FieldNamespace\n}\n\nexport type InputTypeRef = TypeRef<'scalar' | 'inputObjectTypes' | 'enumTypes' | 'fieldRefTypes'>\n\nexport type SchemaArg = ReadonlyDeep<{\n name: string\n comment?: string\n isNullable: boolean\n isRequired: boolean\n inputTypes: InputTypeRef[]\n requiresOtherFields?: string[]\n deprecation?: Deprecation\n}>\n\nexport type OutputType = ReadonlyDeep<{\n name: string\n fields: SchemaField[]\n}>\n\nexport type SchemaField = ReadonlyDeep<{\n name: string\n isNullable?: boolean\n outputType: OutputTypeRef\n args: SchemaArg[]\n deprecation?: Deprecation\n documentation?: string\n}>\n\nexport type OutputTypeRef = TypeRef<'scalar' | 'outputObjectTypes' | 'enumTypes'>\n\nexport type Deprecation = ReadonlyDeep<{\n sinceVersion: string\n reason: string\n plannedRemovalVersion?: string\n}>\n\nexport type InputType = ReadonlyDeep<{\n name: string\n constraints: {\n maxNumFields: number | null\n minNumFields: number | null\n fields?: string[]\n }\n meta?: {\n source?: string\n grouping?: string\n }\n fields: SchemaArg[]\n}>\n\nexport type FieldRefType = ReadonlyDeep<{\n name: string\n allowTypes: FieldRefAllowType[]\n fields: SchemaArg[]\n}>\n\nexport type FieldRefAllowType = TypeRef<'scalar' | 'enumTypes'>\n\nexport type ModelMapping = ReadonlyDeep<{\n model: string\n plural: string\n findUnique?: string | null\n findUniqueOrThrow?: string | null\n findFirst?: string | null\n findFirstOrThrow?: string | null\n findMany?: string | null\n create?: string | null\n createMany?: string | null\n createManyAndReturn?: string | null\n update?: string | null\n updateMany?: string | null\n updateManyAndReturn?: string | null\n upsert?: string | null\n delete?: string | null\n deleteMany?: string | null\n aggregate?: string | null\n groupBy?: string | null\n count?: string | null\n findRaw?: string | null\n aggregateRaw?: string | null\n}>\n\nexport enum ModelAction {\n findUnique = 'findUnique',\n findUniqueOrThrow = 'findUniqueOrThrow',\n findFirst = 'findFirst',\n findFirstOrThrow = 'findFirstOrThrow',\n findMany = 'findMany',\n create = 'create',\n createMany = 'createMany',\n createManyAndReturn = 'createManyAndReturn',\n update = 'update',\n updateMany = 'updateMany',\n updateManyAndReturn = 'updateManyAndReturn',\n upsert = 'upsert',\n delete = 'delete',\n deleteMany = 'deleteMany',\n groupBy = 'groupBy',\n count = 'count', // TODO: count does not actually exist in DMMF\n aggregate = 'aggregate',\n findRaw = 'findRaw',\n aggregateRaw = 'aggregateRaw',\n}\n", "import fs from 'fs'\n\nimport { highlightTS } from '../highlight/highlight'\nimport { dedent } from './dedent'\n\n/**\n * Class represents a source code or it's slice.\n * Provides various methods for manipulating individual lines\n * of the files using original files line numbers, even if the file was\n * sliced\n */\nexport class SourceFileSlice {\n /**\n * First line, stored in the slice\n */\n readonly firstLineNumber: number\n private lines: string[]\n\n static read(filePath: string): SourceFileSlice | null {\n let content: string\n try {\n content = fs.readFileSync(filePath, 'utf-8')\n } catch (e) {\n return null\n }\n\n return SourceFileSlice.fromContent(content)\n }\n\n static fromContent(content: string): SourceFileSlice {\n const lines = content.split(/\\r?\\n/)\n\n return new SourceFileSlice(1, lines)\n }\n\n private constructor(firstLine: number, lines: string[]) {\n this.firstLineNumber = firstLine\n this.lines = lines\n }\n\n /**\n * First line, stored in the slice\n */\n get lastLineNumber(): number {\n return this.firstLineNumber + this.lines.length - 1\n }\n\n /**\n * Returns new `SourceFileLines` object, where specified\n * `lineNumber` is transformed, using provided `mapFn`\n * @param lineNumber\n * @param mapFn\n * @returns\n */\n mapLineAt(lineNumber: number, mapFn: (line: string) => string): SourceFileSlice {\n if (lineNumber < this.firstLineNumber || lineNumber > this.lines.length + this.firstLineNumber) {\n return this\n }\n const idx = lineNumber - this.firstLineNumber\n const newLines = [...this.lines]\n newLines[idx] = mapFn(newLines[idx])\n return new SourceFileSlice(this.firstLineNumber, newLines)\n }\n\n /**\n * Returns new `SourceFileLines` object, where each line is transformed\n * with provided `mapFn` callback. Callback receives content of the line and\n * original line number\n * @param mapFn\n * @returns\n */\n mapLines(mapFn: (line: string, lineNumber: number) => string): SourceFileSlice {\n return new SourceFileSlice(\n this.firstLineNumber,\n this.lines.map((line, i) => mapFn(line, this.firstLineNumber + i)),\n )\n }\n\n /**\n * Returns contents of the specified line\n * @param lineNumber\n * @returns\n */\n lineAt(lineNumber: number): string | undefined {\n return this.lines[lineNumber - this.firstLineNumber]\n }\n\n /**\n * Prepends a character to the specified line and adds padding\n * to all the other lines so that they'll align\n * @param atLine\n * @param str\n * @returns\n */\n prependSymbolAt(atLine: number, str: string): SourceFileSlice {\n return this.mapLines((line, lineNumber) => {\n if (lineNumber === atLine) {\n return `${str} ${line}`\n }\n return ` ${line}`\n })\n }\n\n /**\n * Creates a new slice from a subset of specified lines of the new code\n * Lines of a slice can still be manipulated using their number in original file\n *\n * @example\n * ```ts\n * const slice = source.slice(80, 100)\n * slice.lineAt(80) === source.lineAt(80)\n * ```\n *\n * @param fromLine\n * @param toLine\n * @returns\n */\n slice(fromLine: number, toLine: number): SourceFileSlice {\n const slicedLines = this.lines.slice(fromLine - 1, toLine).join('\\n')\n return new SourceFileSlice(fromLine, dedent(slicedLines).split('\\n'))\n }\n\n /**\n * Returns new `SourceFileLines` object, where code inside of it have been\n * highlighted as typescript\n * @returns\n */\n highlight(): SourceFileSlice {\n const highlighted = highlightTS(this.toString())\n return new SourceFileSlice(this.firstLineNumber, highlighted.split('\\n'))\n }\n\n toString(): string {\n return this.lines.join('\\n')\n }\n}\n", "import { Prism, Token } from './prism'\nimport type { SyntaxDefinition } from './types'\n\nexport function highlightTS(str: string) {\n return highlight(str, Prism.languages.javascript)\n}\n\nfunction highlight(str: string, grammar: SyntaxDefinition) {\n const tokens = Prism.tokenize(str, grammar)\n return tokens.map((t) => Token.stringify(t)).join('')\n}\n", "import { theme } from './theme'\n\nconst identity = (str: string) => str\n\n/* eslint-disable */\n\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nconst _self: any = {}\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\n// Private helper vars\nlet uniqueId = 0\n\nexport var Prism: any = {\n manual: _self.Prism && _self.Prism.manual,\n disableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n util: {\n encode: function (tokens: any) {\n if (tokens instanceof Token) {\n const anyTokens: any = tokens\n return new Token(anyTokens.type, Prism.util.encode(anyTokens.content), anyTokens.alias)\n } else if (Array.isArray(tokens)) {\n return tokens.map(Prism.util.encode)\n } else {\n return tokens\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/\\u00a0/g, ' ')\n }\n },\n\n type: function (o) {\n return Object.prototype.toString.call(o).slice(8, -1)\n },\n\n objId: function (obj) {\n if (!obj['__id']) {\n Object.defineProperty(obj, '__id', { value: ++uniqueId })\n }\n return obj['__id']\n },\n\n // Deep clone a language definition (e.g. to extend it)\n clone: function deepClone(o, visited?: any) {\n let clone,\n id,\n type = Prism.util.type(o)\n visited = visited || {}\n\n switch (type) {\n case 'Object':\n id = Prism.util.objId(o)\n if (visited[id]) {\n return visited[id]\n }\n clone = {}\n visited[id] = clone\n\n for (const key in o) {\n if (o.hasOwnProperty(key)) {\n clone[key] = deepClone(o[key], visited)\n }\n }\n\n return clone\n\n case 'Array':\n id = Prism.util.objId(o)\n if (visited[id]) {\n return visited[id]\n }\n clone = []\n visited[id] = clone\n\n o.forEach(function (v, i) {\n clone[i] = deepClone(v, visited)\n })\n\n return clone\n\n default:\n return o\n }\n },\n },\n\n languages: {\n extend: function (id, redef) {\n const lang = Prism.util.clone(Prism.languages[id])\n\n for (const key in redef) {\n lang[key] = redef[key]\n }\n\n return lang\n },\n\n /**\n * Insert a token before another token in a language literal\n * As this needs to recreate the object (we cannot actually insert before keys in object literals),\n * we cannot just provide an object, we need an object and a key.\n * @param inside The key (or language id) of the parent\n * @param before The key to insert before.\n * @param insert Object with the key/value pairs to insert\n * @param root The object that contains `inside`. If equal to Prism.languages, it can be omitted.\n */\n insertBefore: function (inside, before, insert, root) {\n root = root || Prism.languages\n const grammar = root[inside]\n const ret = {}\n\n for (const token in grammar) {\n if (grammar.hasOwnProperty(token)) {\n if (token == before) {\n for (const newToken in insert) {\n if (insert.hasOwnProperty(newToken)) {\n ret[newToken] = insert[newToken]\n }\n }\n }\n\n // Do not insert token which also occur in insert. See #1525\n if (!insert.hasOwnProperty(token)) {\n ret[token] = grammar[token]\n }\n }\n }\n\n const old = root[inside]\n root[inside] = ret\n\n // Update references in other language definitions\n Prism.languages.DFS(Prism.languages, function (this: any, key, value) {\n if (value === old && key != inside) {\n this[key] = ret\n }\n })\n\n return ret\n },\n\n // Traverse a language definition with Depth First Search\n DFS: function DFS(o, callback, type?: any, visited?: any) {\n visited = visited || {}\n\n const objId = Prism.util.objId\n\n for (const i in o) {\n if (o.hasOwnProperty(i)) {\n callback.call(o, i, o[i], type || i)\n\n const property = o[i],\n propertyType = Prism.util.type(property)\n\n if (propertyType === 'Object' && !visited[objId(property)]) {\n visited[objId(property)] = true\n DFS(property, callback, null, visited)\n } else if (propertyType === 'Array' && !visited[objId(property)]) {\n visited[objId(property)] = true\n DFS(property, callback, i, visited)\n }\n }\n }\n },\n },\n plugins: {},\n\n highlight: function (text, grammar, language) {\n const env: any = {\n code: text,\n grammar: grammar,\n language: language,\n }\n Prism.hooks.run('before-tokenize', env)\n env.tokens = Prism.tokenize(env.code, env.grammar)\n Prism.hooks.run('after-tokenize', env)\n return Token.stringify(Prism.util.encode(env.tokens), env.language)\n },\n\n matchGrammar: function (text, strarr, grammar, index, startPos, oneshot, target?: any) {\n for (const token in grammar) {\n if (!grammar.hasOwnProperty(token) || !grammar[token]) {\n continue\n }\n\n if (token == target) {\n return\n }\n\n let patterns = grammar[token]\n patterns = Prism.util.type(patterns) === 'Array' ? patterns : [patterns]\n\n for (let j = 0; j < patterns.length; ++j) {\n let pattern = patterns[j],\n inside = pattern.inside,\n lookbehind = !!pattern.lookbehind,\n greedy = !!pattern.greedy,\n lookbehindLength = 0,\n alias = pattern.alias\n\n if (greedy && !pattern.pattern.global) {\n // Without the global flag, lastIndex won't work\n const flags = pattern.pattern.toString().match(/[imuy]*$/)[0]\n pattern.pattern = RegExp(pattern.pattern.source, flags + 'g')\n }\n\n pattern = pattern.pattern || pattern\n\n // Don\u2019t cache length as it changes during the loop\n for (let i = index, pos = startPos; i < strarr.length; pos += strarr[i].length, ++i) {\n let str = strarr[i]\n\n if (strarr.length > text.length) {\n // Something went terribly wrong, ABORT, ABORT!\n return\n }\n\n if (str instanceof Token) {\n continue\n }\n\n if (greedy && i != strarr.length - 1) {\n pattern.lastIndex = pos\n var match = pattern.exec(text)\n if (!match) {\n break\n }\n\n var from = match.index + (lookbehind ? match[1].length : 0),\n to = match.index + match[0].length,\n k = i,\n p = pos\n\n for (let len = strarr.length; k < len && (p < to || (!strarr[k].type && !strarr[k - 1].greedy)); ++k) {\n p += strarr[k].length\n // Move the index i to the element in strarr that is closest to from\n if (from >= p) {\n ++i\n pos = p\n }\n }\n\n // If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n if (strarr[i] instanceof Token) {\n continue\n }\n\n // Number of tokens to delete and replace with the new match\n delNum = k - i\n str = text.slice(pos, p)\n match.index -= pos\n } else {\n pattern.lastIndex = 0\n\n var match = pattern.exec(str),\n delNum = 1\n }\n\n if (!match) {\n if (oneshot) {\n break\n }\n\n continue\n }\n\n if (lookbehind) {\n lookbehindLength = match[1] ? match[1].length : 0\n }\n\n var from = match.index + lookbehindLength,\n match = match[0].slice(lookbehindLength),\n to = from + match.length,\n before = str.slice(0, from),\n after = str.slice(to)\n\n const args: any = [i, delNum]\n\n if (before) {\n ++i\n pos += before.length\n args.push(before)\n }\n\n const wrapped = new Token(token, inside ? Prism.tokenize(match, inside) : match, alias, match, greedy)\n\n args.push(wrapped)\n\n if (after) {\n args.push(after)\n }\n\n Array.prototype.splice.apply(strarr, args)\n\n if (delNum != 1) Prism.matchGrammar(text, strarr, grammar, i, pos, true, token)\n\n if (oneshot) break\n }\n }\n }\n },\n\n tokenize: function (text, grammar) {\n const strarr = [text]\n\n const rest = grammar.rest\n\n if (rest) {\n for (const token in rest) {\n grammar[token] = rest[token]\n }\n\n delete grammar.rest\n }\n\n Prism.matchGrammar(text, strarr, grammar, 0, 0, false)\n\n return strarr\n },\n\n hooks: {\n all: {},\n\n add: function (name, callback) {\n const hooks = Prism.hooks.all\n\n hooks[name] = hooks[name] || []\n\n hooks[name].push(callback)\n },\n\n run: function (name, env) {\n const callbacks = Prism.hooks.all[name]\n\n if (!callbacks || !callbacks.length) {\n return\n }\n\n for (var i = 0, callback; (callback = callbacks[i++]); ) {\n callback(env)\n }\n },\n },\n\n Token: Token,\n}\n\nPrism.languages.clike = {\n comment: [\n {\n pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n lookbehind: true,\n },\n {\n pattern: /(^|[^\\\\:])\\/\\/.*/,\n lookbehind: true,\n greedy: true,\n },\n ],\n string: {\n pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true,\n },\n 'class-name': {\n pattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[\\w.\\\\]+/i,\n lookbehind: true,\n inside: {\n punctuation: /[.\\\\]/,\n },\n },\n keyword: /\\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n boolean: /\\b(?:true|false)\\b/,\n function: /\\w+(?=\\()/,\n number: /\\b0x[\\da-f]+\\b|(?:\\b\\d+\\.?\\d*|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n operator: /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n punctuation: /[{}[\\];(),.:]/,\n}\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n 'class-name': [\n Prism.languages.clike['class-name'],\n {\n pattern: /(^|[^$\\w\\xA0-\\uFFFF])[_$A-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\.(?:prototype|constructor))/,\n lookbehind: true,\n },\n ],\n keyword: [\n {\n pattern: /((?:^|})\\s*)(?:catch|finally)\\b/,\n lookbehind: true,\n },\n {\n pattern:\n /(^|[^.])\\b(?:as|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n lookbehind: true,\n },\n ],\n number:\n /\\b(?:(?:0[xX](?:[\\dA-Fa-f](?:_[\\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\\d(?:_\\d)?)+n|NaN|Infinity)\\b|(?:\\b(?:\\d(?:_\\d)?)+\\.?(?:\\d(?:_\\d)?)*|\\B\\.(?:\\d(?:_\\d)?)+)(?:[Ee][+-]?(?:\\d(?:_\\d)?)+)?/,\n // Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n function: /[_$a-zA-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n operator: /-[-=]?|\\+[+=]?|!=?=?|<<?=?|>>?>?=?|=(?:==?|>)?|&[&=]?|\\|[|=]?|\\*\\*?=?|\\/=?|~|\\^=?|%=?|\\?|\\.{3}/,\n})\n\nPrism.languages.javascript['class-name'][0].pattern =\n /(\\b(?:class|interface|extends|implements|instanceof|new)\\s+)[\\w.\\\\]+/\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n regex: {\n pattern:\n /((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s])\\s*)\\/(\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[gimyus]{0,6}(?=\\s*($|[\\r\\n,.;})\\]]))/,\n lookbehind: true,\n greedy: true,\n },\n // This must be declared before keyword because we use \"function\" inside the look-forward\n 'function-variable': {\n pattern:\n /[_$a-zA-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|[_$a-zA-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*)\\s*=>))/,\n alias: 'function',\n },\n parameter: [\n {\n pattern: /(function(?:\\s+[_$A-Za-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*)?\\s*\\(\\s*)(?!\\s)(?:[^()]|\\([^()]*\\))+?(?=\\s*\\))/,\n lookbehind: true,\n inside: Prism.languages.javascript,\n },\n {\n pattern: /[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*=>)/i,\n inside: Prism.languages.javascript,\n },\n {\n pattern: /(\\(\\s*)(?!\\s)(?:[^()]|\\([^()]*\\))+?(?=\\s*\\)\\s*=>)/,\n lookbehind: true,\n inside: Prism.languages.javascript,\n },\n {\n pattern:\n /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:[_$A-Za-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*\\s*)\\(\\s*)(?!\\s)(?:[^()]|\\([^()]*\\))+?(?=\\s*\\)\\s*\\{)/,\n lookbehind: true,\n inside: Prism.languages.javascript,\n },\n ],\n constant: /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/,\n})\n\nif (Prism.languages.markup) {\n Prism.languages.markup.tag.addInlined('script', 'javascript')\n}\n\nPrism.languages.js = Prism.languages.javascript\n\nPrism.languages.typescript = Prism.languages.extend('javascript', {\n // From JavaScript Prism keyword list and TypeScript language spec: https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#221-reserved-words\n keyword:\n /\\b(?:abstract|as|async|await|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|is|keyof|let|module|namespace|new|null|of|package|private|protected|public|readonly|return|require|set|static|super|switch|this|throw|try|type|typeof|var|void|while|with|yield)\\b/,\n builtin: /\\b(?:string|Function|any|number|boolean|Array|symbol|console|Promise|unknown|never)\\b/,\n})\n\nPrism.languages.ts = Prism.languages.typescript\n\nexport function Token(this: any, type, content, alias, matchedStr?: any, greedy?: any) {\n this.type = type\n this.content = content\n this.alias = alias\n // Copy of the full string this token was created from\n this.length = (matchedStr || '').length | 0\n this.greedy = !!greedy\n}\n\nToken.stringify = function (o, language?: any) {\n if (typeof o == 'string') {\n return o\n }\n\n if (Array.isArray(o)) {\n return o\n .map(function (element) {\n return Token.stringify(element, language)\n })\n .join('')\n }\n\n return getColorForSyntaxKind(o.type)(o.content)\n}\n\nfunction getColorForSyntaxKind(syntaxKind: string) {\n return theme[syntaxKind] || identity\n}\n", "import { blue, bold, cyan, gray, green, yellow } from 'kleur/colors'\n\nimport type { Theme } from './types'\n\nexport const theme: Theme = {\n keyword: cyan,\n entity: cyan,\n value: (s) => bold(blue(s)),\n punctuation: blue,\n directive: cyan,\n function: cyan,\n variable: (s) => bold(blue(s)),\n string: (s) => bold(green(s)),\n boolean: yellow,\n number: cyan,\n comment: gray,\n}\n", "import strip from 'strip-indent'\n\nexport function dedent(str: string): string {\n return strip(str)\n}\n", "import { uncapitalize } from '@prisma/client-common'\nimport levenshtein from 'js-levenshtein'\n\nimport {\n ArgumentDescription,\n EmptySelectionError,\n InputTypeDescription,\n InvalidArgumentTypeError,\n InvalidArgumentValueError,\n OutputTypeDescription,\n RequiredArgumentMissingError,\n SomeFieldsMissingError,\n TooManyFieldsGivenError,\n UnknownArgumentError,\n UnknownInputFieldError,\n UnknownSelectionFieldError,\n ValueTooLargeError,\n} from '../engines'\nimport { GlobalOmitOptions } from '../jsonProtocol/serializeJsonQuery'\nimport {\n IncludeOnScalarError,\n InvalidSelectionValueError,\n MutuallyExclusiveFieldsError,\n ValidationError,\n} from '../types/ValidationError'\nimport { applyUnionError } from './applyUnionError'\nimport { ArgumentsRenderingTree } from './ArgumentsRenderingTree'\nimport { Colors } from './base'\nimport { ObjectField } from './ObjectField'\nimport { ObjectFieldSuggestion } from './ObjectFieldSuggestion'\nimport { ObjectValue } from './ObjectValue'\nimport { ScalarValue } from './ScalarValue'\nimport { SuggestionObjectValue } from './SuggestionObjectValue'\n\n/**\n * Given the validation error and arguments rendering tree, applies corresponding\n * formatting to an error tree and adds all relevant messages.\n *\n * @param error\n * @param args\n */\nexport function applyValidationError(\n error: ValidationError,\n args: ArgumentsRenderingTree,\n globalOmit?: GlobalOmitOptions,\n): void {\n switch (error.kind) {\n case 'MutuallyExclusiveFields':\n applyMutuallyExclusiveFieldsError(error, args)\n break\n case 'IncludeOnScalar':\n applyIncludeOnScalarError(error, args)\n break\n case 'EmptySelection':\n applyEmptySelectionError(error, args, globalOmit)\n break\n case 'UnknownSelectionField':\n applyUnknownSelectionFieldError(error, args)\n break\n case 'InvalidSelectionValue':\n applyInvalidSelectionValueError(error, args)\n break\n case 'UnknownArgument':\n applyUnknownArgumentError(error, args)\n break\n case 'UnknownInputField':\n applyUnknownInputFieldError(error, args)\n break\n case 'RequiredArgumentMissing':\n applyRequiredArgumentMissingError(error, args)\n break\n case 'InvalidArgumentType':\n applyInvalidArgumentTypeError(error, args)\n break\n case 'InvalidArgumentValue':\n applyInvalidArgumentValueError(error, args)\n break\n case 'ValueTooLarge':\n applyValueTooLargeError(error, args)\n break\n case 'SomeFieldsMissing':\n applySomeFieldsMissingError(error, args)\n break\n case 'TooManyFieldsGiven':\n applyTooManyFieldsGivenError(error, args)\n break\n case 'Union':\n applyUnionError(error, args, globalOmit)\n break\n default:\n throw new Error('not implemented: ' + error.kind)\n }\n}\n\nfunction applyMutuallyExclusiveFieldsError(error: MutuallyExclusiveFieldsError, argsTree: ArgumentsRenderingTree) {\n const object = argsTree.arguments.getDeepSubSelectionValue(error.selectionPath)?.asObject()\n if (object) {\n object.getField(error.firstField)?.markAsError()\n object.getField(error.secondField)?.markAsError()\n }\n\n argsTree.addErrorMessage(\n (colors) =>\n `Please ${colors.bold('either')} use ${colors.green(`\\`${error.firstField}\\``)} or ${colors.green(\n `\\`${error.secondField}\\``,\n )}, but ${colors.red('not both')} at the same time.`,\n )\n}\n\nfunction applyIncludeOnScalarError(error: IncludeOnScalarError, argsTree: ArgumentsRenderingTree) {\n const [selectionPath, field] = splitPath(error.selectionPath)\n const outputType = error.outputType\n\n const object = argsTree.arguments.getDeepSelectionParent(selectionPath)?.value\n if (object) {\n object.getField(field)?.markAsError()\n\n if (outputType) {\n for (const field of outputType.fields) {\n if (field.isRelation) {\n object.addSuggestion(new ObjectFieldSuggestion(field.name, 'true'))\n }\n }\n }\n }\n\n argsTree.addErrorMessage((colors) => {\n let msg = `Invalid scalar field ${colors.red(`\\`${field}\\``)} for ${colors.bold('include')} statement`\n if (outputType) {\n msg += ` on model ${colors.bold(outputType.name)}. ${availableOptionsMessage(colors)}`\n } else {\n msg += '.'\n }\n\n msg += `\\nNote that ${colors.bold('include')} statements only accept relation fields.`\n return msg\n })\n}\n\nfunction applyEmptySelectionError(\n error: EmptySelectionError,\n argsTree: ArgumentsRenderingTree,\n globalOmit?: GlobalOmitOptions,\n) {\n const subSelection = argsTree.arguments.getDeepSubSelectionValue(error.selectionPath)?.asObject()\n if (subSelection) {\n const omit = subSelection.getField('omit')?.value.asObject()\n if (omit) {\n applyEmptySelectionErrorOmit(error, argsTree, omit)\n return\n }\n if (subSelection.hasField('select')) {\n applyEmptySelectionErrorSelect(error, argsTree)\n return\n }\n }\n\n if (globalOmit?.[uncapitalize(error.outputType.name)]) {\n applyEmptySelectionErrorGlobalOmit(error, argsTree)\n return\n }\n\n // should never happen, but in case it does\n argsTree.addErrorMessage(() => `Unknown field at \"${error.selectionPath.join('.')} selection\"`)\n}\n\n// case for `EmptySelectionError`, triggered by excessive omit\nfunction applyEmptySelectionErrorOmit(\n error: EmptySelectionError,\n argsTree: ArgumentsRenderingTree,\n omitValue: ObjectValue,\n) {\n omitValue.removeAllFields()\n for (const field of error.outputType.fields) {\n omitValue.addSuggestion(new ObjectFieldSuggestion(field.name, 'false'))\n }\n\n argsTree.addErrorMessage((colors) => {\n return `The ${colors.red('omit')} statement includes every field of the model ${colors.bold(\n error.outputType.name,\n )}. At least one field must be included in the result`\n })\n}\n\n// case for `EmptySelectionError`, triggered by empty/falsy `select`\nfunction applyEmptySelectionErrorSelect(error: EmptySelectionError, argsTree: ArgumentsRenderingTree) {\n const outputType = error.outputType\n const selection = argsTree.arguments.getDeepSelectionParent(error.selectionPath)?.value\n const isEmpty = selection?.isEmpty() ?? false\n\n if (selection) {\n // If selection has fields and we get EmptySelection error, it means all fields within the\n // selection are false. We have 2 possible ways to handle suggestions here:\n //\n // 1. Suggest only the fields, not present inside of the selection. Example:\n //\n // {\n // select: {\n // id: false\n // posts: false,\n // ? name?: true\n // ? email?: true\n // }\n // }\n // There are couple of possible problems here. First, we are assuming that user needs to\n // add new field to the selection, rather than change one of the existing ones to true.\n // Second, we might end up in a situation where all fields are already used in selection and we have nothing left to suggest.\n //\n // 2.Completely ignore users input and suggest all the fields. Example rendering:\n // {\n // select: {\n // ? id?: true\n // ? posts?: true,\n // ? name?: true\n // ? email?: true\n // }\n // }\n //\n // So we will be suggesting to either change one of the fields to true, or add a new one which would be true.\n // This is the approach we are taking and in order to it, we need to remove all the fields from selection. Code\n // below will then add them back as a suggestion.\n selection.removeAllFields()\n addSelectionSuggestions(selection, outputType)\n }\n\n argsTree.addErrorMessage((colors) => {\n if (isEmpty) {\n return `The ${colors.red('`select`')} statement for type ${colors.bold(\n outputType.name,\n )} must not be empty. ${availableOptionsMessage(colors)}`\n }\n return `The ${colors.red('`select`')} statement for type ${colors.bold(outputType.name)} needs ${colors.bold(\n 'at least one truthy value',\n )}.`\n })\n}\n\n// case for `EmptySelectionError`, triggered by excessive global omit\nfunction applyEmptySelectionErrorGlobalOmit(error: EmptySelectionError, argsTree: ArgumentsRenderingTree) {\n const suggestedOmitConfig = new SuggestionObjectValue()\n for (const field of error.outputType.fields) {\n if (!field.isRelation) {\n suggestedOmitConfig.addField(field.name, 'false')\n }\n }\n\n const omitSuggestion = new ObjectFieldSuggestion('omit', suggestedOmitConfig).makeRequired()\n\n if (error.selectionPath.length === 0) {\n argsTree.arguments.addSuggestion(omitSuggestion)\n } else {\n const [parentPath, fieldName] = splitPath(error.selectionPath)\n const parent = argsTree.arguments.getDeepSelectionParent(parentPath)?.value.asObject()\n const field = parent?.getField(fieldName)\n if (field) {\n const fieldValue = field?.value.asObject() ?? new ObjectValue()\n fieldValue.addSuggestion(omitSuggestion)\n field.value = fieldValue\n }\n }\n\n // neither select, nor omit are used, but global omit global omit configuration for the model exists\n argsTree.addErrorMessage((colors) => {\n return `The global ${colors.red('omit')} configuration excludes every field of the model ${colors.bold(\n error.outputType.name,\n )}. At least one field must be included in the result`\n })\n}\n\nfunction applyUnknownSelectionFieldError(error: UnknownSelectionFieldError, argsTree: ArgumentsRenderingTree) {\n const locateResult = locateSelectionField(error.selectionPath, argsTree)\n if (locateResult.parentKind !== 'unknown') {\n locateResult.field.markAsError()\n const parent = locateResult.parent\n switch (locateResult.parentKind) {\n case 'select':\n addSelectionSuggestions(parent, error.outputType)\n break\n case 'include':\n addInclusionSuggestions(parent, error.outputType)\n break\n case 'omit':\n addOmissionSuggestions(parent, error.outputType)\n break\n }\n }\n argsTree.addErrorMessage((colors) => {\n const parts = [`Unknown field ${colors.red(`\\`${locateResult.fieldName}\\``)}`]\n if (locateResult.parentKind !== 'unknown') {\n parts.push(`for ${colors.bold(locateResult.parentKind)} statement`)\n }\n parts.push(`on model ${colors.bold(`\\`${error.outputType.name}\\``)}.`)\n parts.push(availableOptionsMessage(colors))\n return parts.join(' ')\n })\n}\n\nfunction applyInvalidSelectionValueError(error: InvalidSelectionValueError, argsTree: ArgumentsRenderingTree) {\n const locateResult = locateSelectionField(error.selectionPath, argsTree)\n if (locateResult.parentKind !== 'unknown') {\n locateResult.field.value.markAsError()\n }\n\n argsTree.addErrorMessage((colors) => {\n return `Invalid value for selection field \\`${colors.red(locateResult.fieldName)}\\`: ${error.underlyingError}`\n })\n}\n\nfunction applyUnknownArgumentError(error: UnknownArgumentError, argsTree: ArgumentsRenderingTree) {\n const argName = error.argumentPath[0]\n const selection = argsTree.arguments.getDeepSubSelectionValue(error.selectionPath)?.asObject()\n\n if (selection) {\n selection.getField(argName)?.markAsError()\n addArgumentsSuggestions(selection, error.arguments)\n }\n\n argsTree.addErrorMessage((colors) =>\n unknownArgumentMessage(\n colors,\n argName,\n error.arguments.map((arg) => arg.name),\n ),\n )\n}\n\nfunction applyUnknownInputFieldError(error: UnknownInputFieldError, argsTree: ArgumentsRenderingTree) {\n const [argParentPath, argName] = splitPath(error.argumentPath)\n const selection = argsTree.arguments.getDeepSubSelectionValue(error.selectionPath)?.asObject()\n\n if (selection) {\n selection.getDeepField(error.argumentPath)?.markAsError()\n const argParent = selection.getDeepFieldValue(argParentPath)?.asObject()\n if (argParent) {\n addInputSuggestions(argParent, error.inputType)\n }\n }\n\n argsTree.addErrorMessage((colors) =>\n unknownArgumentMessage(\n colors,\n argName,\n error.inputType.fields.map((f) => f.name),\n ),\n )\n}\n\nfunction unknownArgumentMessage(colors: Colors, argName: string, options: string[]) {\n const parts = [`Unknown argument \\`${colors.red(argName)}\\`.`]\n const suggestion = getSuggestion(argName, options)\n\n if (suggestion) {\n parts.push(`Did you mean \\`${colors.green(suggestion)}\\`?`)\n }\n\n if (options.length > 0) {\n parts.push(availableOptionsMessage(colors))\n }\n\n return parts.join(' ')\n}\n\nfunction applyRequiredArgumentMissingError(error: RequiredArgumentMissingError, args: ArgumentsRenderingTree) {\n let existingField: ObjectField | undefined = undefined\n\n args.addErrorMessage((colors) => {\n if (existingField?.value instanceof ScalarValue && existingField.value.text === 'null') {\n return `Argument \\`${colors.green(argumentName)}\\` must not be ${colors.red('null')}.`\n }\n return `Argument \\`${colors.green(argumentName)}\\` is missing.`\n })\n const selection = args.arguments.getDeepSubSelectionValue(error.selectionPath)?.asObject()\n if (!selection) {\n return\n }\n\n const [argParent, argumentName] = splitPath(error.argumentPath)\n const objectSuggestion = new SuggestionObjectValue()\n const parent = selection.getDeepFieldValue(argParent)?.asObject()\n if (!parent) {\n return\n }\n\n existingField = parent.getField(argumentName)\n if (existingField) {\n parent.removeField(argumentName)\n }\n\n if (error.inputTypes.length === 1 && error.inputTypes[0].kind === 'object') {\n for (const field of error.inputTypes[0].fields) {\n objectSuggestion.addField(field.name, field.typeNames.join(' | '))\n }\n\n parent.addSuggestion(new ObjectFieldSuggestion(argumentName, objectSuggestion).makeRequired())\n } else {\n const typeName = error.inputTypes.map(getInputTypeName).join(' | ')\n parent.addSuggestion(new ObjectFieldSuggestion(argumentName, typeName).makeRequired())\n }\n\n if (error.dependentArgumentPath) {\n selection.getDeepField(error.dependentArgumentPath)?.markAsError()\n const [, dependentArgumentName] = splitPath(error.dependentArgumentPath)\n args.addErrorMessage((colors) => {\n return `Argument \\`${colors.green(argumentName)}\\` is required because argument \\`${colors.green(\n dependentArgumentName,\n )}\\` was provided.`\n })\n }\n}\n\nfunction getInputTypeName(description: InputTypeDescription) {\n if (description.kind === 'list') {\n return `${getInputTypeName(description.elementType)}[]`\n }\n return description.name\n}\n\nfunction applyInvalidArgumentTypeError(error: InvalidArgumentTypeError, args: ArgumentsRenderingTree) {\n const argName = error.argument.name\n const selection = args.arguments.getDeepSubSelectionValue(error.selectionPath)?.asObject()\n if (selection) {\n selection.getDeepFieldValue(error.argumentPath)?.markAsError()\n }\n\n args.addErrorMessage((colors) => {\n const expected = joinWithPreposition(\n 'or',\n error.argument.typeNames.map((type) => colors.green(type)),\n )\n // TODO: print value\n return `Argument \\`${colors.bold(argName)}\\`: Invalid value provided. Expected ${expected}, provided ${colors.red(\n error.inferredType,\n )}.`\n })\n}\n\nfunction applyInvalidArgumentValueError(error: InvalidArgumentValueError, args: ArgumentsRenderingTree) {\n const argName = error.argument.name\n const selection = args.arguments.getDeepSubSelectionValue(error.selectionPath)?.asObject()\n if (selection) {\n selection.getDeepFieldValue(error.argumentPath)?.markAsError()\n }\n\n args.addErrorMessage((colors) => {\n const parts = [`Invalid value for argument \\`${colors.bold(argName)}\\``]\n if (error.underlyingError) {\n parts.push(`: ${error.underlyingError}`)\n }\n parts.push('.')\n if (error.argument.typeNames.length > 0) {\n const expected = joinWithPreposition(\n 'or',\n error.argument.typeNames.map((type) => colors.green(type)),\n )\n parts.push(` Expected ${expected}.`)\n }\n return parts.join('')\n })\n}\n\nfunction applyValueTooLargeError(error: ValueTooLargeError, args: ArgumentsRenderingTree) {\n const argName = error.argument.name\n const selection = args.arguments.getDeepSubSelectionValue(error.selectionPath)?.asObject()\n let printedValue: string | undefined\n if (selection) {\n const field = selection.getDeepField(error.argumentPath)\n const value = field?.value\n value?.markAsError()\n if (value instanceof ScalarValue) {\n printedValue = value.text\n }\n }\n\n args.addErrorMessage((colors) => {\n const parts: string[] = ['Unable to fit value']\n if (printedValue) {\n parts.push(colors.red(printedValue))\n }\n parts.push(`into a 64-bit signed integer for field \\`${colors.bold(argName)}\\``)\n\n return parts.join(' ')\n })\n}\n\nfunction applySomeFieldsMissingError(error: SomeFieldsMissingError, args: ArgumentsRenderingTree) {\n const argumentName = error.argumentPath[error.argumentPath.length - 1]\n const selection = args.arguments.getDeepSubSelectionValue(error.selectionPath)?.asObject()\n if (selection) {\n const argument = selection.getDeepFieldValue(error.argumentPath)?.asObject()\n if (argument) {\n addInputSuggestions(argument, error.inputType)\n }\n }\n\n args.addErrorMessage((colors) => {\n const parts = [`Argument \\`${colors.bold(argumentName)}\\` of type ${colors.bold(error.inputType.name)} needs`]\n if (error.constraints.minFieldCount === 1) {\n if (error.constraints.requiredFields) {\n parts.push(\n `${colors.green('at least one of')} ${joinWithPreposition(\n 'or',\n error.constraints.requiredFields.map((f) => `\\`${colors.bold(f)}\\``),\n )} arguments.`,\n )\n } else {\n parts.push(`${colors.green('at least one')} argument.`)\n }\n } else {\n parts.push(`${colors.green(`at least ${error.constraints.minFieldCount}`)} arguments.`)\n }\n parts.push(availableOptionsMessage(colors))\n return parts.join(' ')\n })\n}\n\nfunction applyTooManyFieldsGivenError(error: TooManyFieldsGivenError, args: ArgumentsRenderingTree) {\n const argumentName = error.argumentPath[error.argumentPath.length - 1]\n const selection = args.arguments.getDeepSubSelectionValue(error.selectionPath)?.asObject()\n let providedArguments: string[] = []\n if (selection) {\n const argument = selection.getDeepFieldValue(error.argumentPath)?.asObject()\n if (argument) {\n argument.markAsError()\n providedArguments = Object.keys(argument.getFields())\n }\n }\n\n args.addErrorMessage((colors) => {\n const parts = [`Argument \\`${colors.bold(argumentName)}\\` of type ${colors.bold(error.inputType.name)} needs`]\n if (error.constraints.minFieldCount === 1 && error.constraints.maxFieldCount == 1) {\n parts.push(`${colors.green('exactly one')} argument,`)\n } else if (error.constraints.maxFieldCount == 1) {\n parts.push(`${colors.green('at most one')} argument,`)\n } else {\n parts.push(`${colors.green(`at most ${error.constraints.maxFieldCount}`)} arguments,`)\n }\n\n parts.push(\n `but you provided ${joinWithPreposition(\n 'and',\n providedArguments.map((arg) => colors.red(arg)),\n )}. Please choose`,\n )\n\n if (error.constraints.maxFieldCount === 1) {\n parts.push('one.')\n } else {\n parts.push(`${error.constraints.maxFieldCount}.`)\n }\n\n return parts.join(' ')\n })\n}\n\nfunction addSelectionSuggestions(selection: ObjectValue, outputType: OutputTypeDescription) {\n for (const field of outputType.fields) {\n if (!selection.hasField(field.name)) {\n selection.addSuggestion(new ObjectFieldSuggestion(field.name, 'true'))\n }\n }\n}\n\nfunction addInclusionSuggestions(selection: ObjectValue, outputType: OutputTypeDescription) {\n for (const field of outputType.fields) {\n if (field.isRelation && !selection.hasField(field.name)) {\n selection.addSuggestion(new ObjectFieldSuggestion(field.name, 'true'))\n }\n }\n}\n\nfunction addOmissionSuggestions(selection: ObjectValue, outputType: OutputTypeDescription) {\n for (const field of outputType.fields) {\n if (!selection.hasField(field.name) && !field.isRelation) {\n selection.addSuggestion(new ObjectFieldSuggestion(field.name, 'true'))\n }\n }\n}\n\nfunction addArgumentsSuggestions(argumentsParent: ObjectValue, args: ArgumentDescription[]) {\n for (const arg of args) {\n if (!argumentsParent.hasField(arg.name)) {\n argumentsParent.addSuggestion(new ObjectFieldSuggestion(arg.name, arg.typeNames.join(' | ')))\n }\n }\n}\n\nfunction locateSelectionField(selectionPath: string[], argsTree: ArgumentsRenderingTree) {\n const [parentPath, fieldName] = splitPath(selectionPath)\n\n const subSelection = argsTree.arguments.getDeepSubSelectionValue(parentPath)?.asObject()\n if (!subSelection) {\n return { parentKind: 'unknown' as const, fieldName }\n }\n const select = subSelection.getFieldValue('select')?.asObject()\n const include = subSelection.getFieldValue('include')?.asObject()\n const omit = subSelection.getFieldValue('omit')?.asObject()\n let field = select?.getField(fieldName)\n if (select && field) {\n return { parentKind: 'select' as const, parent: select, field, fieldName }\n }\n field = include?.getField(fieldName)\n if (include && field) {\n return { parentKind: 'include' as const, field, parent: include, fieldName }\n }\n\n field = omit?.getField(fieldName)\n if (omit && field) {\n return { parentKind: 'omit' as const, field, parent: omit, fieldName }\n }\n return { parentKind: 'unknown' as const, fieldName }\n}\n\nfunction addInputSuggestions(parent: ObjectValue, inputType: InputTypeDescription) {\n if (inputType.kind !== 'object') {\n return\n }\n\n for (const field of inputType.fields) {\n if (!parent.hasField(field.name)) {\n parent.addSuggestion(new ObjectFieldSuggestion(field.name, field.typeNames.join(' | ')))\n }\n }\n}\n\nfunction splitPath(path: string[]): [parentPath: string[], fieldName: string] {\n const selectionPath = [...path]\n const fieldName = selectionPath.pop()\n if (!fieldName) {\n throw new Error('unexpected empty path')\n }\n return [selectionPath, fieldName]\n}\n\nfunction availableOptionsMessage({ green, enabled }: Colors) {\n return `Available options are ` + (enabled ? `listed in ${green('green')}` : `marked with ?`) + '.'\n}\n\nfunction joinWithPreposition(preposition: 'and' | 'or', items: string[]): string {\n if (items.length === 1) {\n return items[0]\n }\n const itemsCopy = [...items]\n const lastItem = itemsCopy.pop()\n return `${itemsCopy.join(', ')} ${preposition} ${lastItem}`\n}\n\n/**\n * Options with edit distance above this value will never be suggested\n */\nconst MAX_EDIT_DISTANCE = 3\n\nfunction getSuggestion(str: string, options: string[]): string | undefined {\n let minDistance = Infinity\n let result: string | undefined\n\n for (const option of options) {\n const editDistance = levenshtein(str, option)\n if (editDistance > MAX_EDIT_DISTANCE) {\n continue\n }\n if (editDistance < minDistance) {\n minDistance = editDistance\n result = option\n }\n }\n return result\n}\n", "import { maxWithComparator } from '@prisma/internals'\n\nimport { EngineValidationError, InvalidArgumentTypeError, UnionError } from '../engines'\nimport { GlobalOmitOptions } from '../jsonProtocol/serializeJsonQuery'\nimport { applyValidationError } from './applyValidationError'\nimport { ArgumentsRenderingTree } from './ArgumentsRenderingTree'\n\ntype NonUnionError = Exclude<EngineValidationError, UnionError>\n\n/**\n * When a particular field has multiple allowed types on the schema level\n * and none of them match users input, engine returns special kind of error: UnionError.\n * This error acts as a container for individual errors for each non-matching type.\n * In that case, we need to make a guess which of the errors corresponds users intent the most.\n * General algorithm of processing them is the following:\n * - flatten all nested errors and get a single list of all possible errors\n * - merge individual InvalidArgumentType errors at the same path\n * - pick the best error based on combined argument and selection paths length and type of the error.\n *\n * For details of each step, see other comments in this file.\n * @param error\n * @param args\n */\nexport function applyUnionError(error: UnionError, args: ArgumentsRenderingTree, globalOmit?: GlobalOmitOptions) {\n const allErrors = flattenUnionError(error)\n const merged = mergeInvalidArgumentTypeErrors(allErrors)\n const bestError = getBestScoringError(merged)\n if (bestError) {\n applyValidationError(bestError, args, globalOmit)\n } else {\n args.addErrorMessage(() => 'Unknown error')\n }\n}\n\nfunction flattenUnionError(error: UnionError): NonUnionError[] {\n return error.errors.flatMap((error) => {\n if (error.kind === 'Union') {\n return flattenUnionError(error)\n }\n return [error]\n })\n}\n\n/**\n * Iterates over provided error list and merges all InvalidArgumentType\n * with matching selectionPath and argumentPath into one. For example,\n * if the list has an error, saying that `where.arg` does not match `Int`\n * and another, saying that `where.arg` does not match IntFilter, resulting\n * list will contain a single error for `where.arg` saying it does not\n * match `Int | IntFilter`\n * @param errorList\n * @returns\n */\nfunction mergeInvalidArgumentTypeErrors(errorList: NonUnionError[]) {\n const invalidArgsError = new Map<string, InvalidArgumentTypeError>()\n const result: NonUnionError[] = []\n\n for (const error of errorList) {\n if (error.kind !== 'InvalidArgumentType') {\n result.push(error)\n continue\n }\n\n const key = `${error.selectionPath.join('.')}:${error.argumentPath.join('.')}`\n const prevError = invalidArgsError.get(key)\n if (!prevError) {\n invalidArgsError.set(key, error)\n } else {\n invalidArgsError.set(key, {\n ...error,\n argument: {\n ...error.argument,\n typeNames: uniqueConcat(prevError.argument.typeNames, error.argument.typeNames),\n },\n })\n }\n }\n\n result.push(...invalidArgsError.values())\n return result\n}\n\nfunction uniqueConcat<T>(head: T[], tail: T[]): T[] {\n return [...new Set(head.concat(tail))]\n}\n\n/**\n * Function that attempts to pick the best error from the list\n * by ranking them. In most cases, highest ranking error would be the one\n * which has the longest combined \"selectionPath\" + \"argumentPath\". Justification\n * for that is that type that made it deeper into validation tree before failing\n * is probably closer to the one user actually wanted to do.\n *\n * However, if two errors are at the same depth level, we introduce additional ranking based\n * on error type. See `getErrorTypeScore` function for details\n * @param errors\n * @returns\n */\nfunction getBestScoringError(errors: NonUnionError[]) {\n return maxWithComparator(errors, (errorA, errorB) => {\n const aPathLength = getCombinedPathLength(errorA)\n const bPathLength = getCombinedPathLength(errorB)\n if (aPathLength !== bPathLength) {\n return aPathLength - bPathLength\n }\n return getErrorTypeScore(errorA) - getErrorTypeScore(errorB)\n })\n}\n\nfunction getCombinedPathLength(error: EngineValidationError) {\n let score = 0\n if (Array.isArray(error['selectionPath'])) {\n score += error['selectionPath'].length\n }\n\n if (Array.isArray(error['argumentPath'])) {\n score += error['argumentPath'].length\n }\n return score\n}\n\n/**\n * Function is invoked to determine most relevant error based on its type.\n * Specific numbers returned from this function do not really matter, it's only\n * important how they compare relatively to each other.\n *\n * Current logic is:\n * - InvalidArgumentValue/ValueTooLarge is treated as the best possible error to display\n * since when it is present we know that the field causing the error is defined on the schema\n * and provided value has correct type, it's just that value violates some other constraint.\n * - Next candidate is `InvalidArgumentType` error. We know the field user specified can exists in\n * this spot, it's just that value provided has incorrect type.\n * - All other engine-side errors follow. At that point it's difficult to say which of them is more relevant,\n * so we treat them equally. We might adjust this logic in the future.\n * - RequiredArgumentMissing is penalized because this error is often used to disambiguate\n * union types and what is required in one arm of the union might be fine to leave out in another\n * @param error\n * @returns\n */\nfunction getErrorTypeScore(error: EngineValidationError): number {\n switch (error.kind) {\n case 'InvalidArgumentValue':\n case 'ValueTooLarge':\n return 20\n case 'InvalidArgumentType':\n return 10\n case 'RequiredArgumentMissing':\n return -10\n default:\n return 0\n }\n}\n", "import { ErrorBasicBuilder, ErrorWriter } from './base'\nimport { SuggestionObjectValue } from './SuggestionObjectValue'\n\nexport class ObjectFieldSuggestion implements ErrorBasicBuilder {\n public isRequired = false\n constructor(\n readonly name: string,\n readonly value: string | SuggestionObjectValue,\n ) {}\n\n makeRequired() {\n this.isRequired = true\n return this\n }\n\n write(writer: ErrorWriter): void {\n const {\n colors: { green },\n } = writer.context\n\n writer.addMarginSymbol(green(this.isRequired ? '+' : '?'))\n writer.write(green(this.name))\n\n if (!this.isRequired) {\n writer.write(green('?'))\n }\n\n writer.write(green(`: `))\n if (typeof this.value === 'string') {\n writer.write(green(this.value))\n } else {\n writer.write(this.value)\n }\n }\n}\n", "import { INDENT_SIZE } from '@prisma/ts-builders'\n\nimport { ArrayValue } from './ArrayValue'\nimport { ErrorWriter, fieldsSeparator } from './base'\nimport { Field } from './Field'\nimport { FormattedString } from './FormattedString'\nimport { ObjectField } from './ObjectField'\nimport { ObjectFieldSuggestion } from './ObjectFieldSuggestion'\nimport { Value } from './Value'\n\ntype SelectionParent = {\n kind: 'include' | 'select'\n value: ObjectValue\n}\n\n/**\n * Class for representing object value within rendering tree. Also used for accessing\n * different fields of the object.\n *\n * Terminology used within:\n * - selection parent = either `select` or `include` property value. For example for object\n * `{ select: { posts: true }}`, selection parent is `{ posts: true }`\n * - sub selection: value of a property of selection parent. Can be deep. In that case, specified\n * path is expected to not contain either `select` or `include` values in between (the way engine reports `selectionPath`).\n * For example, for this query:\n *\n * {\n * include: {\n * posts: {\n * select: { attachments: { where: { published: true }} }\n * }\n * }\n * }\n * Value of sub selection at path [posts, attachments] is { where: { published: true }}\n */\nexport class ObjectValue extends Value {\n private fields: Record<string, ObjectField> = {}\n private suggestions: ObjectFieldSuggestion[] = []\n\n addField(field: ObjectField) {\n this.fields[field.name] = field\n }\n\n addSuggestion(suggestion: ObjectFieldSuggestion) {\n this.suggestions.push(suggestion)\n }\n\n getField(key: string): ObjectField | undefined {\n return this.fields[key]\n }\n\n getDeepField(path: string[]): Field | undefined {\n const [head, ...tail] = path\n const firstField = this.getField(head)\n if (!firstField) {\n return undefined\n }\n let field: Field = firstField\n for (const segment of tail) {\n let nextField: Field | undefined\n\n if (field.value instanceof ObjectValue) {\n nextField = field.value.getField(segment)\n } else if (field.value instanceof ArrayValue) {\n nextField = field.value.getField(Number(segment))\n }\n if (!nextField) {\n return undefined\n }\n field = nextField\n }\n return field\n }\n\n getDeepFieldValue(path: string[]) {\n if (path.length === 0) {\n return this\n }\n return this.getDeepField(path)?.value\n }\n\n hasField(key: string) {\n return Boolean(this.getField(key))\n }\n\n removeAllFields() {\n this.fields = {}\n }\n\n removeField(key: string) {\n delete this.fields[key]\n }\n\n getFields() {\n return this.fields\n }\n\n isEmpty(): boolean {\n return Object.keys(this.fields).length === 0\n }\n\n getFieldValue(key: string): Value | undefined {\n return this.getField(key)?.value\n }\n\n getDeepSubSelectionValue(path: string[]): Value | undefined {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let selection: Value = this\n for (const segment of path) {\n if (!(selection instanceof ObjectValue)) {\n return undefined\n }\n const next = selection.getSubSelectionValue(segment)\n if (!next) {\n return undefined\n }\n\n selection = next\n }\n\n return selection\n }\n\n getDeepSelectionParent(path: string[]): SelectionParent | undefined {\n const thisParent = this.getSelectionParent()\n if (!thisParent) {\n return undefined\n }\n\n let parent = thisParent\n\n for (const segment of path) {\n const next = parent.value.getFieldValue(segment)\n if (!next || !(next instanceof ObjectValue)) {\n return undefined\n }\n\n const nextParent = next.getSelectionParent()\n if (!nextParent) {\n return undefined\n }\n parent = nextParent\n }\n\n return parent\n }\n\n getSelectionParent(): SelectionParent | undefined {\n const select = this.getField('select')?.value.asObject()\n if (select) {\n return { kind: 'select', value: select }\n }\n\n const include = this.getField('include')?.value.asObject()\n if (include) {\n return { kind: 'include', value: include }\n }\n return undefined\n }\n\n getSubSelectionValue(key: string): Value | undefined {\n return this.getSelectionParent()?.value.fields[key].value\n }\n\n override getPrintWidth(): number {\n const fields = Object.values(this.fields)\n if (fields.length == 0) {\n return 2 // {}\n }\n const maxFieldWidth = Math.max(...fields.map((f) => f.getPrintWidth()))\n return maxFieldWidth + INDENT_SIZE\n }\n\n override write(writer: ErrorWriter): void {\n const fields = Object.values(this.fields)\n if (fields.length === 0 && this.suggestions.length === 0) {\n this.writeEmpty(writer)\n return\n }\n\n this.writeWithContents(writer, fields)\n }\n\n override asObject(): ObjectValue {\n return this\n }\n\n private writeEmpty(writer: ErrorWriter) {\n const output = new FormattedString('{}')\n if (this.hasError) {\n output.setColor(writer.context.colors.red).underline()\n }\n\n writer.write(output)\n }\n\n private writeWithContents(writer: ErrorWriter, fields: ObjectField[]) {\n writer.writeLine('{').withIndent(() => {\n writer.writeJoined(fieldsSeparator, [...fields, ...this.suggestions]).newLine()\n })\n\n writer.write('}')\n if (this.hasError) {\n writer.afterNextNewline(() => {\n writer.writeLine(writer.context.colors.red('~'.repeat(this.getPrintWidth())))\n })\n }\n }\n}\n", "export * from './AnyDeclarationBuilder'\nexport * from './ArraySpread'\nexport * from './ArrayType'\nexport * from './BasicBuilder'\nexport * from './Class'\nexport * from './ConditionalType'\nexport * from './ConstDeclaration'\nexport * from './DocComment'\nexport * from './Export'\nexport * from './ExportFrom'\nexport * from './File'\nexport * from './FunctionCall'\nexport * from './FunctionType'\nexport * from './GenericParameter'\nexport * from './helpers'\nexport * from './Import'\nexport * from './Interface'\nexport * from './IntersectionType'\nexport * from './KeyofType'\nexport * from './KeyType'\nexport * from './Method'\nexport * from './NamedType'\nexport * from './NamedValue'\nexport * from './NamespaceDeclaration'\nexport * from './ObjectType'\nexport * from './Parameter'\nexport * from './PrimitiveType'\nexport * from './Property'\nexport * from './stringify'\nexport * from './StringLiteralType'\nexport * from './TupleType'\nexport * from './TypeBuilder'\nexport * from './TypeDeclaration'\nexport * from './UnionType'\nexport * from './ValueBuilder'\nexport * from './WellKnownSymbol'\nexport * from './Writer'\n", "import type { BasicBuilder } from './BasicBuilder'\n\nexport const INDENT_SIZE = 2\n/**\n * Helper class for building long multi-line formatted strings from building blocks.\n * Can use either plain strings or `Builder` objects, that would encapsulate formatting logic.\n */\nexport class Writer<ContextType = undefined> {\n private lines: string[] = []\n private currentLine = ''\n private currentIndent = 0\n private marginSymbol?: string\n private afterNextNewLineCallback?: () => void\n\n constructor(\n startingIndent = 0,\n readonly context: ContextType,\n ) {\n this.currentIndent = startingIndent\n }\n\n /**\n * Adds provided value to the current line. Does not end the line.\n *\n * @param value\n * @returns\n */\n write(value: string | BasicBuilder<ContextType>): this {\n if (typeof value === 'string') {\n this.currentLine += value\n } else {\n value.write(this)\n }\n return this\n }\n\n /**\n * Adds several `values` to the current line, separated by `separator`. Both values and separator\n * can also be `Builder` instances for more advanced formatting.\n *\n * @param separator\n * @param values\n * @param writeItem allow to customize how individual item is written\n * @returns\n */\n writeJoined<T extends string | BasicBuilder<ContextType>>(\n separator: string | BasicBuilder<ContextType>,\n values: T[],\n writeItem: (item: T, writer: this) => void = (item, w) => w.write(item),\n ): this {\n const last = values.length - 1\n for (let i = 0; i < values.length; i++) {\n writeItem(values[i], this)\n if (i !== last) {\n this.write(separator)\n }\n }\n return this\n }\n\n /**\n * Adds a string to current line, flushes current line and starts a new line.\n * @param line\n * @returns\n */\n writeLine(line: string | BasicBuilder<ContextType>): this {\n return this.write(line).newLine()\n }\n\n /**\n * Flushes current line and starts a new line. New line starts at previously configured indentation level\n * @returns\n */\n newLine(): this {\n this.lines.push(this.indentedCurrentLine())\n this.currentLine = ''\n this.marginSymbol = undefined\n\n const afterNextNewLineCallback = this.afterNextNewLineCallback\n this.afterNextNewLineCallback = undefined\n afterNextNewLineCallback?.()\n return this\n }\n\n /**\n * Increases indentation level by 1, calls provided callback and then decreases indentation again.\n * Could be used for writing indented blocks of text:\n *\n * @example\n * ```ts\n * writer\n * .writeLine('{')\n * .withIndent(() => {\n * writer.writeLine('foo: 123');\n * writer.writeLine('bar: 456');\n * })\n * .writeLine('}')\n * ```\n * @param callback\n * @returns\n */\n withIndent(callback: (writer: this) => void): this {\n this.indent()\n callback(this)\n this.unindent()\n return this\n }\n\n /**\n * Calls provided callback next time when new line is started.\n * Callback is called after old line have already been flushed and a new\n * line have been started. Can be used for adding \"between the lines\" decorations,\n * such as underlines.\n *\n * @param callback\n * @returns\n */\n afterNextNewline(callback: () => void) {\n this.afterNextNewLineCallback = callback\n return this\n }\n\n /**\n * Increases indentation level of the current line by 1\n * @returns\n */\n indent(): this {\n this.currentIndent++\n return this\n }\n\n /**\n * Decreases indentation level of the current line by 1, if it is possible\n * @returns\n */\n unindent(): this {\n if (this.currentIndent > 0) {\n this.currentIndent--\n }\n return this\n }\n\n /**\n * Adds a symbol, that will replace the first character of the current line (including indentation)\n * when it is flushed. Can be used for adding markers to the line.\n *\n * Note: if indentation level of the line is 0, it will replace the first actually printed character\n * of the line. Use with caution.\n * @param symbol\n * @returns\n */\n addMarginSymbol(symbol: string): this {\n this.marginSymbol = symbol\n return this\n }\n\n toString() {\n return this.lines.concat(this.indentedCurrentLine()).join('\\n')\n }\n\n getCurrentLineLength() {\n return this.currentLine.length\n }\n\n private indentedCurrentLine(): string {\n const line = this.currentLine.padStart(this.currentLine.length + INDENT_SIZE * this.currentIndent)\n if (this.marginSymbol) {\n return this.marginSymbol + line.slice(1)\n }\n return line\n }\n}\n", "import { INDENT_SIZE } from '@prisma/ts-builders'\n\nimport { ArrayField } from './ArrayField'\nimport { ErrorWriter, fieldsSeparator } from './base'\nimport { FormattedString } from './FormattedString'\nimport { Value } from './Value'\n\nexport class ArrayValue extends Value {\n private items: ArrayField[] = []\n\n addItem(item: Value): this {\n this.items.push(new ArrayField(item))\n return this\n }\n\n getField(index: number): ArrayField | undefined {\n return this.items[index]\n }\n\n override getPrintWidth(): number {\n if (this.items.length === 0) {\n return 2\n }\n const maxItemWidth = Math.max(...this.items.map((item) => item.value.getPrintWidth()))\n return maxItemWidth + INDENT_SIZE\n }\n\n override write(writer: ErrorWriter): void {\n if (this.items.length === 0) {\n this.writeEmpty(writer)\n return\n }\n this.writeWithItems(writer)\n }\n\n private writeEmpty(writer: ErrorWriter) {\n const output = new FormattedString('[]')\n if (this.hasError) {\n output.setColor(writer.context.colors.red).underline()\n }\n writer.write(output)\n }\n\n private writeWithItems(writer: ErrorWriter) {\n const { colors } = writer.context\n\n writer\n .writeLine('[')\n .withIndent(() => writer.writeJoined(fieldsSeparator, this.items).newLine())\n .write(']')\n\n if (this.hasError) {\n writer.afterNextNewline(() => {\n writer.writeLine(colors.red('~'.repeat(this.getPrintWidth())))\n })\n }\n }\n\n override asObject(): undefined {\n return undefined\n }\n}\n", "import { ErrorBasicBuilder, ErrorWriter } from './base'\nimport { Field } from './Field'\nimport { Value } from './Value'\n\nexport class ArrayField implements ErrorBasicBuilder, Field {\n constructor(public value: Value) {}\n write(writer: ErrorWriter): void {\n writer.write(this.value)\n }\n\n markAsError(): void {\n this.value.markAsError()\n }\n}\n", "import { BasicBuilder, Writer } from '@prisma/ts-builders'\nimport { bold, dim, green, red } from 'kleur/colors'\n\ntype ColorFn = (str: string) => string\nexport type Colors = {\n bold: ColorFn\n red: ColorFn\n green: ColorFn\n dim: ColorFn\n // if false, all color functions are useless\n readonly enabled: boolean\n}\n\nconst noop = (str: string) => str\n\nexport const inactiveColors: Colors = {\n bold: noop,\n red: noop,\n green: noop,\n dim: noop,\n enabled: false,\n}\n\nexport const activeColors: Colors = {\n bold,\n red,\n green,\n dim,\n enabled: true,\n}\n\nexport type ErrorRenderContext = {\n colors: Colors\n}\n\nexport type ErrorWriter = Writer<ErrorRenderContext>\nexport type ErrorBasicBuilder = BasicBuilder<ErrorRenderContext>\n\nexport const fieldsSeparator: ErrorBasicBuilder = {\n write(writer) {\n writer.writeLine(',')\n },\n}\n", "import { ErrorBasicBuilder, ErrorWriter } from './base'\n\nexport type ColorFn = (str: string) => string\n\nexport class FormattedString implements ErrorBasicBuilder {\n private isUnderlined = false\n private color: ColorFn = (str) => str\n constructor(public contents: string) {}\n\n underline(): this {\n this.isUnderlined = true\n return this\n }\n\n setColor(color: ColorFn): this {\n this.color = color\n return this\n }\n\n write(writer: ErrorWriter): void {\n const paddingSize = writer.getCurrentLineLength()\n writer.write(this.color(this.contents))\n if (this.isUnderlined) {\n writer.afterNextNewline(() => {\n writer.write(' '.repeat(paddingSize)).writeLine(this.color('~'.repeat(this.contents.length)))\n })\n }\n }\n}\n", "import { ErrorBasicBuilder, ErrorWriter } from './base'\nimport { ObjectValue } from './ObjectValue'\n\nexport abstract class Value implements ErrorBasicBuilder {\n abstract write(writer: ErrorWriter): void\n\n /**\n * Returns total width the value when it is rendered. Used\n * for determining underline width.\n */\n abstract getPrintWidth(): number\n\n public hasError = false\n\n markAsError(): this {\n this.hasError = true\n return this\n }\n\n abstract asObject(): ObjectValue | undefined\n}\n", "import { ErrorWriter } from './base'\nimport { FormattedString } from './FormattedString'\nimport { Value } from './Value'\n\nexport class ScalarValue extends Value {\n constructor(readonly text: string) {\n super()\n }\n\n override getPrintWidth(): number {\n return this.text.length\n }\n\n override write(writer: ErrorWriter): void {\n const string = new FormattedString(this.text)\n if (this.hasError) {\n string.underline().setColor(writer.context.colors.red)\n }\n writer.write(string)\n }\n\n override asObject(): undefined {\n return undefined\n }\n}\n", "import { ErrorBasicBuilder, ErrorWriter, fieldsSeparator } from './base'\n\nexport class SuggestionObjectValue implements ErrorBasicBuilder {\n private fields: ErrorBasicBuilder[] = []\n\n addField(name: string, value: string) {\n this.fields.push({\n write(writer) {\n const { green, dim } = writer.context.colors\n writer.write(green(dim(`${name}: ${value}`))).addMarginSymbol(green(dim('+')))\n },\n })\n return this\n }\n\n write(writer: ErrorWriter): void {\n const {\n colors: { green },\n } = writer.context\n writer\n .writeLine(green('{'))\n .withIndent(() => {\n writer.writeJoined(fieldsSeparator, this.fields).newLine()\n })\n .write(green('}'))\n .addMarginSymbol(green('+'))\n }\n}\n", "import { uncapitalize } from '@prisma/client-common'\nimport { Writer } from '@prisma/ts-builders'\n\nimport { ErrorFormat } from '../../getPrismaClient'\nimport { isValidDate } from '../../utils/date'\nimport { isDecimalJsLike } from '../../utils/decimalJsLike'\nimport { isFieldRef } from '../model/FieldRef'\nimport { ObjectEnumValue } from '../types/exported/ObjectEnums'\nimport { ArrayValue } from './ArrayValue'\nimport { activeColors, Colors, ErrorBasicBuilder, ErrorWriter, inactiveColors } from './base'\nimport { ObjectField } from './ObjectField'\nimport { ObjectValue } from './ObjectValue'\nimport { ScalarValue } from './ScalarValue'\n\ntype MessageRender = (colors: Colors) => string\n\nexport class ArgumentsRenderingTree implements ErrorBasicBuilder {\n readonly arguments: ObjectValue\n private errorMessages: MessageRender[] = []\n\n constructor(args: ObjectValue) {\n this.arguments = args\n }\n\n write(writer: ErrorWriter): void {\n writer.write(this.arguments)\n }\n\n addErrorMessage(renderer: MessageRender) {\n this.errorMessages.push(renderer)\n }\n\n renderAllMessages(colors: Colors): string {\n return this.errorMessages.map((messageRenderer) => messageRenderer(colors)).join('\\n')\n }\n}\n\n/**\n * Given JS call arguments, produces rendering tree for outputting rich errors into the console\n * Difference between rendering tree and plain object is that fields and values can have different attributes:\n * colors, underlines, markers on the margins. `applyValidationError` function will then apply specific formatting\n * to the rendering tree.\n *\n * @param args\n * @returns\n */\nexport function buildArgumentsRenderingTree(args: Record<PropertyKey, unknown>): ArgumentsRenderingTree {\n return new ArgumentsRenderingTree(buildInputObject(args))\n}\n\nfunction buildInputObject(inputObject: Record<PropertyKey, unknown>) {\n const object = new ObjectValue()\n\n for (const [key, value] of Object.entries(inputObject)) {\n const field = new ObjectField(key, buildInputValue(value))\n object.addField(field)\n }\n return object\n}\n\nfunction buildInputValue(value: unknown) {\n if (typeof value === 'string') {\n return new ScalarValue(JSON.stringify(value))\n }\n\n if (typeof value === 'number' || typeof value === 'boolean') {\n return new ScalarValue(String(value))\n }\n\n if (typeof value === 'bigint') {\n return new ScalarValue(`${value}n`)\n }\n\n if (value === null) {\n return new ScalarValue('null')\n }\n\n if (value === undefined) {\n return new ScalarValue('undefined')\n }\n\n if (isDecimalJsLike(value)) {\n return new ScalarValue(`new Prisma.Decimal(\"${value.toFixed()}\")`)\n }\n\n if (value instanceof Uint8Array) {\n if (Buffer.isBuffer(value)) {\n return new ScalarValue(`Buffer.alloc(${value.byteLength})`)\n }\n return new ScalarValue(`new Uint8Array(${value.byteLength})`)\n }\n\n if (value instanceof Date) {\n const dateStr = isValidDate(value) ? value.toISOString() : 'Invalid Date'\n return new ScalarValue(`new Date(\"${dateStr}\")`)\n }\n\n if (value instanceof ObjectEnumValue) {\n return new ScalarValue(`Prisma.${value._getName()}`)\n }\n\n if (isFieldRef(value)) {\n return new ScalarValue(`prisma.${uncapitalize(value.modelName)}.$fields.${value.name}`)\n }\n\n if (Array.isArray(value)) {\n return buildInputArray(value)\n }\n\n if (typeof value === 'object') {\n return buildInputObject(value as Record<PropertyKey, unknown>)\n }\n\n return new ScalarValue(Object.prototype.toString.call(value))\n}\n\nfunction buildInputArray(array: unknown[]) {\n const result = new ArrayValue()\n for (const item of array) {\n result.addItem(buildInputValue(item))\n }\n return result\n}\n\nexport function renderArgsTree(argsTree: ArgumentsRenderingTree, errorFormat: ErrorFormat) {\n const colors = errorFormat === 'pretty' ? activeColors : inactiveColors\n\n const message = argsTree.renderAllMessages(colors)\n const args = new Writer(0, { colors }).write(argsTree).toString()\n\n return { message, args }\n}\n", "import { FieldRef } from '../types/exported/FieldRef'\n\nexport class FieldRefImpl<Model, FieldType> implements FieldRef<Model, FieldType> {\n public readonly modelName: Model\n public readonly name: string\n public readonly typeName: FieldType\n public readonly isList: boolean\n public readonly isEnum: boolean\n\n constructor(modelName: Model, name: string, fieldType: FieldType, isList: boolean, isEnum: boolean) {\n this.modelName = modelName\n this.name = name\n this.typeName = fieldType\n this.isList = isList\n this.isEnum = isEnum\n }\n\n _toGraphQLInputType() {\n const listPrefix = this.isList ? `List` : ''\n const enumPrefix = this.isEnum ? 'Enum' : ''\n\n return `${listPrefix}${enumPrefix}${this.typeName}FieldRefInput<${this.modelName}>`\n }\n}\n\nexport function isFieldRef(value: unknown): value is FieldRef<string, unknown> {\n return value instanceof FieldRefImpl\n}\n", "/**\n * Module-private symbol used to distinguish between instances of\n * `ObjectEnumValue` created inside and outside this module.\n */\nconst secret = Symbol()\n\n/**\n * Emulate a private property via a WeakMap manually. Using native private\n * properties is a breaking change for downstream users with minimal TypeScript\n * configs, because TypeScript uses ES3 as the default target.\n *\n * TODO: replace this with a `#representation` private property in the\n * `ObjectEnumValue` class and document minimal required `target` for TypeScript.\n */\nconst representations = new WeakMap<ObjectEnumValue, string>()\n\n/**\n * Base class for unique values of object-valued enums.\n */\nexport abstract class ObjectEnumValue {\n constructor(arg?: symbol) {\n if (arg === secret) {\n representations.set(this, `Prisma.${this._getName()}`)\n } else {\n representations.set(this, `new Prisma.${this._getNamespace()}.${this._getName()}()`)\n }\n }\n\n abstract _getNamespace(): string\n\n _getName() {\n return this.constructor.name\n }\n\n toString() {\n return representations.get(this)!\n }\n}\n\nclass NullTypesEnumValue extends ObjectEnumValue {\n override _getNamespace() {\n return 'NullTypes'\n }\n}\n\nclass DbNull extends NullTypesEnumValue {\n // Phantom private property to prevent structural type equality\n // eslint-disable-next-line no-unused-private-class-members\n readonly #_brand_DbNull!: void\n}\nsetClassName(DbNull, 'DbNull')\n\nclass JsonNull extends NullTypesEnumValue {\n // Phantom private property to prevent structural type equality\n // eslint-disable-next-line no-unused-private-class-members\n readonly #_brand_JsonNull!: void\n}\nsetClassName(JsonNull, 'JsonNull')\n\nclass AnyNull extends NullTypesEnumValue {\n // Phantom private property to prevent structural type equality\n // eslint-disable-next-line no-unused-private-class-members\n readonly #_brand_AnyNull!: void\n}\nsetClassName(AnyNull, 'AnyNull')\n\nexport const objectEnumValues = {\n classes: {\n DbNull,\n JsonNull,\n AnyNull,\n },\n instances: {\n DbNull: new DbNull(secret),\n JsonNull: new JsonNull(secret),\n AnyNull: new AnyNull(secret),\n },\n}\n\n/**\n * See helper in @internals package. Can not be used here\n * because importing internal breaks browser build.\n *\n * @param classObject\n * @param name\n */\nfunction setClassName(classObject: Function, name: string) {\n Object.defineProperty(classObject, 'name', {\n value: name,\n configurable: true,\n })\n}\n", "import { ErrorBasicBuilder, ErrorWriter } from './base'\nimport { Field } from './Field'\nimport { FormattedString } from './FormattedString'\nimport { Value } from './Value'\n\nconst separator = ': '\nexport class ObjectField implements ErrorBasicBuilder, Field {\n hasError = false\n constructor(\n readonly name: string,\n public value: Value,\n ) {}\n\n markAsError() {\n this.hasError = true\n }\n\n getPrintWidth() {\n return this.name.length + this.value.getPrintWidth() + separator.length\n }\n\n write(writer: ErrorWriter): void {\n const name = new FormattedString(this.name)\n if (this.hasError) {\n name.underline().setColor(writer.context.colors.red)\n }\n writer.write(name).write(separator).write(this.value)\n }\n}\n", "import { Cache, lazyProperty } from '@prisma/client-common'\n\nimport { dmmfToJSModelName } from '../model/utils/dmmfToJSModelName'\nimport { ClientArg, ExtensionArgs, ModelArg, QueryOptionsCb } from '../types/exported/ExtensionArgs'\nimport { BatchQueryOptionsCb, QueryOptionsPrivate } from '../types/internal/ExtensionsInternalArgs'\nimport { ComputedFieldsMap, getComputedFields } from './resultUtils'\n\nclass MergedExtensionsListNode {\n private computedFieldsCache = new Cache<string, ComputedFieldsMap | undefined>()\n private modelExtensionsCache = new Cache<string, ModelArg | undefined>()\n private queryCallbacksCache = new Cache<string, QueryOptionsCb[]>()\n\n private clientExtensions = lazyProperty(() => {\n if (!this.extension.client) {\n return this.previous?.getAllClientExtensions()\n }\n\n return {\n ...this.previous?.getAllClientExtensions(),\n ...this.extension.client,\n }\n })\n\n private batchCallbacks = lazyProperty(() => {\n const previous: BatchQueryOptionsCb[] = this.previous?.getAllBatchQueryCallbacks() ?? []\n const newCb = (this.extension as QueryOptionsPrivate).query?.$__internalBatch\n if (!newCb) {\n return previous\n }\n return previous.concat(newCb)\n })\n\n constructor(\n public extension: ExtensionArgs,\n public previous?: MergedExtensionsListNode,\n ) {}\n\n getAllComputedFields(dmmfModelName: string): ComputedFieldsMap | undefined {\n return this.computedFieldsCache.getOrCreate(dmmfModelName, () => {\n return getComputedFields(this.previous?.getAllComputedFields(dmmfModelName), this.extension, dmmfModelName)\n })\n }\n\n getAllClientExtensions(): ClientArg | undefined {\n return this.clientExtensions.get()\n }\n\n getAllModelExtensions(dmmfModelName: string): ModelArg | undefined {\n return this.modelExtensionsCache.getOrCreate(dmmfModelName, () => {\n const jsModelName = dmmfToJSModelName(dmmfModelName)\n if (!this.extension.model || !(this.extension.model[jsModelName] || this.extension.model.$allModels)) {\n return this.previous?.getAllModelExtensions(dmmfModelName)\n }\n\n return {\n ...this.previous?.getAllModelExtensions(dmmfModelName),\n ...this.extension.model.$allModels,\n ...this.extension.model[jsModelName],\n }\n })\n }\n\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n getAllQueryCallbacks(jsModelName: string | '$none', operation: string) {\n return this.queryCallbacksCache.getOrCreate(`${jsModelName}:${operation}`, () => {\n const prevCbs = this.previous?.getAllQueryCallbacks(jsModelName, operation) ?? []\n const newCbs: QueryOptionsCb[] = []\n const query = this.extension.query\n\n if (!query || !(query[jsModelName] || query['$allModels'] || query[operation] || query['$allOperations'])) {\n return prevCbs\n }\n\n if (query[jsModelName] !== undefined) {\n if (query[jsModelName][operation] !== undefined) {\n newCbs.push(query[jsModelName][operation])\n }\n\n // when the model-bound extension has a wildcard for the operation\n if (query[jsModelName]['$allOperations'] !== undefined) {\n newCbs.push(query[jsModelName]['$allOperations'])\n }\n }\n\n // when the extension isn't model-bound, apply it to all models\n // '$none' is a special case for top-level operations without model\n if (jsModelName !== '$none' && query['$allModels'] !== undefined) {\n if (query['$allModels'][operation] !== undefined) {\n newCbs.push(query['$allModels'][operation])\n }\n\n // when the non-model-bound extension has a wildcard for the operation\n if (query['$allModels']['$allOperations'] !== undefined) {\n newCbs.push(query['$allModels']['$allOperations'])\n }\n }\n\n // when the extension is not bound to a model & is a top-level operation\n if (query[operation] !== undefined) {\n newCbs.push(query[operation] as QueryOptionsCb)\n }\n\n // when the extension is not bound to a model & is any top-level operation\n if (query['$allOperations'] !== undefined) {\n newCbs.push(query['$allOperations'] as QueryOptionsCb)\n }\n\n return prevCbs.concat(newCbs)\n })\n }\n\n getAllBatchQueryCallbacks() {\n return this.batchCallbacks.get()\n }\n}\n\n/**\n * Class that holds the list of all extensions, applied to particular instance,\n * as well as resolved versions of the components that need to apply on\n * different levels. Main idea of this class: avoid re-resolving as much of the\n * stuff as possible when new extensions are added while also delaying the\n * resolve until the point it is actually needed. For example, computed fields\n * of the model won't be resolved unless the model is actually queried. Neither\n * adding extensions with `client` component only cause other components to\n * recompute.\n */\nexport class MergedExtensionsList {\n private constructor(private head?: MergedExtensionsListNode) {}\n\n static empty() {\n return new MergedExtensionsList()\n }\n\n static single(extension: ExtensionArgs) {\n return new MergedExtensionsList(new MergedExtensionsListNode(extension))\n }\n\n isEmpty(): boolean {\n return this.head === undefined\n }\n\n append(extension: ExtensionArgs) {\n return new MergedExtensionsList(new MergedExtensionsListNode(extension, this.head))\n }\n\n getAllComputedFields(dmmfModelName: string): ComputedFieldsMap | undefined {\n return this.head?.getAllComputedFields(dmmfModelName)\n }\n\n getAllClientExtensions() {\n return this.head?.getAllClientExtensions()\n }\n\n getAllModelExtensions(dmmfModelName: string) {\n return this.head?.getAllModelExtensions(dmmfModelName)\n }\n\n getAllQueryCallbacks(jsModelName: string, operation: string) {\n return this.head?.getAllQueryCallbacks(jsModelName, operation) ?? []\n }\n\n getAllBatchQueryCallbacks() {\n return this.head?.getAllBatchQueryCallbacks() ?? []\n }\n}\n", "/**\n * Transforms a model name coming from the DMMF to a runtime model name.\n * @param name\n * @returns\n */\nexport function dmmfToJSModelName(name: string) {\n return name.replace(/^./, (str) => str.toLowerCase())\n}\n", "import { Cache } from '@prisma/client-common'\nimport { mapObjectValues } from '@prisma/internals'\n\nimport { dmmfToJSModelName } from '../model/utils/dmmfToJSModelName'\nimport { ExtensionArgs, ResultArg, ResultArgsFieldCompute } from '../types/exported/ExtensionArgs'\nimport { Omission, Selection } from '../types/exported/JsApi'\n\nexport type ComputedField = {\n name: string\n needs: string[]\n compute: ResultArgsFieldCompute\n}\n\nexport type ComputedFieldsMap = {\n [fieldName: string]: ComputedField\n}\n\n/**\n * Given the list of previously resolved computed fields, new extension and dmmf model name, produces a map\n * of all computed fields that may be applied to this model, accounting for all previous and past extensions.\n *\n * All naming conflicts which could be produced by the plain list of extensions are resolved as follows:\n * - extension, that declared later always wins\n * - in a single extension, specific model takes precedence over $allModels\n *\n * Additionally, resolves all `needs` dependencies down to the model fields. For example,\n * if `nameAndTitle` field depends on `fullName` computed field and `title` model field and\n * `fullName` field depends on `firstName` and `lastName` field, full list of `nameAndTitle` dependencies\n * would be `firstName`, `lastName`, `title`.\n * @param previousComputedFields\n * @param extension\n * @param dmmfModelName\n * @returns\n */\nexport function getComputedFields(\n previousComputedFields: ComputedFieldsMap | undefined,\n extension: ExtensionArgs,\n dmmfModelName: string,\n) {\n const jsName = dmmfToJSModelName(dmmfModelName)\n if (!extension.result || !(extension.result.$allModels || extension.result[jsName])) {\n return previousComputedFields\n }\n\n return resolveDependencies({\n ...previousComputedFields,\n ...getComputedFieldsFromModel(extension.name, previousComputedFields, extension.result.$allModels),\n ...getComputedFieldsFromModel(extension.name, previousComputedFields, extension.result[jsName]),\n })\n}\n\nexport function resolveDependencies(computedFields: ComputedFieldsMap): ComputedFieldsMap {\n const cache = new Cache<string, string[]>()\n const resolveNeeds = (fieldName: string, visitedFields: Set<string>) => {\n return cache.getOrCreate(fieldName, () => {\n if (visitedFields.has(fieldName)) {\n return [fieldName]\n }\n visitedFields.add(fieldName)\n if (!computedFields[fieldName]) {\n return [fieldName]\n }\n return computedFields[fieldName].needs.flatMap((fieldDep) => resolveNeeds(fieldDep, visitedFields))\n })\n }\n\n return mapObjectValues(computedFields, (field) => {\n return {\n ...field,\n needs: resolveNeeds(field.name, new Set()),\n }\n })\n}\n\nfunction getComputedFieldsFromModel(\n name: string | undefined,\n previousComputedFields: ComputedFieldsMap | undefined,\n modelResult: ResultArg | undefined,\n): ComputedFieldsMap {\n if (!modelResult) {\n return {}\n }\n\n return mapObjectValues(modelResult, ({ needs, compute }, fieldName) => ({\n name: fieldName,\n needs: needs ? Object.keys(needs).filter((key) => needs[key]) : [],\n compute: composeCompute(previousComputedFields, fieldName, compute),\n }))\n}\n\nfunction composeCompute(\n previousComputedFields: ComputedFieldsMap | undefined,\n fieldName: string,\n nextCompute: ResultArgsFieldCompute,\n): ResultArgsFieldCompute {\n const previousCompute = previousComputedFields?.[fieldName]?.compute\n if (!previousCompute) {\n return nextCompute\n }\n return (model) => {\n return nextCompute({ ...model, [fieldName]: previousCompute(model) })\n }\n}\n\nexport function computeEngineSideSelection(\n selection: Selection,\n computedFields: ComputedFieldsMap | undefined,\n): Selection {\n if (!computedFields) {\n return selection\n }\n const result = { ...selection }\n\n for (const field of Object.values(computedFields)) {\n if (!selection[field.name]) {\n continue\n }\n\n for (const dependency of field.needs) {\n result[dependency] = true\n }\n }\n return result\n}\n\n/**\n * Given user-supplied omissions, computes the results to send to the engine, taking\n * into account dependencies of the computed field. Consider following example:\n *\n * ```\n * const xprisma = prisma.$extends({\n * result: {\n * user: {\n * sanitizedPassword: {\n * needs: { password: true },\n * compute(user) {\n * return sanitze(user.password)\n * },\n * },\n * },\n * },\n * })\n *\n * const user = await xprisma.user.findFirstOrThrow({\n * omit: {\n * password: true,\n * },\n * })\n * ```\n *\n * In that case, user wants to omit the `password` but not `sanitizedPassword`.\n * Since `sanitizedPassword` can not be computed without `password`, we can not let\n * the engine handle omission in this case - we have to still query `password` from the\n * database and omit it on the client, after computing `sanitizedPassword`.\n *\n * This function removes the omission (thus, including the field into result set) if it is a dependency of\n * a non-omitted computed field. Client-side omission after we get a response is handled by `applyResultExtensions`\n *\n * @param omission\n * @param computedFields\n * @returns\n */\nexport function computeEngineSideOmissions(\n omission: Omission,\n computedFields: ComputedFieldsMap | undefined,\n): Omission {\n if (!computedFields) {\n return omission\n }\n const result = { ...omission }\n\n for (const field of Object.values(computedFields)) {\n if (omission[field.name]) {\n continue\n }\n\n for (const dependency of field.needs) {\n delete result[dependency]\n }\n }\n return result\n}\n", "import { Param } from '../types/exported/Param'\n\nexport class ParamImpl<Type, Name extends string> implements Param<Type, Name> {\n constructor(public readonly name: Name) {}\n}\n\nexport function isParam(value: unknown): value is Param<unknown, string> {\n return value instanceof ParamImpl\n}\n\nexport function createParam(name: string): Param<unknown, string> {\n return new ParamImpl(name)\n}\n", "import * as Extensions from './exported/Extensions'\nimport { OperationPayload } from './exported/Payload'\nimport * as Public from './exported/Public'\nimport * as Result from './exported/Result'\nimport * as Utils from './exported/Utils'\n\n/** Specific types */\nexport { Result }\nexport { Extensions }\nexport { Utils }\nexport { Public }\n\nexport { isSkip, Skip, skip } from './exported/Skip'\nexport { type UnknownTypedSql } from './exported/TypedSql'\n\n/** General types */\nexport { type OperationPayload as Payload }\n", "// private symbol that prevents direct construction of a class\nconst secret = Symbol()\n\nexport class Skip {\n constructor(param?: symbol) {\n if (param !== secret) {\n throw new Error(`Skip instance can not be constructed directly`)\n }\n }\n\n ifUndefined<T>(value: T | undefined): T | Skip {\n if (value === undefined) {\n return skip\n }\n return value\n }\n}\n\nexport const skip = new Skip(secret)\n\nexport function isSkip(value: unknown): value is Skip {\n return value instanceof Skip\n}\n", "import { Client } from '../../getPrismaClient'\nimport type { Metric, MetricHistogram, MetricHistogramBucket, Metrics } from '../engines'\nimport { PrismaClientValidationError } from '../errors/PrismaClientValidationError'\n\nexport type MetricsOptions = {\n /**\n * Labels to add to every metrics in key-value format\n */\n globalLabels?: Record<string, string>\n}\n\nfunction checkPreviewFeatureFlag(client: Client) {\n if (!client._hasPreviewFlag('metrics')) {\n throw new PrismaClientValidationError('`metrics` preview feature must be enabled in order to access metrics API', {\n clientVersion: client._clientVersion,\n })\n }\n}\n\nexport class MetricsClient {\n private _client: Client\n\n constructor(client: Client) {\n this._client = client\n }\n\n /**\n * Returns all metrics gathered up to this point in prometheus format.\n * Result of this call can be exposed directly to prometheus scraping endpoint\n *\n * @param options\n * @returns\n */\n prometheus(options?: MetricsOptions): Promise<string> {\n checkPreviewFeatureFlag(this._client)\n\n return this._client._engine.metrics({ format: 'prometheus', ...options })\n }\n\n /**\n * Returns all metrics gathered up to this point in prometheus format.\n *\n * @param options\n * @returns\n */\n json(options?: MetricsOptions): Promise<Metrics> {\n checkPreviewFeatureFlag(this._client)\n\n return this._client._engine.metrics({ format: 'json', ...options })\n }\n}\n\nexport type { Metric, MetricHistogram, MetricHistogramBucket, Metrics }\n", "import { BaseDMMF, lazyProperty, RuntimeDataModel } from '@prisma/client-common'\n\nexport function defineDmmfProperty(target: object, runtimeDataModel: RuntimeDataModel) {\n const dmmfLazy = lazyProperty(() => runtimeDataModelToBaseDmmf(runtimeDataModel))\n\n Object.defineProperty(target, 'dmmf', {\n get: () => dmmfLazy.get(),\n })\n}\n\nfunction runtimeDataModelToBaseDmmf(runtimeDataModel: RuntimeDataModel): BaseDMMF {\n if (TARGET_BUILD_TYPE === 'wasm-engine-edge' || TARGET_BUILD_TYPE === 'wasm-compiler-edge') {\n throw new Error('Prisma.dmmf is not available when running in edge runtimes.')\n }\n\n return {\n datamodel: {\n models: buildDMMFList(runtimeDataModel.models),\n enums: buildDMMFList(runtimeDataModel.enums),\n types: buildDMMFList(runtimeDataModel.types),\n },\n }\n}\n\nfunction buildDMMFList<T>(map: Record<string, T>): Array<T & { name: string }> {\n return Object.entries(map).map(([name, props]) => ({ name, ...props }))\n}\n", "type TypedSqlInternal = {\n sql: string\n values: readonly unknown[]\n}\n\nconst internals = new WeakMap<TypedSql<any, any>, TypedSqlInternal>()\nconst TypedSqlMarker = '$$PrismaTypedSql'\n\nexport declare const PrivateResultType: unique symbol\n\nexport class TypedSql<Values extends readonly unknown[], Result> {\n declare [PrivateResultType]: Result\n\n constructor(sql: string, values: Values) {\n internals.set(this, {\n sql,\n values,\n })\n\n Object.defineProperty(this, TypedSqlMarker, { value: TypedSqlMarker })\n }\n\n get sql(): string {\n return internals.get(this)!.sql\n }\n\n get values(): Values {\n return internals.get(this)!.values as Values\n }\n}\n\nexport type UnknownTypedSql = TypedSql<unknown[], unknown>\n\nexport function makeTypedQueryFactory(sql: string) {\n return (...values) => new TypedSql(sql, values)\n}\n\n// used so we could detect typed sql instances, created by different instance of runtime\n// or after hmr trigger\nexport function isTypedSql(value: unknown): value is UnknownTypedSql {\n return value != null && value[TypedSqlMarker] === TypedSqlMarker\n}\n", "import type { Context } from '@opentelemetry/api'\nimport { GetPrismaClientConfig, RuntimeDataModel } from '@prisma/client-common'\nimport { clearLogs, Debug } from '@prisma/debug'\nimport type { SqlDriverAdapterFactory } from '@prisma/driver-adapter-utils'\nimport { version as enginesVersion } from '@prisma/engines-version/package.json'\nimport { ExtendedSpanOptions, logger, TracingHelper, tryLoadEnvs } from '@prisma/internals'\nimport { AsyncResource } from 'async_hooks'\nimport { EventEmitter } from 'events'\nimport fs from 'fs'\nimport path from 'path'\nimport { RawValue, Sql } from 'sql-template-tag'\n\nimport {\n PrismaClientInitializationError,\n PrismaClientKnownRequestError,\n PrismaClientUnknownRequestError,\n PrismaClientValidationError,\n} from '.'\nimport { addProperty, createCompositeProxy, removeProperties } from './core/compositeProxy'\nimport { BatchTransactionOptions, Engine, EngineConfig, Options } from './core/engines'\nimport { AccelerateEngineConfig } from './core/engines/accelerate/AccelerateEngine'\nimport { AccelerateExtensionFetchDecorator } from './core/engines/common/Engine'\nimport { EngineEvent, LogEmitter } from './core/engines/common/types/Events'\nimport type * as Transaction from './core/engines/common/types/Transaction'\nimport { getBatchRequestPayload } from './core/engines/common/utils/getBatchRequestPayload'\nimport { prettyPrintArguments } from './core/errorRendering/prettyPrintArguments'\nimport { prismaGraphQLToJSError } from './core/errors/utils/prismaGraphQLToJSError'\nimport { $extends } from './core/extensions/$extends'\nimport { applyAllResultExtensions } from './core/extensions/applyAllResultExtensions'\nimport { applyQueryExtensions } from './core/extensions/applyQueryExtensions'\nimport { MergedExtensionsList } from './core/extensions/MergedExtensionsList'\nimport { checkPlatformCaching } from './core/init/checkPlatformCaching'\nimport { getDatasourceOverrides } from './core/init/getDatasourceOverrides'\nimport { getEngineInstance } from './core/init/getEngineInstance'\nimport { getPreviewFeatures } from './core/init/getPreviewFeatures'\nimport { resolveDatasourceUrl } from './core/init/resolveDatasourceUrl'\nimport { GlobalOmitOptions, serializeJsonQuery } from './core/jsonProtocol/serializeJsonQuery'\nimport { MetricsClient } from './core/metrics/MetricsClient'\nimport {\n applyModelsAndClientExtensions,\n unApplyModelsAndClientExtensions,\n} from './core/model/applyModelsAndClientExtensions'\nimport { rawCommandArgsMapper } from './core/raw-query/rawCommandArgsMapper'\nimport {\n checkAlter,\n rawQueryArgsMapper,\n sqlMiddlewareArgsMapper,\n templateStringMiddlewareArgsMapper,\n} from './core/raw-query/rawQueryArgsMapper'\nimport { createPrismaPromiseFactory } from './core/request/createPrismaPromise'\nimport {\n PrismaPromise,\n PrismaPromiseInteractiveTransaction,\n PrismaPromiseTransaction,\n} from './core/request/PrismaPromise'\nimport { UserArgs } from './core/request/UserArgs'\nimport { getTracingHelper } from './core/tracing/TracingHelper'\nimport { getLockCountPromise } from './core/transaction/utils/createLockCountPromise'\nimport { itxClientDenyList } from './core/types/exported/itxClientDenyList'\nimport { JsInputValue } from './core/types/exported/JsApi'\nimport { RawQueryArgs } from './core/types/exported/RawQueryArgs'\nimport { UnknownTypedSql } from './core/types/exported/TypedSql'\nimport { getLogLevel } from './getLogLevel'\nimport type { QueryMiddlewareParams } from './QueryMiddlewareParams'\nimport { RequestHandler } from './RequestHandler'\nimport { CallSite, getCallSite } from './utils/CallSite'\nimport { clientVersion } from './utils/clientVersion'\nimport { validatePrismaClientOptions } from './utils/validatePrismaClientOptions'\nimport { waitForBatch } from './utils/waitForBatch'\n\nconst debug = Debug('prisma:client')\n\ndeclare global {\n // eslint-disable-next-line no-var\n var NODE_CLIENT: true\n const TARGET_BUILD_TYPE:\n | 'binary'\n | 'library'\n | 'edge'\n | 'wasm-engine-edge'\n | 'wasm-compiler-edge'\n | 'react-native'\n | 'client'\n}\n\n// used by esbuild for tree-shaking\ntypeof globalThis === 'object' ? (globalThis.NODE_CLIENT = true) : 0\n\nexport type ErrorFormat = 'pretty' | 'colorless' | 'minimal'\n\nexport type Datasource = { url?: string }\nexport type Datasources = { [name in string]: Datasource }\n\nexport type PrismaClientOptions = {\n /**\n * Overwrites the primary datasource url from your schema.prisma file\n */\n datasourceUrl?: string\n /**\n * Instance of a Driver Adapter, e.g., like one provided by `@prisma/adapter-planetscale.\n */\n adapter?: SqlDriverAdapterFactory | null\n\n /**\n * Overwrites the datasource url from your schema.prisma file\n */\n datasources?: Datasources\n\n /**\n * @default \"colorless\"\n */\n errorFormat?: ErrorFormat\n\n /**\n * The default values for Transaction options\n * maxWait ?= 2000\n * timeout ?= 5000\n */\n transactionOptions?: Transaction.Options\n\n /**\n * @example\n * \\`\\`\\`\n * // Defaults to stdout\n * log: ['query', 'info', 'warn']\n *\n * // Emit as events\n * log: [\n * { emit: 'stdout', level: 'query' },\n * { emit: 'stdout', level: 'info' },\n * { emit: 'stdout', level: 'warn' }\n * ]\n * \\`\\`\\`\n * Read more in our [docs](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client/logging#the-log-option).\n */\n log?: Array<LogLevel | LogDefinition>\n\n omit?: GlobalOmitOptions\n\n /**\n * @internal\n * You probably don't want to use this. \\`__internal\\` is used by internal tooling.\n */\n __internal?: {\n debug?: boolean\n engine?: {\n cwd?: string\n binaryPath?: string\n endpoint?: string\n allowTriggerPanic?: boolean\n }\n /** This can be used for testing purposes */\n configOverride?: (config: GetPrismaClientConfig) => GetPrismaClientConfig\n }\n}\n\nexport type Unpacker = (data: any) => any\n\nexport type InternalRequestParams = {\n /**\n * The original client method being called.\n * Even though the rootField / operation can be changed,\n * this method stays as it is, as it's what the user's\n * code looks like\n */\n clientMethod: string // TODO what is this\n /**\n * Name of js model that triggered the request. Might be used\n * for warnings or error messages\n */\n jsModelName?: string\n // Extra headers for data proxy.\n callsite?: CallSite\n transaction?: PrismaPromiseTransaction\n unpacker?: Unpacker // TODO what is this\n otelParentCtx?: Context\n /** Used to \"desugar\" a user input into an \"expanded\" one */\n argsMapper?: (args?: UserArgs) => UserArgs\n\n /** Used to convert args for middleware and back */\n middlewareArgsMapper?: MiddlewareArgsMapper<unknown, unknown>\n /** Used for Accelerate client extension via Data Proxy */\n customDataProxyFetch?: AccelerateExtensionFetchDecorator\n} & Omit<QueryMiddlewareParams, 'runInTransaction'>\n\nexport type MiddlewareArgsMapper<RequestArgs, MiddlewareArgs> = {\n requestArgsToMiddlewareArgs(requestArgs: RequestArgs): MiddlewareArgs\n middlewareArgsToRequestArgs(middlewareArgs: MiddlewareArgs): RequestArgs\n}\n\nconst noopMiddlewareArgsMapper: MiddlewareArgsMapper<unknown, unknown> = {\n requestArgsToMiddlewareArgs: (param) => param,\n middlewareArgsToRequestArgs: (param) => param,\n}\n\n/* Types for Logging */\nexport type LogLevel = 'info' | 'query' | 'warn' | 'error'\nexport type LogDefinition = {\n level: LogLevel\n emit: 'stdout' | 'event'\n}\n\nexport type QueryEvent = {\n timestamp: Date\n query: string\n params: string\n duration: number\n target: string\n}\n\nexport type LogEvent = {\n timestamp: Date\n message: string\n target: string\n}\n/* End Types for Logging */\n\ntype ExtendedEventType = LogLevel | 'beforeExit'\ntype EventCallback<E extends ExtendedEventType> = [E] extends ['beforeExit']\n ? () => Promise<void>\n : [E] extends [LogLevel]\n ? (event: EngineEvent<E>) => void\n : never\n\nconst TX_ID = Symbol.for('prisma.client.transaction.id')\n\nconst BatchTxIdCounter = {\n id: 0,\n nextId() {\n return ++this.id\n },\n}\n\nexport type Client = ReturnType<typeof getPrismaClient> extends new () => infer T ? T : never\n\nexport function getPrismaClient(config: GetPrismaClientConfig) {\n class PrismaClient {\n _originalClient = this\n _runtimeDataModel: RuntimeDataModel\n _requestHandler: RequestHandler\n _connectionPromise?: Promise<any>\n _disconnectionPromise?: Promise<any>\n _engineConfig: EngineConfig\n _accelerateEngineConfig: AccelerateEngineConfig\n _clientVersion: string\n _errorFormat: ErrorFormat\n _tracingHelper: TracingHelper\n _previewFeatures: string[]\n _activeProvider: string\n _globalOmit?: GlobalOmitOptions\n _extensions: MergedExtensionsList\n /**\n * @remarks This is used internally by Policy, do not rename or remove\n */\n _engine: Engine\n /**\n * A fully constructed/applied Client that references the parent\n * PrismaClient. This is used for Client extensions only.\n */\n _appliedParent: PrismaClient\n _createPrismaPromise = createPrismaPromiseFactory()\n\n constructor(optionsArg?: PrismaClientOptions) {\n config = optionsArg?.__internal?.configOverride?.(config) ?? config\n\n checkPlatformCaching(config)\n\n if (optionsArg) {\n validatePrismaClientOptions(optionsArg, config)\n }\n\n // prevents unhandled error events when users do not explicitly listen to them\n const logEmitter = new EventEmitter().on('error', () => {}) as LogEmitter\n\n this._extensions = MergedExtensionsList.empty()\n this._previewFeatures = getPreviewFeatures(config)\n this._clientVersion = config.clientVersion ?? clientVersion\n this._activeProvider = config.activeProvider\n this._globalOmit = optionsArg?.omit\n this._tracingHelper = getTracingHelper()\n const envPaths = config.relativeEnvPaths && {\n rootEnvPath:\n config.relativeEnvPaths.rootEnvPath && path.resolve(config.dirname, config.relativeEnvPaths.rootEnvPath),\n schemaEnvPath:\n config.relativeEnvPaths.schemaEnvPath && path.resolve(config.dirname, config.relativeEnvPaths.schemaEnvPath),\n }\n\n /**\n * Initialise and validate the Driver Adapter, if provided.\n */\n\n let adapter: SqlDriverAdapterFactory | undefined\n if (optionsArg?.adapter) {\n adapter = optionsArg.adapter\n\n // Note:\n // - `getConfig(..).datasources[0].provider` can be `postgresql`, `postgres`, `mysql`, or other known providers\n // - `getConfig(..).datasources[0].activeProvider`, stored in `config.activeProvider`, can be `postgresql`, `mysql`, or other known providers\n // - `adapter.provider` can be `postgres`, `mysql`, or `sqlite`, and changing this requires changes to Rust as well,\n // see https://github.com/prisma/prisma-engines/blob/d116c37d7d27aee74fdd840fc85ab2b45407e5ce/query-engine/driver-adapters/src/types.rs#L22-L23.\n //\n // TODO: Normalize these provider names once and for all in Prisma 6.\n const expectedDriverAdapterProvider =\n config.activeProvider === 'postgresql'\n ? 'postgres'\n : // CockroachDB is only accessible through Postgres driver adapters\n config.activeProvider === 'cockroachdb'\n ? 'postgres'\n : config.activeProvider\n\n if (adapter.provider !== expectedDriverAdapterProvider) {\n throw new PrismaClientInitializationError(\n `The Driver Adapter \\`${adapter.adapterName}\\`, based on \\`${adapter.provider}\\`, is not compatible with the provider \\`${expectedDriverAdapterProvider}\\` specified in the Prisma schema.`,\n this._clientVersion,\n )\n }\n\n if (optionsArg.datasources || optionsArg.datasourceUrl !== undefined) {\n throw new PrismaClientInitializationError(\n `Custom datasource configuration is not compatible with Prisma Driver Adapters. Please define the database connection string directly in the Driver Adapter configuration.`,\n this._clientVersion,\n )\n }\n }\n\n const loadedEnv = // for node we load the env from files, for edge only via env injections\n (NODE_CLIENT && !adapter && envPaths && tryLoadEnvs(envPaths, { conflictCheck: 'none' })) ||\n config.injectableEdgeEnv?.()\n\n try {\n const options: PrismaClientOptions = optionsArg ?? {}\n const internal = options.__internal ?? {}\n\n const useDebug = internal.debug === true\n if (useDebug) {\n Debug.enable('prisma:client')\n }\n\n let cwd = path.resolve(config.dirname, config.relativePath)\n\n // TODO this logic should not be needed anymore #findSync\n if (!fs.existsSync(cwd)) {\n cwd = config.dirname\n }\n\n debug('dirname', config.dirname)\n debug('relativePath', config.relativePath)\n debug('cwd', cwd)\n\n const engineConfig = internal.engine || {}\n\n if (options.errorFormat) {\n this._errorFormat = options.errorFormat\n } else if (process.env.NODE_ENV === 'production') {\n this._errorFormat = 'minimal'\n } else if (process.env.NO_COLOR) {\n this._errorFormat = 'colorless'\n } else {\n this._errorFormat = 'colorless' // default errorFormat\n }\n\n this._runtimeDataModel = config.runtimeDataModel\n\n this._engineConfig = {\n cwd,\n dirname: config.dirname,\n enableDebugLogs: useDebug,\n allowTriggerPanic: engineConfig.allowTriggerPanic,\n prismaPath: engineConfig.binaryPath ?? undefined,\n engineEndpoint: engineConfig.endpoint,\n generator: config.generator,\n showColors: this._errorFormat === 'pretty',\n logLevel: options.log && (getLogLevel(options.log) as any), // TODO\n logQueries:\n options.log &&\n Boolean(\n typeof options.log === 'string'\n ? options.log === 'query'\n : options.log.find((o) => (typeof o === 'string' ? o === 'query' : o.level === 'query')),\n ),\n env: loadedEnv?.parsed ?? {},\n flags: [],\n engineWasm: config.engineWasm,\n compilerWasm: config.compilerWasm,\n clientVersion: config.clientVersion,\n engineVersion: config.engineVersion,\n previewFeatures: this._previewFeatures,\n activeProvider: config.activeProvider,\n inlineSchema: config.inlineSchema,\n overrideDatasources: getDatasourceOverrides(options, config.datasourceNames),\n inlineDatasources: config.inlineDatasources,\n inlineSchemaHash: config.inlineSchemaHash,\n tracingHelper: this._tracingHelper,\n transactionOptions: {\n maxWait: options.transactionOptions?.maxWait ?? 2000,\n timeout: options.transactionOptions?.timeout ?? 5000,\n isolationLevel: options.transactionOptions?.isolationLevel,\n },\n logEmitter,\n isBundled: config.isBundled,\n adapter,\n }\n\n this._accelerateEngineConfig = {\n ...this._engineConfig,\n // share runtime utils to accelerate\n accelerateUtils: {\n resolveDatasourceUrl,\n getBatchRequestPayload,\n prismaGraphQLToJSError,\n PrismaClientUnknownRequestError,\n PrismaClientInitializationError,\n PrismaClientKnownRequestError,\n debug: Debug('prisma:client:accelerateEngine'),\n engineVersion: enginesVersion,\n clientVersion: config.clientVersion,\n },\n }\n\n debug('clientVersion', config.clientVersion)\n\n this._engine = getEngineInstance(config, this._engineConfig)\n this._requestHandler = new RequestHandler(this, logEmitter)\n\n if (options.log) {\n for (const log of options.log) {\n const level = typeof log === 'string' ? log : log.emit === 'stdout' ? log.level : null\n if (level) {\n this.$on(level, (event) => {\n logger.log(`${logger.tags[level] ?? ''}`, (event as LogEvent).message || (event as QueryEvent).query)\n })\n }\n }\n }\n } catch (e: any) {\n e.clientVersion = this._clientVersion\n throw e\n }\n\n // the first client has no parent so it is its own parent client\n // this is used for extensions to reference their parent client\n return (this._appliedParent = applyModelsAndClientExtensions(this))\n // this applied client is also a custom constructor return value\n }\n\n get [Symbol.toStringTag]() {\n return 'PrismaClient'\n }\n\n $on<E extends ExtendedEventType>(eventType: E, callback: EventCallback<E>): PrismaClient {\n if (eventType === 'beforeExit') {\n this._engine.onBeforeExit(callback as EventCallback<'beforeExit'>)\n } else if (eventType) {\n this._engineConfig.logEmitter.on(eventType, callback as EventCallback<LogLevel>)\n }\n return this\n }\n\n $connect() {\n try {\n return this._engine.start()\n } catch (e: any) {\n e.clientVersion = this._clientVersion\n throw e\n }\n }\n\n /**\n * Disconnect from the database\n */\n async $disconnect() {\n try {\n await this._engine.stop()\n } catch (e: any) {\n e.clientVersion = this._clientVersion\n throw e\n } finally {\n // Debug module keeps a list of last 100 logs regardless of environment\n // variables. This can cause a memory leak. It's especially bad in jest\n // environment where keeping an error in this list prevents jest sandbox\n // from being GCed. Clearing logs on disconnect helps to avoid that\n clearLogs()\n }\n }\n\n /**\n * Executes a raw query and always returns a number\n */\n $executeRawInternal(\n transaction: PrismaPromiseTransaction | undefined,\n clientMethod: string,\n args: RawQueryArgs,\n middlewareArgsMapper?: MiddlewareArgsMapper<unknown, unknown>,\n ): Promise<number> {\n const activeProvider = this._activeProvider\n\n return this._request({\n action: 'executeRaw',\n args,\n transaction,\n clientMethod,\n argsMapper: rawQueryArgsMapper({ clientMethod, activeProvider }),\n callsite: getCallSite(this._errorFormat),\n dataPath: [],\n middlewareArgsMapper,\n })\n }\n\n /**\n * Executes a raw query provided through a safe tag function\n * @see https://github.com/prisma/prisma/issues/7142\n *\n * @param query\n * @param values\n * @returns\n */\n $executeRaw(query: TemplateStringsArray | Sql, ...values: any[]) {\n return this._createPrismaPromise((transaction) => {\n if ((query as TemplateStringsArray).raw !== undefined || (query as Sql).sql !== undefined) {\n const [sql, argsMapper] = toSql(query, values)\n checkAlter(\n this._activeProvider,\n sql.text,\n sql.values,\n Array.isArray(query) ? 'prisma.$executeRaw`<SQL>`' : 'prisma.$executeRaw(sql`<SQL>`)',\n )\n return this.$executeRawInternal(transaction, '$executeRaw', sql, argsMapper)\n }\n\n throw new PrismaClientValidationError(\n `\\`$executeRaw\\` is a tag function, please use it like the following:\n\\`\\`\\`\nconst result = await prisma.$executeRaw\\`UPDATE User SET cool = \\${true} WHERE email = \\${'user@email.com'};\\`\n\\`\\`\\`\n\nOr read our docs at https://www.prisma.io/docs/concepts/components/prisma-client/raw-database-access#executeraw\n`,\n { clientVersion: this._clientVersion },\n )\n })\n }\n\n /**\n * Unsafe counterpart of `$executeRaw` that is susceptible to SQL injections\n * @see https://github.com/prisma/prisma/issues/7142\n *\n * @param query\n * @param values\n * @returns\n */\n $executeRawUnsafe(query: string, ...values: RawValue[]) {\n return this._createPrismaPromise((transaction) => {\n checkAlter(this._activeProvider, query, values, 'prisma.$executeRawUnsafe(<SQL>, [...values])')\n return this.$executeRawInternal(transaction, '$executeRawUnsafe', [query, ...values])\n })\n }\n\n /**\n * Executes a raw command only for MongoDB\n *\n * @param command\n * @returns\n */\n $runCommandRaw(command: Record<string, JsInputValue>) {\n if (config.activeProvider !== 'mongodb') {\n throw new PrismaClientValidationError(\n `The ${config.activeProvider} provider does not support $runCommandRaw. Use the mongodb provider.`,\n { clientVersion: this._clientVersion },\n )\n }\n\n return this._createPrismaPromise((transaction) => {\n return this._request({\n args: command,\n clientMethod: '$runCommandRaw',\n dataPath: [],\n action: 'runCommandRaw',\n argsMapper: rawCommandArgsMapper,\n callsite: getCallSite(this._errorFormat),\n transaction: transaction,\n })\n })\n }\n\n /**\n * Executes a raw query and returns selected data\n */\n async $queryRawInternal(\n transaction: PrismaPromiseTransaction | undefined,\n clientMethod: string,\n args: RawQueryArgs,\n middlewareArgsMapper?: MiddlewareArgsMapper<unknown, unknown>,\n ) {\n const activeProvider = this._activeProvider\n\n return this._request({\n action: 'queryRaw',\n args,\n transaction,\n clientMethod,\n argsMapper: rawQueryArgsMapper({ clientMethod, activeProvider }),\n callsite: getCallSite(this._errorFormat),\n dataPath: [],\n middlewareArgsMapper,\n })\n }\n\n /**\n * Executes a raw query provided through a safe tag function\n * @see https://github.com/prisma/prisma/issues/7142\n *\n * @param query\n * @param values\n * @returns\n */\n $queryRaw(query: TemplateStringsArray | Sql, ...values: any[]) {\n return this._createPrismaPromise((transaction) => {\n if ((query as TemplateStringsArray).raw !== undefined || (query as Sql).sql !== undefined) {\n return this.$queryRawInternal(transaction, '$queryRaw', ...toSql(query, values))\n }\n\n throw new PrismaClientValidationError(\n `\\`$queryRaw\\` is a tag function, please use it like the following:\n\\`\\`\\`\nconst result = await prisma.$queryRaw\\`SELECT * FROM User WHERE id = \\${1} OR email = \\${'user@email.com'};\\`\n\\`\\`\\`\n\nOr read our docs at https://www.prisma.io/docs/concepts/components/prisma-client/raw-database-access#queryraw\n`,\n { clientVersion: this._clientVersion },\n )\n })\n }\n\n /**\n * Counterpart to $queryRaw, that returns strongly typed results\n * @param typedSql\n */\n $queryRawTyped(typedSql: UnknownTypedSql) {\n return this._createPrismaPromise((transaction) => {\n if (!this._hasPreviewFlag('typedSql')) {\n throw new PrismaClientValidationError(\n '`typedSql` preview feature must be enabled in order to access $queryRawTyped API',\n { clientVersion: this._clientVersion },\n )\n }\n return this.$queryRawInternal(transaction, '$queryRawTyped', typedSql)\n })\n }\n\n /**\n * Unsafe counterpart of `$queryRaw` that is susceptible to SQL injections\n * @see https://github.com/prisma/prisma/issues/7142\n *\n * @param query\n * @param values\n * @returns\n */\n $queryRawUnsafe(query: string, ...values: RawValue[]) {\n return this._createPrismaPromise((transaction) => {\n return this.$queryRawInternal(transaction, '$queryRawUnsafe', [query, ...values])\n })\n }\n\n /**\n * Execute a batch of requests in a transaction\n * @param requests\n * @param options\n */\n _transactionWithArray({\n promises,\n options,\n }: {\n promises: Array<PrismaPromise<any>>\n options?: BatchTransactionOptions\n }): Promise<any> {\n const id = BatchTxIdCounter.nextId()\n const lock = getLockCountPromise(promises.length)\n\n const requests = promises.map((request, index) => {\n if (request?.[Symbol.toStringTag] !== 'PrismaPromise') {\n throw new Error(\n `All elements of the array need to be Prisma Client promises. Hint: Please make sure you are not awaiting the Prisma client calls you intended to pass in the $transaction function.`,\n )\n }\n\n const isolationLevel = options?.isolationLevel ?? this._engineConfig.transactionOptions.isolationLevel\n const transaction = { kind: 'batch', id, index, isolationLevel, lock } as const\n return request.requestTransaction?.(transaction) ?? request\n })\n\n return waitForBatch(requests)\n }\n\n /**\n * Perform a long-running transaction\n * @param callback\n * @param options\n * @returns\n */\n async _transactionWithCallback({\n callback,\n options,\n }: {\n callback: (client: Client) => Promise<unknown>\n options?: Options\n }) {\n const headers = { traceparent: this._tracingHelper.getTraceParent() }\n\n const optionsWithDefaults: Options = {\n maxWait: options?.maxWait ?? this._engineConfig.transactionOptions.maxWait,\n timeout: options?.timeout ?? this._engineConfig.transactionOptions.timeout,\n isolationLevel: options?.isolationLevel ?? this._engineConfig.transactionOptions.isolationLevel,\n }\n const info = await this._engine.transaction('start', headers, optionsWithDefaults)\n\n let result: unknown\n try {\n // execute user logic with a proxied the client\n const transaction = { kind: 'itx', ...info } as const\n\n result = await callback(this._createItxClient(transaction))\n\n // it went well, then we commit the transaction\n await this._engine.transaction('commit', headers, info)\n } catch (e: any) {\n // it went bad, then we rollback the transaction\n await this._engine.transaction('rollback', headers, info).catch(() => {})\n\n throw e // silent rollback, throw original error\n }\n\n return result\n }\n\n _createItxClient(transaction: PrismaPromiseInteractiveTransaction): Client {\n return createCompositeProxy(\n applyModelsAndClientExtensions(\n createCompositeProxy(unApplyModelsAndClientExtensions(this), [\n addProperty('_appliedParent', () => this._appliedParent._createItxClient(transaction)),\n addProperty('_createPrismaPromise', () => createPrismaPromiseFactory(transaction)),\n addProperty(TX_ID, () => transaction.id),\n ]),\n ),\n [removeProperties(itxClientDenyList)],\n )\n }\n\n /**\n * Execute queries within a transaction\n * @param input a callback or a query list\n * @param options to set timeouts (callback)\n * @returns\n */\n $transaction(input: any, options?: any) {\n let callback: () => Promise<any>\n\n // iTx - Interactive transaction\n if (typeof input === 'function') {\n if (this._engineConfig.adapter?.adapterName === '@prisma/adapter-d1') {\n callback = () => {\n throw new Error(\n 'Cloudflare D1 does not support interactive transactions. We recommend you to refactor your queries with that limitation in mind, and use batch transactions with `prisma.$transactions([])` where applicable.',\n )\n }\n } else {\n callback = () => this._transactionWithCallback({ callback: input, options })\n }\n } else {\n // Batch transaction\n callback = () => this._transactionWithArray({ promises: input, options })\n }\n\n const spanOptions = {\n name: 'transaction',\n attributes: { method: '$transaction' },\n }\n\n return this._tracingHelper.runInChildSpan(spanOptions, callback)\n }\n\n /**\n * Runs the middlewares over params before executing a request\n * @param internalParams\n * @returns\n */\n _request(internalParams: InternalRequestParams): Promise<any> {\n // this is the otel context that is active at the callsite\n internalParams.otelParentCtx = this._tracingHelper.getActiveContext()\n const middlewareArgsMapper = internalParams.middlewareArgsMapper ?? noopMiddlewareArgsMapper\n\n // make sure that we don't leak extra properties to users\n const params: QueryMiddlewareParams = {\n args: middlewareArgsMapper.requestArgsToMiddlewareArgs(internalParams.args),\n dataPath: internalParams.dataPath,\n runInTransaction: Boolean(internalParams.transaction),\n action: internalParams.action,\n model: internalParams.model,\n }\n\n // span options for opentelemetry instrumentation\n const spanOptions = {\n operation: {\n name: 'operation',\n attributes: {\n method: params.action,\n model: params.model,\n name: params.model ? `${params.model}.${params.action}` : params.action,\n },\n } as ExtendedSpanOptions,\n }\n\n // prepare recursive fn that will pipe params through middlewares\n const consumer = async (changedMiddlewareParams: QueryMiddlewareParams) => {\n // we proceed with request execution\n // before we send the execution request, we use the changed params\n const { runInTransaction, args, ...changedRequestParams } = changedMiddlewareParams\n const requestParams = {\n ...internalParams,\n ...changedRequestParams,\n }\n\n if (args) {\n requestParams.args = middlewareArgsMapper.middlewareArgsToRequestArgs(args)\n }\n\n // if middleware switched off `runInTransaction`, unset `transaction`\n // property on request as well so it will be executed outside of the tx\n if (internalParams.transaction !== undefined && runInTransaction === false) {\n delete requestParams.transaction // client extensions check for this\n }\n\n const result = await applyQueryExtensions(this, requestParams) // also executes the query\n if (!requestParams.model) {\n return result\n }\n return applyAllResultExtensions({\n result,\n modelName: requestParams.model,\n args: requestParams.args,\n extensions: this._extensions,\n runtimeDataModel: this._runtimeDataModel,\n globalOmit: this._globalOmit,\n })\n }\n\n return this._tracingHelper.runInChildSpan(spanOptions.operation, () => {\n if (NODE_CLIENT) {\n // https://github.com/prisma/prisma/issues/3148 not for edge client\n const asyncRes = new AsyncResource('prisma-client-request')\n return asyncRes.runInAsyncScope(() => consumer(params))\n }\n\n return consumer(params)\n })\n }\n\n async _executeRequest({\n args,\n clientMethod,\n dataPath,\n callsite,\n action,\n model,\n argsMapper,\n transaction,\n unpacker,\n otelParentCtx,\n customDataProxyFetch,\n }: InternalRequestParams) {\n try {\n // execute argument transformation before execution\n args = argsMapper ? argsMapper(args) : args\n\n const spanOptions: ExtendedSpanOptions = {\n name: 'serialize',\n }\n\n const message = this._tracingHelper.runInChildSpan(spanOptions, () =>\n serializeJsonQuery({\n modelName: model,\n runtimeDataModel: this._runtimeDataModel,\n action,\n args,\n clientMethod,\n callsite,\n extensions: this._extensions,\n errorFormat: this._errorFormat,\n clientVersion: this._clientVersion,\n previewFeatures: this._previewFeatures,\n globalOmit: this._globalOmit,\n }),\n )\n\n // as prettyPrintArguments takes a bit of compute\n // we only want to do it, if debug is enabled for 'prisma-client'\n if (Debug.enabled('prisma:client')) {\n debug(`Prisma Client call:`)\n debug(`prisma.${clientMethod}(${prettyPrintArguments(args)})`)\n debug(`Generated request:`)\n debug(JSON.stringify(message, null, 2) + '\\n')\n }\n\n if (transaction?.kind === 'batch') {\n /** @see {@link getLockCountPromise} */\n await transaction.lock\n }\n\n return this._requestHandler.request({\n protocolQuery: message,\n modelName: model,\n action,\n clientMethod,\n dataPath,\n callsite,\n args,\n extensions: this._extensions,\n transaction,\n unpacker,\n otelParentCtx,\n otelChildCtx: this._tracingHelper.getActiveContext(),\n globalOmit: this._globalOmit,\n customDataProxyFetch,\n })\n } catch (e) {\n e.clientVersion = this._clientVersion\n throw e\n }\n }\n\n $metrics = new MetricsClient(this)\n\n /**\n * Shortcut for checking a preview flag\n * @param feature preview flag\n * @returns\n */\n _hasPreviewFlag(feature: string) {\n return !!this._engineConfig.previewFeatures?.includes(feature)\n }\n\n $applyPendingMigrations(): Promise<void> {\n return this._engine.applyPendingMigrations()\n }\n\n $extends = $extends\n }\n\n return PrismaClient\n}\n\nfunction toSql(query: TemplateStringsArray | Sql, values: unknown[]): [Sql, MiddlewareArgsMapper<unknown, unknown>] {\n if (isTemplateStringArray(query)) {\n return [new Sql(query, values), templateStringMiddlewareArgsMapper]\n }\n\n return [query, sqlMiddlewareArgsMapper]\n}\n\nfunction isTemplateStringArray(value: unknown): value is TemplateStringsArray {\n return Array.isArray(value) && Array.isArray(value['raw'])\n}\n", "", "/**\n * Values supported by SQL engine.\n */\nexport type Value = unknown;\n\n/**\n * Supported value or SQL instance.\n */\nexport type RawValue = Value | Sql;\n\n/**\n * A SQL instance can be nested within each other to build SQL strings.\n */\nexport class Sql {\n readonly values: Value[];\n readonly strings: string[];\n\n constructor(rawStrings: readonly string[], rawValues: readonly RawValue[]) {\n if (rawStrings.length - 1 !== rawValues.length) {\n if (rawStrings.length === 0) {\n throw new TypeError(\"Expected at least 1 string\");\n }\n\n throw new TypeError(\n `Expected ${rawStrings.length} strings to have ${\n rawStrings.length - 1\n } values`,\n );\n }\n\n const valuesLength = rawValues.reduce<number>(\n (len, value) => len + (value instanceof Sql ? value.values.length : 1),\n 0,\n );\n\n this.values = new Array(valuesLength);\n this.strings = new Array(valuesLength + 1);\n\n this.strings[0] = rawStrings[0];\n\n // Iterate over raw values, strings, and children. The value is always\n // positioned between two strings, e.g. `index + 1`.\n let i = 0,\n pos = 0;\n while (i < rawValues.length) {\n const child = rawValues[i++];\n const rawString = rawStrings[i];\n\n // Check for nested `sql` queries.\n if (child instanceof Sql) {\n // Append child prefix text to current string.\n this.strings[pos] += child.strings[0];\n\n let childIndex = 0;\n while (childIndex < child.values.length) {\n this.values[pos++] = child.values[childIndex++];\n this.strings[pos] = child.strings[childIndex];\n }\n\n // Append raw string to current string.\n this.strings[pos] += rawString;\n } else {\n this.values[pos++] = child;\n this.strings[pos] = rawString;\n }\n }\n }\n\n get sql() {\n const len = this.strings.length;\n let i = 1;\n let value = this.strings[0];\n while (i < len) value += `?${this.strings[i++]}`;\n return value;\n }\n\n get statement() {\n const len = this.strings.length;\n let i = 1;\n let value = this.strings[0];\n while (i < len) value += `:${i}${this.strings[i++]}`;\n return value;\n }\n\n get text() {\n const len = this.strings.length;\n let i = 1;\n let value = this.strings[0];\n while (i < len) value += `$${i}${this.strings[i++]}`;\n return value;\n }\n\n inspect() {\n return {\n sql: this.sql,\n statement: this.statement,\n text: this.text,\n values: this.values,\n };\n }\n}\n\n/**\n * Create a SQL query for a list of values.\n */\nexport function join(\n values: readonly RawValue[],\n separator = \",\",\n prefix = \"\",\n suffix = \"\",\n) {\n if (values.length === 0) {\n throw new TypeError(\n \"Expected `join([])` to be called with an array of multiple elements, but got an empty array\",\n );\n }\n\n return new Sql(\n [prefix, ...Array(values.length - 1).fill(separator), suffix],\n values,\n );\n}\n\n/**\n * Create a SQL query for a list of structured values.\n */\nexport function bulk(\n data: ReadonlyArray<ReadonlyArray<RawValue>>,\n separator = \",\",\n prefix = \"\",\n suffix = \"\",\n) {\n const length = data.length && data[0].length;\n\n if (length === 0) {\n throw new TypeError(\n \"Expected `bulk([][])` to be called with a nested array of multiple elements, but got an empty array\",\n );\n }\n\n const values = data.map((item, index) => {\n if (item.length !== length) {\n throw new TypeError(\n `Expected \\`bulk([${index}][])\\` to have a length of ${length}, but got ${item.length}`,\n );\n }\n\n return new Sql([\"(\", ...Array(item.length - 1).fill(separator), \")\"], item);\n });\n\n return new Sql(\n [prefix, ...Array(values.length - 1).fill(separator), suffix],\n values,\n );\n}\n\n/**\n * Create raw SQL statement.\n */\nexport function raw(value: string) {\n return new Sql([value], []);\n}\n\n/**\n * Placeholder value for \"no text\".\n */\nexport const empty = raw(\"\");\n\n/**\n * Create a SQL object from a template string.\n */\nexport default function sql(\n strings: readonly string[],\n ...values: readonly RawValue[]\n) {\n return new Sql(strings, values);\n}\n", "export { addObjectProperties as addObjectProperties } from './addObjectProperties'\nexport { addProperty } from './addProperty'\nexport { cacheProperties } from './cacheProperties'\nexport { type CompositeProxyLayer, createCompositeProxy } from './createCompositeProxy'\nexport { removeProperties } from './removeProperties'\n", "import type { CompositeProxyLayer } from './createCompositeProxy'\n\n/**\n * Composite proxy layer that forwards all reads\n * to provided object\n *\n * @param object\n * @returns\n */\nexport function addObjectProperties(object: object): CompositeProxyLayer {\n return {\n getKeys() {\n return Object.keys(object)\n },\n\n getPropertyValue(key) {\n return object[key]\n },\n }\n}\n", "import { CompositeProxyLayer } from './createCompositeProxy'\n\n/**\n * Composite proxy layer, that adds a single property to the target\n * @param key the name of the property\n * @param factory the function that returns the value of the property\n * @returns\n */\nexport function addProperty(key: string | symbol, factory: () => unknown): CompositeProxyLayer {\n return {\n getKeys() {\n return [key]\n },\n\n getPropertyValue() {\n return factory()\n },\n }\n}\n", "import { Cache } from '@prisma/client-common'\n\nimport { CompositeProxyLayer } from './createCompositeProxy'\n\n/**\n * Composite proxy layer that adds caching to another\n * layer.\n *\n * @param baseLayer\n * @returns\n */\nexport function cacheProperties<KeyType extends string | symbol>(\n baseLayer: CompositeProxyLayer<KeyType>,\n): CompositeProxyLayer<KeyType> {\n const cache = new Cache<KeyType, unknown>()\n return {\n getKeys() {\n return baseLayer.getKeys()\n },\n\n getPropertyValue(key) {\n return cache.getOrCreate(key, () => baseLayer.getPropertyValue(key))\n },\n\n getPropertyDescriptor(key) {\n return baseLayer.getPropertyDescriptor?.(key)\n },\n }\n}\n", "import { defaultPropertyDescriptor } from '../model/utils/defaultProxyHandlers'\n\nexport interface CompositeProxyLayer<KeyType extends string | symbol = string | symbol> {\n /**\n * Returns a list of keys, defined by a layer\n */\n getKeys(): ReadonlyArray<KeyType>\n\n /**\n * Returns a value for a property for a given key (one of the keys, returned\n * from `getKeys`)\n * @param key\n */\n getPropertyValue(key: KeyType): unknown\n\n /**\n * Gets a descriptor for given property. If not implemented or undefined is returned, { enumerable: true, writeable: true, configurable: true} is defaulted\n * is used\n * @param key\n */\n getPropertyDescriptor?(key: KeyType): PropertyDescriptor | undefined\n\n /**\n * Allows to override results for hasOwnProperty/in operator. If not implemented, returns true\n * @param key\n */\n has?(key: KeyType): boolean\n}\n\nconst customInspect = Symbol.for('nodejs.util.inspect.custom')\n\n/**\n * Creates a proxy from a set of layers.\n * Each layer is a building for a proxy (potentially, reusable) that\n * can add or override property on top of the target.\n * When multiple layers define the same property, last one wins\n *\n * @param target\n * @param layers\n * @returns\n */\nexport function createCompositeProxy<T extends object>(target: T, layers: CompositeProxyLayer[]): T {\n const keysToLayerMap = mapKeysToLayers(layers)\n const overwrittenKeys = new Set<string | symbol>()\n\n const proxy = new Proxy(target, {\n get(target, prop) {\n // explicit overwrites of a property have highest priority\n if (overwrittenKeys.has(prop)) {\n return target[prop]\n }\n\n // next, we see if property is defined in one of the layers\n const layer = keysToLayerMap.get(prop)\n if (layer) {\n return layer.getPropertyValue(prop)\n }\n\n // finally, we read a prop from target\n return target[prop]\n },\n\n has(target, prop) {\n if (overwrittenKeys.has(prop)) {\n return true\n }\n const layer = keysToLayerMap.get(prop)\n if (layer) {\n return layer.has?.(prop) ?? true\n }\n\n return Reflect.has(target, prop)\n },\n\n ownKeys(target) {\n const targetKeys = getExistingKeys(Reflect.ownKeys(target), keysToLayerMap)\n const layerKeys = getExistingKeys(Array.from(keysToLayerMap.keys()), keysToLayerMap)\n return [...new Set([...targetKeys, ...layerKeys, ...overwrittenKeys])]\n },\n\n set(target, prop, value) {\n const layer = keysToLayerMap.get(prop)\n if (layer?.getPropertyDescriptor?.(prop)?.writable === false) {\n return false\n }\n overwrittenKeys.add(prop)\n return Reflect.set(target, prop, value)\n },\n\n getOwnPropertyDescriptor(target, prop) {\n const original = Reflect.getOwnPropertyDescriptor(target, prop)\n if (original && !original.configurable) {\n // non-configurable properties can not change descriptors\n return original\n }\n\n const layer = keysToLayerMap.get(prop)\n if (layer) {\n if (layer.getPropertyDescriptor) {\n return {\n ...defaultPropertyDescriptor,\n ...layer?.getPropertyDescriptor(prop),\n }\n }\n return defaultPropertyDescriptor\n }\n\n return original\n },\n\n defineProperty(target, property, attributes) {\n overwrittenKeys.add(property)\n return Reflect.defineProperty(target, property, attributes)\n },\n\n getPrototypeOf: () => Object.prototype,\n })\n\n proxy[customInspect] = function () {\n // Default node.js console.log and util.inspect deliberately avoid triggering any proxy traps and log\n // original target. This is not we want for our usecases: we want console.log to output the result as if\n // the properties actually existed on the target. Using spread operator forces us to produce correct object\n const toLog = { ...this }\n delete toLog[customInspect]\n return toLog\n }\n return proxy\n}\n\nfunction mapKeysToLayers(layers: CompositeProxyLayer[]) {\n const keysToLayerMap = new Map<string | symbol, CompositeProxyLayer>()\n for (const layer of layers) {\n const keys = layer.getKeys()\n for (const key of keys) {\n keysToLayerMap.set(key, layer)\n }\n }\n return keysToLayerMap\n}\n\nfunction getExistingKeys(keys: Array<string | symbol>, keysToLayerMap: Map<string | symbol, CompositeProxyLayer>) {\n return keys.filter((key) => {\n const layer = keysToLayerMap.get(key)\n return layer?.has?.(key) ?? true\n })\n}\n", "export const defaultPropertyDescriptor = {\n enumerable: true,\n configurable: true,\n writable: true,\n}\n\nexport function defaultProxyHandlers<T extends object>(ownKeys: (string | symbol)[]) {\n const _ownKeys = new Set(ownKeys)\n return {\n getPrototypeOf: () => Object.prototype,\n getOwnPropertyDescriptor: () => defaultPropertyDescriptor,\n has: (target: T, prop: string | symbol) => _ownKeys.has(prop),\n set: (target: T, prop: string | symbol, value: any) => {\n return _ownKeys.add(prop) && Reflect.set(target, prop, value)\n },\n ownKeys: () => [..._ownKeys],\n } as const\n}\n", "import { CompositeProxyLayer } from './createCompositeProxy'\n\nexport function removeProperties(keys: ReadonlyArray<string | symbol>): CompositeProxyLayer {\n return {\n getKeys() {\n return keys\n },\n\n has() {\n return false\n },\n\n getPropertyValue() {\n return undefined\n },\n }\n}\n", "import { TransactionOptions } from '../Engine'\nimport { JsonQuery } from '../types/JsonProtocol'\nimport { QueryEngineBatchRequest } from '../types/QueryEngine'\n\nexport function getBatchRequestPayload(\n batch: JsonQuery[],\n transaction?: TransactionOptions<unknown>,\n): QueryEngineBatchRequest {\n return {\n batch,\n transaction: transaction?.kind === 'batch' ? { isolationLevel: transaction.options.isolationLevel } : undefined,\n }\n}\n", "import { Writer } from '@prisma/ts-builders'\n\nimport { JsArgs } from '../types/exported/JsApi'\nimport { buildArgumentsRenderingTree } from './ArgumentsRenderingTree'\nimport { inactiveColors } from './base'\n\nexport function prettyPrintArguments(args?: JsArgs): string {\n if (args === undefined) {\n return ''\n }\n const tree = buildArgumentsRenderingTree(args)\n const writer = new Writer(0, { colors: inactiveColors })\n return writer.write(tree).toString()\n}\n", "import { RequestError } from '../../engines/common/types/RequestError'\nimport { PrismaClientKnownRequestError } from '../PrismaClientKnownRequestError'\nimport { PrismaClientUnknownRequestError } from '../PrismaClientUnknownRequestError'\n\nconst TOO_MANY_CONNECTIONS_ERROR = 'P2037'\n\nexport function prismaGraphQLToJSError(\n { error, user_facing_error }: RequestError,\n clientVersion: string,\n activeProvider: string,\n): PrismaClientKnownRequestError | PrismaClientUnknownRequestError {\n if (user_facing_error.error_code) {\n return new PrismaClientKnownRequestError(getKnownErrorMessage(user_facing_error, activeProvider), {\n code: user_facing_error.error_code,\n clientVersion,\n meta: user_facing_error.meta,\n batchRequestIdx: user_facing_error.batch_request_idx,\n })\n }\n\n return new PrismaClientUnknownRequestError(error, {\n clientVersion,\n batchRequestIdx: user_facing_error.batch_request_idx,\n })\n}\n\nfunction getKnownErrorMessage(userFacingError: RequestError['user_facing_error'], activeProvider: string) {\n let message = userFacingError.message\n if (\n (activeProvider === 'postgresql' || activeProvider === 'postgres' || activeProvider === 'mysql') &&\n userFacingError.error_code === TOO_MANY_CONNECTIONS_ERROR\n ) {\n message +=\n '\\nPrisma Accelerate has built-in connection pooling to prevent such errors: https://pris.ly/client/error-accelerate'\n }\n\n return message\n}\n", "import { Client } from '../../getPrismaClient'\nimport { AccelerateEngine } from '../engines/accelerate/AccelerateEngine'\nimport { applyModelsAndClientExtensions } from '../model/applyModelsAndClientExtensions'\nimport { ExtensionArgs } from '../types/exported'\n\n/**\n * @param this\n */\nexport function $extends(this: Client, extension: ExtensionArgs | ((client: Client) => Client)): Client {\n if (typeof extension === 'function') {\n return extension(this)\n }\n\n if (extension.client?.__AccelerateEngine) {\n const Engine = extension.client.__AccelerateEngine as typeof AccelerateEngine\n this._originalClient._engine = new Engine(this._originalClient._accelerateEngineConfig)\n }\n\n const newClient = Object.create(this._originalClient, {\n _extensions: { value: this._extensions.append(extension) },\n _appliedParent: { value: this, configurable: true },\n $on: { value: undefined },\n }) as Client\n\n return applyModelsAndClientExtensions(newClient)\n}\n", "import type { Client } from '../../getPrismaClient'\nimport {\n addObjectProperties,\n addProperty,\n cacheProperties,\n CompositeProxyLayer,\n createCompositeProxy,\n} from '../compositeProxy'\nimport { applyModel } from './applyModel'\nimport { dmmfToJSModelName } from './utils/dmmfToJSModelName'\nimport { jsToDMMFModelName } from './utils/jsToDMMFModelName'\n\n// symbol we use for storing raw, unproxied\n// client instance, so we later can retrieve it\n// via `unapplyModels` methods\nconst rawClient = Symbol()\n\n/**\n * Dynamically creates a model proxy interface for a give name. For each prop\n * accessed on this proxy, it will lookup the dmmf to find if that model exists.\n * If it is the case, it will create a proxy for that model via {@link applyModel}.\n * @param client to create the proxy around\n * @returns a proxy to access models\n */\nexport function applyModelsAndClientExtensions(client: Client) {\n const layers = [\n rootLayer(client),\n modelsLayer(client),\n addProperty(rawClient, () => client),\n addProperty('$parent', () => client._appliedParent),\n ]\n const clientExtensions = client._extensions.getAllClientExtensions()\n if (clientExtensions) {\n layers.push(addObjectProperties(clientExtensions))\n }\n return createCompositeProxy(client, layers)\n}\n\nfunction rootLayer(client: Client): CompositeProxyLayer {\n const prototype = Object.getPrototypeOf(client._originalClient)\n const allKeys = [...new Set(Object.getOwnPropertyNames(prototype))]\n\n return {\n getKeys() {\n return allKeys\n },\n\n getPropertyValue(prop) {\n return client[prop]\n },\n }\n}\n\nfunction modelsLayer(client: Client): CompositeProxyLayer {\n const dmmfModelKeys = Object.keys(client._runtimeDataModel.models)\n const jsModelKeys = dmmfModelKeys.map(dmmfToJSModelName)\n const allKeys = [...new Set(dmmfModelKeys.concat(jsModelKeys))]\n\n return cacheProperties({\n getKeys() {\n return allKeys\n },\n\n getPropertyValue(prop) {\n const dmmfModelName = jsToDMMFModelName(prop)\n // creates a new model proxy on the fly and caches it\n if (client._runtimeDataModel.models[dmmfModelName] !== undefined) {\n return applyModel(client, dmmfModelName)\n }\n\n // above silently failed if model name is lower cased\n if (client._runtimeDataModel.models[prop] !== undefined) {\n return applyModel(client, prop)\n }\n\n return undefined\n },\n\n getPropertyDescriptor(key) {\n if (!jsModelKeys.includes(key)) {\n return { enumerable: false }\n }\n\n return undefined\n },\n })\n}\n\nexport function unApplyModelsAndClientExtensions(client: Client): Client {\n if (client[rawClient]) {\n return client[rawClient]\n }\n return client\n}\n", "import * as DMMF from '@prisma/dmmf'\nimport type { O } from 'ts-toolbelt'\n\nimport { type Client, type InternalRequestParams } from '../../getPrismaClient'\nimport { getCallSite } from '../../utils/CallSite'\nimport {\n addObjectProperties,\n addProperty,\n cacheProperties,\n CompositeProxyLayer,\n createCompositeProxy,\n} from '../compositeProxy'\nimport type { PrismaPromise } from '../request/PrismaPromise'\nimport type { UserArgs } from '../request/UserArgs'\nimport { applyAggregates } from './applyAggregates'\nimport { applyFieldsProxy } from './applyFieldsProxy'\nimport { applyFluent } from './applyFluent'\nimport { dmmfToJSModelName } from './utils/dmmfToJSModelName'\n\nexport type ModelAction = (\n paramOverrides: O.Optional<InternalRequestParams>,\n) => (userArgs?: UserArgs) => PrismaPromise<unknown>\n\nconst fluentProps = [\n 'findUnique',\n 'findUniqueOrThrow',\n 'findFirst',\n 'findFirstOrThrow',\n 'create',\n 'update',\n 'upsert',\n 'delete',\n] as const\nconst aggregateProps = ['aggregate', 'count', 'groupBy'] as const\n\n/**\n * Dynamically creates a model interface via a proxy.\n * @param client to trigger the request execution\n * @param dmmfModelName the dmmf name of the model\n * @returns\n */\nexport function applyModel(client: Client, dmmfModelName: string) {\n const modelExtensions = client._extensions.getAllModelExtensions(dmmfModelName) ?? {}\n\n const layers = [\n modelActionsLayer(client, dmmfModelName),\n fieldsPropertyLayer(client, dmmfModelName),\n addObjectProperties(modelExtensions),\n addProperty('name', () => dmmfModelName),\n addProperty('$name', () => dmmfModelName),\n addProperty('$parent', () => client._appliedParent),\n ]\n\n return createCompositeProxy({}, layers)\n}\n\n/**\n * Dynamically creates a model interface via a proxy.\n * @param client to trigger the request execution\n * @param dmmfModelName the dmmf name of the model\n * @returns\n */\nfunction modelActionsLayer(client: Client, dmmfModelName: string): CompositeProxyLayer<string> {\n // we use the javascript model name for display purposes\n const jsModelName = dmmfToJSModelName(dmmfModelName)\n const ownKeys = Object.keys(DMMF.ModelAction).concat('count')\n\n return {\n getKeys() {\n return ownKeys\n },\n\n getPropertyValue(key) {\n const dmmfActionName = key as DMMF.ModelAction\n\n // we return a function as the model action that we want to expose\n // it takes user args and executes the request in a Prisma Promise\n const action = (paramOverrides: O.Optional<InternalRequestParams>) => (userArgs?: UserArgs) => {\n const callSite = getCallSite(client._errorFormat) // used for showing better errors\n\n return client._createPrismaPromise(\n (transaction) => {\n const params: InternalRequestParams = {\n // data and its dataPath for nested results\n args: userArgs,\n dataPath: [],\n\n // action name and its related model\n action: dmmfActionName,\n model: dmmfModelName,\n\n // method name for display only\n clientMethod: `${jsModelName}.${key}`,\n jsModelName,\n\n // transaction information\n transaction,\n\n // stack trace\n callsite: callSite,\n }\n\n return client._request({ ...params, ...paramOverrides })\n },\n {\n action: dmmfActionName,\n args: userArgs,\n model: dmmfModelName,\n },\n )\n }\n\n // we give the control over action for building the fluent api\n if ((fluentProps as readonly string[]).includes(dmmfActionName)) {\n return applyFluent(client, dmmfModelName, action)\n }\n\n // we handle the edge case of aggregates that need extra steps\n if (isValidAggregateName(key)) {\n return applyAggregates(client, key, action)\n }\n\n return action({}) // and by default, don't override any params\n },\n }\n}\n\nfunction isValidAggregateName(action: string): action is (typeof aggregateProps)[number] {\n return (aggregateProps as readonly string[]).includes(action)\n}\n\nfunction fieldsPropertyLayer(client: Client, dmmfModelName: string) {\n return cacheProperties(\n addProperty('fields', () => {\n const model = client._runtimeDataModel.models[dmmfModelName]\n return applyFieldsProxy(dmmfModelName, model)\n }),\n )\n}\n", "import { pathToPosix } from '@prisma/internals'\nimport * as stackTraceParser from 'stacktrace-parser'\n\nimport { ErrorFormat } from '../getPrismaClient'\n\ndeclare global {\n /**\n * a global variable that is injected by us via jest to make our snapshots\n * work in clients that cannot read from disk (e.g. wasm or edge clients)\n */\n let $EnabledCallSite: typeof EnabledCallSite | undefined\n}\n\nexport type LocationInFile = {\n fileName: string\n lineNumber: number | null\n columnNumber: number | null\n}\n\nexport interface CallSite {\n getLocation(): LocationInFile | null\n}\n\nclass DisabledCallSite implements CallSite {\n getLocation(): LocationInFile | null {\n return null\n }\n}\n\nexport class EnabledCallSite implements CallSite {\n private _error: Error\n constructor() {\n this._error = new Error()\n }\n getLocation(): LocationInFile | null {\n const stack = this._error.stack\n if (!stack) {\n return null\n }\n const stackFrames = stackTraceParser.parse(stack)\n // TODO: more resilient logic to check that it's not relative to cwd\n const frame = stackFrames.find((t) => {\n // Here we are trying to find the location in the user's code which caused the error\n if (!t.file) {\n return false\n }\n\n // convert windows path to posix path\n const posixFile = pathToPosix(t.file)\n return (\n posixFile !== '<anonymous>' && // Ignore as we can not read an <anonymous> file\n !posixFile.includes('@prisma') && // Internal, unbundled code\n !posixFile.includes('/packages/client/src/runtime/') && // Runtime sources when source maps are used\n !posixFile.endsWith('/runtime/binary.js') && // Bundled runtimes\n !posixFile.endsWith('/runtime/library.js') &&\n !posixFile.endsWith('/runtime/edge.js') &&\n !posixFile.endsWith('/runtime/edge-esm.js') &&\n !posixFile.startsWith('internal/') && // We don't want internal nodejs files\n !t.methodName.includes('new ') && // \"new CallSite\" call and maybe other constructors\n !t.methodName.includes('getCallSite') && // getCallSite function from this module\n !t.methodName.includes('Proxy.') && // Model proxies\n t.methodName.split('.').length < 4\n )\n })\n\n if (!frame || !frame.file) {\n return null\n }\n\n return {\n fileName: frame.file,\n lineNumber: frame.lineNumber,\n columnNumber: frame.column,\n }\n }\n}\n\nexport function getCallSite(errorFormat: ErrorFormat): CallSite {\n if (\n errorFormat === 'minimal' ||\n TARGET_BUILD_TYPE === 'wasm-engine-edge' ||\n TARGET_BUILD_TYPE === 'wasm-compiler-edge' ||\n TARGET_BUILD_TYPE === 'edge'\n ) {\n if (typeof $EnabledCallSite === 'function' && errorFormat !== 'minimal') {\n return new $EnabledCallSite()\n } else {\n return new DisabledCallSite()\n }\n } else {\n return new EnabledCallSite()\n }\n}\n", "var UNKNOWN_FUNCTION = '<unknown>';\n/**\n * This parses the different stack traces and puts them into one format\n * This borrows heavily from TraceKit (https://github.com/csnover/TraceKit)\n */\n\nfunction parse(stackString) {\n var lines = stackString.split('\\n');\n return lines.reduce(function (stack, line) {\n var parseResult = parseChrome(line) || parseWinjs(line) || parseGecko(line) || parseNode(line) || parseJSC(line);\n\n if (parseResult) {\n stack.push(parseResult);\n }\n\n return stack;\n }, []);\n}\nvar chromeRe = /^\\s*at (.*?) ?\\(((?:file|https?|blob|chrome-extension|native|eval|webpack|rsc|<anonymous>|\\/|[a-z]:\\\\|\\\\\\\\).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nvar chromeEvalRe = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\nfunction parseChrome(line) {\n var parts = chromeRe.exec(line);\n\n if (!parts) {\n return null;\n }\n\n var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n\n var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n var submatch = chromeEvalRe.exec(parts[2]);\n\n if (isEval && submatch != null) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1]; // url\n\n parts[3] = submatch[2]; // line\n\n parts[4] = submatch[3]; // column\n }\n\n return {\n file: !isNative ? parts[2] : null,\n methodName: parts[1] || UNKNOWN_FUNCTION,\n arguments: isNative ? [parts[2]] : [],\n lineNumber: parts[3] ? +parts[3] : null,\n column: parts[4] ? +parts[4] : null\n };\n}\n\nvar winjsRe = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|rsc|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nfunction parseWinjs(line) {\n var parts = winjsRe.exec(line);\n\n if (!parts) {\n return null;\n }\n\n return {\n file: parts[2],\n methodName: parts[1] || UNKNOWN_FUNCTION,\n arguments: [],\n lineNumber: +parts[3],\n column: parts[4] ? +parts[4] : null\n };\n}\n\nvar geckoRe = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|rsc|resource|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nvar geckoEvalRe = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nfunction parseGecko(line) {\n var parts = geckoRe.exec(line);\n\n if (!parts) {\n return null;\n }\n\n var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n var submatch = geckoEvalRe.exec(parts[3]);\n\n if (isEval && submatch != null) {\n // throw out eval line/column and use top-most line number\n parts[3] = submatch[1];\n parts[4] = submatch[2];\n parts[5] = null; // no column when eval\n }\n\n return {\n file: parts[3],\n methodName: parts[1] || UNKNOWN_FUNCTION,\n arguments: parts[2] ? parts[2].split(',') : [],\n lineNumber: parts[4] ? +parts[4] : null,\n column: parts[5] ? +parts[5] : null\n };\n}\n\nvar javaScriptCoreRe = /^\\s*(?:([^@]*)(?:\\((.*?)\\))?@)?(\\S.*?):(\\d+)(?::(\\d+))?\\s*$/i;\n\nfunction parseJSC(line) {\n var parts = javaScriptCoreRe.exec(line);\n\n if (!parts) {\n return null;\n }\n\n return {\n file: parts[3],\n methodName: parts[1] || UNKNOWN_FUNCTION,\n arguments: [],\n lineNumber: +parts[4],\n column: parts[5] ? +parts[5] : null\n };\n}\n\nvar nodeRe = /^\\s*at (?:((?:\\[object object\\])?[^\\\\/]+(?: \\[as \\S+\\])?) )?\\(?(.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nfunction parseNode(line) {\n var parts = nodeRe.exec(line);\n\n if (!parts) {\n return null;\n }\n\n return {\n file: parts[2],\n methodName: parts[1] || UNKNOWN_FUNCTION,\n arguments: [],\n lineNumber: +parts[3],\n column: parts[4] ? +parts[4] : null\n };\n}\n\nexport { parse };\n", "import type { Client } from '../../getPrismaClient'\nimport type { UserArgs } from '../request/UserArgs'\nimport { Action } from '../types/exported/JsApi'\nimport { aggregate } from './aggregates/aggregate'\nimport { count } from './aggregates/count'\nimport { groupBy } from './aggregates/groupBy'\nimport type { ModelAction } from './applyModel'\n\n/**\n * Dynamically returns the appropriate aggregate action for a given `action`.\n * With this, we are able to provide an aggregate api that has a better DX. In\n * short, we manipulate the user input which is designed to have DX to transform\n * it into something that the engines understand. Similarly, we take the engine\n * output for that input and produce something that is easier to work with.\n * @param action that tells which aggregate action to execute\n * @param modelAction a callback action that triggers request execution\n * @returns\n */\nexport function applyAggregates(client: Client, action: Action, modelAction: ModelAction) {\n // we effectively take over the aggregate api to perform data changes\n if (action === 'aggregate') return (userArgs?: UserArgs) => aggregate(userArgs, modelAction)\n if (action === 'count') return (userArgs?: UserArgs) => count(userArgs, modelAction)\n if (action === 'groupBy') return (userArgs?: UserArgs) => groupBy(userArgs, modelAction)\n\n return undefined\n}\n", "import type { UserArgs } from '../../request/UserArgs'\nimport type { ModelAction } from '../applyModel'\nimport { aggregateMap } from './utils/aggregateMap'\n\n/**\n * Transforms the `userArgs` for the `.aggregate` shorthand. It is an API sugar\n * for not having to do things like: `{select: {_avg: {select: {age: true}}}}`.\n * The goal here is to desugar it into something that is understood by the QE.\n * @param args to transform\n * @returns\n */\nexport function desugarUserArgs(args: UserArgs = {}) {\n const _args = desugarCountInUserArgs(args)\n const userArgsEntries = Object.entries(_args)\n\n return userArgsEntries.reduce(\n (aggregateArgs, [key, value]) => {\n if (aggregateMap[key] !== undefined) {\n // if it's an aggregate, we re-wrap into select\n aggregateArgs['select']![key] = { select: value }\n } else {\n aggregateArgs[key] = value // or leave it alone\n }\n\n return aggregateArgs\n },\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n { select: {} } as UserArgs & { select: UserArgs },\n )\n}\n\n/**\n * Desugar `userArgs` when it contains `{_count: true}`.\n * @param args the user input\n * @returns\n */\nfunction desugarCountInUserArgs(args: UserArgs = {}) {\n if (typeof args['_count'] === 'boolean') {\n return { ...args, _count: { _all: args['_count'] } }\n }\n\n return args\n}\n\n/**\n * Creates an unpacker that adds sugar to the basic result of the QE. An\n * unpacker helps to transform a result before returning it to the user.\n * @param args the user input\n * @returns\n */\nexport function createUnpacker(args: UserArgs = {}) {\n return (data: object) => {\n if (typeof args['_count'] === 'boolean') {\n data['_count'] = data['_count']['_all']\n }\n\n return data\n }\n}\n\n/**\n * Executes the `.aggregate` action on a model.\n * @see {desugarUserArgs}\n * @param args the user input to desugar\n * @param modelAction a callback action that triggers request execution\n * @returns\n */\nexport function aggregate(args: UserArgs, modelAction: ModelAction) {\n const aggregateUnpacker = createUnpacker(args)\n\n return modelAction({\n action: 'aggregate',\n unpacker: aggregateUnpacker,\n argsMapper: desugarUserArgs,\n })(args)\n}\n", "export const aggregateMap = {\n _avg: true,\n _count: true,\n _sum: true,\n _min: true,\n _max: true,\n}\n", "import type { UserArgs } from '../../request/UserArgs'\nimport type { ModelAction } from '../applyModel'\nimport { createUnpacker as createUnpackerAggregate, desugarUserArgs as desugarUserArgsAggregate } from './aggregate'\n\n/**\n * Transforms the `userArgs` for the `.count` shorthand. It is an API sugar. It\n * reuses the logic from the `.aggregate` shorthand to add additional handling.\n * The goal here is to desugar it into something that is understood by the QE.\n * @param args to transform\n * @returns\n */\nfunction desugarUserArgs(args: UserArgs = {}) {\n const { select, ..._args } = args // exclude select\n\n if (typeof select === 'object') {\n return desugarUserArgsAggregate({ ..._args, _count: select })\n } else {\n return desugarUserArgsAggregate({ ..._args, _count: { _all: true } })\n }\n}\n\n/**\n * Creates an unpacker that adds sugar to the basic result of the QE. An\n * unpacker helps to transform a result before returning it to the user.\n * @param args the user input\n * @returns\n */\nexport function createUnpacker(args: UserArgs = {}) {\n if (typeof args['select'] === 'object') {\n return (data: object) => createUnpackerAggregate(args)(data)['_count']\n } else {\n return (data: object) => createUnpackerAggregate(args)(data)['_count']['_all']\n }\n}\n\n/**\n * Executes the `.count` action on a model via {@link aggregate}.\n * @param args the user input to desugar\n * @param modelAction a callback action that triggers request execution\n * @returns\n */\nexport function count(args: UserArgs, modelAction: ModelAction) {\n return modelAction({\n action: 'count',\n unpacker: createUnpacker(args),\n argsMapper: desugarUserArgs,\n })(args)\n}\n", "import type { UserArgs } from '../../request/UserArgs'\nimport type { ModelAction } from '../applyModel'\nimport { desugarUserArgs as desugarUserArgsAggregate } from './aggregate'\n\n/**\n * Transforms the `userArgs` for the `.groupBy` shorthand. It is an API sugar.\n * It reuses the logic from the `.aggregate` shorthand and adds additional\n * handling for the `by` clause. The goal here is to desugar it into something\n * that is understood by the QE.\n * @param args to transform\n * @returns\n */\nfunction desugarUserArgs(args: UserArgs = {}) {\n const _args = desugarUserArgsAggregate(args)\n\n // we desugar the array into { [key]: boolean }\n if (Array.isArray(_args['by'])) {\n for (const key of _args['by']) {\n if (typeof key === 'string') {\n _args['select'][key] = true\n }\n }\n } else if (typeof _args['by'] === 'string') {\n _args['select'][_args['by']] = true\n }\n\n return _args\n}\n\n/**\n * Creates an unpacker that adds sugar to the basic result of the QE. An\n * unpacker helps to transform a result before returning it to the user.\n * @param args the user input\n * @returns\n */\nexport function createUnpacker(args: UserArgs = {}) {\n return (data: object[]) => {\n if (typeof args?.['_count'] === 'boolean') {\n data.forEach((row) => {\n row['_count'] = row['_count']['_all']\n })\n }\n\n return data\n }\n}\n\n/**\n * Executes the `.groupBy` action on a model by reusing {@link aggregate}.\n * @param args the user input to desugar\n * @param modelAction a callback action that triggers request execution\n * @returns\n */\nexport function groupBy(args: UserArgs, modelAction: ModelAction) {\n return modelAction({\n action: 'groupBy',\n unpacker: createUnpacker(args),\n argsMapper: desugarUserArgs,\n })(args)\n}\n", "import { keyBy, RuntimeModel } from '@prisma/client-common'\n\nimport { FieldRefImpl } from './FieldRef'\nimport { defaultProxyHandlers } from './utils/defaultProxyHandlers'\n\nexport type FieldProxy = {\n readonly [key: string]: FieldRefImpl<string, string>\n}\n\nexport function applyFieldsProxy(modelName: string, model: RuntimeModel): FieldProxy {\n const scalarFieldsList = model.fields.filter((field) => !field.relationName)\n const scalarFields = keyBy(scalarFieldsList, 'name')\n return new Proxy(\n {},\n {\n get(target, prop) {\n if (prop in target || typeof prop === 'symbol') {\n return target[prop]\n }\n const dmmfField = scalarFields[prop]\n if (dmmfField) {\n return new FieldRefImpl(modelName, prop, dmmfField.type, dmmfField.isList, dmmfField.kind === 'enum')\n }\n\n return undefined\n },\n ...defaultProxyHandlers(Object.keys(scalarFields)),\n },\n )\n}\n", "import type * as DMMF from '@prisma/dmmf'\n\nimport type { Client } from '../../getPrismaClient'\nimport { getCallSite } from '../../utils/CallSite'\nimport { deepSet } from '../../utils/deep-set'\nimport type { UserArgs } from '../request/UserArgs'\nimport type { ModelAction } from './applyModel'\nimport { defaultProxyHandlers } from './utils/defaultProxyHandlers'\n\n/**\n * The fluent API makes that nested relations can be retrieved at once. It's a\n * helper for writing `select` statements on relations with a chaining api.\n * Because of this, we automatically add `select` statements to the query, that\n * also means that we need to provide a `dataPath` for unpacking nested values.\n * @see {getNextUserArgs}\n * @param dmmfModelName\n * @param prevDataPath\n * @returns\n */\nfunction getNextDataPath(fluentPropName?: string, prevDataPath?: string[]) {\n if (fluentPropName === undefined || prevDataPath === undefined) return []\n\n return [...prevDataPath, 'select', fluentPropName]\n}\n\n/**\n * @see {getNextDataPath} for introduction. The goal of the fluent API is to\n * make it easy to retrieve nested relations. For this, we construct the query\n * args that are necessary to retrieve the nested relations. It consists of\n * nesting `select` statements each time that we access a relation.\n * @param callArgs usually passed on the last call of the chaining api\n * @param prevArgs when multiple chaining occurs, they are the previous\n * @param nextDataPath path where to set `callArgs` in `prevArgs`\n * @example\n * ```ts\n * prisma.user.findUnique().link().user()\n *\n * // will end up with an args like this:\n * // args {\n * // \"where\": {\n * // \"email\": \"1639498523518@gmail.com\"\n * // },\n * // \"select\": {\n * // \"link\": {\n * // \"select\": {\n * // \"user\": true\n * // }\n * // }\n * // }\n * // }\n * ```\n */\nfunction getNextUserArgs(callArgs: UserArgs, prevArgs: UserArgs, nextDataPath: string[]): UserArgs {\n if (prevArgs === undefined) return callArgs ?? {}\n\n return deepSet(prevArgs, nextDataPath, callArgs || true)\n}\n\n/**\n * Dynamically creates a fluent API from a `modelAction` and a `dmmfModelName`.\n * We use the current `dmmfModelName` to determine what can be chained on next.\n * The fluent API allows to chain on model relations to provide an alternative\n * way to fetch and access nested data all at once. When triggered, it calls\n * `modelActions` after having accumulated `prevDataPath` and `prevUserArgs`\n * with the chaining. You can find an example of usage at {@link applyModel}.\n * @param client to provide dmmf information\n * @param dmmfModelName the dmmf name of the model to apply the api to\n * @param modelAction a callback action that triggers request execution\n * @param fluentPropName the name of the api link that was just called\n * @param prevDataPath the dataPath from the previous api link\n * @param prevUserArgs the userArgs from the previous api link\n * @remarks optional parameters are empty on the first call via\n * {@link applyModel}\n * @returns\n */\nexport function applyFluent(\n client: Client,\n dmmfModelName: string,\n modelAction: ModelAction,\n fluentPropName?: string,\n prevDataPath?: string[],\n prevUserArgs?: UserArgs,\n) {\n // we retrieve the model that is described from the DMMF\n const dmmfModel = client._runtimeDataModel.models[dmmfModelName]\n\n // map[field.name] === field, basically for quick access\n const dmmfModelFieldMap = dmmfModel.fields.reduce(\n (acc, field) => ({ ...acc, [field.name]: field }),\n {} as { [dmmfModelFieldName: string]: DMMF.Field },\n )\n\n // we return a regular model action but proxy its return\n return (userArgs?: UserArgs) => {\n const callsite = getCallSite(client._errorFormat)\n // ! first call: nextDataPath => [], nextUserArgs => userArgs\n const nextDataPath = getNextDataPath(fluentPropName, prevDataPath)\n const nextUserArgs = getNextUserArgs(userArgs, prevUserArgs, nextDataPath)\n const prismaPromise = modelAction({ dataPath: nextDataPath, callsite })(nextUserArgs)\n // TODO: use an unpacker here instead of ClientFetcher logic\n // TODO: once it's done we can deprecate the use of dataPath\n const ownKeys = getOwnKeys(client, dmmfModelName)\n\n // we take control of the return promise to allow chaining\n return new Proxy(prismaPromise, {\n get(target, prop: string) {\n // fluent api only works on fields that are relational\n if (!ownKeys.includes(prop)) return target[prop]\n\n // here we are sure that prop is a field of type object\n const dmmfModelName = dmmfModelFieldMap[prop].type\n const modelArgs = [dmmfModelName, modelAction, prop] as const\n const dataArgs = [nextDataPath, nextUserArgs] as const\n\n // we allow for chaining more with this recursive call\n return applyFluent(client, ...modelArgs, ...dataArgs)\n },\n ...defaultProxyHandlers([...ownKeys, ...Object.getOwnPropertyNames(prismaPromise)]),\n })\n }\n}\n\n// the only accessible fields are relations to be chained on\nfunction getOwnKeys(client: Client, dmmfModelName: string) {\n return client._runtimeDataModel.models[dmmfModelName].fields\n .filter((field) => field.kind === 'object') // relations\n .map((field) => field.name)\n}\n", "// Taken from https://gist.github.com/LukeChannings/15c92cef5a016a8b21a0\n\n// ensure the keys being passed is an array of key paths\n// example: 'a.b' becomes ['a', 'b'] unless it was already ['a', 'b']\nconst keys = (ks: string | string[]) => (Array.isArray(ks) ? ks : ks.split('.'))\n\n// traverse the set of keys left to right,\n// returning the current value in each iteration.\n// if at any point the value for the current key does not exist,\n// return the default value\nexport const deepGet = (o, kp: string[]) => keys(kp).reduce((o, k) => o && o[k], o)\n\n// traverse the set of keys right to left,\n// returning a new object containing both properties from the object\n// we were originally passed and our new property.\n//\n// Example:\n// If o = { a: { b: { c: 1 } } }\n//\n// deepSet(o, ['a', 'b', 'c'], 2) will progress thus:\n// 1. c = Object.assign({}, {c: 1}, { c: 2 })\n// 2. b = Object.assign({}, { b: { c: 1 } }, { b: c })\n// 3. returned = Object.assign({}, { a: { b: { c: 1 } } }, { a: b })\nexport const deepSet = (o: any, kp: string | string[], v: any) =>\n keys(kp).reduceRight((v, k, i, ks) => Object.assign({}, deepGet(o, ks.slice(0, i)), { [k]: v }), v)\n", "/**\n * Transforms a model name coming from the runtime to a DMMF model name.\n * @param name\n * @returns\n */\nexport function jsToDMMFModelName(name: string) {\n return name.replace(/^./, (str) => str.toUpperCase())\n}\n", "import { RuntimeDataModel } from '@prisma/client-common'\n\nimport { GlobalOmitOptions } from '../jsonProtocol/serializeJsonQuery'\nimport { dmmfToJSModelName } from '../model/utils/dmmfToJSModelName'\nimport { JsArgs } from '../types/exported/JsApi'\nimport { applyResultExtensions } from './applyResultExtensions'\nimport { MergedExtensionsList } from './MergedExtensionsList'\nimport { visitQueryResult } from './visitQueryResult'\n\ntype ApplyAllResultExtensionsParams = {\n result: object | null\n modelName: string\n args: JsArgs\n extensions: MergedExtensionsList\n runtimeDataModel: RuntimeDataModel\n globalOmit?: GlobalOmitOptions\n}\n\n/**\n * Walks the result of the query and applies all possible result extensions\n * to all parts of it, including nested relations\n */\nexport function applyAllResultExtensions({\n result,\n modelName,\n args,\n extensions,\n runtimeDataModel,\n globalOmit,\n}: ApplyAllResultExtensionsParams) {\n // We return the result directly (not applying result extensions) if\n // - there is no extension to apply\n // - result is `null`\n // - result is not an object (e.g. `.count()`)\n if (extensions.isEmpty() || result == null || typeof result !== 'object') {\n return result\n }\n const model = runtimeDataModel.models[modelName]\n if (!model) {\n return result\n }\n\n return visitQueryResult({\n result,\n args: args ?? {},\n modelName,\n runtimeDataModel,\n visitor: (value, dmmfModelName, args) => {\n const jsName = dmmfToJSModelName(dmmfModelName)\n return applyResultExtensions({\n result: value,\n modelName: jsName,\n select: args.select,\n // passing omit only if explicit select is not set - those 2 options are\n // mutually exclusive\n omit: args.select ? undefined : { ...globalOmit?.[jsName], ...args.omit },\n extensions,\n })\n },\n })\n}\n", "import { hasOwnProperty } from '@prisma/internals'\n\nimport {\n addProperty,\n cacheProperties,\n CompositeProxyLayer,\n createCompositeProxy,\n removeProperties,\n} from '../compositeProxy'\nimport { Omission, Selection } from '../types/exported/JsApi'\nimport { MergedExtensionsList } from './MergedExtensionsList'\nimport { ComputedField } from './resultUtils'\n\ntype ApplyExtensionsArgs = {\n result: object\n select?: Selection\n omit?: Omission\n modelName: string\n extensions: MergedExtensionsList\n}\n\n/**\n * Given a part of a query result, it's model name and a list of extension,\n * applies computed fields to the results. Fields are computed lazily on a first access,\n * after that the result of computation is cached. In case `select` is used, all dependencies\n * of the computed fields would be excluded from final result, unless they are also specified in the select.\n *\n * This function applies computed fields to a single object only: it does not traverse relationships.\n * For full functionality, it is meant to be combined with `visitQueryResult`.\n *\n * @param params\n * @returns\n */\nexport function applyResultExtensions({ result, modelName, select, omit, extensions }: ApplyExtensionsArgs) {\n const computedFields = extensions.getAllComputedFields(modelName)\n if (!computedFields) {\n return result\n }\n\n const computedPropertiesLayers: CompositeProxyLayer[] = []\n const maskingLayers: CompositeProxyLayer[] = []\n\n for (const field of Object.values(computedFields)) {\n if (omit) {\n if (omit[field.name]) {\n continue\n }\n const toMask = field.needs.filter((prop) => omit[prop])\n if (toMask.length > 0) {\n maskingLayers.push(removeProperties(toMask))\n }\n } else if (select) {\n if (!select[field.name]) {\n continue\n }\n\n const toMask = field.needs.filter((prop) => !select[prop])\n if (toMask.length > 0) {\n maskingLayers.push(removeProperties(toMask))\n }\n }\n\n if (areNeedsMet(result, field.needs)) {\n computedPropertiesLayers.push(\n computedPropertyLayer(field, createCompositeProxy(result, computedPropertiesLayers)),\n )\n }\n }\n\n if (computedPropertiesLayers.length > 0 || maskingLayers.length > 0) {\n return createCompositeProxy(result, [...computedPropertiesLayers, ...maskingLayers])\n }\n return result\n}\n\nfunction areNeedsMet(result: object, neededProperties: string[]) {\n return neededProperties.every((property) => hasOwnProperty(result, property))\n}\n\nfunction computedPropertyLayer(field: ComputedField, result: object): CompositeProxyLayer {\n return cacheProperties(addProperty(field.name, () => field.compute(result)))\n}\n", "import { RuntimeDataModel } from '@prisma/client-common'\n\nimport { isSkip } from '../types'\nimport { JsArgs, Selection } from '../types/exported/JsApi'\n\ntype ModelVisitor = (value: object, modelName: string, queryArgs: JsArgs) => object | undefined\n\ntype VisitParams = {\n result: object\n args: JsArgs\n modelName: string\n runtimeDataModel: RuntimeDataModel\n visitor: ModelVisitor\n}\n\n/**\n * Function recursively walks through provided query response using `include` and `select`\n * query parameters and calls `visitor` callback for each model it encounters.\n * `visitor` receives the value of a particular response section, model it corresponds to and\n * the arguments used to query it. If visitor returns any non-undefined value that value will\n * replace corresponding part of the final result.\n *\n * @param params\n * @returns\n */\nexport function visitQueryResult({ visitor, result, args, runtimeDataModel, modelName }: VisitParams) {\n if (Array.isArray(result)) {\n for (let i = 0; i < result.length; i++) {\n result[i] = visitQueryResult({\n result: result[i],\n args,\n modelName,\n runtimeDataModel,\n visitor,\n })\n }\n return result\n }\n const visitResult = visitor(result, modelName, args) ?? result\n if (args.include) {\n visitNested({\n includeOrSelect: args.include,\n result: visitResult,\n parentModelName: modelName,\n runtimeDataModel,\n visitor,\n })\n }\n if (args.select) {\n visitNested({\n includeOrSelect: args.select,\n result: visitResult,\n parentModelName: modelName,\n runtimeDataModel,\n visitor,\n })\n }\n return visitResult\n}\n\ntype VisitNestedParams = {\n includeOrSelect: Selection\n result: object\n parentModelName: string\n runtimeDataModel: RuntimeDataModel\n visitor: ModelVisitor\n}\n\nfunction visitNested({ includeOrSelect, result, parentModelName, runtimeDataModel, visitor }: VisitNestedParams) {\n for (const [fieldName, subConfig] of Object.entries(includeOrSelect)) {\n if (!subConfig || result[fieldName] == null || isSkip(subConfig)) {\n continue\n }\n const parentModel = runtimeDataModel.models[parentModelName]\n const field = parentModel.fields.find((field) => field.name === fieldName)\n if (!field || field.kind !== 'object' || !field.relationName) {\n continue\n }\n const args = typeof subConfig === 'object' ? subConfig : {}\n result[fieldName] = visitQueryResult({\n visitor,\n result: result[fieldName],\n args,\n modelName: field.type,\n runtimeDataModel,\n })\n }\n}\n", "import { Client, InternalRequestParams } from '../../getPrismaClient'\nimport { RequestParams } from '../../RequestHandler'\nimport { deepCloneArgs } from '../../utils/deepCloneArgs'\nimport { AccelerateExtensionFetchDecorator } from '../engines'\nimport { QueryOptionsCb } from '../types/exported/ExtensionArgs'\nimport { BatchInternalParams, BatchQueryOptionsCb } from '../types/internal/ExtensionsInternalArgs'\n\nfunction iterateAndCallQueryCallbacks(\n client: Client,\n params: InternalRequestParams,\n queryCbs: QueryOptionsCb[],\n i = 0,\n) {\n return client._createPrismaPromise((transaction) => {\n // we need to keep track of the previous customDataProxyFetch\n const prevCustomFetch = params.customDataProxyFetch\n\n // allow query extensions to re-wrap in transactions\n // this will automatically discard the prev batch tx\n if ('transaction' in params && transaction !== undefined) {\n if (params.transaction?.kind === 'batch') {\n void params.transaction.lock.then() // discard\n }\n params.transaction = transaction\n }\n\n // if we are done recursing, we execute the request\n if (i === queryCbs.length) {\n return client._executeRequest(params)\n }\n\n // if not, call the next query cb and recurse query\n return queryCbs[i]({\n model: params.model,\n operation: params.model ? params.action : params.clientMethod,\n args: deepCloneArgs(params.args ?? {}),\n // @ts-expect-error because not part of public API\n __internalParams: params,\n query: (args, __internalParams = params) => {\n // we need to keep track of the current customDataProxyFetch\n // this is to cascade customDataProxyFetch like a middleware\n const currCustomFetch = __internalParams.customDataProxyFetch\n __internalParams.customDataProxyFetch = composeCustomDataProxyFetch(prevCustomFetch, currCustomFetch)\n __internalParams.args = args\n\n return iterateAndCallQueryCallbacks(client, __internalParams, queryCbs, i + 1)\n },\n })\n })\n}\n\nexport function applyQueryExtensions(client: Client, params: InternalRequestParams): Promise<any> {\n const { jsModelName, action, clientMethod } = params\n const operation = jsModelName ? action : clientMethod\n\n // query extensions only apply to model-bound operations\n if (client._extensions.isEmpty()) {\n return client._executeRequest(params)\n }\n\n // get the cached query cbs for a given model and action\n const cbs = client._extensions.getAllQueryCallbacks(jsModelName ?? '$none', operation)\n\n return iterateAndCallQueryCallbacks(client, params, cbs)\n}\n\ntype BatchExecuteCallback = (params: BatchInternalParams) => Promise<unknown[]>\n\nexport function createApplyBatchExtensionsFunction(executeBatch: BatchExecuteCallback) {\n return (requests: RequestParams[]) => {\n const params = { requests }\n const callbacks = requests[0].extensions.getAllBatchQueryCallbacks()\n if (!callbacks.length) {\n return executeBatch(params)\n }\n\n return iterateAndCallBatchCallbacks(params, callbacks, 0, executeBatch)\n }\n}\n\nexport function iterateAndCallBatchCallbacks(\n params: BatchInternalParams,\n callbacks: BatchQueryOptionsCb[],\n i: number,\n executeBatch: BatchExecuteCallback,\n) {\n if (i === callbacks.length) {\n return executeBatch(params)\n }\n\n const prevFetch = params.customDataProxyFetch\n const transaction = params.requests[0].transaction\n return callbacks[i]({\n args: {\n queries: params.requests.map((request) => ({\n model: request.modelName,\n operation: request.action,\n args: request.args,\n })),\n transaction: transaction\n ? {\n isolationLevel: transaction.kind === 'batch' ? transaction.isolationLevel : undefined,\n }\n : undefined,\n },\n __internalParams: params,\n query(_args, __internalParams = params) {\n const nextFetch = __internalParams.customDataProxyFetch\n __internalParams.customDataProxyFetch = composeCustomDataProxyFetch(prevFetch, nextFetch)\n return iterateAndCallBatchCallbacks(__internalParams, callbacks, i + 1, executeBatch)\n },\n })\n}\n\nconst noopFetch: AccelerateExtensionFetchDecorator = (f) => f\nfunction composeCustomDataProxyFetch(prevFetch = noopFetch, nextFetch = noopFetch): AccelerateExtensionFetchDecorator {\n return (f) => prevFetch(nextFetch(f))\n}\n", "import { assertNever } from '@prisma/internals'\nimport Decimal from 'decimal.js'\nimport { Sql } from 'sql-template-tag'\n\nimport { isFieldRef } from '../core/model/FieldRef'\nimport { isTypedSql, TypedSql, UnknownTypedSql } from '../core/types/exported'\nimport { JsArgs, JsInputValue } from '../core/types/exported/JsApi'\nimport { ObjectEnumValue } from '../core/types/exported/ObjectEnums'\nimport { RawQueryArgs } from '../core/types/exported/RawQueryArgs'\nimport { isDate } from './date'\nimport { isDecimalJsLike } from './decimalJsLike'\n\nexport function deepCloneArgs(args: JsArgs | RawQueryArgs): JsArgs | RawQueryArgs {\n if (args instanceof Sql) {\n return cloneSql(args)\n }\n\n if (isTypedSql(args)) {\n return cloneTypedSql(args)\n }\n\n if (Array.isArray(args)) {\n const clone: RawQueryArgs = [args[0]]\n\n for (let i = 1; i < args.length; i++) {\n clone[i] = deepCloneValue(args[i] as JsInputValue)\n }\n\n return clone\n }\n const clone: JsArgs = {}\n for (const k in args) {\n clone[k] = deepCloneValue(args[k])\n }\n return clone\n}\n\nfunction cloneSql(rawParam: Sql): Sql {\n return new Sql(rawParam.strings, rawParam.values)\n}\n\nfunction cloneTypedSql(rawParam: UnknownTypedSql): UnknownTypedSql {\n return new TypedSql(rawParam.sql, rawParam.values)\n}\n\n// based on https://github.com/lukeed/klona/blob/v2.0.6/src/index.js\nfunction deepCloneValue(x: JsInputValue): JsInputValue {\n if (typeof x !== 'object' || x == null || x instanceof ObjectEnumValue || isFieldRef(x)) {\n return x\n }\n\n if (isDecimalJsLike(x)) {\n return new Decimal(x.toFixed())\n }\n\n if (isDate(x)) {\n return new Date(+x)\n }\n\n if (ArrayBuffer.isView(x)) {\n return x.slice(0)\n }\n\n if (Array.isArray(x)) {\n let k = x.length\n let copy\n for (copy = Array(k); k--; ) {\n copy[k] = deepCloneValue(x[k])\n }\n return copy\n }\n\n if (typeof x === 'object') {\n const copy = {}\n for (const k in x) {\n if (k === '__proto__') {\n Object.defineProperty(copy, k, {\n value: deepCloneValue(x[k]),\n configurable: true,\n enumerable: true,\n writable: true,\n })\n } else {\n copy[k] = deepCloneValue(x[k])\n }\n }\n return copy\n }\n\n assertNever(x, 'Unknown value')\n}\n", "const denylist = ['$connect', '$disconnect', '$on', '$transaction', '$extends'] as const\n\nexport const itxClientDenyList = denylist as ReadonlyArray<string | symbol>\n\nexport type ITXClientDenyList = (typeof denylist)[number]\n", "import { GetPrismaClientConfig } from '@prisma/client-common'\nimport { Debug } from '@prisma/debug'\n\nimport { PrismaClientInitializationError } from '../errors/PrismaClientInitializationError'\n\nconst debug = Debug('prisma:client')\n\n/**\n * Known platforms that have caching issues. Updating this list will also update\n * the error message and the link to the docs, so add docs/links as needed. The\n * key from this map comes from the `ciName` property of the `ci-info` package.\n */\nconst cachingPlatforms = {\n Vercel: 'vercel',\n 'Netlify CI': 'netlify',\n} as const\n\ntype Config = Pick<GetPrismaClientConfig, 'postinstall' | 'ciName' | 'clientVersion' | 'generator'>\n\n/**\n * Throws an error if the client has been generated via auto-install and the\n * platform is known to have caching issues. In that case, we will display a\n * useful error message, and ask the user to run `prisma generate` manually.\n *\n * This function is specifically about dealing with `node_modules` caching.\n *\n * @returns\n */\nexport function checkPlatformCaching({ postinstall, ciName, clientVersion, generator }: Config) {\n debug('checkPlatformCaching:postinstall', postinstall)\n debug('checkPlatformCaching:ciName', ciName)\n\n // if client was not generated manually\n if (postinstall !== true) return\n\n // check if a custom output directory is used\n if (generator?.output) {\n const output = generator.output.fromEnvVar ?? generator.output.value\n\n if (typeof output === 'string') {\n // The generator is using a custom output directory, so we can skip the caching check\n return\n }\n }\n\n // and we generated on one a caching CI\n if (ciName && ciName in cachingPlatforms) {\n const message = `Prisma has detected that this project was built on ${ciName}, which caches dependencies. This leads to an outdated Prisma Client because Prisma's auto-generation isn't triggered. To fix this, make sure to run the \\`prisma generate\\` command during the build process.\n\nLearn how: https://pris.ly/d/${cachingPlatforms[ciName]}-build`\n\n console.error(message) // display a nice and visible error message\n\n // also throw an error so that the user can catch it and handle it\n throw new PrismaClientInitializationError(message, clientVersion)\n }\n}\n", "import { Datasources, PrismaClientOptions } from '../../getPrismaClient'\n\nexport function getDatasourceOverrides(\n options: PrismaClientOptions | undefined,\n datasourceNames: string[],\n): Datasources {\n if (!options) {\n return {}\n }\n\n if (options.datasources) {\n return options.datasources\n }\n\n if (options.datasourceUrl) {\n const primaryDatasource = datasourceNames[0]\n return { [primaryDatasource]: { url: options.datasourceUrl } }\n }\n return {}\n}\n", "import { GetPrismaClientConfig } from '@prisma/client-common'\nimport { ClientEngineType, getClientEngineType, warnOnce } from '@prisma/internals'\n\nimport { BinaryEngine, ClientEngine, DataProxyEngine, Engine, EngineConfig, LibraryEngine } from '../engines'\nimport { PrismaClientValidationError } from '../errors/PrismaClientValidationError'\nimport { resolveDatasourceUrl } from './resolveDatasourceUrl'\nimport { validateEngineInstanceConfig } from './validateEngineInstanceConfig'\n\n/**\n * Get the engine instance based on the engine type and the target engine type\n * (binary, library, data proxy). If the URL is a prisma:// URL, it will always\n * use the DataProxyEngine. Basically decides which engine to load.\n * @param clientConfig\n * @param engineConfig\n * @returns\n */\nexport function getEngineInstance({ copyEngine = true }: GetPrismaClientConfig, engineConfig: EngineConfig): Engine {\n let url: string | undefined\n\n try {\n url = resolveDatasourceUrl({\n inlineDatasources: engineConfig.inlineDatasources,\n overrideDatasources: engineConfig.overrideDatasources,\n env: { ...engineConfig.env, ...process.env },\n clientVersion: engineConfig.clientVersion,\n })\n } catch {\n // the error does not matter, but that means we don't have a valid url which\n // means we can't use the DataProxyEngine and will default to LibraryEngine\n }\n\n const { ok, isUsing, diagnostics } = validateEngineInstanceConfig({\n url,\n adapter: engineConfig.adapter,\n copyEngine,\n targetBuildType: TARGET_BUILD_TYPE,\n })\n\n for (const warning of diagnostics.warnings) {\n warnOnce(...warning.value)\n }\n\n if (!ok) {\n const error = diagnostics.errors[0]\n throw new PrismaClientValidationError(error.value, { clientVersion: engineConfig.clientVersion })\n }\n\n const engineType = getClientEngineType(engineConfig.generator!)\n\n const libraryEngineConfigured = engineType === ClientEngineType.Library\n const binaryEngineConfigured = engineType === ClientEngineType.Binary\n const clientEngineConfigured = engineType === ClientEngineType.Client\n\n // TODO: one day we may want to completely deprecate `@prisma/client/edge` in favor of wasm build\n // TODO: After having moved the DataProxyEngine to Accelerate\n // - Replace DataProxyEngine with AccelerateEngine via `@prisma/extension-accelerate`\n // - Delete DataProxyEngine and all related files\n // - Update the DataProxy tests to use the /wasm endpoint, but keep ecosystem-tests as they are\n\n // When a local driver adapter is configured, the URL from the datasource\n // block in the Prisma schema is no longer relevant as driver adapters don't\n // use it. Therefore, a configured driver adapter takes precedence over the\n // Accelerate or PPg URL in the schema file.\n const clientEngineUsesRemoteExecutor = (isUsing.accelerate || isUsing.ppg) && !isUsing.driverAdapters\n\n if (TARGET_BUILD_TYPE === 'react-native') return new LibraryEngine(engineConfig)\n else if (clientEngineConfigured && TARGET_BUILD_TYPE === 'client')\n return new ClientEngine(engineConfig, clientEngineUsesRemoteExecutor)\n else if (clientEngineConfigured && TARGET_BUILD_TYPE === 'wasm-compiler-edge')\n return new ClientEngine(engineConfig, clientEngineUsesRemoteExecutor)\n else if (isUsing.accelerate) return new DataProxyEngine(engineConfig)\n else if (isUsing.driverAdapters && TARGET_BUILD_TYPE === 'wasm-engine-edge') return new LibraryEngine(engineConfig)\n else if (libraryEngineConfigured && TARGET_BUILD_TYPE === 'library') return new LibraryEngine(engineConfig)\n else if (binaryEngineConfigured && TARGET_BUILD_TYPE === 'binary') return new BinaryEngine(engineConfig)\n // reasonable fallbacks in case the conditions above aren't met, we should still try the correct engine\n else if (TARGET_BUILD_TYPE === 'edge') return new DataProxyEngine(engineConfig)\n else if (TARGET_BUILD_TYPE === 'library') return new LibraryEngine(engineConfig)\n else if (TARGET_BUILD_TYPE === 'binary') return new BinaryEngine(engineConfig)\n else if (TARGET_BUILD_TYPE === 'client') return new ClientEngine(engineConfig, clientEngineUsesRemoteExecutor)\n // if either accelerate or wasm library could not be loaded for some reason, we throw an error\n else if (TARGET_BUILD_TYPE === 'wasm-engine-edge' || TARGET_BUILD_TYPE === 'wasm-compiler-edge') {\n return new MisconfiguredEngine({ clientVersion: engineConfig.clientVersion }) as Engine\n }\n\n return TARGET_BUILD_TYPE satisfies never\n}\n\nclass MisconfiguredEngine {\n constructor(options: { clientVersion: string }) {\n return new Proxy(this, {\n get(_target, _prop) {\n const message = `In order to run Prisma Client on edge runtime, either:\n- Use Prisma Accelerate: https://pris.ly/d/accelerate\n- Use Driver Adapters: https://pris.ly/d/driver-adapters`\n\n throw new PrismaClientValidationError(message, options)\n },\n })\n }\n}\n", "export { BinaryEngine } from './binary/BinaryEngine'\nexport { ClientEngine } from './client/ClientEngine'\nexport {\n type AccelerateExtensionFetchDecorator,\n type BatchTransactionOptions,\n type Engine,\n type EngineConfig,\n type GraphQLQuery,\n type InteractiveTransactionOptions,\n type TransactionOptions,\n} from './common/Engine'\nexport * from './common/types/EngineValidationError'\nexport type { LogEmitter } from './common/types/Events'\nexport * from './common/types/JsonProtocol'\nexport type { Metric, MetricHistogram, MetricHistogramBucket, Metrics } from './common/types/Metrics'\nexport type { IsolationLevel, Options, TransactionHeaders } from './common/types/Transaction'\nexport { DataProxyEngine } from './data-proxy/DataProxyEngine'\nexport { LibraryEngine } from './library/LibraryEngine'\nexport * as NodeAPILibraryTypes from './library/types/Library'\n", "import { getLogs } from '@prisma/debug'\nimport { underline } from 'kleur/colors'\nimport stripAnsi from 'strip-ansi'\n\nimport type { ErrorWithLinkInput } from '../types/ErrorWithLinkInput'\nimport { maskQuery } from './maskQuery'\nimport { normalizeLogs } from './normalizeLogs'\nimport { getGitHubIssueUrl } from './util'\n\nexport function getErrorMessageWithLink({\n version,\n binaryTarget,\n title,\n description,\n engineVersion,\n database,\n query,\n}: ErrorWithLinkInput) {\n const gotLogs = getLogs(6000 - (query?.length ?? 0))\n const logs = normalizeLogs(stripAnsi(gotLogs))\n const moreInfo = description ? `# Description\\n\\`\\`\\`\\n${description}\\n\\`\\`\\`` : ''\n const body = stripAnsi(\n `Hi Prisma Team! My Prisma Client just crashed. This is the report:\n## Versions\n\n| Name | Version |\n|-----------------|--------------------|\n| Node | ${process.version?.padEnd(19)}| \n| OS | ${binaryTarget?.padEnd(19)}|\n| Prisma Client | ${version?.padEnd(19)}|\n| Query Engine | ${engineVersion?.padEnd(19)}|\n| Database | ${database?.padEnd(19)}|\n\n${moreInfo}\n\n## Logs\n\\`\\`\\`\n${logs}\n\\`\\`\\`\n\n## Client Snippet\n\\`\\`\\`ts\n// PLEASE FILL YOUR CODE SNIPPET HERE\n\\`\\`\\`\n\n## Schema\n\\`\\`\\`prisma\n// PLEASE ADD YOUR SCHEMA HERE IF POSSIBLE\n\\`\\`\\`\n\n## Prisma Engine Query\n\\`\\`\\`\n${query ? maskQuery(query) : ''}\n\\`\\`\\`\n`,\n )\n\n const url = getGitHubIssueUrl({ title, body })\n return `${title}\n\nThis is a non-recoverable error which probably happens when the Prisma Query Engine has a panic.\n\n${underline(url)}\n\nIf you want the Prisma team to look into it, please open the link above \uD83D\uDE4F\nTo increase the chance of success, please post your schema and a snippet of\nhow you used Prisma Client in the issue. \n`\n}\n", "export function maskQuery(query?: string): string {\n if (!query) {\n return ''\n }\n return (\n query\n // replace all strings with X\n .replace(/\".*\"/g, '\"X\"')\n // replace all numbers with 5\n .replace(/[\\s:\\[]([+-]?([0-9]*[.])?[0-9]+)/g, (substr) => {\n return `${substr[0]}5`\n })\n )\n}\n", "/**\n * Removes the leading timestamps (from docker) and trailing ms (from debug)\n * @param logs logs to normalize\n */\nexport function normalizeLogs(logs: string): string {\n return logs\n .split('\\n')\n .map((l) => {\n return l\n .replace(/^\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z)\\s*/, '')\n .replace(/\\+\\d+\\s*ms$/, '')\n })\n .join('\\n')\n}\n", "import newGitHubIssueUrl from 'new-github-issue-url'\n\nexport function getGitHubIssueUrl({\n title,\n user = 'prisma',\n repo = 'prisma',\n template = 'bug_report.yml',\n body,\n}: {\n title: string\n user?: string\n repo?: string\n template?: string\n body?: string\n}): string {\n return newGitHubIssueUrl({\n user,\n repo,\n template,\n title,\n body,\n })\n}\n", "export * from './batch'\nexport type { QueryEvent } from './events'\nexport { DataMapperError } from './interpreter/data-mapper'\nexport {\n QueryInterpreter,\n type QueryInterpreterOptions,\n type QueryInterpreterTransactionManager,\n} from './interpreter/query-interpreter'\nexport * from './json-protocol'\nexport * from './query-plan'\nexport * from './raw-json-protocol'\nexport type { SchemaProvider } from './schema'\nexport { noopTracingHelper, type TracingHelper } from './tracing'\nexport type { TransactionInfo, Options as TransactionOptions } from './transaction-manager/transaction'\nexport { TransactionManager } from './transaction-manager/transaction-manager'\nexport { TransactionManagerError } from './transaction-manager/transaction-manager-error'\nexport { UserFacingError } from './user-facing-error'\nexport { doKeysMatch, isDeepStrictEqual, safeJsonStringify } from './utils'\n", "import { Decimal } from 'decimal.js'\n\nimport { assertNever } from './utils'\n\nexport type DateTaggedValue = { $type: 'DateTime'; value: string }\nexport type DecimalTaggedValue = { $type: 'Decimal'; value: string }\nexport type BytesTaggedValue = { $type: 'Bytes'; value: string }\nexport type BigIntTaggedValue = { $type: 'BigInt'; value: string }\nexport type FieldRefTaggedValue = { $type: 'FieldRef'; value: { _ref: string } }\nexport type EnumTaggedValue = { $type: 'Enum'; value: string }\nexport type JsonTaggedValue = { $type: 'Json'; value: string }\n\nexport type JsonInputTaggedValue =\n | DateTaggedValue\n | DecimalTaggedValue\n | BytesTaggedValue\n | BigIntTaggedValue\n | FieldRefTaggedValue\n | JsonTaggedValue\n | EnumTaggedValue\n\nexport type JsonOutputTaggedValue =\n | DateTaggedValue\n | DecimalTaggedValue\n | BytesTaggedValue\n | BigIntTaggedValue\n | JsonTaggedValue\n\nexport type JsOutputValue =\n | null\n | string\n | number\n | boolean\n | bigint\n | Uint8Array\n | Date\n | Decimal\n | JsOutputValue[]\n | { [key: string]: JsOutputValue }\n\nexport function normalizeJsonProtocolValues(result: unknown): unknown {\n if (result === null) {\n return result\n }\n\n if (Array.isArray(result)) {\n return result.map(normalizeJsonProtocolValues)\n }\n\n if (typeof result === 'object') {\n if (isTaggedValue(result)) {\n return normalizeTaggedValue(result)\n }\n\n if (ArrayBuffer.isView(result)) {\n const buffer = Buffer.from(result.buffer, result.byteOffset, result.byteLength)\n return buffer.toString('base64')\n }\n\n // avoid mapping class instances\n if (result.constructor !== null && result.constructor.name !== 'Object') {\n return result\n }\n\n return mapObjectValues(result, normalizeJsonProtocolValues)\n }\n\n return result\n}\n\nfunction isTaggedValue(value: unknown): value is JsonOutputTaggedValue {\n return value !== null && typeof value == 'object' && typeof value['$type'] === 'string'\n}\n\n/**\n * Normalizes the value inside a tagged value to match the snapshots in tests.\n * Sometimes there are multiple equally valid representations of the same value\n * (e.g. a decimal string may contain an arbitrary number of trailing zeros,\n * datetime strings may specify the UTC offset as either '+00:00' or 'Z', etc).\n * Since these differences have no effect on the actual values received from the\n * Prisma Client once the response is deserialized to JavaScript values, we don't\n * spend extra CPU cycles on normalizing them in the data mapper. Instead, we\n * patch and normalize them here to ensure they are consistent with the snapshots\n * in the query engine tests.\n */\nfunction normalizeTaggedValue({ $type, value }: JsonOutputTaggedValue): JsonOutputTaggedValue {\n switch ($type) {\n case 'BigInt':\n return { $type, value: String(value) }\n case 'Bytes':\n return { $type, value: Buffer.from(value, 'base64').toString('base64') }\n case 'DateTime':\n return { $type, value: new Date(value).toISOString() }\n case 'Decimal':\n return { $type, value: String(new Decimal(value)) }\n case 'Json':\n return { $type, value: JSON.stringify(JSON.parse(value)) }\n default:\n assertNever(value, 'Unknown tagged value')\n }\n}\n\nfunction mapObjectValues<K extends PropertyKey, T, U>(\n object: Record<K, T>,\n mapper: (value: T, key: K) => U,\n): Record<K, U> {\n const result = {} as Record<K, U>\n\n for (const key of Object.keys(object)) {\n result[key] = mapper(object[key] as T, key as K)\n }\n\n return result\n}\n\nexport function deserializeJsonResponse(result: unknown): unknown {\n if (result === null) {\n return result\n }\n\n if (Array.isArray(result)) {\n return result.map(deserializeJsonResponse)\n }\n\n if (typeof result === 'object') {\n if (isTaggedValue(result)) {\n return deserializeTaggedValue(result)\n }\n\n // avoid mapping class instances\n if (result.constructor !== null && result.constructor.name !== 'Object') {\n return result\n }\n\n return mapObjectValues(result, deserializeJsonResponse)\n }\n\n return result\n}\n\nfunction deserializeTaggedValue({ $type, value }: JsonOutputTaggedValue): JsOutputValue {\n switch ($type) {\n case 'BigInt':\n return BigInt(value)\n case 'Bytes': {\n const { buffer, byteOffset, byteLength } = Buffer.from(value, 'base64')\n return new Uint8Array(buffer, byteOffset, byteLength)\n }\n case 'DateTime':\n return new Date(value)\n case 'Decimal':\n return new Decimal(value)\n case 'Json':\n return JSON.parse(value)\n default:\n assertNever(value, 'Unknown tagged value')\n }\n}\n", "import Decimal from 'decimal.js'\n\n// Copied over to avoid the heavy dependency on `@prisma/internals` with its\n// transitive dependencies that are not needed for other query plan executor\n// implementations outside of Prisma Client (e.g. test executor for query\n// engine tests and query plan executor for Accelerate) that also depend on\n// `@prisma/client-engine-runtime`.\nexport function assertNever(_: never, message: string): never {\n throw new Error(message)\n}\n\n/**\n * Checks if two objects are deeply equal, recursively checking all properties for strict equality.\n */\nexport function isDeepStrictEqual(a: unknown, b: unknown): boolean {\n return (\n a === b ||\n (a !== null &&\n b !== null &&\n typeof a === 'object' &&\n typeof b === 'object' &&\n Object.keys(a).length === Object.keys(b).length &&\n Object.keys(a).every((key) => isDeepStrictEqual(a[key], b[key])))\n )\n}\n\n/**\n * Checks if two objects representing the names and values of key columns match. A match is\n * defined by one of the sets of keys being a subset of the other. This function also\n * converts arguments to the types used by driver adapters if necessary.\n */\nexport function doKeysMatch(lhs: {}, rhs: {}): boolean {\n const lhsKeys = Object.keys(lhs)\n const rhsKeys = Object.keys(rhs)\n const smallerKeyList = lhsKeys.length < rhsKeys.length ? lhsKeys : rhsKeys\n\n return smallerKeyList.every((key) => {\n if (typeof lhs[key] === typeof rhs[key] && typeof lhs[key] !== 'object') {\n // fast path for primitive types\n return lhs[key] === rhs[key]\n }\n\n if (Decimal.isDecimal(lhs[key]) || Decimal.isDecimal(rhs[key])) {\n const lhsDecimal = asDecimal(lhs[key])\n const rhsDecimal = asDecimal(rhs[key])\n return lhsDecimal && rhsDecimal && lhsDecimal.equals(rhsDecimal)\n } else if (lhs[key] instanceof Uint8Array || rhs[key] instanceof Uint8Array) {\n const lhsBuffer = asBuffer(lhs[key])\n const rhsBuffer = asBuffer(rhs[key])\n return lhsBuffer && rhsBuffer && lhsBuffer.equals(rhsBuffer)\n } else if (lhs[key] instanceof Date || rhs[key] instanceof Date) {\n return asDate(lhs[key])?.getTime() === asDate(rhs[key])?.getTime()\n } else if (typeof lhs[key] === 'bigint' || typeof rhs[key] === 'bigint') {\n return asBigInt(lhs[key]) === asBigInt(rhs[key])\n } else if (typeof lhs[key] === 'number' || typeof rhs[key] === 'number') {\n return asNumber(lhs[key]) === asNumber(rhs[key])\n }\n\n return isDeepStrictEqual(lhs[key], rhs[key])\n })\n}\n\nfunction asDecimal(value: unknown): Decimal | undefined {\n if (Decimal.isDecimal(value)) {\n return value\n } else if (typeof value === 'number' || typeof value === 'string') {\n return new Decimal(value)\n } else {\n return\n }\n}\n\nfunction asBuffer(value: unknown): Buffer | undefined {\n if (Buffer.isBuffer(value)) {\n return value\n } else if (value instanceof Uint8Array) {\n return Buffer.from(value.buffer, value.byteOffset, value.byteLength)\n } else if (typeof value === 'string') {\n return Buffer.from(value, 'base64')\n } else {\n return\n }\n}\n\nfunction asDate(value: unknown): Date | undefined {\n if (value instanceof Date) {\n return value\n } else if (typeof value === 'string' || typeof value === 'number') {\n return new Date(value)\n } else {\n return\n }\n}\n\nfunction asBigInt(value: unknown): bigint | undefined {\n if (typeof value === 'bigint') {\n return value\n } else if (typeof value === 'number' || typeof value === 'string') {\n return BigInt(value)\n } else {\n return\n }\n}\n\nfunction asNumber(value: unknown): number | undefined {\n if (typeof value === 'number') {\n return value\n } else if (typeof value === 'string') {\n return Number(value)\n } else {\n return\n }\n}\n\n/**\n * `JSON.stringify` wrapper with custom replacer function that handles nested\n * BigInt and Uint8Array values.\n */\nexport function safeJsonStringify(obj: unknown): string {\n return JSON.stringify(obj, (_key, val) => {\n if (typeof val === 'bigint') {\n return val.toString()\n } else if (ArrayBuffer.isView(val)) {\n return Buffer.from(val.buffer, val.byteOffset, val.byteLength).toString('base64')\n }\n return val\n })\n}\n", "{\n \"name\": \"@prisma/client\",\n \"version\": \"7.3.0-integration-prisma6-fix-cloudflare-engine.3\",\n \"description\": \"Prisma Client is an auto-generated, type-safe and modern JavaScript/TypeScript ORM for Node.js that's tailored to your data. Supports PostgreSQL, CockroachDB, MySQL, MariaDB, SQL Server, SQLite & MongoDB databases.\",\n \"keywords\": [\n \"ORM\",\n \"Prisma\",\n \"prisma2\",\n \"Prisma Client\",\n \"client\",\n \"query\",\n \"query-builder\",\n \"database\",\n \"db\",\n \"JavaScript\",\n \"JS\",\n \"TypeScript\",\n \"TS\",\n \"SQL\",\n \"SQLite\",\n \"pg\",\n \"Postgres\",\n \"PostgreSQL\",\n \"CockroachDB\",\n \"MySQL\",\n \"MariaDB\",\n \"MSSQL\",\n \"SQL Server\",\n \"SQLServer\",\n \"MongoDB\",\n \"react-native\"\n ],\n \"main\": \"default.js\",\n \"types\": \"default.d.ts\",\n \"browser\": \"index-browser.js\",\n \"exports\": {\n \"./package.json\": \"./package.json\",\n \".\": {\n \"require\": {\n \"types\": \"./default.d.ts\",\n \"node\": \"./default.js\",\n \"edge-light\": \"./default.js\",\n \"workerd\": \"./default.js\",\n \"worker\": \"./default.js\",\n \"browser\": \"./index-browser.js\"\n },\n \"import\": {\n \"types\": \"./default.d.ts\",\n \"node\": \"./default.js\",\n \"edge-light\": \"./default.js\",\n \"workerd\": \"./default.js\",\n \"worker\": \"./default.js\",\n \"browser\": \"./index-browser.js\"\n },\n \"default\": \"./default.js\"\n },\n \"./edge\": {\n \"types\": \"./edge.d.ts\",\n \"require\": \"./edge.js\",\n \"import\": \"./edge.js\",\n \"default\": \"./edge.js\"\n },\n \"./react-native\": {\n \"types\": \"./react-native.d.ts\",\n \"require\": \"./react-native.js\",\n \"import\": \"./react-native.js\",\n \"default\": \"./react-native.js\"\n },\n \"./extension\": {\n \"types\": \"./extension.d.ts\",\n \"require\": \"./extension.js\",\n \"import\": \"./extension.js\",\n \"default\": \"./extension.js\"\n },\n \"./index-browser\": {\n \"types\": \"./index.d.ts\",\n \"require\": \"./index-browser.js\",\n \"import\": \"./index-browser.js\",\n \"default\": \"./index-browser.js\"\n },\n \"./index\": {\n \"types\": \"./index.d.ts\",\n \"require\": \"./index.js\",\n \"import\": \"./index.js\",\n \"default\": \"./index.js\"\n },\n \"./wasm\": {\n \"types\": \"./wasm.d.ts\",\n \"require\": \"./wasm.js\",\n \"import\": \"./wasm.mjs\",\n \"default\": \"./wasm.mjs\"\n },\n \"./runtime/client\": {\n \"types\": \"./runtime/client.d.ts\",\n \"node\": {\n \"require\": \"./runtime/client.js\",\n \"default\": \"./runtime/client.js\"\n },\n \"require\": \"./runtime/client.js\",\n \"import\": \"./runtime/client.mjs\",\n \"default\": \"./runtime/client.mjs\"\n },\n \"./runtime/library\": {\n \"types\": \"./runtime/library.d.ts\",\n \"require\": \"./runtime/library.js\",\n \"import\": \"./runtime/library.mjs\",\n \"default\": \"./runtime/library.mjs\"\n },\n \"./runtime/binary\": {\n \"types\": \"./runtime/binary.d.ts\",\n \"require\": \"./runtime/binary.js\",\n \"import\": \"./runtime/binary.mjs\",\n \"default\": \"./runtime/binary.mjs\"\n },\n \"./runtime/wasm-engine-edge\": {\n \"types\": \"./runtime/wasm-engine-edge.d.ts\",\n \"require\": \"./runtime/wasm-engine-edge.js\",\n \"import\": \"./runtime/wasm-engine-edge.mjs\",\n \"default\": \"./runtime/wasm-engine-edge.mjs\"\n },\n \"./runtime/wasm-compiler-edge\": {\n \"types\": \"./runtime/wasm-compiler-edge.d.ts\",\n \"require\": \"./runtime/wasm-compiler-edge.js\",\n \"import\": \"./runtime/wasm-compiler-edge.mjs\",\n \"default\": \"./runtime/wasm-compiler-edge.mjs\"\n },\n \"./runtime/edge\": {\n \"types\": \"./runtime/edge.d.ts\",\n \"require\": \"./runtime/edge.js\",\n \"import\": \"./runtime/edge-esm.js\",\n \"default\": \"./runtime/edge-esm.js\"\n },\n \"./runtime/react-native\": {\n \"types\": \"./runtime/react-native.d.ts\",\n \"require\": \"./runtime/react-native.js\",\n \"import\": \"./runtime/react-native.js\",\n \"default\": \"./runtime/react-native.js\"\n },\n \"./runtime/index-browser\": {\n \"types\": \"./runtime/index-browser.d.ts\",\n \"require\": \"./runtime/index-browser.js\",\n \"import\": \"./runtime/index-browser.mjs\",\n \"default\": \"./runtime/index-browser.mjs\"\n },\n \"./generator-build\": {\n \"require\": \"./generator-build/index.js\",\n \"import\": \"./generator-build/index.js\",\n \"default\": \"./generator-build/index.js\"\n },\n \"./sql\": {\n \"require\": {\n \"types\": \"./sql.d.ts\",\n \"node\": \"./sql.js\",\n \"default\": \"./sql.js\"\n },\n \"import\": {\n \"types\": \"./sql.d.ts\",\n \"node\": \"./sql.mjs\",\n \"default\": \"./sql.mjs\"\n },\n \"default\": \"./sql.js\"\n },\n \"./*\": \"./*\"\n },\n \"license\": \"Apache-2.0\",\n \"engines\": {\n \"node\": \">=18.18\"\n },\n \"homepage\": \"https://www.prisma.io\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/prisma/prisma.git\",\n \"directory\": \"packages/client\"\n },\n \"author\": \"Tim Suchanek <suchanek@prisma.io>\",\n \"bugs\": \"https://github.com/prisma/prisma/issues\",\n \"scripts\": {\n \"dev\": \"DEV=true tsx helpers/build.ts\",\n \"build\": \"tsx helpers/build.ts\",\n \"test\": \"dotenv -e ../../.db.env -- jest --silent\",\n \"test:e2e\": \"dotenv -e ../../.db.env -- tsx tests/e2e/_utils/run.ts\",\n \"test:functional\": \"dotenv -e ../../.db.env -- tsx helpers/functional-test/run-tests.ts\",\n \"test:functional:client\": \"pnpm run test:functional --client-runtime client --engine-type client\",\n \"test:memory\": \"dotenv -e ../../.db.env -- tsx helpers/memory-tests.ts\",\n \"test:functional:code\": \"dotenv -e ../../.db.env -- tsx helpers/functional-test/run-tests.ts --no-types\",\n \"test:functional:types\": \"dotenv -e ../../.db.env -- tsx helpers/functional-test/run-tests.ts --types-only\",\n \"test-notypes\": \"dotenv -e ../../.db.env -- jest --testPathIgnorePatterns src/__tests__/types/types.test.ts\",\n \"generate\": \"node scripts/postinstall.js\",\n \"postinstall\": \"node scripts/postinstall.js\",\n \"prepublishOnly\": \"pnpm run build\",\n \"new-test\": \"tsx ./helpers/new-test/new-test.ts\"\n },\n \"files\": [\n \"README.md\",\n \"runtime\",\n \"scripts\",\n \"generator-build\",\n \"edge.js\",\n \"edge.d.ts\",\n \"wasm.js\",\n \"wasm.d.ts\",\n \"index.js\",\n \"index.d.ts\",\n \"react-native.js\",\n \"react-native.d.ts\",\n \"default.js\",\n \"default.d.ts\",\n \"index-browser.js\",\n \"extension.js\",\n \"extension.d.ts\",\n \"sql.d.ts\",\n \"sql.js\",\n \"sql.mjs\"\n ],\n \"devDependencies\": {\n \"@cloudflare/workers-types\": \"^4.20250408.0\",\n \"@codspeed/benchmark.js-plugin\": \"4.0.0\",\n \"@faker-js/faker\": \"9.6.0\",\n \"@fast-check/jest\": \"2.0.3\",\n \"@hono/node-server\": \"1.19.0\",\n \"@inquirer/prompts\": \"7.3.3\",\n \"@jest/create-cache-key-function\": \"29.7.0\",\n \"@jest/globals\": \"29.7.0\",\n \"@jest/test-sequencer\": \"29.7.0\",\n \"@libsql/client\": \"0.8.1\",\n \"@neondatabase/serverless\": \"0.10.2\",\n \"@opentelemetry/api\": \"1.9.0\",\n \"@opentelemetry/context-async-hooks\": \"2.1.0\",\n \"@opentelemetry/instrumentation\": \"0.206.0\",\n \"@opentelemetry/resources\": \"2.1.0\",\n \"@opentelemetry/sdk-trace-base\": \"2.1.0\",\n \"@opentelemetry/semantic-conventions\": \"1.37.0\",\n \"@planetscale/database\": \"1.19.0\",\n \"@prisma/adapter-better-sqlite3\": \"workspace:*\",\n \"@prisma/adapter-d1\": \"workspace:*\",\n \"@prisma/adapter-libsql\": \"workspace:*\",\n \"@prisma/adapter-mariadb\": \"workspace:*\",\n \"@prisma/adapter-mssql\": \"workspace:*\",\n \"@prisma/adapter-neon\": \"workspace:*\",\n \"@prisma/adapter-pg\": \"workspace:*\",\n \"@prisma/adapter-planetscale\": \"workspace:*\",\n \"@prisma/client-common\": \"workspace:*\",\n \"@prisma/client-engine-runtime\": \"workspace:*\",\n \"@prisma/client-generator-js\": \"workspace:*\",\n \"@prisma/client-generator-ts\": \"workspace:*\",\n \"@prisma/config\": \"workspace:*\",\n \"@prisma/debug\": \"workspace:*\",\n \"@prisma/dmmf\": \"workspace:*\",\n \"@prisma/driver-adapter-utils\": \"workspace:*\",\n \"@prisma/engines\": \"workspace:*\",\n \"@prisma/engines-version\": \"7.1.1-3.c2990dca591cba766e3b7ef5d9e8a84796e47ab7\",\n \"@prisma/fetch-engine\": \"workspace:*\",\n \"@prisma/generator\": \"workspace:*\",\n \"@prisma/generator-helper\": \"workspace:*\",\n \"@prisma/get-platform\": \"workspace:*\",\n \"@prisma/instrumentation\": \"workspace:*\",\n \"@prisma/internals\": \"workspace:*\",\n \"@prisma/migrate\": \"workspace:*\",\n \"@prisma/mini-proxy\": \"0.9.5\",\n \"@prisma/query-compiler-wasm\": \"7.1.1-3.c2990dca591cba766e3b7ef5d9e8a84796e47ab7\",\n \"@prisma/query-engine-wasm\": \"6.19.0-26.2ba551f319ab1df4bc874a89965d8b3641056773\",\n \"@prisma/query-plan-executor\": \"workspace:*\",\n \"@prisma/ts-builders\": \"workspace:*\",\n \"@snaplet/copycat\": \"6.0.0\",\n \"@swc-node/register\": \"1.10.9\",\n \"@swc/core\": \"1.11.5\",\n \"@swc/jest\": \"0.2.37\",\n \"@timsuchanek/copy\": \"1.4.5\",\n \"@types/debug\": \"4.1.12\",\n \"@types/fs-extra\": \"11.0.4\",\n \"@types/jest\": \"29.5.14\",\n \"@types/js-levenshtein\": \"1.1.3\",\n \"@types/mssql\": \"9.1.8\",\n \"@types/node\": \"18.19.76\",\n \"@types/pg\": \"8.11.11\",\n \"arg\": \"5.0.2\",\n \"benchmark\": \"2.1.4\",\n \"cookie-es\": \"2.0.0\",\n \"decimal.js\": \"10.5.0\",\n \"execa\": \"8.0.1\",\n \"expect-type\": \"1.2.2\",\n \"fs-extra\": \"11.3.0\",\n \"get-stream\": \"6.0.1\",\n \"globby\": \"11.1.0\",\n \"indent-string\": \"4.0.0\",\n \"jest\": \"29.7.0\",\n \"jest-extended\": \"4.0.2\",\n \"jest-junit\": \"16.0.0\",\n \"jest-serializer-ansi-escapes\": \"4.0.0\",\n \"jest-snapshot\": \"29.7.0\",\n \"js-levenshtein\": \"1.1.6\",\n \"kleur\": \"4.1.5\",\n \"klona\": \"2.0.6\",\n \"mariadb\": \"3.4.5\",\n \"memfs\": \"4.17.2\",\n \"mssql\": \"11.0.1\",\n \"new-github-issue-url\": \"0.2.1\",\n \"p-retry\": \"4.6.2\",\n \"pg\": \"8.14.1\",\n \"resolve\": \"1.22.10\",\n \"simple-statistics\": \"7.8.8\",\n \"sort-keys\": \"5.1.0\",\n \"source-map-support\": \"0.5.21\",\n \"sql-template-tag\": \"5.2.1\",\n \"stacktrace-parser\": \"0.1.11\",\n \"strip-ansi\": \"7.1.0\",\n \"strip-indent\": \"4.0.0\",\n \"tempy\": \"3.0.0\",\n \"ts-pattern\": \"5.6.2\",\n \"tsd\": \"0.31.2\",\n \"typescript\": \"5.4.5\",\n \"undici\": \"7.4.0\",\n \"zx\": \"8.4.1\"\n },\n \"peerDependencies\": {\n \"prisma\": \"*\",\n \"typescript\": \">=5.1.0\"\n },\n \"peerDependenciesMeta\": {\n \"prisma\": {\n \"optional\": true\n },\n \"typescript\": {\n \"optional\": true\n }\n },\n \"sideEffects\": false\n}", "import { GetPrismaClientConfig } from '@prisma/client-common'\n\nimport { Datasources } from '../../getPrismaClient'\nimport { getRuntime } from '../../utils/getRuntime'\nimport { PrismaClientInitializationError } from '../errors/PrismaClientInitializationError'\n\nexport function resolveDatasourceUrl({\n inlineDatasources,\n overrideDatasources,\n env,\n clientVersion,\n}: {\n inlineDatasources: GetPrismaClientConfig['inlineDatasources']\n overrideDatasources: Datasources\n env: Record<string, string | undefined>\n clientVersion: string\n}) {\n let resolvedUrl: string | undefined\n const datasourceName = Object.keys(inlineDatasources)[0]\n const datasourceUrl = inlineDatasources[datasourceName]?.url\n const overrideUrl = overrideDatasources[datasourceName]?.url\n\n if (datasourceName === undefined) {\n resolvedUrl = undefined\n } else if (overrideUrl) {\n resolvedUrl = overrideUrl\n } else if (datasourceUrl?.value) {\n resolvedUrl = datasourceUrl.value\n } else if (datasourceUrl?.fromEnvVar) {\n resolvedUrl = env[datasourceUrl.fromEnvVar]\n }\n\n // env var is set for use but url is undefined\n if (datasourceUrl?.fromEnvVar !== undefined && resolvedUrl === undefined) {\n if (\n (TARGET_BUILD_TYPE === 'edge' ||\n TARGET_BUILD_TYPE === 'wasm-engine-edge' ||\n TARGET_BUILD_TYPE === 'wasm-compiler-edge') &&\n getRuntime().id === 'workerd'\n ) {\n throw new PrismaClientInitializationError(\n `error: Environment variable not found: ${datasourceUrl.fromEnvVar}.\n\nIn Cloudflare module Workers, environment variables are available only in the Worker's \\`env\\` parameter of \\`fetch\\`.\nTo solve this, provide the connection string directly: https://pris.ly/d/cloudflare-datasource-url`,\n clientVersion,\n )\n }\n\n // error matches as much as possible the usual engine error\n throw new PrismaClientInitializationError(\n `error: Environment variable not found: ${datasourceUrl.fromEnvVar}.`,\n clientVersion,\n )\n }\n\n // should not happen: no override, no env, no direct value\n if (resolvedUrl === undefined) {\n throw new PrismaClientInitializationError(\n `error: Missing URL environment variable, value, or override.`,\n clientVersion,\n )\n }\n\n return resolvedUrl\n}\n", "// https://runtime-keys.proposal.wintercg.org/\nexport type RuntimeName = 'workerd' | 'deno' | 'netlify' | 'node' | 'bun' | 'edge-light' | '' /* unknown */\n\n/**\n * Indicates if running in Node.js or a Node.js compatible runtime.\n *\n * **Note:** When running code in Bun and Deno with Node.js compatibility mode, `isNode` flag will be also `true`, indicating running in a Node.js compatible runtime.\n */\nconst isNode = () => globalThis.process?.release?.name === 'node'\n\n/**\n * Indicates if running in Bun runtime.\n */\nconst isBun = () => !!globalThis.Bun || !!globalThis.process?.versions?.bun\n\n/**\n * Indicates if running in Deno runtime.\n */\nconst isDeno = () => !!globalThis.Deno\n\n/**\n * Indicates if running in Netlify runtime.\n */\nconst isNetlify = () => typeof globalThis.Netlify === 'object'\n\n/**\n * Indicates if running in EdgeLight (Vercel Edge) runtime.\n */\nconst isEdgeLight = () => typeof globalThis.EdgeRuntime === 'object'\n\n/**\n * Indicates if running in Cloudflare Workers runtime.\n * See: https://developers.cloudflare.com/workers/runtime-apis/web-standards/#navigatoruseragent\n */\nconst isWorkerd = () => globalThis.navigator?.userAgent === 'Cloudflare-Workers'\n\nfunction detectRuntime(): RuntimeName {\n // Note: we're currently not taking 'fastly' into account. Why?\n const runtimeChecks = [\n [isNetlify, 'netlify'],\n [isEdgeLight, 'edge-light'],\n [isWorkerd, 'workerd'],\n [isDeno, 'deno'],\n [isBun, 'bun'],\n [isNode, 'node'],\n ] as const\n\n const detectedRuntime =\n runtimeChecks\n // TODO: Transforming destructuring to the configured target environment ('chrome58', 'edge16', 'firefox57', 'safari11') is not supported yet,\n // so we can't write the following code yet:\n // ```\n // .flatMap(([isCurrentRuntime, runtime]) => isCurrentRuntime() ? [runtime] : [])\n // ```\n .flatMap((check) => (check[0]() ? [check[1]] : []))\n .at(0) ?? ''\n\n return detectedRuntime\n}\n\nconst runtimesPrettyNames = {\n node: 'Node.js',\n workerd: 'Cloudflare Workers',\n deno: 'Deno and Deno Deploy',\n netlify: 'Netlify Edge Functions',\n 'edge-light':\n 'Edge Runtime (Vercel Edge Functions, Vercel Edge Middleware, Next.js (Pages Router) Edge API Routes, Next.js (App Router) Edge Route Handlers or Next.js Middleware)',\n} as const\n\ntype GetRuntimeOutput = {\n id: RuntimeName\n prettyName: string\n isEdge: boolean\n}\n\nexport function getRuntime(): GetRuntimeOutput {\n const runtimeId = detectRuntime()\n\n return {\n id: runtimeId,\n // Fallback to the runtimeId if the runtime is not in the list\n prettyName: runtimesPrettyNames[runtimeId] || runtimeId,\n isEdge: ['workerd', 'deno', 'netlify', 'edge-light'].includes(runtimeId),\n }\n}\n", "import { QueryEngineConstructor, QueryEngineInstance, QueryEngineLogLevel } from '@prisma/client-common'\nimport { Debug } from '@prisma/debug'\nimport { bindAdapter, ErrorCapturingSqlDriverAdapter, ErrorRecord, ErrorRegistry } from '@prisma/driver-adapter-utils'\nimport type { BinaryTarget } from '@prisma/get-platform'\nimport { assertNodeAPISupported, binaryTargets, getBinaryTargetForCurrentPlatform } from '@prisma/get-platform'\nimport { assertAlways, EngineTrace, TracingHelper } from '@prisma/internals'\nimport { bold, green, red } from 'kleur/colors'\n\nimport { PrismaClientInitializationError } from '../../errors/PrismaClientInitializationError'\nimport { PrismaClientKnownRequestError } from '../../errors/PrismaClientKnownRequestError'\nimport { PrismaClientRustPanicError } from '../../errors/PrismaClientRustPanicError'\nimport { PrismaClientUnknownRequestError } from '../../errors/PrismaClientUnknownRequestError'\nimport { prismaGraphQLToJSError } from '../../errors/utils/prismaGraphQLToJSError'\nimport type { BatchQueryEngineResult, EngineConfig, RequestBatchOptions, RequestOptions } from '../common/Engine'\nimport { Engine } from '../common/Engine'\nimport { LogEmitter, LogEventType } from '../common/types/Events'\nimport { JsonQuery } from '../common/types/JsonProtocol'\nimport { EngineMetricsOptions, Metrics, MetricsOptionsJson, MetricsOptionsPrometheus } from '../common/types/Metrics'\nimport type {\n QueryEngineEvent,\n QueryEnginePanicEvent,\n QueryEngineQueryEvent,\n RustRequestError,\n SyncRustError,\n} from '../common/types/QueryEngine'\nimport { RequestError } from '../common/types/RequestError'\nimport type * as Tx from '../common/types/Transaction'\nimport { getBatchRequestPayload } from '../common/utils/getBatchRequestPayload'\nimport { getErrorMessageWithLink as genericGetErrorMessageWithLink } from '../common/utils/getErrorMessageWithLink'\nimport { getInteractiveTransactionId } from '../common/utils/getInteractiveTransactionId'\nimport { defaultLibraryLoader } from './DefaultLibraryLoader'\nimport { reactNativeLibraryLoader } from './ReactNativeLibraryLoader'\nimport type { Library, LibraryLoader } from './types/Library'\nimport { wasmLibraryLoader } from './WasmLibraryLoader'\n\nconst DRIVER_ADAPTER_EXTERNAL_ERROR = 'P2036'\nconst debug = Debug('prisma:client:libraryEngine')\n\nfunction isQueryEvent(event: QueryEngineEvent): event is QueryEngineQueryEvent {\n return event['item_type'] === 'query' && 'query' in event\n}\nfunction isPanicEvent(event: QueryEngineEvent): event is QueryEnginePanicEvent {\n if ('level' in event) {\n return event.level === 'error' && event['message'] === 'PANIC'\n } else {\n return false\n }\n}\n\nconst knownBinaryTargets: BinaryTarget[] = [...binaryTargets, 'native']\n\nconst MAX_REQUEST_ID = 0xffffffffffffffffn\nlet NEXT_REQUEST_ID = 1n\n\nfunction nextRequestId(): bigint {\n const requestId = NEXT_REQUEST_ID++\n if (NEXT_REQUEST_ID > MAX_REQUEST_ID) {\n NEXT_REQUEST_ID = 1n\n }\n return requestId\n}\n\nexport class LibraryEngine implements Engine<undefined> {\n name = 'LibraryEngine' as const\n engine?: ReturnType<typeof this.wrapEngine>\n libraryInstantiationPromise?: Promise<void>\n libraryStartingPromise?: Promise<void>\n libraryStoppingPromise?: Promise<void>\n libraryStarted: boolean\n executingQueryPromise?: Promise<any>\n config: EngineConfig\n QueryEngineConstructor?: QueryEngineConstructor\n libraryLoader: LibraryLoader\n library?: Library\n logEmitter: LogEmitter\n libQueryEnginePath?: string\n binaryTarget?: BinaryTarget\n datasourceOverrides?: Record<string, string>\n datamodel: string\n logQueries: boolean\n logLevel: QueryEngineLogLevel\n lastQuery?: string\n loggerRustPanic?: any\n tracingHelper: TracingHelper\n adapterPromise: Promise<ErrorCapturingSqlDriverAdapter> | undefined\n\n versionInfo?: {\n commit: string\n version: string\n }\n\n constructor(config: EngineConfig, libraryLoader?: LibraryLoader) {\n if (TARGET_BUILD_TYPE === 'react-native') {\n this.libraryLoader = reactNativeLibraryLoader\n } else if (TARGET_BUILD_TYPE === 'library') {\n this.libraryLoader = libraryLoader ?? defaultLibraryLoader\n\n // this can only be true if PRISMA_CLIENT_FORCE_WASM=true\n if (config.engineWasm !== undefined) {\n this.libraryLoader = libraryLoader ?? wasmLibraryLoader\n }\n } else if (TARGET_BUILD_TYPE === 'wasm-engine-edge') {\n this.libraryLoader = libraryLoader ?? wasmLibraryLoader\n } else {\n throw new Error(`Invalid TARGET_BUILD_TYPE: ${TARGET_BUILD_TYPE}`)\n }\n\n this.config = config\n this.libraryStarted = false\n this.logQueries = config.logQueries ?? false\n this.logLevel = config.logLevel ?? 'error'\n this.logEmitter = config.logEmitter\n this.datamodel = config.inlineSchema\n this.tracingHelper = config.tracingHelper\n\n if (config.enableDebugLogs) {\n this.logLevel = 'debug'\n }\n\n // compute the datasource override for library engine\n const dsOverrideName = Object.keys(config.overrideDatasources)[0]\n const dsOverrideUrl = config.overrideDatasources[dsOverrideName]?.url\n if (dsOverrideName !== undefined && dsOverrideUrl !== undefined) {\n this.datasourceOverrides = { [dsOverrideName]: dsOverrideUrl }\n }\n\n this.libraryInstantiationPromise = this.instantiateLibrary()\n }\n\n private wrapEngine(engine: QueryEngineInstance) {\n return {\n applyPendingMigrations: engine.applyPendingMigrations?.bind(engine),\n commitTransaction: this.withRequestId(engine.commitTransaction.bind(engine)),\n connect: this.withRequestId(engine.connect.bind(engine)),\n disconnect: this.withRequestId(engine.disconnect.bind(engine)),\n metrics: engine.metrics?.bind(engine),\n query: this.withRequestId(engine.query.bind(engine)),\n rollbackTransaction: this.withRequestId(engine.rollbackTransaction.bind(engine)),\n sdlSchema: engine.sdlSchema?.bind(engine),\n startTransaction: this.withRequestId(engine.startTransaction.bind(engine)),\n trace: engine.trace.bind(engine),\n free: engine.free?.bind(engine),\n }\n }\n\n private withRequestId<T extends unknown[], U>(\n fn: (...args: [...T, string]) => Promise<U>,\n ): (...args: T) => Promise<U> {\n return async (...args) => {\n const requestId = nextRequestId().toString()\n try {\n return await fn(...args, requestId)\n } finally {\n if (this.tracingHelper.isEnabled()) {\n const traceJson = await this.engine?.trace(requestId)\n if (traceJson) {\n const trace = JSON.parse(traceJson) as EngineTrace\n this.tracingHelper.dispatchEngineSpans(trace.spans)\n }\n }\n }\n }\n }\n\n async applyPendingMigrations(): Promise<void> {\n if (TARGET_BUILD_TYPE === 'react-native') {\n await this.start()\n await this.engine?.applyPendingMigrations!()\n } else {\n throw new Error('Cannot call this method from this type of engine instance')\n }\n }\n\n async transaction(\n action: 'start',\n headers: Tx.TransactionHeaders,\n options: Tx.Options,\n ): Promise<Tx.InteractiveTransactionInfo<undefined>>\n async transaction(\n action: 'commit',\n headers: Tx.TransactionHeaders,\n info: Tx.InteractiveTransactionInfo<undefined>,\n ): Promise<undefined>\n async transaction(\n action: 'rollback',\n headers: Tx.TransactionHeaders,\n info: Tx.InteractiveTransactionInfo<undefined>,\n ): Promise<undefined>\n async transaction(action: any, headers: Tx.TransactionHeaders, arg?: any) {\n await this.start()\n const adapter = await this.adapterPromise\n\n const headerStr = JSON.stringify(headers)\n\n let result: string | undefined\n if (action === 'start') {\n const jsonOptions = JSON.stringify({\n max_wait: arg.maxWait,\n timeout: arg.timeout,\n isolation_level: arg.isolationLevel,\n })\n\n result = await this.engine?.startTransaction(jsonOptions, headerStr)\n } else if (action === 'commit') {\n result = await this.engine?.commitTransaction(arg.id, headerStr)\n } else if (action === 'rollback') {\n result = await this.engine?.rollbackTransaction(arg.id, headerStr)\n }\n\n const response = this.parseEngineResponse<{ [K: string]: unknown }>(result)\n\n if (isUserFacingError(response)) {\n const externalError = this.getExternalAdapterError(response, adapter?.errorRegistry)\n if (externalError) {\n throw externalError.error\n }\n throw new PrismaClientKnownRequestError(response.message, {\n code: response.error_code as string,\n clientVersion: this.config.clientVersion as string,\n meta: response.meta,\n })\n } else if (typeof response.message === 'string') {\n throw new PrismaClientUnknownRequestError(response.message, {\n clientVersion: this.config.clientVersion!,\n })\n }\n\n return response as Tx.InteractiveTransactionInfo<undefined> | undefined\n }\n\n private async instantiateLibrary(): Promise<void> {\n debug('internalSetup')\n if (this.libraryInstantiationPromise) {\n return this.libraryInstantiationPromise\n }\n\n if (TARGET_BUILD_TYPE === 'library') {\n assertNodeAPISupported()\n }\n\n this.binaryTarget = await this.getCurrentBinaryTarget()\n\n await this.tracingHelper.runInChildSpan('load_engine', () => this.loadEngine())\n\n this.version()\n }\n\n private async getCurrentBinaryTarget() {\n if (TARGET_BUILD_TYPE === 'library') {\n if (this.binaryTarget) return this.binaryTarget\n const binaryTarget = await this.tracingHelper.runInChildSpan('detect_platform', () =>\n getBinaryTargetForCurrentPlatform(),\n )\n if (!knownBinaryTargets.includes(binaryTarget)) {\n throw new PrismaClientInitializationError(\n `Unknown ${red('PRISMA_QUERY_ENGINE_LIBRARY')} ${red(bold(binaryTarget))}. Possible binaryTargets: ${green(\n knownBinaryTargets.join(', '),\n )} or a path to the query engine library.\nYou may have to run ${green('prisma generate')} for your changes to take effect.`,\n this.config.clientVersion!,\n )\n }\n\n return binaryTarget\n }\n\n return undefined\n }\n\n private parseEngineResponse<T>(response?: string): T {\n if (!response) {\n throw new PrismaClientUnknownRequestError(`Response from the Engine was empty`, {\n clientVersion: this.config.clientVersion!,\n })\n }\n\n try {\n return JSON.parse(response) as T\n } catch (err) {\n throw new PrismaClientUnknownRequestError(`Unable to JSON.parse response from engine`, {\n clientVersion: this.config.clientVersion!,\n })\n }\n }\n\n private async loadEngine(): Promise<void> {\n if (this.engine) {\n return\n }\n\n if (!this.QueryEngineConstructor) {\n this.library = await this.libraryLoader.loadLibrary(this.config)\n this.QueryEngineConstructor = this.library.QueryEngine\n }\n try {\n // Using strong reference to `this` inside of log callback will prevent\n // this instance from being GCed while native engine is alive. At the\n // same time, `this.engine` field will prevent native instance from\n // being GCed. Using weak ref helps to avoid this cycle\n const weakThis = new WeakRef(this)\n\n if (!this.adapterPromise) {\n this.adapterPromise = this.config.adapter?.connect()?.then(bindAdapter)\n }\n const adapter = await this.adapterPromise\n\n if (adapter) {\n debug('Using driver adapter: %O', adapter)\n }\n\n this.engine = this.wrapEngine(\n new this.QueryEngineConstructor(\n {\n datamodel: this.datamodel,\n env: process.env,\n logQueries: this.config.logQueries ?? false,\n ignoreEnvVarErrors: true,\n datasourceOverrides: this.datasourceOverrides ?? {},\n logLevel: this.logLevel,\n configDir: this.config.cwd,\n engineProtocol: 'json',\n enableTracing: this.tracingHelper.isEnabled(),\n },\n (log) => {\n weakThis.deref()?.logger(log)\n },\n adapter,\n ),\n )\n } catch (_e) {\n const e = _e as Error\n const error = this.parseInitError(e.message)\n if (typeof error === 'string') {\n throw e\n } else {\n throw new PrismaClientInitializationError(error.message, this.config.clientVersion!, error.error_code)\n }\n }\n }\n\n private logger(log: string) {\n const event = this.parseEngineResponse<QueryEngineEvent | null>(log)\n if (!event) return\n\n event.level = event?.level.toLowerCase() ?? 'unknown'\n if (isQueryEvent(event)) {\n this.logEmitter.emit('query', {\n timestamp: new Date(),\n query: event.query,\n params: event.params,\n duration: Number(event.duration_ms),\n target: event.module_path,\n })\n } else if (isPanicEvent(event) && TARGET_BUILD_TYPE !== 'wasm-engine-edge') {\n // The error built is saved to be thrown later\n this.loggerRustPanic = new PrismaClientRustPanicError(\n getErrorMessageWithLink(\n this,\n `${event.message}: ${event.reason} in ${event.file}:${event.line}:${event.column}`,\n ),\n this.config.clientVersion!,\n )\n } else {\n this.logEmitter.emit(event.level as LogEventType, {\n timestamp: new Date(),\n message: event.message,\n target: event.module_path,\n })\n }\n }\n\n private parseInitError(str: string): SyncRustError | string {\n try {\n const error = JSON.parse(str)\n return error\n } catch (e) {\n //\n }\n return str\n }\n\n private parseRequestError(str: string): RustRequestError | string {\n try {\n const error = JSON.parse(str)\n return error\n } catch (e) {\n //\n }\n return str\n }\n\n onBeforeExit() {\n throw new Error(\n '\"beforeExit\" hook is not applicable to the library engine since Prisma 5.0.0, it is only relevant and implemented for the binary engine. Please add your event listener to the `process` object directly instead.',\n )\n }\n\n async start(): Promise<void> {\n if (!this.libraryInstantiationPromise) {\n this.libraryInstantiationPromise = this.instantiateLibrary()\n }\n await this.libraryInstantiationPromise\n await this.libraryStoppingPromise\n\n if (this.libraryStartingPromise) {\n debug(`library already starting, this.libraryStarted: ${this.libraryStarted}`)\n return this.libraryStartingPromise\n }\n\n if (this.libraryStarted) {\n return\n }\n\n const startFn = async () => {\n debug('library starting')\n\n try {\n const headers = {\n traceparent: this.tracingHelper.getTraceParent(),\n }\n\n await this.engine?.connect(JSON.stringify(headers))\n\n this.libraryStarted = true\n\n if (!this.adapterPromise) {\n this.adapterPromise = this.config.adapter?.connect()?.then(bindAdapter)\n }\n await this.adapterPromise\n\n debug('library started')\n } catch (err) {\n const error = this.parseInitError(err.message as string)\n\n // The error message thrown by the query engine should be a stringified JSON\n // if parsing fails then we just reject the error\n if (typeof error === 'string') {\n throw err\n } else {\n throw new PrismaClientInitializationError(error.message, this.config.clientVersion!, error.error_code)\n }\n } finally {\n this.libraryStartingPromise = undefined\n }\n }\n\n this.libraryStartingPromise = this.tracingHelper.runInChildSpan('connect', startFn)\n\n return this.libraryStartingPromise\n }\n\n async stop(): Promise<void> {\n await this.libraryInstantiationPromise\n await this.libraryStartingPromise\n await this.executingQueryPromise\n\n if (this.libraryStoppingPromise) {\n debug('library is already stopping')\n return this.libraryStoppingPromise\n }\n\n if (!this.libraryStarted) {\n await (await this.adapterPromise)?.dispose()\n this.adapterPromise = undefined\n return\n }\n\n const stopFn = async () => {\n await new Promise((r) => setImmediate(r)) // defer to next tick\n\n debug('library stopping')\n\n const headers = {\n traceparent: this.tracingHelper.getTraceParent(),\n }\n\n await this.engine?.disconnect(JSON.stringify(headers))\n // Only the WASM engine has a free method that we need to call to ensure the engine is freed upon disconnect.\n // Otherwise it causes memory leaks as the WASM engine instance still references this LibraryEngine.\n if (this.engine?.free) {\n this.engine.free()\n }\n this.engine = undefined\n\n this.libraryStarted = false\n this.libraryStoppingPromise = undefined\n this.libraryInstantiationPromise = undefined\n\n await (await this.adapterPromise)?.dispose()\n this.adapterPromise = undefined\n\n debug('library stopped')\n }\n\n this.libraryStoppingPromise = this.tracingHelper.runInChildSpan('disconnect', stopFn)\n\n return this.libraryStoppingPromise\n }\n\n version(): string {\n this.versionInfo = this.library?.version()\n return this.versionInfo?.version ?? 'unknown'\n }\n /**\n * Triggers an artificial panic\n */\n debugPanic(message?: string): Promise<never> {\n return this.library?.debugPanic(message) as Promise<never>\n }\n\n async request<T>(\n query: JsonQuery,\n { traceparent, interactiveTransaction }: RequestOptions<undefined>,\n ): Promise<{ data: T }> {\n debug(`sending request, this.libraryStarted: ${this.libraryStarted}`)\n const headerStr = JSON.stringify({ traceparent }) // object equivalent to http headers for the library\n const queryStr = JSON.stringify(query)\n\n try {\n await this.start()\n const adapter = await this.adapterPromise\n\n this.executingQueryPromise = this.engine?.query(queryStr, headerStr, interactiveTransaction?.id)\n\n this.lastQuery = queryStr\n const data = this.parseEngineResponse<any>(await this.executingQueryPromise)\n\n if (data.errors) {\n if (data.errors.length === 1) {\n throw this.buildQueryError(data.errors[0], adapter?.errorRegistry)\n }\n // this case should not happen, as the query engine only returns one error\n throw new PrismaClientUnknownRequestError(JSON.stringify(data.errors), {\n clientVersion: this.config.clientVersion!,\n })\n } else if (this.loggerRustPanic) {\n throw this.loggerRustPanic\n }\n return { data }\n } catch (e: any) {\n if (e instanceof PrismaClientInitializationError) {\n throw e\n }\n if (e.code === 'GenericFailure' && e.message?.startsWith('PANIC:') && TARGET_BUILD_TYPE !== 'wasm-engine-edge') {\n throw new PrismaClientRustPanicError(getErrorMessageWithLink(this, e.message), this.config.clientVersion!)\n }\n const error = this.parseRequestError(e.message)\n if (typeof error === 'string') {\n throw e\n } else {\n throw new PrismaClientUnknownRequestError(`${error.message}\\n${error.backtrace}`, {\n clientVersion: this.config.clientVersion!,\n })\n }\n }\n }\n\n async requestBatch<T>(\n queries: JsonQuery[],\n { transaction, traceparent }: RequestBatchOptions<undefined>,\n ): Promise<BatchQueryEngineResult<T>[]> {\n debug('requestBatch')\n const request = getBatchRequestPayload(queries, transaction)\n await this.start()\n const adapter = await this.adapterPromise\n\n this.lastQuery = JSON.stringify(request)\n\n this.executingQueryPromise = this.engine?.query(\n this.lastQuery,\n JSON.stringify({ traceparent }),\n getInteractiveTransactionId(transaction),\n )\n\n const result = await this.executingQueryPromise\n const data = this.parseEngineResponse<any>(result)\n\n if (data.errors) {\n if (data.errors.length === 1) {\n throw this.buildQueryError(data.errors[0], adapter?.errorRegistry)\n }\n // this case should not happen, as the query engine only returns one error\n throw new PrismaClientUnknownRequestError(JSON.stringify(data.errors), {\n clientVersion: this.config.clientVersion!,\n })\n }\n\n const { batchResult, errors } = data\n if (Array.isArray(batchResult)) {\n return batchResult.map((result) => {\n if (result.errors && result.errors.length > 0) {\n return this.loggerRustPanic ?? this.buildQueryError(result.errors[0], adapter?.errorRegistry)\n }\n return {\n data: result,\n }\n })\n } else {\n if (errors && errors.length === 1) {\n throw new Error(errors[0].error)\n }\n throw new Error(JSON.stringify(data))\n }\n }\n\n private buildQueryError(error: RequestError, registry?: ErrorRegistry) {\n if (error.user_facing_error.is_panic && TARGET_BUILD_TYPE !== 'wasm-engine-edge') {\n return new PrismaClientRustPanicError(\n getErrorMessageWithLink(this, error.user_facing_error.message),\n this.config.clientVersion!,\n )\n }\n\n const externalError = this.getExternalAdapterError(error.user_facing_error, registry)\n\n return externalError\n ? externalError.error\n : prismaGraphQLToJSError(error, this.config.clientVersion!, this.config.activeProvider!)\n }\n\n private getExternalAdapterError(\n error: RequestError['user_facing_error'],\n registry?: ErrorRegistry,\n ): ErrorRecord | undefined {\n if (error.error_code === DRIVER_ADAPTER_EXTERNAL_ERROR && registry) {\n const id = error.meta?.id\n assertAlways(typeof id === 'number', 'Malformed external JS error received from the engine')\n const errorRecord = registry.consumeError(id)\n assertAlways(errorRecord, `External error with reported id was not registered`)\n return errorRecord\n }\n return undefined\n }\n\n async metrics(options: MetricsOptionsJson): Promise<Metrics>\n async metrics(options: MetricsOptionsPrometheus): Promise<string>\n async metrics(options: EngineMetricsOptions): Promise<Metrics | string> {\n await this.start()\n // TODO: add `metrics` method stub in c-abi engine and make it non-optional.\n // The stub should return an error like in WASM so we handle this gracefully.\n const responseString = await this.engine!.metrics!(JSON.stringify(options))\n if (options.format === 'prometheus') {\n return responseString\n }\n return this.parseEngineResponse(responseString)\n }\n}\n\nfunction isUserFacingError(e: unknown): e is RequestError['user_facing_error'] {\n return typeof e === 'object' && e !== null && e['error_code'] !== undefined\n}\n\nfunction getErrorMessageWithLink(engine: LibraryEngine, title: string) {\n return genericGetErrorMessageWithLink({\n binaryTarget: engine.binaryTarget,\n title,\n version: engine.config.clientVersion!,\n engineVersion: engine.versionInfo?.commit,\n database: engine.config.activeProvider as any,\n query: engine.lastQuery!,\n })\n}\n", "import { TransactionOptions } from '../Engine'\n\nexport function getInteractiveTransactionId(transaction?: TransactionOptions<unknown>): string | undefined {\n if (transaction?.kind === 'itx') {\n return transaction.options.id\n }\n return undefined\n}\n", "/* eslint-disable @typescript-eslint/require-await */\n\nimport { QueryEngineConfig, QueryEngineInstance } from '@prisma/client-common'\n\nimport { PrismaClientInitializationError } from '../../errors/PrismaClientInitializationError'\nimport { LibraryLoader } from './types/Library'\n\ntype PrismaCreateOptions = {\n datamodel: string\n logLevel: string\n logQueries: boolean\n logCallback: (msg: string) => void\n ignoreEnvVarErrors: boolean\n datasourceOverrides: object | string\n env: object | string\n enableTracing: boolean\n}\n\ntype QueryEngineObject = object\n\ndeclare const __PrismaProxy: {\n create: (options: PrismaCreateOptions) => QueryEngineObject\n connect: (engine: QueryEngineObject, trace: string, requestId: string) => void\n execute: (\n engine: QueryEngineObject,\n body: string,\n headers: string,\n txId: string | undefined,\n requestId: string,\n ) => Promise<string>\n startTransaction: (engine: QueryEngineObject, body: string, headers: string, requestId: string) => string\n commitTransaction: (engine: QueryEngineObject, txId: string, headers: string, requestId: string) => string\n rollbackTransaction: (engine: QueryEngineObject, txId: string, headers: string, requestId: string) => string\n disconnect: (engine: QueryEngineObject, headers: string, requestId: string) => void\n trace: (engine: QueryEngineObject, requestId: string) => Promise<string | null>\n pushSchema: (engine: QueryEngineObject, schema: string) => void\n applyPendingMigrations: (engine: QueryEngineObject) => void\n}\n\nclass ReactNativeQueryEngine implements QueryEngineInstance {\n private engineObject: QueryEngineObject\n constructor(config: QueryEngineConfig, logger: (log: string) => void, _adapter?: any) {\n this.engineObject = __PrismaProxy.create({\n datamodel: config.datamodel,\n env: process.env,\n ignoreEnvVarErrors: true,\n datasourceOverrides: config.datasourceOverrides ?? {},\n logLevel: config.logLevel,\n logQueries: config.logQueries ?? false,\n logCallback: logger,\n enableTracing: config.enableTracing,\n })\n }\n\n async connect(headers: string, requestId: string): Promise<void> {\n return __PrismaProxy.connect(this.engineObject, headers, requestId)\n }\n\n async disconnect(headers: string, requestId: string): Promise<void> {\n return __PrismaProxy.disconnect(this.engineObject, headers, requestId)\n }\n\n query(requestStr: string, headersStr: string, transactionId: string | undefined, requestId: string): Promise<string> {\n return __PrismaProxy.execute(this.engineObject, requestStr, headersStr, transactionId, requestId)\n }\n\n compile(): Promise<string> {\n throw new Error('not implemented')\n }\n\n sdlSchema(): Promise<string> {\n return Promise.resolve('{}')\n }\n\n dmmf(_traceparent: string): Promise<string> {\n return Promise.resolve('{}')\n }\n\n async startTransaction(options: string, traceHeaders: string, requestId: string): Promise<string> {\n return __PrismaProxy.startTransaction(this.engineObject, options, traceHeaders, requestId)\n }\n\n async commitTransaction(id: string, traceHeaders: string, requestId: string): Promise<string> {\n return __PrismaProxy.commitTransaction(this.engineObject, id, traceHeaders, requestId)\n }\n\n async rollbackTransaction(id: string, traceHeaders: string, requestId: string): Promise<string> {\n return __PrismaProxy.rollbackTransaction(this.engineObject, id, traceHeaders, requestId)\n }\n\n metrics(_options: string): Promise<string> {\n return Promise.resolve('{}')\n }\n\n async applyPendingMigrations(): Promise<void> {\n return __PrismaProxy.applyPendingMigrations(this.engineObject)\n }\n\n trace(requestId: string): Promise<string | null> {\n return __PrismaProxy.trace(this.engineObject, requestId)\n }\n}\n\n// unlike other implementations, on react-native the library needs to be loaded\n// before the engine can be created, so this loader just checks the bindings are there\n// and returns a dummy constructor that just wraps the methods so that the libraryEngine remains agnosti\nexport const reactNativeLibraryLoader: LibraryLoader = {\n async loadLibrary(config) {\n if (!__PrismaProxy) {\n throw new PrismaClientInitializationError(\n '__PrismaProxy not detected make sure React Native bindings are installed',\n config.clientVersion!,\n )\n }\n\n return {\n debugPanic() {\n return Promise.reject('{}') // not used\n },\n dmmf() {\n return Promise.resolve('{}') // not used\n },\n version() {\n return { commit: 'unknown', version: 'unknown' } // not used\n },\n QueryEngine: ReactNativeQueryEngine,\n }\n },\n}\n", "import type { SqlDriverAdapterFactory } from '@prisma/driver-adapter-utils'\nimport { isPrismaPostgres } from '@prisma/internals'\n\n/**\n * - `copyEngine === false` implies Prisma Accelerate usage\n * - If we detect Prisma Accelerate usage, we want to recommend using `--no-engine` in production.\n * - Driver Adapters should NOT be used with `prisma generate `--no-engine`\n * - Driver Adapters should NOT be imported from `@prisma/client/edge` endpoint\n * - Accelerate should NOT be used with Driver Adapters\n * - Prisma Postgres can be used with either Accelerate or Driver Adapters\n */\n\ntype WarningDiagnostic = { _tag: 'warning'; value: [key: string, message: string, ...args: unknown[]] }\ntype ErrorDiagnostic = { _tag: 'error'; value: string }\n\ntype ValidateEngineInstanceConfigParams = {\n url?: string\n adapter?: SqlDriverAdapterFactory\n copyEngine: boolean\n\n /**\n * The type indicates that {@link validateEngineInstanceConfig} only cares about\n * the {@link targetBuildType} being `edge`. If all other input options are fixed,\n * changing the value of this param to something else will exhibit no different\n * validation behavior.\n */\n targetBuildType: 'edge' | (string & {}) // typeof TARGET_BUILD_TYPE\n}\n\ntype WithDiagnostics =\n | {\n ok: true\n\n diagnostics: {\n warnings: WarningDiagnostic[]\n errors?: never\n }\n }\n | {\n ok: false\n\n diagnostics: {\n warnings: WarningDiagnostic[]\n errors: [ErrorDiagnostic, ...ErrorDiagnostic[]]\n }\n }\n\ntype ValidateEngineInstanceConfigOutput = WithDiagnostics & {\n isUsing: {\n accelerate: boolean\n ppg: boolean\n driverAdapters: boolean\n }\n}\n\n/**\n * Validates the engine instance configuration, without side effects.\n * @param url The URL passed to the Prisma Client constructor\n * @param adapter The driver adapter passed to the Prisma Client constructor\n * @param copyEngine Whether the engine was copied. `prisma generate --no-engine` implies `copyEngine: false`\n * @param targetBuildType The target build type\n */\nexport function validateEngineInstanceConfig({\n url,\n adapter,\n copyEngine,\n targetBuildType,\n}: ValidateEngineInstanceConfigParams): ValidateEngineInstanceConfigOutput {\n const warnings = [] as WarningDiagnostic[]\n const errors = [] as ErrorDiagnostic[]\n\n const pushWarning = (input: WarningDiagnostic['value']) => {\n warnings.push({ _tag: 'warning', value: input })\n }\n\n const pushError = (input: string[]) => {\n const value = input.join('\\n')\n errors.push({ _tag: 'error', value })\n }\n\n const isUsingPrismaAccelerate = Boolean(url?.startsWith('prisma://'))\n const isUsingPrismaPostgres = isPrismaPostgres(url)\n const isUsingDriverAdapters = Boolean(adapter)\n const isAccelerateUrlScheme = isUsingPrismaAccelerate || isUsingPrismaPostgres\n\n if (\n !isUsingDriverAdapters &&\n copyEngine &&\n isAccelerateUrlScheme &&\n targetBuildType !== 'client' &&\n targetBuildType !== 'wasm-compiler-edge'\n ) {\n pushWarning([\n 'recommend--no-engine',\n 'In production, we recommend using `prisma generate --no-engine` (See: `prisma generate --help`)',\n ])\n }\n\n const isAccelerateConfigured = isAccelerateUrlScheme || !copyEngine\n\n if (isUsingDriverAdapters && (isAccelerateConfigured || targetBuildType === 'edge')) {\n if (targetBuildType === 'edge') {\n pushError([\n `Prisma Client was configured to use the \\`adapter\\` option but it was imported via its \\`/edge\\` endpoint.`,\n `Please either remove the \\`/edge\\` endpoint or remove the \\`adapter\\` from the Prisma Client constructor.`,\n ])\n } else if (isAccelerateUrlScheme) {\n pushError([\n `You've provided both a driver adapter and an Accelerate database URL. Driver adapters currently cannot connect to Accelerate.`,\n `Please provide either a driver adapter with a direct database URL or an Accelerate URL and no driver adapter.`,\n ])\n } else if (!copyEngine) {\n pushError([\n `Prisma Client was configured to use the \\`adapter\\` option but \\`prisma generate\\` was run with \\`--no-engine\\`.`,\n `Please run \\`prisma generate\\` without \\`--no-engine\\` to be able to use Prisma Client with the adapter.`,\n ])\n }\n }\n\n const isUsing = {\n accelerate: isAccelerateConfigured,\n ppg: isUsingPrismaPostgres,\n driverAdapters: isUsingDriverAdapters,\n }\n\n function isNonEmptyArray<T>(arr: T[]): arr is [T, ...T[]] {\n return arr.length > 0\n }\n\n if (isNonEmptyArray(errors)) {\n return {\n ok: false,\n diagnostics: {\n warnings,\n errors,\n },\n isUsing,\n }\n }\n\n return {\n ok: true,\n diagnostics: { warnings },\n isUsing,\n }\n}\n", "import { GetPrismaClientConfig } from '@prisma/client-common'\n\ntype Config = Pick<GetPrismaClientConfig, 'generator'>\n\n/**\n * Get preview features from the configuration stored in the generated client.\n */\nexport function getPreviewFeatures({ generator }: Config): string[] {\n return generator?.previewFeatures ?? []\n}\n", "export const rawCommandArgsMapper = (command: object) => ({\n command,\n})\n", "import { Debug } from '@prisma/debug'\nimport { Sql } from 'sql-template-tag'\n\nimport { MiddlewareArgsMapper } from '../../getPrismaClient'\nimport { mssqlPreparedStatement } from '../../utils/mssqlPreparedStatement'\nimport { serializeRawParameters } from '../../utils/serializeRawParameters'\nimport { isTypedSql } from '../types/exported'\nimport { RawQueryArgs } from '../types/exported/RawQueryArgs'\n\nconst ALTER_RE = /^(\\s*alter\\s)/i\n\nconst debug = Debug('prisma:client')\n\n// TODO also check/disallow for CREATE, DROP\nexport function checkAlter(activeProvider: string, query: string, values: unknown[], invalidCall: string) {\n if (activeProvider !== 'postgresql' && activeProvider !== 'cockroachdb') {\n return\n }\n if (values.length > 0 && ALTER_RE.exec(query)) {\n // See https://github.com/prisma/prisma-client-js/issues/940 for more info\n throw new Error(`Running ALTER using ${invalidCall} is not supported\nUsing the example below you can still execute your query with Prisma, but please note that it is vulnerable to SQL injection attacks and requires you to take care of input sanitization.\n\nExample:\n await prisma.$executeRawUnsafe(\\`ALTER USER prisma WITH PASSWORD '\\${password}'\\`)\n\nMore Information: https://pris.ly/d/execute-raw\n`)\n }\n}\n\ntype RawQueryArgsMapperInput = {\n clientMethod: string\n activeProvider: string\n}\n\nexport const rawQueryArgsMapper =\n ({ clientMethod, activeProvider }: RawQueryArgsMapperInput) =>\n (args: RawQueryArgs) => {\n // TODO Clean up types\n let queryString = ''\n let parameters: { values: string; __prismaRawParameters__: true } | undefined\n if (isTypedSql(args)) {\n queryString = args.sql\n parameters = {\n values: serializeRawParameters(args.values),\n __prismaRawParameters__: true,\n }\n } else if (Array.isArray(args)) {\n // If this was called as prisma.$executeRaw(<SQL>, [...values]), assume it is a pre-prepared SQL statement, and forward it without any changes\n const [query, ...values] = args\n queryString = query\n parameters = {\n values: serializeRawParameters(values || []),\n __prismaRawParameters__: true,\n }\n } else {\n // If this was called as prisma.$executeRaw`<SQL>` try to generate a SQL prepared statement\n switch (activeProvider) {\n case 'sqlite':\n case 'mysql': {\n queryString = args.sql\n parameters = {\n values: serializeRawParameters(args.values),\n __prismaRawParameters__: true,\n }\n break\n }\n\n case 'cockroachdb':\n case 'postgresql':\n case 'postgres': {\n queryString = args.text\n\n parameters = {\n values: serializeRawParameters(args.values),\n __prismaRawParameters__: true,\n }\n break\n }\n\n case 'sqlserver': {\n queryString = mssqlPreparedStatement(args)\n parameters = {\n values: serializeRawParameters(args.values),\n __prismaRawParameters__: true,\n }\n break\n }\n default: {\n throw new Error(`The ${activeProvider} provider does not support ${clientMethod}`)\n }\n }\n }\n\n if (parameters?.values) {\n debug(`prisma.${clientMethod}(${queryString}, ${parameters.values})`)\n } else {\n debug(`prisma.${clientMethod}(${queryString})`)\n }\n\n return { query: queryString, parameters }\n }\n\ntype MiddlewareRawArgsTemplateString = [string[], ...unknown[]]\ntype MiddlewareRawArgsSql = [Sql]\n\nexport const templateStringMiddlewareArgsMapper: MiddlewareArgsMapper<Sql, MiddlewareRawArgsTemplateString> = {\n requestArgsToMiddlewareArgs(sql) {\n return [sql.strings, ...sql.values]\n },\n\n middlewareArgsToRequestArgs(requestArgs) {\n const [strings, ...values] = requestArgs\n return new Sql(strings, values)\n },\n}\n\nexport const sqlMiddlewareArgsMapper: MiddlewareArgsMapper<Sql, MiddlewareRawArgsSql> = {\n requestArgsToMiddlewareArgs(sql) {\n return [sql]\n },\n\n middlewareArgsToRequestArgs(requestArgs) {\n return requestArgs[0]\n },\n}\n", "import type { Sql } from 'sql-template-tag'\n\n// Generate something like: SELECT * FROM User WHERE name = @P1 AND email = @P2 ...\nexport const mssqlPreparedStatement = (sql: Sql) => {\n return sql.strings.reduce((acc, str, idx) => `${acc}@P${idx}${str}`)\n}\n", "import Decimal from 'decimal.js'\n\nimport { isDate } from './date'\n\nexport function serializeRawParameters(parameters: any[]): string {\n try {\n return serializeRawParametersInternal(parameters, 'fast')\n } catch (error) {\n // Got TypeError, try replacing values unsupported by JSON (i.e., BigInts)\n // with strings inside arrays and objects.\n return serializeRawParametersInternal(parameters, 'slow')\n }\n}\n\nfunction serializeRawParametersInternal(parameters: any[], objectSerialization: 'fast' | 'slow'): string {\n return JSON.stringify(parameters.map((parameter) => encodeParameter(parameter, objectSerialization)))\n}\n\nfunction encodeParameter(parameter: any, objectSerialization: 'fast' | 'slow'): unknown {\n if (Array.isArray(parameter)) {\n return parameter.map((item) => encodeParameter(item, objectSerialization))\n }\n if (typeof parameter === 'bigint') {\n return {\n prisma__type: 'bigint',\n prisma__value: parameter.toString(),\n }\n }\n\n if (isDate(parameter)) {\n return {\n prisma__type: 'date',\n prisma__value: parameter.toJSON(),\n }\n }\n\n if (Decimal.isDecimal(parameter)) {\n return {\n prisma__type: 'decimal',\n prisma__value: parameter.toJSON(),\n }\n }\n\n if (Buffer.isBuffer(parameter)) {\n return {\n prisma__type: 'bytes',\n prisma__value: parameter.toString('base64'),\n }\n }\n\n if (isArrayBufferLike(parameter)) {\n return {\n prisma__type: 'bytes',\n prisma__value: Buffer.from(parameter).toString('base64'),\n }\n }\n\n if (ArrayBuffer.isView(parameter)) {\n const { buffer, byteOffset, byteLength } = parameter\n return {\n prisma__type: 'bytes',\n prisma__value: Buffer.from(buffer, byteOffset, byteLength).toString('base64'),\n }\n }\n\n if (typeof parameter === 'object' && objectSerialization === 'slow') {\n return preprocessObject(parameter)\n }\n\n return parameter\n}\n\nfunction isArrayBufferLike(value: any): value is ArrayBufferLike {\n if (value instanceof ArrayBuffer || value instanceof SharedArrayBuffer) {\n return true\n }\n\n if (typeof value === 'object' && value !== null) {\n return value[Symbol.toStringTag] === 'ArrayBuffer' || value[Symbol.toStringTag] === 'SharedArrayBuffer'\n }\n\n return false\n}\n\nfunction preprocessObject(obj: any): unknown {\n if (typeof obj !== 'object' || obj === null) {\n return obj\n }\n\n if (typeof obj.toJSON === 'function') {\n return obj.toJSON()\n }\n\n // TODO: map from blaze would've been convenient here to map arrays and objects uniformly,\n // but importing it in this file causes compilation errors in tsd tests.\n\n if (Array.isArray(obj)) {\n return obj.map(preprocessValueInObject)\n }\n\n const result = {} as any\n\n for (const key of Object.keys(obj as object)) {\n result[key] = preprocessValueInObject(obj[key])\n }\n\n return result\n}\n\nfunction preprocessValueInObject(value: any): unknown {\n if (typeof value === 'bigint') {\n return value.toString()\n }\n\n return preprocessObject(value)\n}\n", "import type { PrismaOperationSpec, PrismaPromise, PrismaPromiseTransaction } from './PrismaPromise'\n\nexport type PrismaPromiseCallback = (transaction?: PrismaPromiseTransaction) => Promise<unknown>\n\n/**\n * Creates a [[PrismaPromise]]. It is Prisma's implementation of `Promise` which\n * is essentially a proxy for `Promise`. All the transaction-compatible client\n * methods return one, this allows for pre-preparing queries without executing\n * them until `.then` is called. It's the foundation of Prisma's query batching.\n * @param callback that will be wrapped within our promise implementation\n * @see [[PrismaPromise]]\n * @returns\n */\nexport type PrismaPromiseFactory = <T extends PrismaOperationSpec<unknown>>(\n callback: PrismaPromiseCallback,\n op?: T,\n) => PrismaPromise<unknown>\n\n/**\n * Creates a factory, that allows creating PrismaPromises, bound to a specific transactions\n * @param transaction\n * @returns\n */\nexport function createPrismaPromiseFactory(transaction?: PrismaPromiseTransaction): PrismaPromiseFactory {\n return function createPrismaPromise<TSpec extends PrismaOperationSpec<unknown>>(\n callback: PrismaPromiseCallback,\n op?: TSpec,\n ): PrismaPromise<unknown, TSpec> {\n let promise: PrismaPromise<unknown> | undefined\n const _callback = (callbackTransaction = transaction): PrismaPromise<unknown> => {\n try {\n // promises cannot be triggered twice after resolving\n if (callbackTransaction === undefined || callbackTransaction?.kind === 'itx') {\n return (promise ??= valueToPromise(callback(callbackTransaction)))\n }\n\n // but for batch tx we can trigger them again & again\n return valueToPromise(callback(callbackTransaction))\n } catch (error) {\n // if the callback throws, then we reject the promise\n // and that is because exceptions are not always async\n return Promise.reject(error) as PrismaPromise<unknown>\n }\n }\n\n return {\n get spec() {\n return op!\n },\n\n then(onFulfilled, onRejected) {\n return _callback().then(onFulfilled, onRejected)\n },\n catch(onRejected) {\n return _callback().catch(onRejected)\n },\n finally(onFinally) {\n return _callback().finally(onFinally)\n },\n\n requestTransaction(batchTransaction) {\n const promise = _callback(batchTransaction)\n\n if (promise.requestTransaction) {\n // we want to have support for nested promises\n return promise.requestTransaction(batchTransaction)\n }\n\n return promise\n },\n [Symbol.toStringTag]: 'PrismaPromise',\n }\n }\n}\n\nfunction valueToPromise<T>(thing: T): PrismaPromise<T> {\n if (typeof thing['then'] === 'function') {\n return thing as PrismaPromise<T>\n }\n\n return Promise.resolve(thing) as PrismaPromise<T>\n}\n", "import type { Context } from '@opentelemetry/api'\nimport { EngineSpan, ExtendedSpanOptions, SpanCallback, TracingHelper, version } from '@prisma/internals'\n\nconst majorVersion = version.split('.')[0]\n\nexport const disabledTracingHelper: TracingHelper = {\n isEnabled() {\n return false\n },\n getTraceParent() {\n // https://www.w3.org/TR/trace-context/#examples-of-http-traceparent-headers\n // If traceparent ends with -00 this trace will not be sampled\n // the query engine needs the `10` for the span and trace id otherwise it does not parse this\n return `00-10-10-00`\n },\n\n dispatchEngineSpans() {},\n\n getActiveContext() {\n return undefined\n },\n\n runInChildSpan<R>(options: string | ExtendedSpanOptions, callback: SpanCallback<R>): R {\n return callback()\n },\n}\n\n/**\n * Tracing helper that can dynamically switch between enabled/disabled states\n * Needed because tracing can be disabled and enabled with the calls to\n * PrismaInstrumentation::disable/enable at any point\n */\nclass DynamicTracingHelper implements TracingHelper {\n isEnabled(): boolean {\n return this.getGlobalTracingHelper().isEnabled()\n }\n getTraceParent(context: Context) {\n return this.getGlobalTracingHelper().getTraceParent(context)\n }\n\n dispatchEngineSpans(spans: EngineSpan[]) {\n return this.getGlobalTracingHelper().dispatchEngineSpans(spans)\n }\n\n getActiveContext() {\n return this.getGlobalTracingHelper().getActiveContext()\n }\n runInChildSpan<R>(options: string | ExtendedSpanOptions, callback: SpanCallback<R>): R {\n return this.getGlobalTracingHelper().runInChildSpan(options, callback)\n }\n\n private getGlobalTracingHelper(): TracingHelper {\n // These globals are defined in `@prisma/instrumentation`\n const versionedPrismaInstrumentationGlobal = globalThis[`V${majorVersion}_PRISMA_INSTRUMENTATION`]\n const fallbackPrismaInstrumentationGlobal = globalThis.PRISMA_INSTRUMENTATION\n\n return (\n versionedPrismaInstrumentationGlobal?.helper ??\n // TODO(v7): In future major versions, the tracing helper should only be read from the versioned global field.\n // This is to ensure that instrumentation libraries (including `@prisma/instrumentation`) can register tracing helpers with compatible interfaces for each major version - thus preventing potential crashes in case instrumentation libraries are not yet updated for a new major, allowing for easier migration.\n // Currently, the versioned helper is preferred and the fallback helper is picked up for backwards compatibility.\n fallbackPrismaInstrumentationGlobal?.helper ??\n disabledTracingHelper\n )\n }\n}\n\nexport function getTracingHelper(): TracingHelper {\n return new DynamicTracingHelper()\n}\n", "/**\n * Creates an exotic promise that opens after x `await`s.\n * @remarks\n * This is currently used for locking regular transactions.\n * This ensures that all queries are executed at once/batched.\n * Even if middlewares are in use, they'll all execute at once.\n * @param knock the amount of awaits to open the promise\n * @param cb the callback to execute and value to return\n * @returns\n */\nexport function getLockCountPromise<V = void>(knock: number, cb: () => V | void = () => {}) {\n let resolve: (v: V | void) => void\n const lock = new Promise<V | void>((res) => (resolve = res))\n\n return {\n then(onFulfilled) {\n if (--knock === 0) resolve(cb())\n\n return onFulfilled?.(lock as unknown as V | void)\n },\n } as PromiseLike<V | void>\n}\n", "type LogLevel = 'info' | 'query' | 'warn' | 'error'\ntype LogDefinition = {\n level: LogLevel\n emit: 'stdout' | 'event'\n}\n\nexport function getLogLevel(log: LogLevel | Array<LogLevel | LogDefinition>): LogLevel | undefined {\n if (typeof log === 'string') {\n return log\n }\n return log.reduce<LogLevel | undefined>((acc, curr) => {\n const currentLevel = typeof curr === 'string' ? curr : curr.level\n if (currentLevel === 'query') {\n return acc\n }\n if (!acc) {\n return currentLevel\n }\n if (curr === 'info' || acc === 'info') {\n // info has precedence\n return 'info'\n }\n return currentLevel\n }, undefined)\n}\n", "import { Context } from '@opentelemetry/api'\nimport { deserializeJsonResponse } from '@prisma/client-engine-runtime'\nimport { Debug } from '@prisma/debug'\nimport { assertNever } from '@prisma/internals'\nimport stripAnsi from 'strip-ansi'\n\nimport {\n EngineValidationError,\n InteractiveTransactionOptions,\n JsonQuery,\n LogEmitter,\n TransactionOptions,\n} from '../runtime/core/engines'\nimport {\n PrismaClientInitializationError,\n PrismaClientKnownRequestError,\n PrismaClientRustPanicError,\n PrismaClientUnknownRequestError,\n} from '.'\nimport { AccelerateExtensionFetchDecorator } from './core/engines/common/Engine'\nimport { QueryEngineResultData } from './core/engines/common/types/QueryEngine'\nimport { throwValidationException } from './core/errorRendering/throwValidationException'\nimport { hasBatchIndex } from './core/errors/ErrorWithBatchIndex'\nimport { createApplyBatchExtensionsFunction } from './core/extensions/applyQueryExtensions'\nimport { MergedExtensionsList } from './core/extensions/MergedExtensionsList'\nimport { getBatchId } from './core/jsonProtocol/getBatchId'\nimport { isWrite } from './core/jsonProtocol/isWrite'\nimport { GlobalOmitOptions } from './core/jsonProtocol/serializeJsonQuery'\nimport { PrismaPromiseInteractiveTransaction, PrismaPromiseTransaction } from './core/request/PrismaPromise'\nimport { Action, JsArgs } from './core/types/exported/JsApi'\nimport { DataLoader } from './DataLoader'\nimport type { Client, Unpacker } from './getPrismaClient'\nimport { CallSite } from './utils/CallSite'\nimport { createErrorMessageWithContext } from './utils/createErrorMessageWithContext'\nimport { deepGet } from './utils/deep-set'\nimport { deserializeRawResult, RawResponse } from './utils/deserializeRawResults'\n\nconst debug = Debug('prisma:client:request_handler')\n\nexport type RequestParams = {\n modelName?: string\n action: Action\n protocolQuery: JsonQuery\n dataPath: string[]\n clientMethod: string\n callsite?: CallSite\n transaction?: PrismaPromiseTransaction\n extensions: MergedExtensionsList\n args?: any\n headers?: Record<string, string>\n unpacker?: Unpacker\n otelParentCtx?: Context\n otelChildCtx?: Context\n globalOmit?: GlobalOmitOptions\n customDataProxyFetch?: AccelerateExtensionFetchDecorator\n}\n\nexport type HandleErrorParams = {\n args: JsArgs\n error: any\n clientMethod: string\n callsite?: CallSite\n transaction?: PrismaPromiseTransaction\n modelName?: string\n globalOmit?: GlobalOmitOptions\n}\n\nexport class RequestHandler {\n client: Client\n dataloader: DataLoader<RequestParams>\n private logEmitter?: LogEmitter\n\n constructor(client: Client, logEmitter?: LogEmitter) {\n this.logEmitter = logEmitter\n this.client = client\n\n this.dataloader = new DataLoader({\n batchLoader: createApplyBatchExtensionsFunction(async ({ requests, customDataProxyFetch }) => {\n const { transaction, otelParentCtx } = requests[0]\n const queries = requests.map((r) => r.protocolQuery)\n const traceparent = this.client._tracingHelper.getTraceParent(otelParentCtx)\n\n // TODO: pass the child information to QE for it to issue links to queries\n // const links = requests.map((r) => trace.getSpanContext(r.otelChildCtx!))\n\n const containsWrite = requests.some((r) => isWrite(r.protocolQuery.action))\n\n const results = await this.client._engine.requestBatch(queries, {\n traceparent,\n transaction: getTransactionOptions(transaction),\n containsWrite,\n customDataProxyFetch,\n })\n\n return results.map((result, i) => {\n if (result instanceof Error) {\n return result\n }\n\n try {\n return this.mapQueryEngineResult(requests[i], result)\n } catch (error) {\n return error\n }\n })\n }),\n\n singleLoader: async (request) => {\n const interactiveTransaction =\n request.transaction?.kind === 'itx' ? getItxTransactionOptions(request.transaction) : undefined\n\n const response = await this.client._engine.request(request.protocolQuery, {\n traceparent: this.client._tracingHelper.getTraceParent(),\n interactiveTransaction,\n isWrite: isWrite(request.protocolQuery.action),\n customDataProxyFetch: request.customDataProxyFetch,\n })\n return this.mapQueryEngineResult(request, response)\n },\n\n batchBy: (request) => {\n if (request.transaction?.id) {\n return `transaction-${request.transaction.id}`\n }\n\n return getBatchId(request.protocolQuery)\n },\n\n batchOrder(requestA, requestB) {\n if (requestA.transaction?.kind === 'batch' && requestB.transaction?.kind === 'batch') {\n return requestA.transaction.index - requestB.transaction.index\n }\n return 0\n },\n })\n }\n\n async request(params: RequestParams) {\n try {\n return await this.dataloader.request(params)\n } catch (error) {\n const { clientMethod, callsite, transaction, args, modelName } = params\n this.handleAndLogRequestError({\n error,\n clientMethod,\n callsite,\n transaction,\n args,\n modelName,\n globalOmit: params.globalOmit,\n })\n }\n }\n\n mapQueryEngineResult({ dataPath, unpacker }: RequestParams, response: QueryEngineResultData<any>) {\n const data = response?.data\n\n /**\n * Unpack\n */\n const result = this.unpack(data, dataPath, unpacker)\n if (process.env.PRISMA_CLIENT_GET_TIME) {\n return { data: result }\n }\n return result\n }\n\n /**\n * Handles the error and logs it, logging the error is done synchronously waiting for the event\n * handlers to finish.\n */\n handleAndLogRequestError(params: HandleErrorParams): never {\n try {\n this.handleRequestError(params)\n } catch (err) {\n if (this.logEmitter) {\n this.logEmitter.emit('error', { message: err.message, target: params.clientMethod, timestamp: new Date() })\n }\n throw err\n }\n }\n\n handleRequestError({\n error,\n clientMethod,\n callsite,\n transaction,\n args,\n modelName,\n globalOmit,\n }: HandleErrorParams): never {\n debug(error)\n\n if (isMismatchingBatchIndex(error, transaction)) {\n // if this is batch error and current request was not it's cause, we don't add\n // context information to the error: this wasn't a request that caused batch to fail\n throw error\n }\n\n if (error instanceof PrismaClientKnownRequestError && isValidationError(error)) {\n const validationError = convertValidationError(error.meta as EngineValidationError)\n throwValidationException({\n args,\n errors: [validationError],\n callsite,\n errorFormat: this.client._errorFormat,\n originalMethod: clientMethod,\n clientVersion: this.client._clientVersion,\n globalOmit,\n })\n }\n\n let message = error.message\n if (callsite) {\n message = createErrorMessageWithContext({\n callsite,\n originalMethod: clientMethod,\n isPanic: error.isPanic,\n showColors: this.client._errorFormat === 'pretty',\n message,\n })\n }\n\n message = this.sanitizeMessage(message)\n // TODO: Do request with callsite instead, so we don't need to rethrow\n if (error.code) {\n const meta = modelName ? { modelName, ...error.meta } : error.meta\n throw new PrismaClientKnownRequestError(message, {\n code: error.code,\n clientVersion: this.client._clientVersion,\n meta,\n batchRequestIdx: error.batchRequestIdx,\n })\n } else if (error.isPanic) {\n throw new PrismaClientRustPanicError(message, this.client._clientVersion)\n } else if (error instanceof PrismaClientUnknownRequestError) {\n throw new PrismaClientUnknownRequestError(message, {\n clientVersion: this.client._clientVersion,\n batchRequestIdx: error.batchRequestIdx,\n })\n } else if (error instanceof PrismaClientInitializationError) {\n throw new PrismaClientInitializationError(message, this.client._clientVersion)\n } else if (error instanceof PrismaClientRustPanicError) {\n throw new PrismaClientRustPanicError(message, this.client._clientVersion)\n }\n\n error.clientVersion = this.client._clientVersion\n\n throw error\n }\n\n sanitizeMessage(message) {\n if (this.client._errorFormat && this.client._errorFormat !== 'pretty') {\n return stripAnsi(message)\n }\n return message\n }\n\n unpack(data: unknown, dataPath: string[], unpacker?: Unpacker) {\n if (!data) {\n return data\n }\n if (data['data']) {\n data = data['data']\n }\n\n if (!data) {\n return data\n }\n const operation = Object.keys(data)[0]\n const response = Object.values(data)[0]\n const pathForGet = dataPath.filter((key) => key !== 'select' && key !== 'include')\n const extractedResponse = deepGet(response, pathForGet)\n const deserializedResponse =\n operation === 'queryRaw'\n ? deserializeRawResult(extractedResponse as RawResponse)\n : (deserializeJsonResponse(extractedResponse) as unknown)\n\n return unpacker ? unpacker(deserializedResponse) : deserializedResponse\n }\n\n get [Symbol.toStringTag]() {\n return 'RequestHandler'\n }\n}\n\nfunction getTransactionOptions<PayloadType>(\n transaction?: PrismaPromiseTransaction<PayloadType>,\n): TransactionOptions<PayloadType> | undefined {\n if (!transaction) {\n return undefined\n }\n\n if (transaction.kind === 'batch') {\n return {\n kind: 'batch',\n options: {\n isolationLevel: transaction.isolationLevel,\n },\n }\n }\n\n if (transaction.kind === 'itx') {\n return {\n kind: 'itx',\n options: getItxTransactionOptions(transaction),\n }\n }\n\n assertNever(transaction, 'Unknown transaction kind')\n}\n\nfunction getItxTransactionOptions<PayloadType>(\n transaction: PrismaPromiseInteractiveTransaction<PayloadType>,\n): InteractiveTransactionOptions<PayloadType> {\n return {\n id: transaction.id,\n payload: transaction.payload,\n }\n}\n\nfunction isMismatchingBatchIndex(error: any, transaction: PrismaPromiseTransaction | undefined) {\n return hasBatchIndex(error) && transaction?.kind === 'batch' && error.batchRequestIdx !== transaction.index\n}\n\nfunction isValidationError(error: PrismaClientKnownRequestError) {\n return (\n error.code === 'P2009' || // validation error\n error.code === 'P2012' // required argument missing\n )\n}\n\n/**\n * Engine validation errors include extra segment for selectionPath - root query field.\n * This function removes it (since it does not exist on js arguments). In case of `Union`\n * error type, removes heading element from selectionPath of nested errors as well.\n * @param error\n * @returns\n */\nfunction convertValidationError(error: EngineValidationError): EngineValidationError {\n if (error.kind === 'Union') {\n return {\n kind: 'Union',\n errors: error.errors.map(convertValidationError),\n }\n }\n\n if (Array.isArray(error['selectionPath'])) {\n const [, ...selectionPath] = error['selectionPath']\n\n return {\n ...error,\n selectionPath,\n } as EngineValidationError\n }\n\n return error\n}\n", "export interface ErrorWithBatchIndex {\n batchRequestIdx?: number\n}\n\nexport function hasBatchIndex(value: object): value is Required<ErrorWithBatchIndex> {\n return typeof value['batchRequestIdx'] === 'number'\n}\n", "import { JsonQuery } from '../engines'\n\nexport function getBatchId(query: JsonQuery): string | undefined {\n if (query.action !== 'findUnique' && query.action !== 'findUniqueOrThrow') {\n return undefined\n }\n const parts: string[] = []\n if (query.modelName) {\n parts.push(query.modelName)\n }\n\n if (query.query.arguments) {\n parts.push(buildKeysString(query.query.arguments))\n }\n parts.push(buildKeysString(query.query.selection))\n\n return parts.join('')\n}\n\nfunction buildKeysString(obj: object): string {\n const keysArray = Object.keys(obj)\n .sort()\n .map((key) => {\n const value = obj[key]\n if (typeof value === 'object' && value !== null) {\n return `(${key} ${buildKeysString(value)})`\n }\n return key\n })\n\n return `(${keysArray.join(' ')})`\n}\n", "import { JsonQueryAction } from '../engines'\n\nconst writeMap: Record<JsonQueryAction, boolean> = {\n aggregate: false,\n aggregateRaw: false,\n createMany: true,\n createManyAndReturn: true,\n createOne: true,\n deleteMany: true,\n deleteOne: true,\n executeRaw: true,\n findFirst: false,\n findFirstOrThrow: false,\n findMany: false,\n findRaw: false,\n findUnique: false,\n findUniqueOrThrow: false,\n groupBy: false,\n queryRaw: false,\n runCommandRaw: true,\n updateMany: true,\n updateManyAndReturn: true,\n updateOne: true,\n upsertOne: true,\n}\n\nexport function isWrite(action: JsonQueryAction): boolean {\n return writeMap[action]\n}\n", "interface Job {\n resolve: (data: any) => void\n reject: (data: any) => void\n request: any\n}\n\nexport type DataLoaderOptions<T> = {\n singleLoader: (request: T) => Promise<any>\n batchLoader: (request: T[]) => Promise<any[]>\n batchBy: (request: T) => string | undefined\n // Specifies the order in which requests in a batch would\n // be sorted. See Array.prototype.sort callback\n batchOrder: (requestA: T, requestB: T) => number\n}\n\nexport class DataLoader<T = unknown> {\n batches: { [key: string]: Job[] }\n private tickActive = false\n constructor(private options: DataLoaderOptions<T>) {\n this.batches = {}\n }\n\n request(request: T): Promise<any> {\n const hash = this.options.batchBy(request)\n if (!hash) {\n return this.options.singleLoader(request)\n }\n if (!this.batches[hash]) {\n this.batches[hash] = []\n\n // make sure, that we only tick once at a time\n if (!this.tickActive) {\n this.tickActive = true\n process.nextTick(() => {\n this.dispatchBatches()\n this.tickActive = false\n })\n }\n }\n\n return new Promise((resolve, reject) => {\n this.batches[hash].push({\n request,\n resolve,\n reject,\n })\n })\n }\n\n private dispatchBatches() {\n for (const key in this.batches) {\n const batch = this.batches[key]\n delete this.batches[key]\n\n // only batch if necessary\n // this might occur, if there's e.g. only 1 findUnique in the batch\n if (batch.length === 1) {\n this.options\n .singleLoader(batch[0].request)\n .then((result) => {\n if (result instanceof Error) {\n batch[0].reject(result)\n } else {\n batch[0].resolve(result)\n }\n })\n .catch((e) => {\n batch[0].reject(e)\n })\n } else {\n batch.sort((a, b) => this.options.batchOrder(a.request, b.request))\n this.options\n .batchLoader(batch.map((j) => j.request))\n .then((results) => {\n if (results instanceof Error) {\n for (let i = 0; i < batch.length; i++) {\n batch[i].reject(results)\n }\n } else {\n for (let i = 0; i < batch.length; i++) {\n const value = results[i]\n if (value instanceof Error) {\n batch[i].reject(value)\n } else {\n batch[i].resolve(value)\n }\n }\n }\n })\n .catch((e) => {\n for (let i = 0; i < batch.length; i++) {\n batch[i].reject(e)\n }\n })\n }\n }\n }\n\n get [Symbol.toStringTag]() {\n return 'DataLoader'\n }\n}\n", "import type { QueryIntrospectionBuiltinType } from '@prisma/generator'\nimport Decimal from 'decimal.js'\n\nexport type RawResponse = {\n columns: string[]\n types: QueryIntrospectionBuiltinType[]\n rows: unknown[][]\n}\n\nfunction deserializeValue(type: QueryIntrospectionBuiltinType, value: unknown): unknown {\n if (value === null) {\n return value\n }\n\n switch (type) {\n case 'bigint':\n return BigInt(value as string)\n\n case 'bytes': {\n const { buffer, byteOffset, byteLength } = Buffer.from(value as string, 'base64')\n return new Uint8Array(buffer, byteOffset, byteLength)\n }\n\n case 'decimal':\n return new Decimal(value as string)\n\n case 'datetime':\n case 'date':\n return new Date(value as string)\n\n case 'time':\n return new Date(`1970-01-01T${value}Z`)\n\n case 'bigint-array':\n return (value as unknown[]).map((v: unknown) => deserializeValue('bigint', v))\n case 'bytes-array':\n return (value as unknown[]).map((v: unknown) => deserializeValue('bytes', v))\n case 'decimal-array':\n return (value as unknown[]).map((v: unknown) => deserializeValue('decimal', v))\n case 'datetime-array':\n return (value as unknown[]).map((v: unknown) => deserializeValue('datetime', v))\n case 'date-array':\n return (value as unknown[]).map((v: unknown) => deserializeValue('date', v))\n case 'time-array':\n return (value as unknown[]).map((v: unknown) => deserializeValue('time', v))\n\n default:\n return value\n }\n}\n\ntype DeserializedResponse = Array<Record<string, unknown>>\n\nexport function deserializeRawResult(response: RawResponse): DeserializedResponse {\n const deserializedResponse: DeserializedResponse = []\n // Performance optimization. See https://github.com/brianc/node-postgres/issues/3042\n const prebuiltEmptyObject = createPrebuiltEmptyResultObject(response)\n\n for (let i = 0; i < response.rows.length; i++) {\n const row = response.rows[i]\n const mappedRow = { ...prebuiltEmptyObject } as Record<string, unknown>\n\n for (let j = 0; j < row.length; j++) {\n mappedRow[response.columns[j]] = deserializeValue(response.types[j], row[j])\n }\n\n deserializedResponse.push(mappedRow)\n }\n\n return deserializedResponse\n}\n\nfunction createPrebuiltEmptyResultObject(response: RawResponse): Record<string, null> {\n const row = {}\n\n for (let i = 0; i < response.columns.length; i++) {\n row[response.columns[i]] = null\n }\n\n return row\n}\n", "import { version } from '../../../package.json'\n\nexport const clientVersion = version as string\n", "import { GetPrismaClientConfig, RuntimeDataModel, RuntimeModel, uncapitalize } from '@prisma/client-common'\nimport { ClientEngineType, getClientEngineType } from '@prisma/internals'\nimport leven from 'js-levenshtein'\n\nimport { buildArgumentsRenderingTree, renderArgsTree } from '../core/errorRendering/ArgumentsRenderingTree'\nimport { PrismaClientConstructorValidationError } from '../core/errors/PrismaClientConstructorValidationError'\nimport type { ErrorFormat, LogLevel, PrismaClientOptions } from '../getPrismaClient'\n\nconst knownProperties = [\n 'datasources',\n 'datasourceUrl',\n 'errorFormat',\n 'adapter',\n 'log',\n 'transactionOptions',\n 'omit',\n '__internal',\n]\nconst errorFormats: ErrorFormat[] = ['pretty', 'colorless', 'minimal']\nconst logLevels: LogLevel[] = ['info', 'query', 'warn', 'error']\n\ntype OmitValidationError =\n | { kind: 'UnknownModel'; modelKey: string }\n | { kind: 'UnknownField'; modelKey: string; fieldName: string }\n | { kind: 'RelationInOmit'; modelKey: string; fieldName: string }\n | { kind: 'InvalidFieldValue'; modelKey: string; fieldName: string }\n\n/**\n * Subset of `GetPrismaClientConfig` which is used during validation.\n * Feel free to allow more properties when necessary but don't forget to add\n * them in the mock config in `validatePrismaClientOptions.test.ts`.\n */\ntype ClientConfig = Pick<GetPrismaClientConfig, 'datasourceNames' | 'generator' | 'runtimeDataModel'>\n\nconst validators: {\n [K in keyof PrismaClientOptions]-?: (\n option: PrismaClientOptions[K],\n config: ClientConfig,\n dataModel: RuntimeDataModel,\n ) => void\n} = {\n datasources: (options, { datasourceNames }) => {\n if (!options) {\n return\n }\n if (typeof options !== 'object' || Array.isArray(options)) {\n throw new PrismaClientConstructorValidationError(\n `Invalid value ${JSON.stringify(options)} for \"datasources\" provided to PrismaClient constructor`,\n )\n }\n\n for (const [key, value] of Object.entries(options)) {\n if (!datasourceNames.includes(key)) {\n const didYouMean =\n getDidYouMean(key, datasourceNames) || ` Available datasources: ${datasourceNames.join(', ')}`\n throw new PrismaClientConstructorValidationError(\n `Unknown datasource ${key} provided to PrismaClient constructor.${didYouMean}`,\n )\n }\n if (typeof value !== 'object' || Array.isArray(value)) {\n throw new PrismaClientConstructorValidationError(\n `Invalid value ${JSON.stringify(options)} for datasource \"${key}\" provided to PrismaClient constructor.\nIt should have this form: { url: \"CONNECTION_STRING\" }`,\n )\n }\n if (value && typeof value === 'object') {\n for (const [key1, value1] of Object.entries(value)) {\n if (key1 !== 'url') {\n throw new PrismaClientConstructorValidationError(\n `Invalid value ${JSON.stringify(options)} for datasource \"${key}\" provided to PrismaClient constructor.\nIt should have this form: { url: \"CONNECTION_STRING\" }`,\n )\n }\n if (typeof value1 !== 'string') {\n throw new PrismaClientConstructorValidationError(\n `Invalid value ${JSON.stringify(value1)} for datasource \"${key}\" provided to PrismaClient constructor.\nIt should have this form: { url: \"CONNECTION_STRING\" }`,\n )\n }\n }\n }\n }\n },\n adapter: (adapter, config) => {\n if (!adapter && getClientEngineType(config.generator) === ClientEngineType.Client) {\n throw new PrismaClientConstructorValidationError(\n `Using engine type \"client\" requires a driver adapter to be provided to PrismaClient constructor.`,\n )\n }\n\n if (adapter === null) {\n return\n }\n\n if (adapter === undefined) {\n throw new PrismaClientConstructorValidationError(\n `\"adapter\" property must not be undefined, use null to conditionally disable driver adapters.`,\n )\n }\n\n if (getClientEngineType(config.generator) === ClientEngineType.Binary) {\n throw new PrismaClientConstructorValidationError(\n `Cannot use a driver adapter with the \"binary\" Query Engine. Please use the \"library\" Query Engine.`,\n )\n }\n },\n datasourceUrl: (options) => {\n if (typeof options !== 'undefined' && typeof options !== 'string') {\n throw new PrismaClientConstructorValidationError(\n `Invalid value ${JSON.stringify(options)} for \"datasourceUrl\" provided to PrismaClient constructor.\nExpected string or undefined.`,\n )\n }\n },\n errorFormat: (options) => {\n if (!options) {\n return\n }\n if (typeof options !== 'string') {\n throw new PrismaClientConstructorValidationError(\n `Invalid value ${JSON.stringify(options)} for \"errorFormat\" provided to PrismaClient constructor.`,\n )\n }\n if (!errorFormats.includes(options as ErrorFormat)) {\n const didYouMean = getDidYouMean(options, errorFormats)\n throw new PrismaClientConstructorValidationError(\n `Invalid errorFormat ${options} provided to PrismaClient constructor.${didYouMean}`,\n )\n }\n },\n log: (options) => {\n if (!options) {\n return\n }\n if (!Array.isArray(options)) {\n throw new PrismaClientConstructorValidationError(\n `Invalid value ${JSON.stringify(options)} for \"log\" provided to PrismaClient constructor.`,\n )\n }\n\n function validateLogLevel(level: any) {\n if (typeof level === 'string') {\n if (!logLevels.includes(level as LogLevel)) {\n const didYouMean = getDidYouMean(level, logLevels)\n throw new PrismaClientConstructorValidationError(\n `Invalid log level \"${level}\" provided to PrismaClient constructor.${didYouMean}`,\n )\n }\n }\n }\n\n for (const option of options) {\n validateLogLevel(option)\n\n const logValidators = {\n level: validateLogLevel,\n emit: (value) => {\n const emits = ['stdout', 'event']\n if (!emits.includes(value)) {\n const didYouMean = getDidYouMean(value, emits)\n throw new PrismaClientConstructorValidationError(\n `Invalid value ${JSON.stringify(\n value,\n )} for \"emit\" in logLevel provided to PrismaClient constructor.${didYouMean}`,\n )\n }\n },\n }\n\n if (option && typeof option === 'object') {\n for (const [key, value] of Object.entries(option)) {\n if (logValidators[key]) {\n logValidators[key](value)\n } else {\n throw new PrismaClientConstructorValidationError(\n `Invalid property ${key} for \"log\" provided to PrismaClient constructor`,\n )\n }\n }\n }\n }\n },\n transactionOptions: (options: any) => {\n if (!options) {\n return\n }\n\n const maxWait = options.maxWait\n if (maxWait != null && maxWait <= 0) {\n throw new PrismaClientConstructorValidationError(\n `Invalid value ${maxWait} for maxWait in \"transactionOptions\" provided to PrismaClient constructor. maxWait needs to be greater than 0`,\n )\n }\n\n const timeout = options.timeout\n if (timeout != null && timeout <= 0) {\n throw new PrismaClientConstructorValidationError(\n `Invalid value ${timeout} for timeout in \"transactionOptions\" provided to PrismaClient constructor. timeout needs to be greater than 0`,\n )\n }\n },\n omit: (options: unknown, config) => {\n if (typeof options !== 'object') {\n throw new PrismaClientConstructorValidationError(`\"omit\" option is expected to be an object.`)\n }\n if (options === null) {\n throw new PrismaClientConstructorValidationError(`\"omit\" option can not be \\`null\\``)\n }\n\n const validationErrors: OmitValidationError[] = []\n for (const [modelKey, modelConfig] of Object.entries(options)) {\n const modelOrType = getModelOrTypeByKey(modelKey, config.runtimeDataModel)\n if (!modelOrType) {\n validationErrors.push({ kind: 'UnknownModel', modelKey: modelKey })\n continue\n }\n for (const [fieldName, value] of Object.entries(modelConfig)) {\n const field = modelOrType.fields.find((field) => field.name === fieldName)\n if (!field) {\n validationErrors.push({ kind: 'UnknownField', modelKey, fieldName })\n continue\n }\n if (field.relationName) {\n validationErrors.push({ kind: 'RelationInOmit', modelKey, fieldName })\n continue\n }\n if (typeof value !== 'boolean') {\n validationErrors.push({ kind: 'InvalidFieldValue', modelKey, fieldName })\n }\n }\n }\n if (validationErrors.length > 0) {\n throw new PrismaClientConstructorValidationError(\n renderOmitValidationErrors(options as Record<string, unknown>, validationErrors),\n )\n }\n },\n __internal: (value) => {\n if (!value) {\n return\n }\n const knownKeys = ['debug', 'engine', 'configOverride']\n if (typeof value !== 'object') {\n throw new PrismaClientConstructorValidationError(\n `Invalid value ${JSON.stringify(value)} for \"__internal\" to PrismaClient constructor`,\n )\n }\n for (const [key] of Object.entries(value)) {\n if (!knownKeys.includes(key)) {\n const didYouMean = getDidYouMean(key, knownKeys)\n throw new PrismaClientConstructorValidationError(\n `Invalid property ${JSON.stringify(key)} for \"__internal\" provided to PrismaClient constructor.${didYouMean}`,\n )\n }\n }\n // TODO: Add more validation here\n // but as this is an internal, non user-facing api, it's not urgent\n },\n}\n\nexport function validatePrismaClientOptions(options: PrismaClientOptions, config: ClientConfig) {\n for (const [key, value] of Object.entries(options)) {\n if (!knownProperties.includes(key)) {\n const didYouMean = getDidYouMean(key, knownProperties)\n throw new PrismaClientConstructorValidationError(\n `Unknown property ${key} provided to PrismaClient constructor.${didYouMean}`,\n )\n }\n validators[key](value, config)\n }\n\n if (options.datasourceUrl && options.datasources) {\n throw new PrismaClientConstructorValidationError(\n 'Can not use \"datasourceUrl\" and \"datasources\" options at the same time. Pick one of them',\n )\n }\n}\n\nfunction getDidYouMean(str: string, options: string[]): string {\n if (options.length === 0) {\n return ''\n }\n\n if (typeof str !== 'string') {\n return ''\n }\n\n const alternative = getAlternative(str, options)\n if (!alternative) {\n return ''\n }\n\n return ` Did you mean \"${alternative}\"?`\n}\n\nfunction getAlternative(str: string, options: string[]): null | string {\n if (options.length === 0) {\n return null\n }\n\n const optionsWithDistances = options.map((value) => ({\n value,\n distance: leven(str, value),\n }))\n\n optionsWithDistances.sort((a, b) => {\n return a.distance < b.distance ? -1 : 1\n })\n\n const bestAlternative = optionsWithDistances[0]\n if (bestAlternative.distance < 3) {\n return bestAlternative.value\n }\n\n return null\n}\n\nfunction getModelOrTypeByKey(modelKey: string, runtimeDataModel: RuntimeDataModel): RuntimeModel | undefined {\n return findByKey(runtimeDataModel.models, modelKey) ?? findByKey(runtimeDataModel.types, modelKey)\n}\n\nfunction findByKey<T>(map: Record<string, T>, key: string): T | undefined {\n const foundKey = Object.keys(map).find((mapKey) => uncapitalize(mapKey) === key)\n if (foundKey) {\n return map[foundKey]\n }\n return undefined\n}\n\nfunction renderOmitValidationErrors(\n omitConfig: Record<PropertyKey, unknown>,\n validationErrors: OmitValidationError[],\n): string {\n const argsTree = buildArgumentsRenderingTree(omitConfig)\n for (const error of validationErrors) {\n switch (error.kind) {\n case 'UnknownModel':\n argsTree.arguments.getField(error.modelKey)?.markAsError()\n argsTree.addErrorMessage(() => `Unknown model name: ${error.modelKey}.`)\n break\n case 'UnknownField':\n argsTree.arguments.getDeepField([error.modelKey, error.fieldName])?.markAsError()\n argsTree.addErrorMessage(() => `Model \"${error.modelKey}\" does not have a field named \"${error.fieldName}\".`)\n break\n case 'RelationInOmit':\n argsTree.arguments.getDeepField([error.modelKey, error.fieldName])?.markAsError()\n argsTree.addErrorMessage(() => `Relations are already excluded by default and can not be specified in \"omit\".`)\n break\n case 'InvalidFieldValue':\n argsTree.arguments.getDeepFieldValue([error.modelKey, error.fieldName])?.markAsError()\n argsTree.addErrorMessage(() => `Omit field option value must be a boolean.`)\n break\n }\n }\n const { message, args } = renderArgsTree(argsTree, 'colorless')\n return `Error validating \"omit\" option:\\n\\n${args}\\n\\n${message}`\n}\n", "import { setClassName } from '@prisma/internals'\n\nexport class PrismaClientConstructorValidationError extends Error {\n constructor(message: string) {\n super(message + `\\nRead more at https://pris.ly/d/client-constructor`)\n this.name = 'PrismaClientConstructorValidationError'\n }\n get [Symbol.toStringTag]() {\n return 'PrismaClientConstructorValidationError'\n }\n}\nsetClassName(PrismaClientConstructorValidationError, 'PrismaClientConstructorValidationError')\n", "import { hasBatchIndex } from '../core/errors/ErrorWithBatchIndex'\n\n/**\n * Waits for result of batch $transaction and picks the best possible error to report if any\n * of the request fails. Best error is determined as follows:\n *\n * - if engine have reported an error without batch request index, then the batch is immediately rejected\n * with this error without waiting for other promises\n * - if engine have reported and index of failed request in the batch and that index matches the position of the\n * particular request in the batch, batch is rejected with that error\n * - if batch request index is reported and it does not match current request position, wait for other requests. If no indices\n * match request positions, reject with the earliest error in the batch\n *\n * @param promises\n * @returns\n */\nexport function waitForBatch<T extends PromiseLike<unknown>[]>(\n promises: T,\n): Promise<{ [K in keyof T]: Awaited<T[K]> }> {\n if (promises.length === 0) {\n return Promise.resolve([] as { [K in keyof T]: Awaited<T[K]> })\n }\n return new Promise((resolve, reject) => {\n const successfulResults = new Array(promises.length) as { [K in keyof T]: Awaited<T[K]> }\n let bestError: unknown = null\n let done = false\n let settledPromisesCount = 0\n\n const settleOnePromise = () => {\n if (done) {\n return\n }\n settledPromisesCount++\n if (settledPromisesCount === promises.length) {\n done = true\n if (bestError) {\n reject(bestError)\n } else {\n resolve(successfulResults)\n }\n }\n }\n\n const immediatelyReject = (error: unknown) => {\n if (!done) {\n done = true\n reject(error)\n }\n }\n\n for (let i = 0; i < promises.length; i++) {\n promises[i].then(\n (result) => {\n successfulResults[i] = result\n settleOnePromise()\n },\n (error) => {\n if (!hasBatchIndex(error)) {\n immediatelyReject(error)\n return\n }\n\n if (error.batchRequestIdx === i) {\n immediatelyReject(error)\n } else {\n if (!bestError) {\n bestError = error\n }\n settleOnePromise()\n }\n },\n )\n }\n })\n}\n", "/**\n * List of properties that won't throw exception on access and return undefined instead\n */\nconst allowList = new Set([\n 'toJSON', // used by JSON.stringify\n '$$typeof', // used by old React tooling\n 'asymmetricMatch', // used by Jest\n Symbol.iterator, // used by various JS constructs/methods\n Symbol.toStringTag, // Used by .toString()\n Symbol.isConcatSpreadable, // Used by Array#concat,\n Symbol.toPrimitive, // Used when getting converted to primitive values\n])\n/**\n * Generates more strict variant of an enum which, unlike regular enum,\n * throws on non-existing property access. This can be useful in following situations:\n * - we have an API, that accepts both `undefined` and `SomeEnumType` as an input\n * - enum values are generated dynamically from DMMF.\n *\n * In that case, if using normal enums and no compile-time typechecking, using non-existing property\n * will result in `undefined` value being used, which will be accepted. Using strict enum\n * in this case will help to have a runtime exception, telling you that you are probably doing something wrong.\n *\n * Note: if you need to check for existence of a value in the enum you can still use either\n * `in` operator or `hasOwnProperty` function.\n *\n * @param definition\n * @returns\n */\nexport function makeStrictEnum<T extends Record<PropertyKey, string | number>>(definition: T): T {\n return new Proxy(definition, {\n get(target, property) {\n if (property in target) {\n return target[property]\n }\n if (allowList.has(property)) {\n return undefined\n }\n throw new TypeError(`Invalid enum value: ${String(property)}`)\n },\n })\n}\n", ""],
5
+ "mappings": "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",
6
+ "names": ["process", "cwd", "init_process", "__esmMin", "fn", "args", "performance", "init_perf_hooks", "__esmMin", "origin", "fn", "init_function", "__esmMin", "WeakRef", "init_weakref", "__esmMin", "value", "require_bufferc59db99c", "__commonJSMin", "exports", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "q", "i", "r", "H", "C", "sr", "ar", "xr", "B", "w", "pr", "N", "m", "W", "j", "t", "n", "lr", "e", "o", "u", "f", "c", "yr", "wr", "V", "M", "l", "s", "p", "F", "x", "L", "cr", "k", "U", "X", "h", "Ir", "S", "Br", "d", "P", "Z", "dr", "gr", "E", "$", "mr", "Q", "Er", "O", "v", "D", "Y", "b", "fr", "Fr", "Mr", "tr", "Lr", "Nr", "Sr", "kr", "I", "rr", "z", "Ar", "Ur", "_", "Rr", "Pr", "Tr", "Cr", "Or", "_r", "J", "Gr", "a", "g", "R", "T", "y", "ir", "hr", "nr", "er", "or", "ur", "A", "G", "K", "Dr", "$r", "br", "Yr", "import_buffer", "init_buffer", "__esmMin", "existsSync", "lstatSync", "statSync", "readdirSync", "readdir", "cb", "readlinkSync", "realpathSync", "chmodSync", "renameSync", "mkdirSync", "rmdirSync", "rmSync", "unlinkSync", "watchFile", "unwatchFile", "watch", "stat", "path", "callback", "promises", "fs", "fs_default", "init_fs", "__esmMin", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "require_package", "__commonJSMin", "exports", "module", "resolve", "args", "join", "parse", "path", "base", "basename", "dir", "dirname", "name", "ext", "parts", "normalize", "part", "normalized", "result", "sep", "delimiter", "posix", "path_default", "init_path", "__esmMin", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "require_min_indent", "__commonJSMin", "exports", "module", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "string", "match", "a", "require_indent_string", "__commonJSMin", "exports", "module", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "string", "count", "options", "regex", "require_new_github_issue_url", "__commonJSMin", "exports", "module", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "options", "repoUrl", "url", "types", "type", "value", "require_js_levenshtein", "__commonJSMin", "exports", "module", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "_min", "d0", "d1", "d2", "bx", "ay", "a", "b", "tmp", "la", "lb", "offset", "x", "y", "d3", "dd", "dy", "bx0", "bx1", "bx2", "bx3", "vector", "len", "init_TypeBuilder", "__esmMin", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_KeyType", "__esmMin", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "require_package", "__commonJSMin", "exports", "module", "EventEmitter", "init_events", "__esmMin", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "event", "listener", "args", "index_exports", "__export", "src_exports", "Debug", "decimal_default", "extensions_exports", "MetricsClient", "PrismaClientInitializationError", "PrismaClientKnownRequestError", "PrismaClientRustPanicError", "PrismaClientUnknownRequestError", "PrismaClientValidationError", "public_exports", "Sql", "createParam", "defineDmmfProperty", "deserializeJsonResponse", "deserializeRawResult", "dmmfToRuntimeDataModel", "empty", "getPrismaClient", "getRuntime", "join", "makeStrictEnum", "makeTypedQueryFactory", "objectEnumValues", "raw", "serializeJsonQuery", "skip", "sql", "warnOnce", "__toCommonJS", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "extensions_exports", "__export", "defineExtension", "getExtensionContext", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "defineExtension", "ext", "client", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "getExtensionContext", "that", "public_exports", "__export", "validator", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "validator", "_args", "args", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "colors_exports", "__export", "$", "bgBlack", "bgBlue", "bgCyan", "bgGreen", "bgMagenta", "bgRed", "bgWhite", "bgYellow", "black", "blue", "bold", "cyan", "dim", "gray", "green", "grey", "hidden", "inverse", "italic", "magenta", "red", "reset", "strikethrough", "underline", "white", "yellow", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "FORCE_COLOR", "NODE_DISABLE_COLORS", "NO_COLOR", "TERM", "isTTY", "process", "init", "x", "y", "rgx", "open", "close", "txt", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "MAX_ARGS_HISTORY", "COLORS", "argsHistory", "lastTimestamp", "lastColor", "processEnv", "process", "topProps", "namespace", "prev", "listenedNamespaces", "s", "isListened", "listenedNamespace", "isExcluded", "args", "format", "rest", "debugCreate", "instanceProps", "debugCall", "enabled", "color", "log", "stringArgs", "arg", "safeStringify", "ms", "colors_exports", "bold", "_", "prop", "value", "Debug", "indent", "cache", "key", "getLogs", "numChars", "logs", "clearLogs", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "binaryTargets", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "packageJson", "version", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "getClientEngineType", "generatorConfig", "engineTypeFromEnvVar", "getEngineTypeFromEnvVar", "getDefaultEngineType", "engineType", "process", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "isDriverAdapterError", "error", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "ok", "value", "fn", "err", "error", "debug", "Debug", "ErrorRegistryInternal", "id", "error", "i", "bindAdapter", "adapter", "errorRegistry", "ErrorRegistryInternal", "boundAdapter", "wrapAsync", "args", "ctx", "bindTransaction", "wrapSync", "transaction", "registry", "fn", "ok", "error", "debug", "isDriverAdapterError", "err", "id", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "import_min_indent", "stripIndent", "string", "indent", "minIndent", "regex", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "PRISMA_POSTGRES_PROVIDER", "PRISMA_POSTGRES_PROTOCOL", "isPrismaPostgres", "connectionString", "logger_exports", "__export", "error", "info", "log", "query", "should", "tags", "warn", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "tags", "red", "yellow", "cyan", "blue", "should", "process", "log", "data", "warn", "message", "optionalParams", "info", "error", "query", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "assertAlways", "condition", "message", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "assertNever", "arg", "errorMessage", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "ansiRegex", "onlyFirst", "pattern", "regex", "ansiRegex", "stripAnsi", "string", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_path", "pathToPosix", "filePath", "path_default", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "hasOwnProperty", "object", "key", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "mapObjectValues", "object", "mapper", "result", "key", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "maxWithComparator", "items", "comparator", "result", "i", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "setClassName", "classObject", "name", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "alreadyWarned", "warnOnce", "key", "message", "args", "warn", "PrismaClientInitializationError", "_PrismaClientInitializationError", "message", "clientVersion", "errorCode", "setClassName", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "PrismaClientKnownRequestError", "message", "code", "clientVersion", "meta", "batchRequestIdx", "setClassName", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "PrismaClientRustPanicError", "message", "clientVersion", "setClassName", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "PrismaClientUnknownRequestError", "message", "clientVersion", "batchRequestIdx", "setClassName", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "PrismaClientValidationError", "message", "clientVersion", "setClassName", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "Cache", "key", "value", "create", "cached", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "uncapitalize", "self", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "keyBy", "collection", "prop", "acc", "obj", "key", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "lazyProperty", "compute", "resultContainer", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "dmmfToRuntimeDataModel", "dmmfDataModel", "buildMapForRuntime", "buildMapForRuntime", "list", "result", "name", "rest", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "isDate", "value", "isValidDate", "date", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "EXP_LIMIT", "MAX_DIGITS", "NUMERALS", "LN10", "PI", "DEFAULTS", "inexact", "quadrant", "external", "decimalError", "invalidArgument", "precisionLimitExceeded", "cryptoUnavailable", "tag", "mathfloor", "mathpow", "isBinary", "isHex", "isOctal", "isDecimal", "BASE", "LOG_BASE", "MAX_SAFE_INTEGER", "LN10_PRECISION", "PI_PRECISION", "P", "x", "finalise", "min", "max", "k", "Ctor", "y", "i", "j", "xdL", "ydL", "xd", "yd", "xs", "ys", "pr", "rm", "cosine", "toLessThanHalfPi", "m", "n", "r", "rep", "s", "sd", "t", "t3", "t3plusx", "digitsToString", "divide", "w", "d", "len", "one", "tinyPow", "taylorSeries", "cosh2_x", "d8", "sinh2_x", "d5", "d16", "d20", "getPi", "wpr", "xsd", "halfPi", "px", "x2", "base", "isBase10", "denominator", "inf", "num", "arg", "guard", "naturalLogarithm", "getLn10", "checkRoundingDigits", "e", "xe", "xLTy", "getBase10Exponent", "q", "naturalExponential", "carry", "z", "getPrecision", "sine", "rL", "toStringBinary", "dp", "checkInt32", "str", "finiteToString", "maxD", "d0", "d1", "d2", "n0", "n1", "yn", "intPow", "ws", "indexOfLastWord", "getZeroString", "repeating", "di", "rd", "convertBase", "baseIn", "baseOut", "arr", "arrL", "strL", "cos2x", "multiplyInteger", "temp", "compare", "a", "b", "aL", "bL", "subtract", "cmp", "logBase", "more", "prod", "prodL", "qd", "rem", "remL", "rem0", "xi", "xL", "yd0", "yL", "yz", "sign", "isTruncated", "digits", "roundUp", "xdi", "out", "isExp", "nonFiniteToString", "zs", "truncate", "isOdd", "maxOrMin", "args", "pow", "sum", "c", "c0", "numerator", "x1", "parseDecimal", "parseOther", "divisor", "isFloat", "p", "Decimal", "sin2_x", "isHyperbolic", "u", "isNeg", "pi", "abs", "acos", "acosh", "add", "asin", "asinh", "atan", "atanh", "atan2", "cbrt", "ceil", "clamp", "config", "obj", "v", "useDefaults", "ps", "cos", "cosh", "clone", "isDecimalInstance", "div", "exp", "floor", "hypot", "ln", "log", "log10", "log2", "mod", "mul", "random", "round", "sin", "sinh", "sqrt", "sub", "tan", "tanh", "trunc", "decimal_default", "isDecimalJsLike", "value", "Decimal", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "src_exports", "__export", "ModelAction", "datamodelEnumToSchemaEnum", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "datamodelEnumToSchemaEnum", "datamodelEnum", "v", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "ModelAction", "import_indent_string", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_fs", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "theme", "cyan", "s", "bold", "blue", "green", "yellow", "gray", "identity", "str", "_self", "uniqueId", "Prism", "tokens", "Token", "anyTokens", "o", "obj", "deepClone", "visited", "clone", "id", "type", "key", "v", "i", "redef", "lang", "inside", "before", "insert", "root", "grammar", "ret", "token", "newToken", "old", "value", "DFS", "callback", "objId", "property", "propertyType", "text", "language", "env", "strarr", "index", "startPos", "oneshot", "target", "patterns", "j", "pattern", "lookbehind", "greedy", "lookbehindLength", "alias", "flags", "pos", "match", "from", "to", "k", "p", "len", "delNum", "after", "args", "wrapped", "rest", "name", "hooks", "callbacks", "content", "matchedStr", "element", "getColorForSyntaxKind", "syntaxKind", "theme", "highlightTS", "str", "highlight", "Prism", "grammar", "t", "Token", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "dedent", "str", "stripIndent", "SourceFileSlice", "_SourceFileSlice", "filePath", "content", "fs_default", "lines", "firstLine", "lineNumber", "mapFn", "idx", "newLines", "line", "i", "atLine", "str", "fromLine", "toLine", "slicedLines", "dedent", "highlighted", "highlightTS", "colorsEnabled", "red", "gray", "dim", "bold", "underline", "source", "colorsDisabled", "str", "getRawTemplateParameters", "message", "originalMethod", "isPanic", "callArguments", "getTemplateParameters", "callsite", "colors", "templateParameters", "process", "callLocation", "contextFirstLine", "SourceFileSlice", "invocationLine", "invocationLineIndent", "getIndent", "invocationCallCode", "findPrismaActionCall", "line", "numberColumnWidth", "lineNumber", "indentValue", "indentString", "allActions", "ModelAction", "match", "openingBraceIndex", "statementStart", "spaceCount", "i", "stringifyErrorMessage", "functionName", "location", "contextLines", "lines", "introSuffix", "stringifyLocationInFile", "contextLineParts", "parts", "createErrorMessageWithContext", "args", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "import_js_levenshtein", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "applyUnionError", "error", "args", "globalOmit", "allErrors", "flattenUnionError", "merged", "mergeInvalidArgumentTypeErrors", "bestError", "getBestScoringError", "applyValidationError", "errorList", "invalidArgsError", "result", "key", "prevError", "uniqueConcat", "head", "tail", "errors", "maxWithComparator", "errorA", "errorB", "aPathLength", "getCombinedPathLength", "bPathLength", "getErrorTypeScore", "score", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "ObjectFieldSuggestion", "name", "value", "writer", "green", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_KeyType", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "Writer", "startingIndent", "context", "value", "separator", "values", "writeItem", "item", "w", "last", "i", "line", "afterNextNewLineCallback", "callback", "symbol", "init_TypeBuilder", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "ArrayField", "value", "writer", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "noop", "str", "inactiveColors", "activeColors", "bold", "red", "green", "dim", "fieldsSeparator", "writer", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "FormattedString", "contents", "str", "color", "writer", "paddingSize", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "Value", "ArrayValue", "Value", "item", "ArrayField", "index", "writer", "output", "FormattedString", "colors", "fieldsSeparator", "ObjectValue", "_ObjectValue", "Value", "field", "suggestion", "key", "path", "head", "tail", "firstField", "segment", "nextField", "ArrayValue", "selection", "next", "thisParent", "parent", "nextParent", "select", "include", "fields", "f", "writer", "output", "FormattedString", "fieldsSeparator", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "ScalarValue", "Value", "text", "writer", "string", "FormattedString", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "SuggestionObjectValue", "name", "value", "writer", "green", "dim", "fieldsSeparator", "applyValidationError", "error", "args", "globalOmit", "applyMutuallyExclusiveFieldsError", "applyIncludeOnScalarError", "applyEmptySelectionError", "applyUnknownSelectionFieldError", "applyInvalidSelectionValueError", "applyUnknownArgumentError", "applyUnknownInputFieldError", "applyRequiredArgumentMissingError", "applyInvalidArgumentTypeError", "applyInvalidArgumentValueError", "applyValueTooLargeError", "applySomeFieldsMissingError", "applyTooManyFieldsGivenError", "applyUnionError", "argsTree", "object", "colors", "selectionPath", "field", "splitPath", "outputType", "ObjectFieldSuggestion", "msg", "availableOptionsMessage", "subSelection", "omit", "applyEmptySelectionErrorOmit", "applyEmptySelectionErrorSelect", "uncapitalize", "applyEmptySelectionErrorGlobalOmit", "omitValue", "selection", "isEmpty", "addSelectionSuggestions", "suggestedOmitConfig", "SuggestionObjectValue", "omitSuggestion", "parentPath", "fieldName", "fieldValue", "ObjectValue", "locateResult", "locateSelectionField", "parent", "addInclusionSuggestions", "addOmissionSuggestions", "parts", "argName", "addArgumentsSuggestions", "unknownArgumentMessage", "arg", "argParentPath", "argParent", "addInputSuggestions", "f", "options", "suggestion", "getSuggestion", "existingField", "ScalarValue", "argumentName", "objectSuggestion", "typeName", "getInputTypeName", "dependentArgumentName", "description", "expected", "joinWithPreposition", "type", "printedValue", "value", "argument", "providedArguments", "argumentsParent", "select", "include", "inputType", "path", "green", "enabled", "preposition", "items", "itemsCopy", "lastItem", "MAX_EDIT_DISTANCE", "str", "minDistance", "result", "option", "editDistance", "levenshtein", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "FieldRefImpl", "modelName", "name", "fieldType", "isList", "isEnum", "listPrefix", "enumPrefix", "isFieldRef", "value", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "secret", "representations", "ObjectEnumValue", "arg", "NullTypesEnumValue", "DbNull", "#_brand_DbNull", "setClassName", "JsonNull", "#_brand_JsonNull", "AnyNull", "#_brand_AnyNull", "objectEnumValues", "classObject", "name", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "separator", "ObjectField", "name", "value", "writer", "FormattedString", "ArgumentsRenderingTree", "args", "writer", "renderer", "colors", "messageRenderer", "buildArgumentsRenderingTree", "buildInputObject", "inputObject", "object", "ObjectValue", "key", "value", "field", "ObjectField", "buildInputValue", "ScalarValue", "isDecimalJsLike", "dateStr", "isValidDate", "ObjectEnumValue", "isFieldRef", "uncapitalize", "buildInputArray", "array", "result", "ArrayValue", "item", "renderArgsTree", "argsTree", "errorFormat", "activeColors", "inactiveColors", "message", "Writer", "throwValidationException", "args", "errors", "errorFormat", "callsite", "originalMethod", "clientVersion", "globalOmit", "argsTree", "buildArgumentsRenderingTree", "error", "applyValidationError", "message", "renderedArgs", "renderArgsTree", "messageWithContext", "createErrorMessageWithContext", "PrismaClientValidationError", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "dmmfToJSModelName", "name", "str", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "getComputedFields", "previousComputedFields", "extension", "dmmfModelName", "jsName", "dmmfToJSModelName", "resolveDependencies", "getComputedFieldsFromModel", "computedFields", "cache", "Cache", "resolveNeeds", "fieldName", "visitedFields", "fieldDep", "mapObjectValues", "field", "name", "modelResult", "needs", "compute", "key", "composeCompute", "nextCompute", "previousCompute", "model", "computeEngineSideSelection", "selection", "result", "dependency", "computeEngineSideOmissions", "omission", "MergedExtensionsListNode", "extension", "previous", "Cache", "lazyProperty", "newCb", "dmmfModelName", "getComputedFields", "jsModelName", "dmmfToJSModelName", "operation", "prevCbs", "newCbs", "query", "MergedExtensionsList", "_MergedExtensionsList", "head", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "ParamImpl", "name", "isParam", "value", "createParam", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "secret", "Skip", "param", "value", "skip", "isSkip", "jsActionToProtocolAction", "STRICT_UNDEFINED_ERROR_MESSAGE", "serializeJsonQuery", "modelName", "action", "args", "runtimeDataModel", "extensions", "MergedExtensionsList", "callsite", "clientMethod", "errorFormat", "clientVersion", "previewFeatures", "globalOmit", "context", "SerializeContext", "serializeFieldSelection", "select", "include", "omit", "serializeArgumentsObject", "serializeSelectionSet", "createExplicitSelection", "createImplicitSelection", "selectionSet", "addIncludedRelations", "omitFields", "key", "value", "isSkip", "nestedContext", "validateSelectionForUndefined", "field", "localOmit", "computedFields", "combinedOmits", "omitWithComputedFields", "computeEngineSideOmissions", "selectWithComputedFields", "computeEngineSideSelection", "serializeArgumentsValue", "jsValue", "isDate", "isValidDate", "isParam", "isFieldRef", "serializeArgumentsArray", "buffer", "byteOffset", "byteLength", "isRawParameters", "isDecimalJsLike", "ObjectEnumValue", "objectEnumValues", "isJSONConvertible", "object", "result", "array", "i", "itemContext", "valueName", "_SerializeContext", "params", "error", "throwValidationException", "previewFeature", "name", "fieldName", "uncapitalize", "assertNever", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "checkPreviewFeatureFlag", "client", "PrismaClientValidationError", "MetricsClient", "options", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "defineDmmfProperty", "target", "runtimeDataModel", "dmmfLazy", "lazyProperty", "runtimeDataModelToBaseDmmf", "buildDMMFList", "map", "name", "props", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "internals", "TypedSqlMarker", "TypedSql", "sql", "values", "makeTypedQueryFactory", "isTypedSql", "value", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "import_package", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_events", "init_fs", "init_path", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "Sql", "_Sql", "rawStrings", "rawValues", "valuesLength", "len", "value", "pos", "child", "rawString", "childIndex", "i", "join", "values", "separator", "prefix", "suffix", "raw", "value", "Sql", "empty", "sql", "strings", "values", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "addObjectProperties", "object", "key", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "addProperty", "key", "factory", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "cacheProperties", "baseLayer", "cache", "Cache", "key", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "defaultPropertyDescriptor", "defaultProxyHandlers", "ownKeys", "_ownKeys", "target", "prop", "value", "customInspect", "createCompositeProxy", "target", "layers", "keysToLayerMap", "mapKeysToLayers", "overwrittenKeys", "proxy", "prop", "layer", "targetKeys", "getExistingKeys", "layerKeys", "value", "original", "defaultPropertyDescriptor", "property", "attributes", "toLog", "keys", "key", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "removeProperties", "keys", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "getBatchRequestPayload", "batch", "transaction", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "prettyPrintArguments", "args", "tree", "buildArgumentsRenderingTree", "Writer", "inactiveColors", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "TOO_MANY_CONNECTIONS_ERROR", "prismaGraphQLToJSError", "error", "user_facing_error", "clientVersion", "activeProvider", "PrismaClientKnownRequestError", "getKnownErrorMessage", "PrismaClientUnknownRequestError", "userFacingError", "message", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "UNKNOWN_FUNCTION", "parse", "stackString", "lines", "stack", "line", "parseResult", "parseChrome", "parseWinjs", "parseGecko", "parseNode", "parseJSC", "chromeRe", "chromeEvalRe", "parts", "isNative", "isEval", "submatch", "winjsRe", "geckoRe", "geckoEvalRe", "javaScriptCoreRe", "nodeRe", "DisabledCallSite", "EnabledCallSite", "stack", "frame", "parse", "t", "posixFile", "pathToPosix", "getCallSite", "errorFormat", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "aggregateMap", "desugarUserArgs", "args", "_args", "desugarCountInUserArgs", "aggregateArgs", "key", "value", "aggregateMap", "createUnpacker", "data", "aggregate", "modelAction", "aggregateUnpacker", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "desugarUserArgs", "args", "select", "_args", "createUnpacker", "data", "count", "modelAction", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "desugarUserArgs", "args", "_args", "key", "createUnpacker", "data", "row", "groupBy", "modelAction", "applyAggregates", "client", "action", "modelAction", "userArgs", "aggregate", "count", "groupBy", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "applyFieldsProxy", "modelName", "model", "scalarFieldsList", "field", "scalarFields", "keyBy", "target", "prop", "dmmfField", "FieldRefImpl", "defaultProxyHandlers", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "keys", "ks", "deepGet", "o", "kp", "k", "deepSet", "v", "i", "getNextDataPath", "fluentPropName", "prevDataPath", "getNextUserArgs", "callArgs", "prevArgs", "nextDataPath", "deepSet", "applyFluent", "client", "dmmfModelName", "modelAction", "prevUserArgs", "dmmfModelFieldMap", "acc", "field", "userArgs", "callsite", "getCallSite", "nextUserArgs", "prismaPromise", "ownKeys", "getOwnKeys", "target", "prop", "modelArgs", "dataArgs", "defaultProxyHandlers", "fluentProps", "aggregateProps", "applyModel", "client", "dmmfModelName", "modelExtensions", "layers", "modelActionsLayer", "fieldsPropertyLayer", "addObjectProperties", "addProperty", "createCompositeProxy", "jsModelName", "dmmfToJSModelName", "ownKeys", "ModelAction", "key", "dmmfActionName", "action", "paramOverrides", "userArgs", "callSite", "getCallSite", "transaction", "params", "applyFluent", "isValidAggregateName", "applyAggregates", "cacheProperties", "model", "applyFieldsProxy", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "jsToDMMFModelName", "name", "str", "rawClient", "applyModelsAndClientExtensions", "client", "layers", "rootLayer", "modelsLayer", "addProperty", "clientExtensions", "addObjectProperties", "createCompositeProxy", "prototype", "allKeys", "prop", "dmmfModelKeys", "jsModelKeys", "dmmfToJSModelName", "cacheProperties", "dmmfModelName", "jsToDMMFModelName", "applyModel", "key", "unApplyModelsAndClientExtensions", "$extends", "extension", "Engine", "newClient", "applyModelsAndClientExtensions", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "applyResultExtensions", "result", "modelName", "select", "omit", "extensions", "computedFields", "computedPropertiesLayers", "maskingLayers", "field", "toMask", "prop", "removeProperties", "areNeedsMet", "computedPropertyLayer", "createCompositeProxy", "neededProperties", "property", "hasOwnProperty", "cacheProperties", "addProperty", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "visitQueryResult", "visitor", "result", "args", "runtimeDataModel", "modelName", "i", "visitResult", "visitNested", "includeOrSelect", "parentModelName", "fieldName", "subConfig", "isSkip", "field", "applyAllResultExtensions", "result", "modelName", "args", "extensions", "runtimeDataModel", "globalOmit", "visitQueryResult", "value", "dmmfModelName", "jsName", "dmmfToJSModelName", "applyResultExtensions", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "denylist", "itxClientDenyList", "deepCloneArgs", "args", "Sql", "cloneSql", "isTypedSql", "cloneTypedSql", "clone", "i", "deepCloneValue", "k", "rawParam", "TypedSql", "x", "ObjectEnumValue", "isFieldRef", "isDecimalJsLike", "decimal_default", "isDate", "copy", "assertNever", "iterateAndCallQueryCallbacks", "client", "params", "queryCbs", "i", "transaction", "prevCustomFetch", "deepCloneArgs", "args", "__internalParams", "currCustomFetch", "composeCustomDataProxyFetch", "applyQueryExtensions", "jsModelName", "action", "clientMethod", "operation", "cbs", "createApplyBatchExtensionsFunction", "executeBatch", "requests", "callbacks", "iterateAndCallBatchCallbacks", "prevFetch", "request", "_args", "nextFetch", "noopFetch", "f", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "debug", "Debug", "cachingPlatforms", "checkPlatformCaching", "postinstall", "ciName", "clientVersion", "generator", "message", "PrismaClientInitializationError", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "getDatasourceOverrides", "options", "datasourceNames", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "maskQuery", "query", "substr", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "normalizeLogs", "logs", "l", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "import_new_github_issue_url", "getGitHubIssueUrl", "title", "user", "repo", "template", "body", "newGitHubIssueUrl", "getErrorMessageWithLink", "version", "binaryTarget", "title", "description", "engineVersion", "database", "query", "gotLogs", "getLogs", "logs", "normalizeLogs", "stripAnsi", "moreInfo", "body", "process", "maskQuery", "url", "getGitHubIssueUrl", "underline", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "assertNever", "_", "message", "isTaggedValue", "value", "mapObjectValues", "object", "mapper", "result", "key", "deserializeJsonResponse", "isTaggedValue", "deserializeTaggedValue", "$type", "value", "buffer", "byteOffset", "byteLength", "Decimal", "assertNever", "version", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "isNode", "isBun", "isDeno", "isNetlify", "isEdgeLight", "isWorkerd", "detectRuntime", "check", "runtimesPrettyNames", "getRuntime", "runtimeId", "resolveDatasourceUrl", "inlineDatasources", "overrideDatasources", "env", "clientVersion", "resolvedUrl", "datasourceName", "datasourceUrl", "overrideUrl", "PrismaClientInitializationError", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "getInteractiveTransactionId", "transaction", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "ReactNativeQueryEngine", "config", "logger", "_adapter", "process", "headers", "requestId", "requestStr", "headersStr", "transactionId", "_traceparent", "options", "traceHeaders", "id", "_options", "reactNativeLibraryLoader", "PrismaClientInitializationError", "DRIVER_ADAPTER_EXTERNAL_ERROR", "debug", "Debug", "isQueryEvent", "event", "isPanicEvent", "knownBinaryTargets", "binaryTargets", "MAX_REQUEST_ID", "NEXT_REQUEST_ID", "nextRequestId", "requestId", "LibraryEngine", "config", "libraryLoader", "reactNativeLibraryLoader", "dsOverrideName", "dsOverrideUrl", "engine", "fn", "args", "traceJson", "trace", "action", "headers", "arg", "adapter", "headerStr", "result", "jsonOptions", "response", "isUserFacingError", "externalError", "PrismaClientKnownRequestError", "PrismaClientUnknownRequestError", "weakThis", "WeakRef", "bindAdapter", "process", "log", "_e", "e", "error", "PrismaClientInitializationError", "PrismaClientRustPanicError", "getErrorMessageWithLink", "str", "startFn", "err", "stopFn", "r", "message", "query", "traceparent", "interactiveTransaction", "queryStr", "data", "queries", "transaction", "request", "getBatchRequestPayload", "getInteractiveTransactionId", "batchResult", "errors", "registry", "prismaGraphQLToJSError", "id", "assertAlways", "errorRecord", "options", "responseString", "title", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "validateEngineInstanceConfig", "url", "adapter", "copyEngine", "targetBuildType", "warnings", "errors", "pushWarning", "input", "pushError", "value", "isUsingPrismaAccelerate", "isUsingPrismaPostgres", "isPrismaPostgres", "isUsingDriverAdapters", "isAccelerateUrlScheme", "isAccelerateConfigured", "isUsing", "isNonEmptyArray", "arr", "getEngineInstance", "copyEngine", "engineConfig", "url", "resolveDatasourceUrl", "process", "ok", "isUsing", "diagnostics", "validateEngineInstanceConfig", "warning", "warnOnce", "error", "PrismaClientValidationError", "engineType", "getClientEngineType", "libraryEngineConfigured", "binaryEngineConfigured", "clientEngineConfigured", "clientEngineUsesRemoteExecutor", "LibraryEngine", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "getPreviewFeatures", "generator", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "rawCommandArgsMapper", "command", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "mssqlPreparedStatement", "sql", "acc", "str", "idx", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "serializeRawParameters", "parameters", "serializeRawParametersInternal", "objectSerialization", "parameter", "encodeParameter", "item", "isDate", "decimal_default", "isArrayBufferLike", "buffer", "byteOffset", "byteLength", "preprocessObject", "value", "obj", "preprocessValueInObject", "result", "key", "ALTER_RE", "debug", "Debug", "checkAlter", "activeProvider", "query", "values", "invalidCall", "rawQueryArgsMapper", "clientMethod", "args", "queryString", "parameters", "isTypedSql", "serializeRawParameters", "mssqlPreparedStatement", "templateStringMiddlewareArgsMapper", "sql", "requestArgs", "strings", "Sql", "sqlMiddlewareArgsMapper", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "createPrismaPromiseFactory", "transaction", "callback", "op", "promise", "_callback", "callbackTransaction", "valueToPromise", "error", "onFulfilled", "onRejected", "onFinally", "batchTransaction", "thing", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "majorVersion", "version", "disabledTracingHelper", "options", "callback", "DynamicTracingHelper", "context", "spans", "versionedPrismaInstrumentationGlobal", "fallbackPrismaInstrumentationGlobal", "getTracingHelper", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "getLockCountPromise", "knock", "cb", "resolve", "lock", "res", "onFulfilled", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "getLogLevel", "log", "acc", "curr", "currentLevel", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "hasBatchIndex", "value", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "getBatchId", "query", "parts", "buildKeysString", "obj", "key", "value", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "writeMap", "isWrite", "action", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "DataLoader", "options", "request", "hash", "process", "resolve", "reject", "key", "batch", "result", "e", "a", "b", "j", "results", "value", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "deserializeValue", "type", "value", "buffer", "byteOffset", "byteLength", "decimal_default", "v", "deserializeRawResult", "response", "deserializedResponse", "prebuiltEmptyObject", "createPrebuiltEmptyResultObject", "i", "row", "mappedRow", "j", "debug", "Debug", "RequestHandler", "client", "logEmitter", "DataLoader", "createApplyBatchExtensionsFunction", "requests", "customDataProxyFetch", "transaction", "otelParentCtx", "queries", "r", "traceparent", "containsWrite", "isWrite", "getTransactionOptions", "result", "i", "error", "request", "interactiveTransaction", "getItxTransactionOptions", "response", "getBatchId", "requestA", "requestB", "params", "clientMethod", "callsite", "args", "modelName", "dataPath", "unpacker", "data", "process", "err", "globalOmit", "isMismatchingBatchIndex", "PrismaClientKnownRequestError", "isValidationError", "validationError", "convertValidationError", "throwValidationException", "message", "createErrorMessageWithContext", "meta", "PrismaClientRustPanicError", "PrismaClientUnknownRequestError", "PrismaClientInitializationError", "stripAnsi", "operation", "pathForGet", "key", "extractedResponse", "deepGet", "deserializedResponse", "deserializeRawResult", "deserializeJsonResponse", "assertNever", "hasBatchIndex", "selectionPath", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "clientVersion", "version", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "import_js_levenshtein", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "PrismaClientConstructorValidationError", "message", "setClassName", "knownProperties", "errorFormats", "logLevels", "validators", "options", "datasourceNames", "PrismaClientConstructorValidationError", "key", "value", "didYouMean", "getDidYouMean", "key1", "value1", "adapter", "config", "getClientEngineType", "validateLogLevel", "level", "option", "logValidators", "emits", "maxWait", "timeout", "validationErrors", "modelKey", "modelConfig", "modelOrType", "getModelOrTypeByKey", "fieldName", "field", "renderOmitValidationErrors", "knownKeys", "validatePrismaClientOptions", "str", "alternative", "getAlternative", "optionsWithDistances", "leven", "a", "b", "bestAlternative", "runtimeDataModel", "findByKey", "map", "foundKey", "mapKey", "uncapitalize", "omitConfig", "argsTree", "buildArgumentsRenderingTree", "error", "message", "args", "renderArgsTree", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "waitForBatch", "promises", "resolve", "reject", "successfulResults", "bestError", "done", "settledPromisesCount", "settleOnePromise", "immediatelyReject", "error", "i", "result", "hasBatchIndex", "debug", "Debug", "noopMiddlewareArgsMapper", "param", "TX_ID", "BatchTxIdCounter", "getPrismaClient", "config", "PrismaClient", "createPrismaPromiseFactory", "optionsArg", "checkPlatformCaching", "validatePrismaClientOptions", "logEmitter", "EventEmitter", "MergedExtensionsList", "getPreviewFeatures", "clientVersion", "getTracingHelper", "envPaths", "path_default", "adapter", "expectedDriverAdapterProvider", "PrismaClientInitializationError", "loadedEnv", "options", "internal", "useDebug", "cwd", "fs_default", "engineConfig", "process", "getLogLevel", "o", "getDatasourceOverrides", "resolveDatasourceUrl", "getBatchRequestPayload", "prismaGraphQLToJSError", "PrismaClientUnknownRequestError", "PrismaClientKnownRequestError", "enginesVersion", "getEngineInstance", "RequestHandler", "log", "level", "event", "logger_exports", "e", "applyModelsAndClientExtensions", "eventType", "callback", "clearLogs", "transaction", "clientMethod", "args", "middlewareArgsMapper", "activeProvider", "rawQueryArgsMapper", "getCallSite", "query", "values", "sql", "argsMapper", "toSql", "checkAlter", "PrismaClientValidationError", "command", "rawCommandArgsMapper", "typedSql", "promises", "id", "lock", "getLockCountPromise", "requests", "request", "index", "isolationLevel", "waitForBatch", "headers", "optionsWithDefaults", "info", "result", "createCompositeProxy", "unApplyModelsAndClientExtensions", "addProperty", "removeProperties", "itxClientDenyList", "input", "spanOptions", "internalParams", "params", "consumer", "changedMiddlewareParams", "runInTransaction", "changedRequestParams", "requestParams", "applyQueryExtensions", "applyAllResultExtensions", "dataPath", "callsite", "action", "model", "unpacker", "otelParentCtx", "customDataProxyFetch", "message", "serializeJsonQuery", "prettyPrintArguments", "MetricsClient", "feature", "$extends", "isTemplateStringArray", "Sql", "templateStringMiddlewareArgsMapper", "sqlMiddlewareArgsMapper", "value", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref", "allowList", "makeStrictEnum", "definition", "target", "property", "init_buffer", "init_process", "init_perf_hooks", "init_function", "init_weakref"]
7
7
  }