@supalive/core 1.10.0 → 1.12.0

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.
Files changed (69) hide show
  1. package/dist/db-ClCicssQ.js.map +1 -1
  2. package/dist/index-C_Zew1wH.d.ts +2209 -0
  3. package/dist/index-C_Zew1wH.d.ts.map +1 -0
  4. package/dist/index-DDDAcnJj.d.ts +2208 -0
  5. package/dist/index-DDDAcnJj.d.ts.map +1 -0
  6. package/dist/mysql-BXy4mk-9.d.ts +113 -0
  7. package/dist/mysql-BXy4mk-9.d.ts.map +1 -0
  8. package/dist/mysql-D-PGYc1L.js +609 -0
  9. package/dist/mysql-D-PGYc1L.js.map +1 -0
  10. package/dist/mysql-DF8eJO-v.d.ts +113 -0
  11. package/dist/mysql-DF8eJO-v.d.ts.map +1 -0
  12. package/dist/mysql-XUkTkefP.js +610 -0
  13. package/dist/mysql-XUkTkefP.js.map +1 -0
  14. package/dist/mysql-txOOzccX.js +609 -0
  15. package/dist/mysql-txOOzccX.js.map +1 -0
  16. package/dist/overlap-checker-BdNoCPtA.js +259 -0
  17. package/dist/overlap-checker-BdNoCPtA.js.map +1 -0
  18. package/dist/overlap-checker-BoWNco2y.js +258 -0
  19. package/dist/overlap-checker-BoWNco2y.js.map +1 -0
  20. package/dist/overlap-checker-DvRqQOTe.js +265 -0
  21. package/dist/overlap-checker-DvRqQOTe.js.map +1 -0
  22. package/dist/postgres-C7CHroi9.js +865 -0
  23. package/dist/postgres-C7CHroi9.js.map +1 -0
  24. package/dist/postgres-CapFFTTn.d.ts +117 -0
  25. package/dist/postgres-CapFFTTn.d.ts.map +1 -0
  26. package/dist/postgres-Cn9vTBX7.js +864 -0
  27. package/dist/postgres-Cn9vTBX7.js.map +1 -0
  28. package/dist/postgres-EXjuHMUi.d.ts +117 -0
  29. package/dist/postgres-EXjuHMUi.d.ts.map +1 -0
  30. package/dist/postgres-tLkdxhFu.js +864 -0
  31. package/dist/postgres-tLkdxhFu.js.map +1 -0
  32. package/dist/query-Bpw8wO6L.js +730 -0
  33. package/dist/query-Bpw8wO6L.js.map +1 -0
  34. package/dist/realtime_db-e3TztUUT.js +272 -0
  35. package/dist/realtime_db-e3TztUUT.js.map +1 -0
  36. package/dist/schema-CWdfWuIj.js +105 -0
  37. package/dist/schema-CWdfWuIj.js.map +1 -0
  38. package/dist/src/client/index.d.ts +1 -1
  39. package/dist/src/client/index.js +4 -4
  40. package/dist/src/exports/mysql.d.ts +1 -1
  41. package/dist/src/exports/mysql.js +1 -1
  42. package/dist/src/exports/postgres.d.ts +1 -1
  43. package/dist/src/exports/postgres.js +1 -1
  44. package/dist/src/exports/procedure.d.ts +1 -1
  45. package/dist/src/exports/procedure.js +3 -2
  46. package/dist/src/exports/procedure.js.map +1 -1
  47. package/dist/src/exports/schema-sql.d.ts +1 -1
  48. package/dist/src/exports/schema-sql.js +2 -2
  49. package/dist/src/exports/server.d.ts +4 -4
  50. package/dist/src/exports/server.js +11 -4
  51. package/dist/src/exports/server.js.map +1 -1
  52. package/dist/src/exports/sub-manager-worker-entry.js +1 -1
  53. package/dist/src/exports/types.d.ts +2 -2
  54. package/dist/src/exports/types.js +1 -1
  55. package/dist/sub-worker-dispatch-Cl-XnBwq.js +810 -0
  56. package/dist/sub-worker-dispatch-Cl-XnBwq.js.map +1 -0
  57. package/dist/sub-worker-dispatch-Cokz99D1.js +810 -0
  58. package/dist/sub-worker-dispatch-Cokz99D1.js.map +1 -0
  59. package/dist/sub-worker-dispatch-DohrszOw.js +810 -0
  60. package/dist/sub-worker-dispatch-DohrszOw.js.map +1 -0
  61. package/dist/table-id-x9y1eHUr.js +91 -0
  62. package/dist/table-id-x9y1eHUr.js.map +1 -0
  63. package/dist/types_db-CmxFWgU3.js +171 -0
  64. package/dist/types_db-CmxFWgU3.js.map +1 -0
  65. package/dist/types_server-BF5Y0s__.d.ts +521 -0
  66. package/dist/types_server-BF5Y0s__.d.ts.map +1 -0
  67. package/dist/types_server-SPElhjga.d.ts +521 -0
  68. package/dist/types_server-SPElhjga.d.ts.map +1 -0
  69. package/package.json +1 -1
