@prisma-next/mongo-runtime 0.5.0-dev.6 → 0.5.0-dev.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -39,7 +39,7 @@ var MongoRuntimeImpl = class {
39
39
  let failed = false;
40
40
  try {
41
41
  for (const mw of middleware) if (mw.beforeExecute) await mw.beforeExecute(plan, ctx);
42
- const wireCommand = adapter.lower(plan);
42
+ const wireCommand = await adapter.lower(plan);
43
43
  for await (const row of driver.execute(wireCommand)) {
44
44
  for (const mw of middleware) if (mw.onRow) await mw.onRow(row, plan, ctx);
45
45
  rowCount++;
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["#adapter","#driver","#middleware","#middlewareContext"],"sources":["../src/mongo-runtime.ts"],"sourcesContent":["import type {\n RuntimeMiddleware,\n RuntimeMiddlewareContext,\n} from '@prisma-next/framework-components/runtime';\nimport {\n AsyncIterableResult,\n checkMiddlewareCompatibility,\n} from '@prisma-next/framework-components/runtime';\nimport type { MongoAdapter, MongoDriver } from '@prisma-next/mongo-lowering';\nimport type { MongoQueryPlan } from '@prisma-next/mongo-query-ast/execution';\n\nfunction noop() {}\nfunction now() {\n return Date.now();\n}\n\nexport interface MongoRuntimeOptions {\n readonly adapter: MongoAdapter;\n readonly driver: MongoDriver;\n readonly contract: unknown;\n readonly targetId: string;\n readonly middleware?: readonly RuntimeMiddleware[];\n readonly mode?: 'strict' | 'permissive';\n}\n\nexport interface MongoRuntime {\n execute<Row>(plan: MongoQueryPlan<Row>): AsyncIterableResult<Row>;\n close(): Promise<void>;\n}\n\nclass MongoRuntimeImpl implements MongoRuntime {\n readonly #adapter: MongoAdapter;\n readonly #driver: MongoDriver;\n readonly #middleware: readonly RuntimeMiddleware[];\n readonly #middlewareContext: RuntimeMiddlewareContext;\n\n constructor(options: MongoRuntimeOptions) {\n this.#adapter = options.adapter;\n this.#driver = options.driver;\n\n const middleware = options.middleware ? [...options.middleware] : [];\n for (const mw of middleware) {\n checkMiddlewareCompatibility(mw, 'mongo', options.targetId);\n }\n this.#middleware = middleware;\n\n this.#middlewareContext = {\n contract: options.contract,\n mode: options.mode ?? 'strict',\n now,\n log: { info: noop, warn: noop, error: noop },\n };\n }\n\n execute<Row>(plan: MongoQueryPlan<Row>): AsyncIterableResult<Row> {\n const adapter = this.#adapter;\n const driver = this.#driver;\n const middleware = this.#middleware;\n const ctx = this.#middlewareContext;\n\n const iterator = async function* (): AsyncGenerator<Row, void, unknown> {\n const startedAt = ctx.now();\n let rowCount = 0;\n let completed = false;\n let failed = false;\n\n try {\n for (const mw of middleware) {\n if (mw.beforeExecute) {\n await mw.beforeExecute(plan, ctx);\n }\n }\n\n const wireCommand = adapter.lower(plan);\n\n for await (const row of driver.execute<Row>(wireCommand)) {\n for (const mw of middleware) {\n if (mw.onRow) {\n await mw.onRow(row as Record<string, unknown>, plan, ctx);\n }\n }\n rowCount++;\n yield row;\n }\n\n completed = true;\n } catch (error) {\n failed = true;\n throw error;\n } finally {\n const latencyMs = ctx.now() - startedAt;\n for (const mw of middleware) {\n if (!mw.afterExecute) continue;\n\n if (failed) {\n try {\n await mw.afterExecute(plan, { rowCount, latencyMs, completed }, ctx);\n } catch {\n // Ignore errors from afterExecute during error handling\n }\n continue;\n }\n\n await mw.afterExecute(plan, { rowCount, latencyMs, completed }, ctx);\n }\n }\n };\n\n return new AsyncIterableResult(iterator());\n }\n\n async close(): Promise<void> {\n await this.#driver.close();\n }\n}\n\nexport function createMongoRuntime(options: MongoRuntimeOptions): MongoRuntime {\n return new MongoRuntimeImpl(options);\n}\n"],"mappings":";;;AAWA,SAAS,OAAO;AAChB,SAAS,MAAM;AACb,QAAO,KAAK,KAAK;;AAiBnB,IAAM,mBAAN,MAA+C;CAC7C,CAASA;CACT,CAASC;CACT,CAASC;CACT,CAASC;CAET,YAAY,SAA8B;AACxC,QAAKH,UAAW,QAAQ;AACxB,QAAKC,SAAU,QAAQ;EAEvB,MAAM,aAAa,QAAQ,aAAa,CAAC,GAAG,QAAQ,WAAW,GAAG,EAAE;AACpE,OAAK,MAAM,MAAM,WACf,8BAA6B,IAAI,SAAS,QAAQ,SAAS;AAE7D,QAAKC,aAAc;AAEnB,QAAKC,oBAAqB;GACxB,UAAU,QAAQ;GAClB,MAAM,QAAQ,QAAQ;GACtB;GACA,KAAK;IAAE,MAAM;IAAM,MAAM;IAAM,OAAO;IAAM;GAC7C;;CAGH,QAAa,MAAqD;EAChE,MAAM,UAAU,MAAKH;EACrB,MAAM,SAAS,MAAKC;EACpB,MAAM,aAAa,MAAKC;EACxB,MAAM,MAAM,MAAKC;EAEjB,MAAM,WAAW,mBAAuD;GACtE,MAAM,YAAY,IAAI,KAAK;GAC3B,IAAI,WAAW;GACf,IAAI,YAAY;GAChB,IAAI,SAAS;AAEb,OAAI;AACF,SAAK,MAAM,MAAM,WACf,KAAI,GAAG,cACL,OAAM,GAAG,cAAc,MAAM,IAAI;IAIrC,MAAM,cAAc,QAAQ,MAAM,KAAK;AAEvC,eAAW,MAAM,OAAO,OAAO,QAAa,YAAY,EAAE;AACxD,UAAK,MAAM,MAAM,WACf,KAAI,GAAG,MACL,OAAM,GAAG,MAAM,KAAgC,MAAM,IAAI;AAG7D;AACA,WAAM;;AAGR,gBAAY;YACL,OAAO;AACd,aAAS;AACT,UAAM;aACE;IACR,MAAM,YAAY,IAAI,KAAK,GAAG;AAC9B,SAAK,MAAM,MAAM,YAAY;AAC3B,SAAI,CAAC,GAAG,aAAc;AAEtB,SAAI,QAAQ;AACV,UAAI;AACF,aAAM,GAAG,aAAa,MAAM;QAAE;QAAU;QAAW;QAAW,EAAE,IAAI;cAC9D;AAGR;;AAGF,WAAM,GAAG,aAAa,MAAM;MAAE;MAAU;MAAW;MAAW,EAAE,IAAI;;;;AAK1E,SAAO,IAAI,oBAAoB,UAAU,CAAC;;CAG5C,MAAM,QAAuB;AAC3B,QAAM,MAAKF,OAAQ,OAAO;;;AAI9B,SAAgB,mBAAmB,SAA4C;AAC7E,QAAO,IAAI,iBAAiB,QAAQ"}
1
+ {"version":3,"file":"index.mjs","names":["#adapter","#driver","#middleware","#middlewareContext"],"sources":["../src/mongo-runtime.ts"],"sourcesContent":["import type {\n RuntimeMiddleware,\n RuntimeMiddlewareContext,\n} from '@prisma-next/framework-components/runtime';\nimport {\n AsyncIterableResult,\n checkMiddlewareCompatibility,\n} from '@prisma-next/framework-components/runtime';\nimport type { MongoAdapter, MongoDriver } from '@prisma-next/mongo-lowering';\nimport type { MongoQueryPlan } from '@prisma-next/mongo-query-ast/execution';\n\nfunction noop() {}\nfunction now() {\n return Date.now();\n}\n\nexport interface MongoRuntimeOptions {\n readonly adapter: MongoAdapter;\n readonly driver: MongoDriver;\n readonly contract: unknown;\n readonly targetId: string;\n readonly middleware?: readonly RuntimeMiddleware[];\n readonly mode?: 'strict' | 'permissive';\n}\n\nexport interface MongoRuntime {\n execute<Row>(plan: MongoQueryPlan<Row>): AsyncIterableResult<Row>;\n close(): Promise<void>;\n}\n\nclass MongoRuntimeImpl implements MongoRuntime {\n readonly #adapter: MongoAdapter;\n readonly #driver: MongoDriver;\n readonly #middleware: readonly RuntimeMiddleware[];\n readonly #middlewareContext: RuntimeMiddlewareContext;\n\n constructor(options: MongoRuntimeOptions) {\n this.#adapter = options.adapter;\n this.#driver = options.driver;\n\n const middleware = options.middleware ? [...options.middleware] : [];\n for (const mw of middleware) {\n checkMiddlewareCompatibility(mw, 'mongo', options.targetId);\n }\n this.#middleware = middleware;\n\n this.#middlewareContext = {\n contract: options.contract,\n mode: options.mode ?? 'strict',\n now,\n log: { info: noop, warn: noop, error: noop },\n };\n }\n\n execute<Row>(plan: MongoQueryPlan<Row>): AsyncIterableResult<Row> {\n const adapter = this.#adapter;\n const driver = this.#driver;\n const middleware = this.#middleware;\n const ctx = this.#middlewareContext;\n\n const iterator = async function* (): AsyncGenerator<Row, void, unknown> {\n const startedAt = ctx.now();\n let rowCount = 0;\n let completed = false;\n let failed = false;\n\n try {\n for (const mw of middleware) {\n if (mw.beforeExecute) {\n await mw.beforeExecute(plan, ctx);\n }\n }\n\n const wireCommand = await adapter.lower(plan);\n\n for await (const row of driver.execute<Row>(wireCommand)) {\n for (const mw of middleware) {\n if (mw.onRow) {\n await mw.onRow(row as Record<string, unknown>, plan, ctx);\n }\n }\n rowCount++;\n yield row;\n }\n\n completed = true;\n } catch (error) {\n failed = true;\n throw error;\n } finally {\n const latencyMs = ctx.now() - startedAt;\n for (const mw of middleware) {\n if (!mw.afterExecute) continue;\n\n if (failed) {\n try {\n await mw.afterExecute(plan, { rowCount, latencyMs, completed }, ctx);\n } catch {\n // Ignore errors from afterExecute during error handling\n }\n continue;\n }\n\n await mw.afterExecute(plan, { rowCount, latencyMs, completed }, ctx);\n }\n }\n };\n\n return new AsyncIterableResult(iterator());\n }\n\n async close(): Promise<void> {\n await this.#driver.close();\n }\n}\n\nexport function createMongoRuntime(options: MongoRuntimeOptions): MongoRuntime {\n return new MongoRuntimeImpl(options);\n}\n"],"mappings":";;;AAWA,SAAS,OAAO;AAChB,SAAS,MAAM;AACb,QAAO,KAAK,KAAK;;AAiBnB,IAAM,mBAAN,MAA+C;CAC7C,CAASA;CACT,CAASC;CACT,CAASC;CACT,CAASC;CAET,YAAY,SAA8B;AACxC,QAAKH,UAAW,QAAQ;AACxB,QAAKC,SAAU,QAAQ;EAEvB,MAAM,aAAa,QAAQ,aAAa,CAAC,GAAG,QAAQ,WAAW,GAAG,EAAE;AACpE,OAAK,MAAM,MAAM,WACf,8BAA6B,IAAI,SAAS,QAAQ,SAAS;AAE7D,QAAKC,aAAc;AAEnB,QAAKC,oBAAqB;GACxB,UAAU,QAAQ;GAClB,MAAM,QAAQ,QAAQ;GACtB;GACA,KAAK;IAAE,MAAM;IAAM,MAAM;IAAM,OAAO;IAAM;GAC7C;;CAGH,QAAa,MAAqD;EAChE,MAAM,UAAU,MAAKH;EACrB,MAAM,SAAS,MAAKC;EACpB,MAAM,aAAa,MAAKC;EACxB,MAAM,MAAM,MAAKC;EAEjB,MAAM,WAAW,mBAAuD;GACtE,MAAM,YAAY,IAAI,KAAK;GAC3B,IAAI,WAAW;GACf,IAAI,YAAY;GAChB,IAAI,SAAS;AAEb,OAAI;AACF,SAAK,MAAM,MAAM,WACf,KAAI,GAAG,cACL,OAAM,GAAG,cAAc,MAAM,IAAI;IAIrC,MAAM,cAAc,MAAM,QAAQ,MAAM,KAAK;AAE7C,eAAW,MAAM,OAAO,OAAO,QAAa,YAAY,EAAE;AACxD,UAAK,MAAM,MAAM,WACf,KAAI,GAAG,MACL,OAAM,GAAG,MAAM,KAAgC,MAAM,IAAI;AAG7D;AACA,WAAM;;AAGR,gBAAY;YACL,OAAO;AACd,aAAS;AACT,UAAM;aACE;IACR,MAAM,YAAY,IAAI,KAAK,GAAG;AAC9B,SAAK,MAAM,MAAM,YAAY;AAC3B,SAAI,CAAC,GAAG,aAAc;AAEtB,SAAI,QAAQ;AACV,UAAI;AACF,aAAM,GAAG,aAAa,MAAM;QAAE;QAAU;QAAW;QAAW,EAAE,IAAI;cAC9D;AAGR;;AAGF,WAAM,GAAG,aAAa,MAAM;MAAE;MAAU;MAAW;MAAW,EAAE,IAAI;;;;AAK1E,SAAO,IAAI,oBAAoB,UAAU,CAAC;;CAG5C,MAAM,QAAuB;AAC3B,QAAM,MAAKF,OAAQ,OAAO;;;AAI9B,SAAgB,mBAAmB,SAA4C;AAC7E,QAAO,IAAI,iBAAiB,QAAQ"}
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@prisma-next/mongo-runtime",
3
- "version": "0.5.0-dev.6",
3
+ "version": "0.5.0-dev.8",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "description": "MongoDB runtime implementation for Prisma Next",
7
7
  "dependencies": {
8
- "@prisma-next/contract": "0.5.0-dev.6",
9
- "@prisma-next/framework-components": "0.5.0-dev.6",
10
- "@prisma-next/mongo-lowering": "0.5.0-dev.6",
11
- "@prisma-next/mongo-query-ast": "0.5.0-dev.6"
8
+ "@prisma-next/contract": "0.5.0-dev.8",
9
+ "@prisma-next/framework-components": "0.5.0-dev.8",
10
+ "@prisma-next/mongo-lowering": "0.5.0-dev.8",
11
+ "@prisma-next/mongo-query-ast": "0.5.0-dev.8"
12
12
  },
13
13
  "devDependencies": {
14
14
  "mongodb": "^6.16.0",
@@ -16,19 +16,19 @@
16
16
  "tsdown": "0.18.4",
17
17
  "typescript": "5.9.3",
18
18
  "vitest": "4.0.17",
19
- "@prisma-next/adapter-mongo": "0.5.0-dev.6",
20
- "@prisma-next/middleware-telemetry": "0.5.0-dev.6",
21
- "@prisma-next/runtime-executor": "0.5.0-dev.6",
22
- "@prisma-next/mongo-contract-ts": "0.5.0-dev.6",
23
- "@prisma-next/family-mongo": "0.5.0-dev.6",
24
- "@prisma-next/mongo-query-builder": "0.5.0-dev.6",
25
- "@prisma-next/mongo-value": "0.5.0-dev.6",
26
- "@prisma-next/driver-mongo": "0.5.0-dev.6",
27
- "@prisma-next/mongo-contract": "0.5.0-dev.6",
28
- "@prisma-next/target-mongo": "0.5.0-dev.6",
19
+ "@prisma-next/adapter-mongo": "0.5.0-dev.8",
20
+ "@prisma-next/middleware-telemetry": "0.5.0-dev.8",
21
+ "@prisma-next/mongo-contract-ts": "0.5.0-dev.8",
22
+ "@prisma-next/family-mongo": "0.5.0-dev.8",
23
+ "@prisma-next/runtime-executor": "0.5.0-dev.8",
24
+ "@prisma-next/mongo-value": "0.5.0-dev.8",
25
+ "@prisma-next/driver-mongo": "0.5.0-dev.8",
26
+ "@prisma-next/mongo-query-builder": "0.5.0-dev.8",
27
+ "@prisma-next/target-mongo": "0.5.0-dev.8",
28
+ "@prisma-next/mongo-contract": "0.5.0-dev.8",
29
29
  "@prisma-next/test-utils": "0.0.1",
30
- "@prisma-next/tsconfig": "0.0.0",
31
- "@prisma-next/tsdown": "0.0.0"
30
+ "@prisma-next/tsdown": "0.0.0",
31
+ "@prisma-next/tsconfig": "0.0.0"
32
32
  },
33
33
  "files": [
34
34
  "dist",
@@ -71,7 +71,7 @@ class MongoRuntimeImpl implements MongoRuntime {
71
71
  }
72
72
  }
73
73
 
74
- const wireCommand = adapter.lower(plan);
74
+ const wireCommand = await adapter.lower(plan);
75
75
 
76
76
  for await (const row of driver.execute<Row>(wireCommand)) {
77
77
  for (const mw of middleware) {