@@ -1,11 +1,11 @@
1
1
  import { i as createQueryBuilder, r as createMutationBuilder, t as createActionBuilder } from "../../procedure-DPgXC2Cm.js";
2
2
  import { n as getContextRegistry, r as router } from "../../router-CiWYeWUR.js";
3
- import { o as matchesPredicate } from "../../query-ur-jCtVr.js";
4
- import { n as defineSchema, t as defineComputedField } from "../../schema-Dd7u0A1L.js";
3
+ import { o as matchesPredicate } from "../../query-Bpw8wO6L.js";
4
+ import { n as defineSchema, t as defineComputedField } from "../../schema-CWdfWuIj.js";
5
5
  import { r as supaliveStringify } from "../../helper-wGbzz6zo.js";
6
- import { C as normalizeIdToBytes, S as bytesFromJson, _ as RawRangeReadSchema, a as DEFAULT_RETRY, b as WriteEntrySchema, c as OccAbortError, d as PointReadSchema, f as PredicateSchema, g as RawPointReadSchema, h as RangeReadSchema, i as CompareOperatorSchema, l as OccConflictError, m as QueryCacheMetadataSchema, n as BigIntSchema, o as LeafPredicateSchema, p as QueryCacheEntrySchema, r as CachedPgMetadataSchema, s as NO_RETRY, t as AndPredicateSchema, u as OrPredicateSchema, v as RawReadEntrySchema, w as normalizeToBytes, x as WriteOpSchema, y as ReadEntrySchema } from "../../types_db-B039N8Em.js";
6
+ import { C as normalizeIdToBytes, S as bytesFromJson, _ as RawRangeReadSchema, a as DEFAULT_RETRY, b as WriteEntrySchema, c as OccAbortError, d as PointReadSchema, f as PredicateSchema, g as RawPointReadSchema, h as RangeReadSchema, i as CompareOperatorSchema, l as OccConflictError, m as QueryCacheMetadataSchema, n as BigIntSchema, o as LeafPredicateSchema, p as QueryCacheEntrySchema, r as CachedPgMetadataSchema, s as NO_RETRY, t as AndPredicateSchema, u as OrPredicateSchema, v as RawReadEntrySchema, w as normalizeToBytes, x as WriteOpSchema, y as ReadEntrySchema } from "../../types_db-CmxFWgU3.js";
7
7
  import { l as ServerMessageSchema } from "../../types_client_rpc-CIsjQQGG.js";
8
- import { a as TxContext, i as DbWriter, n as sleep, r as DbReader, t as SupaliveDb } from "../../realtime_db-DiYQbfeA.js";
8
+ import { a as TxContext, i as DbWriter, n as sleep, r as DbReader, t as SupaliveDb } from "../../realtime_db-e3TztUUT.js";
9
9
  import { sha1 } from "hash-wasm";
10
10
  //#region src/db/query_definition.ts
11
11
  const _globalDefs = /* @__PURE__ */ new Map();
@@ -1,2 +1,2 @@
1
- import { t as MySqlDatabase } from "../../mysql-CBSuONm5.js";
1
+ import { t as MySqlDatabase } from "../../mysql-DF8eJO-v.js";
2
2
  export { MySqlDatabase };
@@ -1,2 +1,2 @@
1
- import { t as MySqlDatabase } from "../../mysql-CA7GCR62.js";
1
+ import { t as MySqlDatabase } from "../../mysql-XUkTkefP.js";
2
2
  export { MySqlDatabase };
@@ -1,2 +1,2 @@
1
- import { t as PgDatabase } from "../../postgres-BKGLPrKt.js";
1
+ import { t as PgDatabase } from "../../postgres-EXjuHMUi.js";
2
2
  export { PgDatabase };
@@ -1,2 +1,2 @@
1
- import { t as PgDatabase } from "../../postgres-Cwq5EPBg.js";
1
+ import { t as PgDatabase } from "../../postgres-C7CHroi9.js";
2
2
  export { PgDatabase };
@@ -1,4 +1,4 @@
1
- import { $ as ProcedureNames, An as ReturnQuery, At as patchZod$1, Bn as tableNameToId, Cn as InsertData, Ct as QueryFn, Dn as Prettify, Dt as createJobBuilder, En as OverrideField, Et as createActionBuilder, Fn as StoredSchemaColumnsOptions, In as defineComputedField, J as ActionProcedures, Ln as defineSchema, Mn as SchemaColumnMapping, Nn as SchemaColumnsOptions, On as QueryArgs, Ot as createMutationBuilder, Pn as SchemaDefinition, Q as MutationProcedures, Rn as schemaRegistry, Sn as InferSchema, St as QueryCtx, Tn as MutationArgs, Tt as TypeOf, Vn as trackSchema, X as ContextRegistry, Y as AppRouter, Z as JobProcedures, _n as ComputedField, _t as MutationCtx, an as OrderDirection, at as router, bn as DefineSchemaConfig, bt as OutputOf, cn as buildPredicateSql, ct as ActionFn, dn as jsonPathExtract, dt as ContextOf, en as IdAndCommitTs, et as PublicProcedures, fn as matchesPredicate, ft as JobConfig, gn as ComputedDataType, gt as MutationConfig, hn as ComputedCodec, ht as JobProcedure, in as OrderByOptions, it as getContextRegistry, jn as SchemaCodecs, jt as z$1, kn as ReturnLiveQuery, kt as createQueryBuilder, ln as jsonContains, lt as ActionProcedure, mn as ColumnCodec, mt as JobFn, nn as JsonHasKeyMultiOptions, nt as RegisteredProcedure, on as PaginationClause, ot as ActionConfig, pn as ActionArgs, pt as JobCtx, rn as JsonOpOptions, rt as Router, sn as QueryBuilder, st as ActionCtx, tn as JsonContainsOptions, tt as QueryProcedures, un as jsonPathExists, ut as AnyProcedure, vn as ComputedFieldConfig, vt as MutationFn, wn as Model, wt as QueryProcedure, xn as IndexDefinition, xt as QueryConfig, yn as DeclarativeIndex, yt as MutationProcedure, zn as shouldTrackSchema } from "../../index-BQRlJY_1.js";
1
+ import { $ as ProcedureNames, An as ReturnQuery, At as patchZod$1, Bn as trackSchema, Cn as InsertData, Ct as QueryFn, Dn as Prettify, Dt as createJobBuilder, En as OverrideField, Et as createActionBuilder, Fn as StoredSchemaColumnsOptions, In as defineComputedField, J as ActionProcedures, Ln as defineSchema, Mn as SchemaColumnMapping, Nn as SchemaColumnsOptions, On as QueryArgs, Ot as createMutationBuilder, Pn as SchemaDefinition, Q as MutationProcedures, Rn as schemaRegistry, Sn as InferSchema, St as QueryCtx, Tn as MutationArgs, Tt as TypeOf, Vn as tableNameToId, X as ContextRegistry, Y as AppRouter, Z as JobProcedures, _n as ComputedField, _t as MutationCtx, an as OrderDirection, at as router, bn as DefineSchemaConfig, bt as OutputOf, cn as buildPredicateSql, ct as ActionFn, dn as jsonPathExtract, dt as ContextOf, en as IdAndCommitTs, et as PublicProcedures, fn as matchesPredicate, ft as JobConfig, gn as ComputedDataType, gt as MutationConfig, hn as ComputedCodec, ht as JobProcedure, in as OrderByOptions, it as getContextRegistry, jn as SchemaCodecs, jt as z$1, kn as ReturnLiveQuery, kt as createQueryBuilder, ln as jsonContains, lt as ActionProcedure, mn as ColumnCodec, mt as JobFn, nn as JsonHasKeyMultiOptions, nt as RegisteredProcedure, on as PaginationClause, ot as ActionConfig, pn as ActionArgs, pt as JobCtx, rn as JsonOpOptions, rt as Router, sn as QueryBuilder, st as ActionCtx, tn as JsonContainsOptions, tt as QueryProcedures, un as jsonPathExists, ut as AnyProcedure, vn as ComputedFieldConfig, vt as MutationFn, wn as Model, wt as QueryProcedure, xn as IndexDefinition, xt as QueryConfig, yn as DeclarativeIndex, yt as MutationProcedure, zn as shouldTrackSchema } from "../../index-DDDAcnJj.js";
2
2
  import { n as stableStringify, r as supaliveStringify, t as groupByToMap } from "../../helper-CiacMqje.js";
3
3
 
4
4
  //#region src/exports/procedure.d.ts
@@ -1,7 +1,8 @@
1
1
  import { a as patchZod$1, i as createQueryBuilder, n as createJobBuilder, o as z$1, r as createMutationBuilder, t as createActionBuilder } from "../../procedure-DPgXC2Cm.js";
2
2
  import { n as getContextRegistry, r as router, t as ContextRegistry } from "../../router-CiWYeWUR.js";
3
- import { a as jsonPathExtract, i as jsonPathExists, n as buildPredicateSql, o as matchesPredicate, r as jsonContains, t as QueryBuilder } from "../../query-ur-jCtVr.js";
4
- import { a as tableNameToId, i as shouldTrackSchema, n as defineSchema, o as trackSchema, r as schemaRegistry, t as defineComputedField } from "../../schema-Dd7u0A1L.js";
3
+ import { n as tableNameToId } from "../../table-id-x9y1eHUr.js";
4
+ import { a as jsonPathExtract, i as jsonPathExists, n as buildPredicateSql, o as matchesPredicate, r as jsonContains, t as QueryBuilder } from "../../query-Bpw8wO6L.js";
5
+ import { a as trackSchema, i as shouldTrackSchema, n as defineSchema, r as schemaRegistry, t as defineComputedField } from "../../schema-CWdfWuIj.js";
5
6
  import { n as stableStringify, r as supaliveStringify, t as groupByToMap } from "../../helper-wGbzz6zo.js";
6
7
  //#region src/exports/procedure.ts
7
8
  const z = z$1;
@@ -1 +1 @@
1
- {"version":3,"file":"procedure.js","names":["_z","_patchZod"],"sources":["../../../src/exports/procedure.ts"],"sourcesContent":["export * from \"../router/index\";\nexport * from \"../db/query\";\nexport * from \"../db/schema\";\nexport * from \"../helper\";\n\n// Re-export z (with .modelName() already patched at import time)\nimport { z as _z, patchZod as _patchZod } from \"../router/procedure\";\nexport const z = _z;\nexport const patchZod = _patchZod;\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\ndeclare module \"zod\" {\n interface ZodType<Output, Input, Internals> {\n /**\n * Rename the generated model class in @supalive codegen output.\n * Purely metadata — has no runtime effect beyond setting `.meta({ __genType: name })`.\n */\n modelName(name: string): this;\n }\n}"],"mappings":";;;;;;AAOA,MAAa,IAAIA;AACjB,MAAa,WAAWC"}
1
+ {"version":3,"file":"procedure.js","names":["_z","_patchZod"],"sources":["../../../src/exports/procedure.ts"],"sourcesContent":["export * from \"../router/index\";\nexport * from \"../db/query\";\nexport * from \"../db/schema\";\nexport * from \"../helper\";\n\n// Re-export z (with .modelName() already patched at import time)\nimport { z as _z, patchZod as _patchZod } from \"../router/procedure\";\nexport const z = _z;\nexport const patchZod = _patchZod;\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\ndeclare module \"zod\" {\n interface ZodType<Output, Input, Internals> {\n /**\n * Rename the generated model class in @supalive codegen output.\n * Purely metadata — has no runtime effect beyond setting `.meta({ __genType: name })`.\n */\n modelName(name: string): this;\n }\n}"],"mappings":";;;;;;;AAOA,MAAa,IAAIA;AACjB,MAAa,WAAWC"}
@@ -1,4 +1,4 @@
1
- import { Pn as SchemaDefinition, Rn as schemaRegistry, Vn as trackSchema } from "../../index-BQRlJY_1.js";
1
+ import { Bn as trackSchema, Pn as SchemaDefinition, Rn as schemaRegistry } from "../../index-DDDAcnJj.js";
2
2
 
3
3
  //#region src/db/schema-sql.d.ts
4
4
  type SqlDialect = "postgres" | "mysql";
@@ -1,5 +1,5 @@
1
- import { r as unwrapZodType } from "../../codec-BHAmGEIQ.js";
2
- import { o as trackSchema, r as schemaRegistry } from "../../schema-Dd7u0A1L.js";
1
+ import { a as unwrapZodType } from "../../table-id-x9y1eHUr.js";
2
+ import { a as trackSchema, r as schemaRegistry } from "../../schema-CWdfWuIj.js";
3
3
  import { z as z$1 } from "zod";
4
4
  //#region src/db/core_tables.ts
5
5
  function coreTablesSql(dialect = "postgres", options) {
@@ -1,7 +1,7 @@
1
- import { $n as AffectedSubscription, Bt as ScheduleHandle, E as Context, Ft as IncomingJobRequest, Ht as SupaliveDb, It as JobClient, Lt as JobScheduler, Mt as DevScheduler, Nt as DevSchedulerOptions, Pt as EnqueueOptions, Qn as CacheLayer, Rt as QStashScheduler, Un as Database, Vt as ScheduledJobDef, ar as RegisterSubscriptionResult, cr as UnregisterSubscriptionResult, dr as UpdateSubscriptionReadSetParams, er as InvalidateWritesetParams, fr as UpdateSubscriptionReadSetParamsSchema, ir as RegisterSubscriptionParamsSchema, nr as InvalidateWritesetResult, or as UnregisterSubscriptionParams, pr as UpdateSubscriptionReadSetResult, rr as RegisterSubscriptionParams, rt as Router, sr as UnregisterSubscriptionParamsSchema, tr as InvalidateWritesetParamsSchema, zt as QStashSchedulerOptions } from "../../index-BQRlJY_1.js";
2
- import { t as MySqlDatabase } from "../../mysql-CBSuONm5.js";
3
- import { t as PgDatabase } from "../../postgres-BKGLPrKt.js";
4
- import { C as SubManagerLink, S as SubManagerClient, b as SupaliveServerConfig, p as DatabaseConfig, u as SubId, x as UpstashConfig, y as SubscriptionManagerConfig } from "../../types_server-DU9JMSXd.js";
1
+ import { $n as AffectedSubscription, Bt as ScheduleHandle, E as Context, Ft as IncomingJobRequest, Ht as SupaliveDb, It as JobClient, Lt as JobScheduler, Mt as DevScheduler, Nt as DevSchedulerOptions, Pt as EnqueueOptions, Qn as CacheLayer, Rt as QStashScheduler, Un as Database, Vt as ScheduledJobDef, ar as RegisterSubscriptionResult, cr as UnregisterSubscriptionResult, dr as UpdateSubscriptionReadSetParams, er as InvalidateWritesetParams, fr as UpdateSubscriptionReadSetParamsSchema, ir as RegisterSubscriptionParamsSchema, nr as InvalidateWritesetResult, or as UnregisterSubscriptionParams, pr as UpdateSubscriptionReadSetResult, rr as RegisterSubscriptionParams, rt as Router, sr as UnregisterSubscriptionParamsSchema, tr as InvalidateWritesetParamsSchema, zt as QStashSchedulerOptions } from "../../index-DDDAcnJj.js";
2
+ import { t as MySqlDatabase } from "../../mysql-DF8eJO-v.js";
3
+ import { t as PgDatabase } from "../../postgres-EXjuHMUi.js";
4
+ import { C as SubManagerLink, S as SubManagerClient, b as SupaliveServerConfig, p as DatabaseConfig, u as SubId, x as UpstashConfig, y as SubscriptionManagerConfig } from "../../types_server-BF5Y0s__.js";
5
5
  import pino, { Level } from "pino";
6
6
  import Redis$1 from "ioredis";
7
7
 
@@ -1,10 +1,10 @@
1
1
  import { n as getContextRegistry } from "../../router-CiWYeWUR.js";
2
2
  import { n as stableStringify, r as supaliveStringify, t as groupByToMap } from "../../helper-wGbzz6zo.js";
3
- import { r as evaluateCacheFreshness } from "../../overlap-checker-BqR9qCfy.js";
3
+ import { r as evaluateCacheFreshness } from "../../overlap-checker-BdNoCPtA.js";
4
4
  import { i as AuthenticationError, o as ClientMessageSchema } from "../../types_client_rpc-CIsjQQGG.js";
5
5
  import { n as RemoteSubscriptionMessageSchema } from "../../types_server-Dk6o_B7N.js";
6
- import { n as sleep } from "../../realtime_db-DiYQbfeA.js";
7
- import { C as appInstanceId, D as serializeMapValue, E as logger, S as RetentionWatermark, T as logLevelOf, _ as UnregisterSubscriptionResultSchema, a as bootstrapDbTypes, b as UpdateSubscriptionReadSetResultSchema, c as initCore, d as InvalidateWritesetParamsSchema, f as InvalidateWritesetResultSchema, g as UnregisterSubscriptionParamsSchema, h as RegisterSubscriptionResultSchema, i as DB_QUERY_TIMEOUT_MS, l as initDatabase, m as RegisterSubscriptionParamsSchema, n as SubscriptionWorker, o as createDatabase, p as RegisterSubscriptionBatchResultSchema, r as CORE_VERSION, s as initCacheLayer, t as dispatchWorkerMessage, u as CacheLayer, v as UnregisterSubscriptionsResultSchema, w as isProduction, x as RETENTION_WATERMARK_CHANNEL, y as UpdateSubscriptionReadSetParamsSchema } from "../../sub-worker-dispatch-G8V8asfR.js";
6
+ import { n as sleep } from "../../realtime_db-e3TztUUT.js";
7
+ import { C as appInstanceId, D as serializeMapValue, E as logger, S as RetentionWatermark, T as logLevelOf, _ as UnregisterSubscriptionResultSchema, a as bootstrapDbTypes, b as UpdateSubscriptionReadSetResultSchema, c as initCore, d as InvalidateWritesetParamsSchema, f as InvalidateWritesetResultSchema, g as UnregisterSubscriptionParamsSchema, h as RegisterSubscriptionResultSchema, i as DB_QUERY_TIMEOUT_MS, l as initDatabase, m as RegisterSubscriptionParamsSchema, n as SubscriptionWorker, o as createDatabase, p as RegisterSubscriptionBatchResultSchema, r as CORE_VERSION, s as initCacheLayer, t as dispatchWorkerMessage, u as CacheLayer, v as UnregisterSubscriptionsResultSchema, w as isProduction, x as RETENTION_WATERMARK_CHANNEL, y as UpdateSubscriptionReadSetParamsSchema } from "../../sub-worker-dispatch-Cl-XnBwq.js";
8
8
  import { createServer } from "http";
9
9
  import { WebSocket, WebSocketServer } from "ws";
10
10
  import { v4 } from "uuid";
@@ -101,7 +101,14 @@ async function runCachedQuery(deps, procedure, procedureName, input, serverCtx,
101
101
  const metadata = await deps.cache.getQueryCacheMetaData(cacheKey);
102
102
  if ((await evaluateCacheFreshness(deps.db.impl, metadata, lastSnapshotTs, deps.getMinRetainedTs())).fresh) {
103
103
  const cached = await deps.cache.getQueryCacheFor(cacheKey);
104
- if (cached && metadata && cached.version === metadata.version) return cached.data;
104
+ if (cached && metadata && cached.version === metadata.version) {
105
+ if (lastSnapshotTs > metadata.lastSnapshotTs) deps.cache.advanceQueryCacheMetadata(cacheKey, {
106
+ lastSnapshotTs,
107
+ version: metadata.version,
108
+ readSet: metadata.readSet
109
+ }).catch((err) => logger.error(err, "one-shot horizon advance failed"));
110
+ return cached.data;
111
+ }
105
112
  }
106
113
  const result = await deps.db.queryInternal(async (ctx) => {
107
114
  const fn = procedure.fn;