every-plugin 2.9.5 → 2.10.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 (122) hide show
  1. package/dist/_virtual/_rolldown/runtime.mjs +1 -1
  2. package/dist/build/rspack/dev-server-middleware.cjs.map +1 -1
  3. package/dist/build/rspack/dev-server-middleware.mjs.map +1 -1
  4. package/dist/build/rspack/fix-mf-data-uri-plugin.cjs.map +1 -1
  5. package/dist/build/rspack/fix-mf-data-uri-plugin.d.cts +0 -1
  6. package/dist/build/rspack/fix-mf-data-uri-plugin.d.cts.map +1 -1
  7. package/dist/build/rspack/fix-mf-data-uri-plugin.d.mts +0 -1
  8. package/dist/build/rspack/fix-mf-data-uri-plugin.d.mts.map +1 -1
  9. package/dist/build/rspack/fix-mf-data-uri-plugin.mjs.map +1 -1
  10. package/dist/build/rspack/module-federation.cjs.map +1 -1
  11. package/dist/build/rspack/module-federation.mjs.map +1 -1
  12. package/dist/build/rspack/plugin.cjs +2 -0
  13. package/dist/build/rspack/plugin.cjs.map +1 -1
  14. package/dist/build/rspack/plugin.d.cts +1 -2
  15. package/dist/build/rspack/plugin.d.cts.map +1 -1
  16. package/dist/build/rspack/plugin.d.mts +1 -2
  17. package/dist/build/rspack/plugin.d.mts.map +1 -1
  18. package/dist/build/rspack/plugin.mjs +2 -0
  19. package/dist/build/rspack/plugin.mjs.map +1 -1
  20. package/dist/build/rspack/utils.cjs.map +1 -1
  21. package/dist/build/rspack/utils.mjs.map +1 -1
  22. package/dist/build/shared-deps.cjs +0 -1
  23. package/dist/build/shared-deps.cjs.map +1 -1
  24. package/dist/build/shared-deps.d.cts.map +1 -1
  25. package/dist/build/shared-deps.d.mts.map +1 -1
  26. package/dist/build/shared-deps.mjs.map +1 -1
  27. package/dist/errors.cjs +0 -1
  28. package/dist/errors.cjs.map +1 -1
  29. package/dist/errors.d.cts +0 -1
  30. package/dist/errors.d.cts.map +1 -1
  31. package/dist/errors.d.mts +0 -1
  32. package/dist/errors.d.mts.map +1 -1
  33. package/dist/errors.mjs.map +1 -1
  34. package/dist/index.cjs +1 -0
  35. package/dist/index.d.cts +2 -2
  36. package/dist/index.d.mts +2 -2
  37. package/dist/index.mjs +2 -2
  38. package/dist/orpc.cjs +0 -1
  39. package/dist/plugin.cjs +2 -1
  40. package/dist/plugin.cjs.map +1 -1
  41. package/dist/plugin.d.cts +3 -2
  42. package/dist/plugin.d.cts.map +1 -1
  43. package/dist/plugin.d.mts +3 -2
  44. package/dist/plugin.d.mts.map +1 -1
  45. package/dist/plugin.mjs +3 -2
  46. package/dist/plugin.mjs.map +1 -1
  47. package/dist/runtime/errors.cjs +0 -1
  48. package/dist/runtime/errors.cjs.map +1 -1
  49. package/dist/runtime/errors.d.cts +3 -5
  50. package/dist/runtime/errors.d.cts.map +1 -1
  51. package/dist/runtime/errors.d.mts +3 -5
  52. package/dist/runtime/errors.d.mts.map +1 -1
  53. package/dist/runtime/errors.mjs.map +1 -1
  54. package/dist/runtime/index.cjs +4 -2
  55. package/dist/runtime/index.cjs.map +1 -1
  56. package/dist/runtime/index.d.cts +0 -1
  57. package/dist/runtime/index.d.cts.map +1 -1
  58. package/dist/runtime/index.d.mts +0 -1
  59. package/dist/runtime/index.d.mts.map +1 -1
  60. package/dist/runtime/index.mjs +4 -1
  61. package/dist/runtime/index.mjs.map +1 -1
  62. package/dist/runtime/mf-config.cjs +1 -2
  63. package/dist/runtime/mf-config.cjs.map +1 -1
  64. package/dist/runtime/mf-config.d.cts.map +1 -1
  65. package/dist/runtime/mf-config.d.mts.map +1 -1
  66. package/dist/runtime/mf-config.mjs +1 -1
  67. package/dist/runtime/mf-config.mjs.map +1 -1
  68. package/dist/runtime/services/module-federation.service.cjs +0 -1
  69. package/dist/runtime/services/module-federation.service.cjs.map +1 -1
  70. package/dist/runtime/services/module-federation.service.d.cts +0 -1
  71. package/dist/runtime/services/module-federation.service.d.cts.map +1 -1
  72. package/dist/runtime/services/module-federation.service.d.mts +0 -1
  73. package/dist/runtime/services/module-federation.service.d.mts.map +1 -1
  74. package/dist/runtime/services/module-federation.service.mjs.map +1 -1
  75. package/dist/runtime/services/normalize.cjs.map +1 -1
  76. package/dist/runtime/services/normalize.d.cts.map +1 -1
  77. package/dist/runtime/services/normalize.d.mts.map +1 -1
  78. package/dist/runtime/services/normalize.mjs.map +1 -1
  79. package/dist/runtime/services/plugin-lifecycle.service.cjs +0 -1
  80. package/dist/runtime/services/plugin-lifecycle.service.cjs.map +1 -1
  81. package/dist/runtime/services/plugin-lifecycle.service.d.cts +0 -1
  82. package/dist/runtime/services/plugin-lifecycle.service.d.cts.map +1 -1
  83. package/dist/runtime/services/plugin-lifecycle.service.d.mts +0 -1
  84. package/dist/runtime/services/plugin-lifecycle.service.d.mts.map +1 -1
  85. package/dist/runtime/services/plugin-lifecycle.service.mjs.map +1 -1
  86. package/dist/runtime/services/plugin-loader.service.cjs +2 -2
  87. package/dist/runtime/services/plugin-loader.service.cjs.map +1 -1
  88. package/dist/runtime/services/plugin-loader.service.d.cts +1 -2
  89. package/dist/runtime/services/plugin-loader.service.d.cts.map +1 -1
  90. package/dist/runtime/services/plugin-loader.service.d.mts +1 -2
  91. package/dist/runtime/services/plugin-loader.service.d.mts.map +1 -1
  92. package/dist/runtime/services/plugin-loader.service.mjs +2 -1
  93. package/dist/runtime/services/plugin-loader.service.mjs.map +1 -1
  94. package/dist/runtime/services/plugin.service.cjs +0 -1
  95. package/dist/runtime/services/plugin.service.cjs.map +1 -1
  96. package/dist/runtime/services/plugin.service.d.cts +5 -6
  97. package/dist/runtime/services/plugin.service.d.cts.map +1 -1
  98. package/dist/runtime/services/plugin.service.d.mts +5 -6
  99. package/dist/runtime/services/plugin.service.d.mts.map +1 -1
  100. package/dist/runtime/services/plugin.service.mjs.map +1 -1
  101. package/dist/runtime/services/secrets.service.cjs.map +1 -1
  102. package/dist/runtime/services/secrets.service.d.cts +1 -2
  103. package/dist/runtime/services/secrets.service.d.cts.map +1 -1
  104. package/dist/runtime/services/secrets.service.d.mts +1 -2
  105. package/dist/runtime/services/secrets.service.d.mts.map +1 -1
  106. package/dist/runtime/services/secrets.service.mjs.map +1 -1
  107. package/dist/runtime/validation.cjs +0 -1
  108. package/dist/runtime/validation.cjs.map +1 -1
  109. package/dist/runtime/validation.mjs.map +1 -1
  110. package/dist/testing/index.cjs.map +1 -1
  111. package/dist/testing/index.d.cts +2 -1
  112. package/dist/testing/index.d.cts.map +1 -1
  113. package/dist/testing/index.d.mts +2 -1
  114. package/dist/testing/index.d.mts.map +1 -1
  115. package/dist/testing/index.mjs.map +1 -1
  116. package/dist/types.d.cts +1 -2
  117. package/dist/types.d.cts.map +1 -1
  118. package/dist/types.d.mts +1 -2
  119. package/dist/types.d.mts.map +1 -1
  120. package/package.json +5 -5
  121. package/src/plugin.ts +3 -1
  122. package/src/runtime/services/plugin-loader.service.ts +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"errors.cjs","names":["z"],"sources":["../src/errors.ts"],"sourcesContent":["import { z } from \"./zod\";\n\n/**\n * Error pattern constants for categorizing infrastructure errors\n */\nexport const ERROR_PATTERNS = {\n CONNECTION_REFUSED: [\"ECONNREFUSED\"],\n HOST_NOT_FOUND: [\"ENOTFOUND\", \"EHOSTUNREACH\"],\n TIMEOUT: [\"ETIMEDOUT\", \"ESOCKETTIMEDOUT\", \"timeout\"],\n CONNECTION_RESET: [\"ECONNRESET\", \"EPIPE\"],\n PERMISSION: [\"EACCES\", \"EPERM\", \"permission denied\"],\n AUTH: [\"401\", \"unauthorized\", \"authentication failed\"],\n RATE_LIMITED: [\"429\", \"too many requests\", \"rate limit\"],\n SERVICE_UNAVAILABLE: [\"503\", \"service unavailable\"],\n} as const;\n\n/**\n * Common error schemas for plugin contracts.\n * Import individually or use the grouped PluginErrors export.\n *\n * @example\n * ```typescript\n * import { NOT_FOUND, FORBIDDEN, UNAUTHORIZED } from \"every-plugin/errors\";\n *\n * export const contract = oc.router({\n * getData: oc.route(...)\n * .errors({ NOT_FOUND, FORBIDDEN, UNAUTHORIZED })\n * });\n * ```\n */\n\nexport const UNAUTHORIZED = {\n status: 401,\n data: z.object({\n apiKeyProvided: z.boolean(),\n provider: z.string().optional(),\n authType: z.enum([\"apiKey\", \"oauth\", \"token\"]).optional(),\n }),\n} as const;\n\nexport const RATE_LIMITED = {\n status: 429,\n data: z.object({\n retryAfter: z.number().int().min(1),\n remainingRequests: z.number().int().min(0).optional(),\n resetTime: z.string().datetime().optional(),\n limitType: z.enum([\"requests\", \"tokens\", \"bandwidth\"]).optional(),\n }),\n} as const;\n\nexport const SERVICE_UNAVAILABLE = {\n status: 503,\n data: z.object({\n retryAfter: z.number().int().optional(),\n maintenanceWindow: z.boolean().default(false),\n estimatedUptime: z.string().datetime().optional(),\n }),\n} as const;\n\nexport const BAD_REQUEST = {\n status: 400,\n data: z.object({\n invalidFields: z.array(z.string()).optional(),\n validationErrors: z\n .array(\n z.object({\n field: z.string(),\n message: z.string(),\n code: z.string().optional(),\n }),\n )\n .optional(),\n }),\n} as const;\n\nexport const NOT_FOUND = {\n status: 404,\n data: z.object({\n resource: z.string().optional(),\n resourceId: z.string().optional(),\n }),\n} as const;\n\nexport const FORBIDDEN = {\n status: 403,\n data: z.object({\n requiredPermissions: z.array(z.string()).optional(),\n action: z.string().optional(),\n }),\n} as const;\n\nexport const TIMEOUT = {\n status: 504,\n data: z.object({\n timeoutMs: z.number().int().min(0).optional(),\n operation: z.string().optional(),\n retryable: z.boolean().default(true),\n }),\n} as const;\n\nexport const CONNECTION_ERROR = {\n status: 502,\n data: z.object({\n errorCode: z.string().optional(),\n host: z.string().optional(),\n port: z.number().int().optional(),\n suggestion: z.string().optional(),\n }),\n} as const;\n\n/**\n * Grouped export for all plugin errors.\n * Use individual imports for cleaner code.\n */\nexport const PluginErrors = {\n UNAUTHORIZED,\n RATE_LIMITED,\n SERVICE_UNAVAILABLE,\n BAD_REQUEST,\n NOT_FOUND,\n FORBIDDEN,\n TIMEOUT,\n CONNECTION_ERROR,\n} as const;\n\n/**\n * @deprecated Use individual imports or PluginErrors instead\n */\nexport const CommonPluginErrors = PluginErrors;\n\nexport {\n extractFromFiberFailure,\n formatORPCError,\n isRetryableORPCCode,\n ModuleFederationError,\n PluginRuntimeError,\n toPluginRuntimeError,\n ValidationError,\n wrapORPCError,\n} from \"./runtime/errors\";\n"],"mappings":";;;;;;;;;;AAKA,MAAa,iBAAiB;CAC5B,oBAAoB,CAAC,eAAe;CACpC,gBAAgB,CAAC,aAAa,eAAe;CAC7C,SAAS;EAAC;EAAa;EAAmB;EAAU;CACpD,kBAAkB,CAAC,cAAc,QAAQ;CACzC,YAAY;EAAC;EAAU;EAAS;EAAoB;CACpD,MAAM;EAAC;EAAO;EAAgB;EAAwB;CACtD,cAAc;EAAC;EAAO;EAAqB;EAAa;CACxD,qBAAqB,CAAC,OAAO,sBAAsB;CACpD;;;;;;;;;;;;;;;AAiBD,MAAa,eAAe;CAC1B,QAAQ;CACR,MAAMA,IAAE,OAAO;EACb,gBAAgBA,IAAE,SAAS;EAC3B,UAAUA,IAAE,QAAQ,CAAC,UAAU;EAC/B,UAAUA,IAAE,KAAK;GAAC;GAAU;GAAS;GAAQ,CAAC,CAAC,UAAU;EAC1D,CAAC;CACH;AAED,MAAa,eAAe;CAC1B,QAAQ;CACR,MAAMA,IAAE,OAAO;EACb,YAAYA,IAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE;EACnC,mBAAmBA,IAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU;EACrD,WAAWA,IAAE,QAAQ,CAAC,UAAU,CAAC,UAAU;EAC3C,WAAWA,IAAE,KAAK;GAAC;GAAY;GAAU;GAAY,CAAC,CAAC,UAAU;EAClE,CAAC;CACH;AAED,MAAa,sBAAsB;CACjC,QAAQ;CACR,MAAMA,IAAE,OAAO;EACb,YAAYA,IAAE,QAAQ,CAAC,KAAK,CAAC,UAAU;EACvC,mBAAmBA,IAAE,SAAS,CAAC,QAAQ,MAAM;EAC7C,iBAAiBA,IAAE,QAAQ,CAAC,UAAU,CAAC,UAAU;EAClD,CAAC;CACH;AAED,MAAa,cAAc;CACzB,QAAQ;CACR,MAAMA,IAAE,OAAO;EACb,eAAeA,IAAE,MAAMA,IAAE,QAAQ,CAAC,CAAC,UAAU;EAC7C,kBAAkBA,IACf,MACCA,IAAE,OAAO;GACP,OAAOA,IAAE,QAAQ;GACjB,SAASA,IAAE,QAAQ;GACnB,MAAMA,IAAE,QAAQ,CAAC,UAAU;GAC5B,CAAC,CACH,CACA,UAAU;EACd,CAAC;CACH;AAED,MAAa,YAAY;CACvB,QAAQ;CACR,MAAMA,IAAE,OAAO;EACb,UAAUA,IAAE,QAAQ,CAAC,UAAU;EAC/B,YAAYA,IAAE,QAAQ,CAAC,UAAU;EAClC,CAAC;CACH;AAED,MAAa,YAAY;CACvB,QAAQ;CACR,MAAMA,IAAE,OAAO;EACb,qBAAqBA,IAAE,MAAMA,IAAE,QAAQ,CAAC,CAAC,UAAU;EACnD,QAAQA,IAAE,QAAQ,CAAC,UAAU;EAC9B,CAAC;CACH;AAED,MAAa,UAAU;CACrB,QAAQ;CACR,MAAMA,IAAE,OAAO;EACb,WAAWA,IAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU;EAC7C,WAAWA,IAAE,QAAQ,CAAC,UAAU;EAChC,WAAWA,IAAE,SAAS,CAAC,QAAQ,KAAK;EACrC,CAAC;CACH;AAED,MAAa,mBAAmB;CAC9B,QAAQ;CACR,MAAMA,IAAE,OAAO;EACb,WAAWA,IAAE,QAAQ,CAAC,UAAU;EAChC,MAAMA,IAAE,QAAQ,CAAC,UAAU;EAC3B,MAAMA,IAAE,QAAQ,CAAC,KAAK,CAAC,UAAU;EACjC,YAAYA,IAAE,QAAQ,CAAC,UAAU;EAClC,CAAC;CACH;;;;;AAMD,MAAa,eAAe;CAC1B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;;;;AAKD,MAAa,qBAAqB"}
1
+ {"version":3,"file":"errors.cjs","names":["z"],"sources":["../src/errors.ts"],"sourcesContent":["import { z } from \"./zod\";\n\n/**\n * Error pattern constants for categorizing infrastructure errors\n */\nexport const ERROR_PATTERNS = {\n CONNECTION_REFUSED: [\"ECONNREFUSED\"],\n HOST_NOT_FOUND: [\"ENOTFOUND\", \"EHOSTUNREACH\"],\n TIMEOUT: [\"ETIMEDOUT\", \"ESOCKETTIMEDOUT\", \"timeout\"],\n CONNECTION_RESET: [\"ECONNRESET\", \"EPIPE\"],\n PERMISSION: [\"EACCES\", \"EPERM\", \"permission denied\"],\n AUTH: [\"401\", \"unauthorized\", \"authentication failed\"],\n RATE_LIMITED: [\"429\", \"too many requests\", \"rate limit\"],\n SERVICE_UNAVAILABLE: [\"503\", \"service unavailable\"],\n} as const;\n\n/**\n * Common error schemas for plugin contracts.\n * Import individually or use the grouped PluginErrors export.\n *\n * @example\n * ```typescript\n * import { NOT_FOUND, FORBIDDEN, UNAUTHORIZED } from \"every-plugin/errors\";\n *\n * export const contract = oc.router({\n * getData: oc.route(...)\n * .errors({ NOT_FOUND, FORBIDDEN, UNAUTHORIZED })\n * });\n * ```\n */\n\nexport const UNAUTHORIZED = {\n status: 401,\n data: z.object({\n apiKeyProvided: z.boolean(),\n provider: z.string().optional(),\n authType: z.enum([\"apiKey\", \"oauth\", \"token\"]).optional(),\n }),\n} as const;\n\nexport const RATE_LIMITED = {\n status: 429,\n data: z.object({\n retryAfter: z.number().int().min(1),\n remainingRequests: z.number().int().min(0).optional(),\n resetTime: z.string().datetime().optional(),\n limitType: z.enum([\"requests\", \"tokens\", \"bandwidth\"]).optional(),\n }),\n} as const;\n\nexport const SERVICE_UNAVAILABLE = {\n status: 503,\n data: z.object({\n retryAfter: z.number().int().optional(),\n maintenanceWindow: z.boolean().default(false),\n estimatedUptime: z.string().datetime().optional(),\n }),\n} as const;\n\nexport const BAD_REQUEST = {\n status: 400,\n data: z.object({\n invalidFields: z.array(z.string()).optional(),\n validationErrors: z\n .array(\n z.object({\n field: z.string(),\n message: z.string(),\n code: z.string().optional(),\n }),\n )\n .optional(),\n }),\n} as const;\n\nexport const NOT_FOUND = {\n status: 404,\n data: z.object({\n resource: z.string().optional(),\n resourceId: z.string().optional(),\n }),\n} as const;\n\nexport const FORBIDDEN = {\n status: 403,\n data: z.object({\n requiredPermissions: z.array(z.string()).optional(),\n action: z.string().optional(),\n }),\n} as const;\n\nexport const TIMEOUT = {\n status: 504,\n data: z.object({\n timeoutMs: z.number().int().min(0).optional(),\n operation: z.string().optional(),\n retryable: z.boolean().default(true),\n }),\n} as const;\n\nexport const CONNECTION_ERROR = {\n status: 502,\n data: z.object({\n errorCode: z.string().optional(),\n host: z.string().optional(),\n port: z.number().int().optional(),\n suggestion: z.string().optional(),\n }),\n} as const;\n\n/**\n * Grouped export for all plugin errors.\n * Use individual imports for cleaner code.\n */\nexport const PluginErrors = {\n UNAUTHORIZED,\n RATE_LIMITED,\n SERVICE_UNAVAILABLE,\n BAD_REQUEST,\n NOT_FOUND,\n FORBIDDEN,\n TIMEOUT,\n CONNECTION_ERROR,\n} as const;\n\n/**\n * @deprecated Use individual imports or PluginErrors instead\n */\nexport const CommonPluginErrors = PluginErrors;\n\nexport {\n extractFromFiberFailure,\n formatORPCError,\n isRetryableORPCCode,\n ModuleFederationError,\n PluginRuntimeError,\n toPluginRuntimeError,\n ValidationError,\n wrapORPCError,\n} from \"./runtime/errors\";\n"],"mappings":"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"}
package/dist/errors.d.cts CHANGED
@@ -1,6 +1,5 @@
1
1
  import { z } from "./zod.cjs";
2
2
  import { ModuleFederationError, PluginRuntimeError, ValidationError, extractFromFiberFailure, formatORPCError, isRetryableORPCCode, toPluginRuntimeError, wrapORPCError } from "./runtime/errors.cjs";
3
-
4
3
  //#region src/errors.d.ts
5
4
  /**
6
5
  * Error pattern constants for categorizing infrastructure errors
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.cts","names":[],"sources":["../src/errors.ts"],"mappings":";;;;;;;cAKa,cAAA;EAAA;;;;;;;;;;;;;AA0Bb;;;;;;;;;;cAAa,YAAA;EAAA;;;;;;;;;;;cASA,YAAA;EAAA;;;;;;;;;;;;cAUA,mBAAA;EAAA;;;;;;;cASA,WAAA;EAAA;;;;;;;;;;cAgBA,SAAA;EAAA;;;;;;cAQA,SAAA;EAAA;;;;;;cAQA,OAAA;EAAA;;;;;;;cASA,gBAAA;EAAA;;;;;;;;;;;;cAcA,YAAA;EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAcA,kBAAA;EAAA"}
1
+ {"version":3,"file":"errors.d.cts","names":[],"sources":["../src/errors.ts"],"mappings":";;;;;;cAKa;;;;;;;;;;;;;;;;;;;;;;;;cA0BA;;;;;;;;;;;;cASA;;;;;;;;;;;;;cAUA;;;;;;;;cASA;;;;;;;;;;;cAgBA;;;;;;;cAQA;;;;;;;cAQA;;;;;;;;cASA;;;;;;;;;;;;;cAcA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAcA"}
package/dist/errors.d.mts CHANGED
@@ -1,6 +1,5 @@
1
1
  import { z } from "./zod.mjs";
2
2
  import { ModuleFederationError, PluginRuntimeError, ValidationError, extractFromFiberFailure, formatORPCError, isRetryableORPCCode, toPluginRuntimeError, wrapORPCError } from "./runtime/errors.mjs";
3
-
4
3
  //#region src/errors.d.ts
5
4
  /**
6
5
  * Error pattern constants for categorizing infrastructure errors
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.mts","names":[],"sources":["../src/errors.ts"],"mappings":";;;;;;;cAKa,cAAA;EAAA;;;;;;;;;;;;;AA0Bb;;;;;;;;;;cAAa,YAAA;EAAA;;;;;;;;;;;cASA,YAAA;EAAA;;;;;;;;;;;;cAUA,mBAAA;EAAA;;;;;;;cASA,WAAA;EAAA;;;;;;;;;;cAgBA,SAAA;EAAA;;;;;;cAQA,SAAA;EAAA;;;;;;cAQA,OAAA;EAAA;;;;;;;cASA,gBAAA;EAAA;;;;;;;;;;;;cAcA,YAAA;EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAcA,kBAAA;EAAA"}
1
+ {"version":3,"file":"errors.d.mts","names":[],"sources":["../src/errors.ts"],"mappings":";;;;;;cAKa;;;;;;;;;;;;;;;;;;;;;;;;cA0BA;;;;;;;;;;;;cASA;;;;;;;;;;;;;cAUA;;;;;;;;cASA;;;;;;;;;;;cAgBA;;;;;;;cAQA;;;;;;;cAQA;;;;;;;;cASA;;;;;;;;;;;;;cAcA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAcA"}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.mjs","names":[],"sources":["../src/errors.ts"],"sourcesContent":["import { z } from \"./zod\";\n\n/**\n * Error pattern constants for categorizing infrastructure errors\n */\nexport const ERROR_PATTERNS = {\n CONNECTION_REFUSED: [\"ECONNREFUSED\"],\n HOST_NOT_FOUND: [\"ENOTFOUND\", \"EHOSTUNREACH\"],\n TIMEOUT: [\"ETIMEDOUT\", \"ESOCKETTIMEDOUT\", \"timeout\"],\n CONNECTION_RESET: [\"ECONNRESET\", \"EPIPE\"],\n PERMISSION: [\"EACCES\", \"EPERM\", \"permission denied\"],\n AUTH: [\"401\", \"unauthorized\", \"authentication failed\"],\n RATE_LIMITED: [\"429\", \"too many requests\", \"rate limit\"],\n SERVICE_UNAVAILABLE: [\"503\", \"service unavailable\"],\n} as const;\n\n/**\n * Common error schemas for plugin contracts.\n * Import individually or use the grouped PluginErrors export.\n *\n * @example\n * ```typescript\n * import { NOT_FOUND, FORBIDDEN, UNAUTHORIZED } from \"every-plugin/errors\";\n *\n * export const contract = oc.router({\n * getData: oc.route(...)\n * .errors({ NOT_FOUND, FORBIDDEN, UNAUTHORIZED })\n * });\n * ```\n */\n\nexport const UNAUTHORIZED = {\n status: 401,\n data: z.object({\n apiKeyProvided: z.boolean(),\n provider: z.string().optional(),\n authType: z.enum([\"apiKey\", \"oauth\", \"token\"]).optional(),\n }),\n} as const;\n\nexport const RATE_LIMITED = {\n status: 429,\n data: z.object({\n retryAfter: z.number().int().min(1),\n remainingRequests: z.number().int().min(0).optional(),\n resetTime: z.string().datetime().optional(),\n limitType: z.enum([\"requests\", \"tokens\", \"bandwidth\"]).optional(),\n }),\n} as const;\n\nexport const SERVICE_UNAVAILABLE = {\n status: 503,\n data: z.object({\n retryAfter: z.number().int().optional(),\n maintenanceWindow: z.boolean().default(false),\n estimatedUptime: z.string().datetime().optional(),\n }),\n} as const;\n\nexport const BAD_REQUEST = {\n status: 400,\n data: z.object({\n invalidFields: z.array(z.string()).optional(),\n validationErrors: z\n .array(\n z.object({\n field: z.string(),\n message: z.string(),\n code: z.string().optional(),\n }),\n )\n .optional(),\n }),\n} as const;\n\nexport const NOT_FOUND = {\n status: 404,\n data: z.object({\n resource: z.string().optional(),\n resourceId: z.string().optional(),\n }),\n} as const;\n\nexport const FORBIDDEN = {\n status: 403,\n data: z.object({\n requiredPermissions: z.array(z.string()).optional(),\n action: z.string().optional(),\n }),\n} as const;\n\nexport const TIMEOUT = {\n status: 504,\n data: z.object({\n timeoutMs: z.number().int().min(0).optional(),\n operation: z.string().optional(),\n retryable: z.boolean().default(true),\n }),\n} as const;\n\nexport const CONNECTION_ERROR = {\n status: 502,\n data: z.object({\n errorCode: z.string().optional(),\n host: z.string().optional(),\n port: z.number().int().optional(),\n suggestion: z.string().optional(),\n }),\n} as const;\n\n/**\n * Grouped export for all plugin errors.\n * Use individual imports for cleaner code.\n */\nexport const PluginErrors = {\n UNAUTHORIZED,\n RATE_LIMITED,\n SERVICE_UNAVAILABLE,\n BAD_REQUEST,\n NOT_FOUND,\n FORBIDDEN,\n TIMEOUT,\n CONNECTION_ERROR,\n} as const;\n\n/**\n * @deprecated Use individual imports or PluginErrors instead\n */\nexport const CommonPluginErrors = PluginErrors;\n\nexport {\n extractFromFiberFailure,\n formatORPCError,\n isRetryableORPCCode,\n ModuleFederationError,\n PluginRuntimeError,\n toPluginRuntimeError,\n ValidationError,\n wrapORPCError,\n} from \"./runtime/errors\";\n"],"mappings":";;;;;;;AAKA,MAAa,iBAAiB;CAC5B,oBAAoB,CAAC,eAAe;CACpC,gBAAgB,CAAC,aAAa,eAAe;CAC7C,SAAS;EAAC;EAAa;EAAmB;EAAU;CACpD,kBAAkB,CAAC,cAAc,QAAQ;CACzC,YAAY;EAAC;EAAU;EAAS;EAAoB;CACpD,MAAM;EAAC;EAAO;EAAgB;EAAwB;CACtD,cAAc;EAAC;EAAO;EAAqB;EAAa;CACxD,qBAAqB,CAAC,OAAO,sBAAsB;CACpD;;;;;;;;;;;;;;;AAiBD,MAAa,eAAe;CAC1B,QAAQ;CACR,MAAM,EAAE,OAAO;EACb,gBAAgB,EAAE,SAAS;EAC3B,UAAU,EAAE,QAAQ,CAAC,UAAU;EAC/B,UAAU,EAAE,KAAK;GAAC;GAAU;GAAS;GAAQ,CAAC,CAAC,UAAU;EAC1D,CAAC;CACH;AAED,MAAa,eAAe;CAC1B,QAAQ;CACR,MAAM,EAAE,OAAO;EACb,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE;EACnC,mBAAmB,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU;EACrD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU;EAC3C,WAAW,EAAE,KAAK;GAAC;GAAY;GAAU;GAAY,CAAC,CAAC,UAAU;EAClE,CAAC;CACH;AAED,MAAa,sBAAsB;CACjC,QAAQ;CACR,MAAM,EAAE,OAAO;EACb,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU;EACvC,mBAAmB,EAAE,SAAS,CAAC,QAAQ,MAAM;EAC7C,iBAAiB,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU;EAClD,CAAC;CACH;AAED,MAAa,cAAc;CACzB,QAAQ;CACR,MAAM,EAAE,OAAO;EACb,eAAe,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,UAAU;EAC7C,kBAAkB,EACf,MACC,EAAE,OAAO;GACP,OAAO,EAAE,QAAQ;GACjB,SAAS,EAAE,QAAQ;GACnB,MAAM,EAAE,QAAQ,CAAC,UAAU;GAC5B,CAAC,CACH,CACA,UAAU;EACd,CAAC;CACH;AAED,MAAa,YAAY;CACvB,QAAQ;CACR,MAAM,EAAE,OAAO;EACb,UAAU,EAAE,QAAQ,CAAC,UAAU;EAC/B,YAAY,EAAE,QAAQ,CAAC,UAAU;EAClC,CAAC;CACH;AAED,MAAa,YAAY;CACvB,QAAQ;CACR,MAAM,EAAE,OAAO;EACb,qBAAqB,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,UAAU;EACnD,QAAQ,EAAE,QAAQ,CAAC,UAAU;EAC9B,CAAC;CACH;AAED,MAAa,UAAU;CACrB,QAAQ;CACR,MAAM,EAAE,OAAO;EACb,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU;EAC7C,WAAW,EAAE,QAAQ,CAAC,UAAU;EAChC,WAAW,EAAE,SAAS,CAAC,QAAQ,KAAK;EACrC,CAAC;CACH;AAED,MAAa,mBAAmB;CAC9B,QAAQ;CACR,MAAM,EAAE,OAAO;EACb,WAAW,EAAE,QAAQ,CAAC,UAAU;EAChC,MAAM,EAAE,QAAQ,CAAC,UAAU;EAC3B,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU;EACjC,YAAY,EAAE,QAAQ,CAAC,UAAU;EAClC,CAAC;CACH;;;;;AAMD,MAAa,eAAe;CAC1B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;;;;AAKD,MAAa,qBAAqB"}
1
+ {"version":3,"file":"errors.mjs","names":[],"sources":["../src/errors.ts"],"sourcesContent":["import { z } from \"./zod\";\n\n/**\n * Error pattern constants for categorizing infrastructure errors\n */\nexport const ERROR_PATTERNS = {\n CONNECTION_REFUSED: [\"ECONNREFUSED\"],\n HOST_NOT_FOUND: [\"ENOTFOUND\", \"EHOSTUNREACH\"],\n TIMEOUT: [\"ETIMEDOUT\", \"ESOCKETTIMEDOUT\", \"timeout\"],\n CONNECTION_RESET: [\"ECONNRESET\", \"EPIPE\"],\n PERMISSION: [\"EACCES\", \"EPERM\", \"permission denied\"],\n AUTH: [\"401\", \"unauthorized\", \"authentication failed\"],\n RATE_LIMITED: [\"429\", \"too many requests\", \"rate limit\"],\n SERVICE_UNAVAILABLE: [\"503\", \"service unavailable\"],\n} as const;\n\n/**\n * Common error schemas for plugin contracts.\n * Import individually or use the grouped PluginErrors export.\n *\n * @example\n * ```typescript\n * import { NOT_FOUND, FORBIDDEN, UNAUTHORIZED } from \"every-plugin/errors\";\n *\n * export const contract = oc.router({\n * getData: oc.route(...)\n * .errors({ NOT_FOUND, FORBIDDEN, UNAUTHORIZED })\n * });\n * ```\n */\n\nexport const UNAUTHORIZED = {\n status: 401,\n data: z.object({\n apiKeyProvided: z.boolean(),\n provider: z.string().optional(),\n authType: z.enum([\"apiKey\", \"oauth\", \"token\"]).optional(),\n }),\n} as const;\n\nexport const RATE_LIMITED = {\n status: 429,\n data: z.object({\n retryAfter: z.number().int().min(1),\n remainingRequests: z.number().int().min(0).optional(),\n resetTime: z.string().datetime().optional(),\n limitType: z.enum([\"requests\", \"tokens\", \"bandwidth\"]).optional(),\n }),\n} as const;\n\nexport const SERVICE_UNAVAILABLE = {\n status: 503,\n data: z.object({\n retryAfter: z.number().int().optional(),\n maintenanceWindow: z.boolean().default(false),\n estimatedUptime: z.string().datetime().optional(),\n }),\n} as const;\n\nexport const BAD_REQUEST = {\n status: 400,\n data: z.object({\n invalidFields: z.array(z.string()).optional(),\n validationErrors: z\n .array(\n z.object({\n field: z.string(),\n message: z.string(),\n code: z.string().optional(),\n }),\n )\n .optional(),\n }),\n} as const;\n\nexport const NOT_FOUND = {\n status: 404,\n data: z.object({\n resource: z.string().optional(),\n resourceId: z.string().optional(),\n }),\n} as const;\n\nexport const FORBIDDEN = {\n status: 403,\n data: z.object({\n requiredPermissions: z.array(z.string()).optional(),\n action: z.string().optional(),\n }),\n} as const;\n\nexport const TIMEOUT = {\n status: 504,\n data: z.object({\n timeoutMs: z.number().int().min(0).optional(),\n operation: z.string().optional(),\n retryable: z.boolean().default(true),\n }),\n} as const;\n\nexport const CONNECTION_ERROR = {\n status: 502,\n data: z.object({\n errorCode: z.string().optional(),\n host: z.string().optional(),\n port: z.number().int().optional(),\n suggestion: z.string().optional(),\n }),\n} as const;\n\n/**\n * Grouped export for all plugin errors.\n * Use individual imports for cleaner code.\n */\nexport const PluginErrors = {\n UNAUTHORIZED,\n RATE_LIMITED,\n SERVICE_UNAVAILABLE,\n BAD_REQUEST,\n NOT_FOUND,\n FORBIDDEN,\n TIMEOUT,\n CONNECTION_ERROR,\n} as const;\n\n/**\n * @deprecated Use individual imports or PluginErrors instead\n */\nexport const CommonPluginErrors = PluginErrors;\n\nexport {\n extractFromFiberFailure,\n formatORPCError,\n isRetryableORPCCode,\n ModuleFederationError,\n PluginRuntimeError,\n toPluginRuntimeError,\n ValidationError,\n wrapORPCError,\n} from \"./runtime/errors\";\n"],"mappings":"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"}
package/dist/index.cjs CHANGED
@@ -13,6 +13,7 @@ exports.FORBIDDEN = require_errors$1.FORBIDDEN;
13
13
  exports.ModuleFederationError = require_errors.ModuleFederationError;
14
14
  exports.NOT_FOUND = require_errors$1.NOT_FOUND;
15
15
  exports.PluginErrors = require_errors$1.PluginErrors;
16
+ exports.PluginIdTag = require_plugin.PluginIdTag;
16
17
  exports.PluginRuntime = require_runtime_index.PluginRuntime;
17
18
  exports.PluginRuntimeError = require_errors.PluginRuntimeError;
18
19
  exports.RATE_LIMITED = require_errors$1.RATE_LIMITED;
package/dist/index.d.cts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { ModuleFederationError, PluginRuntimeError, ValidationError, extractFromFiberFailure, formatORPCError, isRetryableORPCCode, toPluginRuntimeError, wrapORPCError } from "./runtime/errors.cjs";
2
2
  import { BAD_REQUEST, CONNECTION_ERROR, CommonPluginErrors, ERROR_PATTERNS, FORBIDDEN, NOT_FOUND, PluginErrors, RATE_LIMITED, SERVICE_UNAVAILABLE, TIMEOUT, UNAUTHORIZED } from "./errors.cjs";
3
- import { CreatePluginFn, CreatePluginWithPlugins, LoadedPluginWithBinding, Plugin, PluginConfigFor, PluginServicesTools, createPlugin, withPlugins } from "./plugin.cjs";
3
+ import { CreatePluginFn, CreatePluginWithPlugins, LoadedPluginWithBinding, Plugin, PluginConfigFor, PluginIdTag, PluginServicesTools, createPlugin, withPlugins } from "./plugin.cjs";
4
4
  import { AnyPlugin, EveryPlugin, InitializedPlugin, LoadedPlugin, PluginClientType, PluginConfigInput, PluginContext, PluginContract, PluginInstance, PluginMetadata, PluginRegistry, PluginRouterType, PluginRuntimeConfig, PluginSecrets, PluginVariables, RegisteredPlugins, SecretsConfig, UsePluginResult } from "./types.cjs";
5
5
  import { PluginRuntime, createPluginRuntime } from "./runtime/index.cjs";
6
6
  import { getNormalizedRemoteName } from "./runtime/services/normalize.cjs";
7
- export { type AnyPlugin, BAD_REQUEST, CONNECTION_ERROR, CommonPluginErrors, CreatePluginFn, CreatePluginWithPlugins, ERROR_PATTERNS, type EveryPlugin, FORBIDDEN, type InitializedPlugin, type LoadedPlugin, LoadedPluginWithBinding, ModuleFederationError, NOT_FOUND, Plugin, type PluginClientType, PluginConfigFor, type PluginConfigInput, type PluginContext, type PluginContract, PluginErrors, type PluginInstance, type PluginMetadata, type PluginRegistry, type PluginRouterType, PluginRuntime, type PluginRuntimeConfig, PluginRuntimeError, type PluginSecrets, PluginServicesTools, type PluginVariables, RATE_LIMITED, type RegisteredPlugins, SERVICE_UNAVAILABLE, type SecretsConfig, TIMEOUT, UNAUTHORIZED, type UsePluginResult, ValidationError, createPlugin, createPluginRuntime, extractFromFiberFailure, formatORPCError, getNormalizedRemoteName, isRetryableORPCCode, toPluginRuntimeError, withPlugins, wrapORPCError };
7
+ export { type AnyPlugin, BAD_REQUEST, CONNECTION_ERROR, CommonPluginErrors, CreatePluginFn, CreatePluginWithPlugins, ERROR_PATTERNS, type EveryPlugin, FORBIDDEN, type InitializedPlugin, type LoadedPlugin, LoadedPluginWithBinding, ModuleFederationError, NOT_FOUND, Plugin, type PluginClientType, PluginConfigFor, type PluginConfigInput, type PluginContext, type PluginContract, PluginErrors, PluginIdTag, type PluginInstance, type PluginMetadata, type PluginRegistry, type PluginRouterType, PluginRuntime, type PluginRuntimeConfig, PluginRuntimeError, type PluginSecrets, PluginServicesTools, type PluginVariables, RATE_LIMITED, type RegisteredPlugins, SERVICE_UNAVAILABLE, type SecretsConfig, TIMEOUT, UNAUTHORIZED, type UsePluginResult, ValidationError, createPlugin, createPluginRuntime, extractFromFiberFailure, formatORPCError, getNormalizedRemoteName, isRetryableORPCCode, toPluginRuntimeError, withPlugins, wrapORPCError };
package/dist/index.d.mts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { ModuleFederationError, PluginRuntimeError, ValidationError, extractFromFiberFailure, formatORPCError, isRetryableORPCCode, toPluginRuntimeError, wrapORPCError } from "./runtime/errors.mjs";
2
2
  import { BAD_REQUEST, CONNECTION_ERROR, CommonPluginErrors, ERROR_PATTERNS, FORBIDDEN, NOT_FOUND, PluginErrors, RATE_LIMITED, SERVICE_UNAVAILABLE, TIMEOUT, UNAUTHORIZED } from "./errors.mjs";
3
- import { CreatePluginFn, CreatePluginWithPlugins, LoadedPluginWithBinding, Plugin, PluginConfigFor, PluginServicesTools, createPlugin, withPlugins } from "./plugin.mjs";
3
+ import { CreatePluginFn, CreatePluginWithPlugins, LoadedPluginWithBinding, Plugin, PluginConfigFor, PluginIdTag, PluginServicesTools, createPlugin, withPlugins } from "./plugin.mjs";
4
4
  import { AnyPlugin, EveryPlugin, InitializedPlugin, LoadedPlugin, PluginClientType, PluginConfigInput, PluginContext, PluginContract, PluginInstance, PluginMetadata, PluginRegistry, PluginRouterType, PluginRuntimeConfig, PluginSecrets, PluginVariables, RegisteredPlugins, SecretsConfig, UsePluginResult } from "./types.mjs";
5
5
  import { PluginRuntime, createPluginRuntime } from "./runtime/index.mjs";
6
6
  import { getNormalizedRemoteName } from "./runtime/services/normalize.mjs";
7
- export { type AnyPlugin, BAD_REQUEST, CONNECTION_ERROR, CommonPluginErrors, CreatePluginFn, CreatePluginWithPlugins, ERROR_PATTERNS, type EveryPlugin, FORBIDDEN, type InitializedPlugin, type LoadedPlugin, LoadedPluginWithBinding, ModuleFederationError, NOT_FOUND, Plugin, type PluginClientType, PluginConfigFor, type PluginConfigInput, type PluginContext, type PluginContract, PluginErrors, type PluginInstance, type PluginMetadata, type PluginRegistry, type PluginRouterType, PluginRuntime, type PluginRuntimeConfig, PluginRuntimeError, type PluginSecrets, PluginServicesTools, type PluginVariables, RATE_LIMITED, type RegisteredPlugins, SERVICE_UNAVAILABLE, type SecretsConfig, TIMEOUT, UNAUTHORIZED, type UsePluginResult, ValidationError, createPlugin, createPluginRuntime, extractFromFiberFailure, formatORPCError, getNormalizedRemoteName, isRetryableORPCCode, toPluginRuntimeError, withPlugins, wrapORPCError };
7
+ export { type AnyPlugin, BAD_REQUEST, CONNECTION_ERROR, CommonPluginErrors, CreatePluginFn, CreatePluginWithPlugins, ERROR_PATTERNS, type EveryPlugin, FORBIDDEN, type InitializedPlugin, type LoadedPlugin, LoadedPluginWithBinding, ModuleFederationError, NOT_FOUND, Plugin, type PluginClientType, PluginConfigFor, type PluginConfigInput, type PluginContext, type PluginContract, PluginErrors, PluginIdTag, type PluginInstance, type PluginMetadata, type PluginRegistry, type PluginRouterType, PluginRuntime, type PluginRuntimeConfig, PluginRuntimeError, type PluginSecrets, PluginServicesTools, type PluginVariables, RATE_LIMITED, type RegisteredPlugins, SERVICE_UNAVAILABLE, type SecretsConfig, TIMEOUT, UNAUTHORIZED, type UsePluginResult, ValidationError, createPlugin, createPluginRuntime, extractFromFiberFailure, formatORPCError, getNormalizedRemoteName, isRetryableORPCCode, toPluginRuntimeError, withPlugins, wrapORPCError };
package/dist/index.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import { ModuleFederationError, PluginRuntimeError, ValidationError, extractFromFiberFailure, formatORPCError, isRetryableORPCCode, toPluginRuntimeError, wrapORPCError } from "./runtime/errors.mjs";
2
2
  import { BAD_REQUEST, CONNECTION_ERROR, CommonPluginErrors, ERROR_PATTERNS, FORBIDDEN, NOT_FOUND, PluginErrors, RATE_LIMITED, SERVICE_UNAVAILABLE, TIMEOUT, UNAUTHORIZED } from "./errors.mjs";
3
- import { createPlugin, withPlugins } from "./plugin.mjs";
3
+ import { PluginIdTag, createPlugin, withPlugins } from "./plugin.mjs";
4
4
  import { getNormalizedRemoteName } from "./runtime/services/normalize.mjs";
5
5
  import { PluginRuntime, createPluginRuntime } from "./runtime/index.mjs";
6
6
 
7
- export { BAD_REQUEST, CONNECTION_ERROR, CommonPluginErrors, ERROR_PATTERNS, FORBIDDEN, ModuleFederationError, NOT_FOUND, PluginErrors, PluginRuntime, PluginRuntimeError, RATE_LIMITED, SERVICE_UNAVAILABLE, TIMEOUT, UNAUTHORIZED, ValidationError, createPlugin, createPluginRuntime, extractFromFiberFailure, formatORPCError, getNormalizedRemoteName, isRetryableORPCCode, toPluginRuntimeError, withPlugins, wrapORPCError };
7
+ export { BAD_REQUEST, CONNECTION_ERROR, CommonPluginErrors, ERROR_PATTERNS, FORBIDDEN, ModuleFederationError, NOT_FOUND, PluginErrors, PluginIdTag, PluginRuntime, PluginRuntimeError, RATE_LIMITED, SERVICE_UNAVAILABLE, TIMEOUT, UNAUTHORIZED, ValidationError, createPlugin, createPluginRuntime, extractFromFiberFailure, formatORPCError, getNormalizedRemoteName, isRetryableORPCCode, toPluginRuntimeError, withPlugins, wrapORPCError };
package/dist/orpc.cjs CHANGED
@@ -1,5 +1,4 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_runtime = require('./_virtual/_rolldown/runtime.cjs');
3
2
  let _orpc_experimental_publisher_ioredis = require("@orpc/experimental-publisher/ioredis");
4
3
  let _orpc_experimental_publisher_memory = require("@orpc/experimental-publisher/memory");
5
4
  let _orpc_experimental_publisher_upstash_redis = require("@orpc/experimental-publisher/upstash-redis");
package/dist/plugin.cjs CHANGED
@@ -1,10 +1,10 @@
1
- const require_runtime = require('./_virtual/_rolldown/runtime.cjs');
2
1
  const require_errors = require('./runtime/errors.cjs');
3
2
  let _orpc_contract = require("@orpc/contract");
4
3
  let effect = require("effect");
5
4
  let _orpc_server = require("@orpc/server");
6
5
 
7
6
  //#region src/plugin.ts
7
+ var PluginIdTag = class extends effect.Context.Tag("PluginId")() {};
8
8
  const createPlugin = function createPlugin(config) {
9
9
  const configSchema = {
10
10
  variables: config.variables,
@@ -57,6 +57,7 @@ function withPlugins() {
57
57
  createPlugin.withPlugins = withPlugins;
58
58
 
59
59
  //#endregion
60
+ exports.PluginIdTag = PluginIdTag;
60
61
  exports.createPlugin = createPlugin;
61
62
  exports.withPlugins = withPlugins;
62
63
  //# sourceMappingURL=plugin.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.cjs","names":["Effect","extractFromFiberFailure","ORPCError","formatORPCError"],"sources":["../src/plugin.ts"],"sourcesContent":["import type { AnyContractRouter, AnySchema, InferSchemaOutput } from \"@orpc/contract\";\nimport { ORPCError } from \"@orpc/contract\";\nimport type { Implementer, Router } from \"@orpc/server\";\nimport { implement, onError } from \"@orpc/server\";\nimport { Effect, type Context as EffectContext, type Layer, type Scope } from \"effect\";\nimport { extractFromFiberFailure, formatORPCError } from \"./runtime/errors\";\n\ntype ContextOutput<T> = T extends AnySchema ? InferSchemaOutput<T> : Record<string, never>;\n\nexport type PluginConfigFor<\n V extends AnySchema,\n S extends AnySchema,\n TRequestContext extends AnySchema | undefined,\n> = {\n variables: V;\n secrets: S;\n context: TRequestContext;\n};\n\ntype PluginInitializeInput<V extends AnySchema, S extends AnySchema> = {\n variables: InferSchemaOutput<V>;\n secrets: InferSchemaOutput<S>;\n};\n\n/**\n * Tools provided to plugin initialize/services for building long-lived scoped resources.\n */\ntype ServiceOf<T> = T extends EffectContext.Tag<any, infer S> ? S : never;\n\nexport type PluginServicesTools = {\n buildService: <T>(tag: T, layer: Layer.Layer<any, any, any>) => Effect.Effect<ServiceOf<T>>;\n};\n\ntype PluginDefinition<\n V extends AnySchema,\n S extends AnySchema,\n TContract extends AnyContractRouter,\n TRequestContext extends AnySchema | undefined,\n TDeps extends Record<string, any>,\n P extends Record<string, unknown>,\n> = {\n variables: V;\n secrets: S;\n contract: TContract;\n context?: TRequestContext;\n /**\n * Initialize the plugin and build dependencies.\n * A third argument `tools` is provided for building long-lived scoped resources\n * (e.g. database pools) via `tools.buildService(tag, layer)`.\n */\n initialize?: (\n config: PluginInitializeInput<V, S>,\n plugins: P,\n tools: PluginServicesTools,\n ) => Effect.Effect<TDeps, Error, Scope.Scope>;\n createRouter: (\n deps: TDeps,\n builder: Implementer<TContract, ContextOutput<TRequestContext>, ContextOutput<TRequestContext>>,\n ) => Router<TContract, any>;\n shutdown?: (deps: TDeps) => Effect.Effect<void, Error, never>;\n};\n\n/**\n * Loaded plugin with static binding property\n */\nexport interface LoadedPluginWithBinding<\n TContract extends AnyContractRouter,\n TVariables extends AnySchema,\n TSecrets extends AnySchema,\n TRequestContext extends AnySchema | undefined,\n TDeps extends Record<string, any> = Record<never, never>,\n> {\n new (): Plugin<TContract, TVariables, TSecrets, TRequestContext, TDeps>;\n binding: {\n contract: TContract;\n variables: TVariables;\n secrets: TSecrets;\n context: TRequestContext;\n };\n}\n\n/**\n * Plugin interface\n */\nexport interface Plugin<\n TContract extends AnyContractRouter,\n TVariables extends AnySchema,\n TSecrets extends AnySchema,\n TRequestContext extends AnySchema | undefined,\n TDeps extends Record<string, any> = Record<never, never>,\n> {\n readonly id: string;\n readonly contract: TContract;\n readonly configSchema: PluginConfigFor<TVariables, TSecrets, TRequestContext>;\n\n initialize(\n config: PluginInitializeInput<TVariables, TSecrets>,\n plugins: Record<string, unknown>,\n tools: PluginServicesTools,\n ): Effect.Effect<TDeps, unknown, Scope.Scope>;\n\n shutdown(): Effect.Effect<void, never>;\n\n /**\n * Creates the strongly-typed oRPC router for this plugin.\n * The router's procedure types are inferred directly from the contract.\n * @param deps The initialized plugin dependencies\n * @returns A router with procedures matching the plugin's contract\n */\n createRouter(deps: TDeps): Router<TContract, any>;\n}\n\nexport interface CreatePluginFn {\n <\n V extends AnySchema,\n S extends AnySchema,\n TContract extends AnyContractRouter,\n TRequestContext extends AnySchema | undefined = undefined,\n TDeps extends Record<string, any> = Record<never, never>,\n P extends Record<string, unknown> = Record<string, never>,\n >(\n config: PluginDefinition<V, S, TContract, TRequestContext, TDeps, P>,\n ): LoadedPluginWithBinding<TContract, V, S, TRequestContext, TDeps>;\n\n withPlugins: <P extends Record<string, unknown>>() => CreatePluginWithPlugins<P>;\n}\n\nexport const createPlugin: CreatePluginFn = function createPlugin<\n V extends AnySchema,\n S extends AnySchema,\n TContract extends AnyContractRouter,\n TRequestContext extends AnySchema | undefined = undefined,\n TDeps extends Record<string, any> = Record<never, never>,\n P extends Record<string, unknown> = Record<string, never>,\n>(config: PluginDefinition<V, S, TContract, TRequestContext, TDeps, P>) {\n const configSchema: PluginConfigFor<V, S, TRequestContext> = {\n variables: config.variables,\n secrets: config.secrets,\n context: config.context as TRequestContext,\n };\n\n class CreatedPlugin implements Plugin<TContract, V, S, TRequestContext, TDeps> {\n /** set during instantiation - registry key */\n id!: string;\n readonly contract = config.contract;\n readonly configSchema = configSchema;\n\n private _deps: TDeps | null = null;\n\n initialize(\n pluginConfig: PluginInitializeInput<V, S>,\n plugins: Record<string, unknown> = {},\n tools: PluginServicesTools,\n ): Effect.Effect<TDeps, unknown, Scope.Scope> {\n const init = config.initialize ?? (() => Effect.succeed({} as TDeps));\n\n return init(pluginConfig, plugins as P, tools).pipe(\n Effect.tap((deps) =>\n Effect.sync(() => {\n this._deps = deps;\n }),\n ),\n Effect.map(() => this._deps as TDeps),\n Effect.mapError((error) => error as unknown),\n );\n }\n\n shutdown(): Effect.Effect<void, never> {\n const self = this;\n return Effect.gen(function* () {\n if (config.shutdown && self._deps) {\n yield* config\n .shutdown(self._deps)\n .pipe(\n Effect.catchAll((error) =>\n Effect.logWarning(`Plugin shutdown hook failed for ${self.id}`, error),\n ),\n );\n }\n self._deps = null;\n });\n }\n\n createRouter(deps: TDeps): Router<TContract, any> {\n const base = implement(config.contract).$context<ContextOutput<TRequestContext>>();\n const errorMiddleware = onError((error: unknown) => {\n const unwrapped = extractFromFiberFailure(error);\n\n if (unwrapped !== error && unwrapped instanceof ORPCError) {\n throw unwrapped;\n }\n\n const formatted = formatORPCError(error);\n if (formatted) console.error(formatted);\n throw error;\n }) as any;\n\n const builder = (base as any).use(errorMiddleware);\n const router = config.createRouter(deps, builder as any);\n return router as Router<TContract, any>;\n }\n }\n\n const PluginConstructor = CreatedPlugin as unknown as {\n new (): Plugin<TContract, V, S, TRequestContext, TDeps>;\n binding: {\n contract: TContract;\n variables: V;\n secrets: S;\n context: TRequestContext;\n };\n };\n\n PluginConstructor.binding = {\n contract: config.contract,\n variables: config.variables,\n secrets: config.secrets,\n context: config.context as TRequestContext,\n };\n\n return PluginConstructor as LoadedPluginWithBinding<TContract, V, S, TRequestContext, TDeps>;\n};\n\nexport type CreatePluginWithPlugins<P extends Record<string, unknown>> = <\n V extends AnySchema,\n S extends AnySchema,\n TContract extends AnyContractRouter,\n TRequestContext extends AnySchema | undefined = undefined,\n TDeps extends Record<string, any> = Record<never, never>,\n>(\n config: PluginDefinition<V, S, TContract, TRequestContext, TDeps, P>,\n) => LoadedPluginWithBinding<TContract, V, S, TRequestContext, TDeps>;\n\nexport function withPlugins<P extends Record<string, unknown>>(): CreatePluginWithPlugins<P> {\n return <\n V extends AnySchema,\n S extends AnySchema,\n TContract extends AnyContractRouter,\n TRequestContext extends AnySchema | undefined = undefined,\n TDeps extends Record<string, any> = Record<never, never>,\n >(\n config: PluginDefinition<V, S, TContract, TRequestContext, TDeps, P>,\n ) => createPlugin<V, S, TContract, TRequestContext, TDeps, P>(config as any);\n}\n\ncreatePlugin.withPlugins = withPlugins;\n"],"mappings":";;;;;;;AA+HA,MAAa,eAA+B,SAAS,aAOnD,QAAsE;CACtE,MAAM,eAAuD;EAC3D,WAAW,OAAO;EAClB,SAAS,OAAO;EAChB,SAAS,OAAO;EACjB;CAED,MAAM,cAAyE;;EAE7E;EACA,AAAS,WAAW,OAAO;EAC3B,AAAS,eAAe;EAExB,AAAQ,QAAsB;EAE9B,WACE,cACA,UAAmC,EAAE,EACrC,OAC4C;AAG5C,WAFa,OAAO,qBAAqBA,cAAO,QAAQ,EAAE,CAAU,GAExD,cAAc,SAAc,MAAM,CAAC,KAC7CA,cAAO,KAAK,SACVA,cAAO,WAAW;AAChB,SAAK,QAAQ;KACb,CACH,EACDA,cAAO,UAAU,KAAK,MAAe,EACrCA,cAAO,UAAU,UAAU,MAAiB,CAC7C;;EAGH,WAAuC;GACrC,MAAM,OAAO;AACb,UAAOA,cAAO,IAAI,aAAa;AAC7B,QAAI,OAAO,YAAY,KAAK,MAC1B,QAAO,OACJ,SAAS,KAAK,MAAM,CACpB,KACCA,cAAO,UAAU,UACfA,cAAO,WAAW,mCAAmC,KAAK,MAAM,MAAM,CACvE,CACF;AAEL,SAAK,QAAQ;KACb;;EAGJ,aAAa,MAAqC;GAChD,MAAM,mCAAiB,OAAO,SAAS,CAAC,UAA0C;GAClF,MAAM,6CAA2B,UAAmB;IAClD,MAAM,YAAYC,uCAAwB,MAAM;AAEhD,QAAI,cAAc,SAAS,qBAAqBC,yBAC9C,OAAM;IAGR,MAAM,YAAYC,+BAAgB,MAAM;AACxC,QAAI,UAAW,SAAQ,MAAM,UAAU;AACvC,UAAM;KACN;GAEF,MAAM,UAAW,KAAa,IAAI,gBAAgB;AAElD,UADe,OAAO,aAAa,MAAM,QAC5B;;;CAIjB,MAAM,oBAAoB;AAU1B,mBAAkB,UAAU;EAC1B,UAAU,OAAO;EACjB,WAAW,OAAO;EAClB,SAAS,OAAO;EAChB,SAAS,OAAO;EACjB;AAED,QAAO;;AAaT,SAAgB,cAA6E;AAC3F,SAOE,WACG,aAAyD,OAAc;;AAG9E,aAAa,cAAc"}
1
+ {"version":3,"file":"plugin.cjs","names":["Context","Effect","extractFromFiberFailure","ORPCError","formatORPCError"],"sources":["../src/plugin.ts"],"sourcesContent":["import type { AnyContractRouter, AnySchema, InferSchemaOutput } from \"@orpc/contract\";\nimport { ORPCError } from \"@orpc/contract\";\nimport type { Implementer, Router } from \"@orpc/server\";\nimport { implement, onError } from \"@orpc/server\";\nimport { Context, Effect, type Context as EffectContext, type Layer, type Scope } from \"effect\";\nimport { extractFromFiberFailure, formatORPCError } from \"./runtime/errors\";\n\ntype ContextOutput<T> = T extends AnySchema ? InferSchemaOutput<T> : Record<string, never>;\n\nexport type PluginConfigFor<\n V extends AnySchema,\n S extends AnySchema,\n TRequestContext extends AnySchema | undefined,\n> = {\n variables: V;\n secrets: S;\n context: TRequestContext;\n};\n\ntype PluginInitializeInput<V extends AnySchema, S extends AnySchema> = {\n variables: InferSchemaOutput<V>;\n secrets: InferSchemaOutput<S>;\n};\n\n/**\n * Tools provided to plugin initialize/services for building long-lived scoped resources.\n */\ntype ServiceOf<T> = T extends EffectContext.Tag<any, infer S> ? S : never;\n\nexport type PluginServicesTools = {\n buildService: <T>(tag: T, layer: Layer.Layer<any, any, any>) => Effect.Effect<ServiceOf<T>>;\n};\n\nexport class PluginIdTag extends Context.Tag(\"PluginId\")<PluginIdTag, string>() {}\n\ntype PluginDefinition<\n V extends AnySchema,\n S extends AnySchema,\n TContract extends AnyContractRouter,\n TRequestContext extends AnySchema | undefined,\n TDeps extends Record<string, any>,\n P extends Record<string, unknown>,\n> = {\n variables: V;\n secrets: S;\n contract: TContract;\n context?: TRequestContext;\n /**\n * Initialize the plugin and build dependencies.\n * A third argument `tools` is provided for building long-lived scoped resources\n * (e.g. database pools) via `tools.buildService(tag, layer)`.\n */\n initialize?: (\n config: PluginInitializeInput<V, S>,\n plugins: P,\n tools: PluginServicesTools,\n ) => Effect.Effect<TDeps, Error, Scope.Scope>;\n createRouter: (\n deps: TDeps,\n builder: Implementer<TContract, ContextOutput<TRequestContext>, ContextOutput<TRequestContext>>,\n ) => Router<TContract, any>;\n shutdown?: (deps: TDeps) => Effect.Effect<void, Error, never>;\n};\n\n/**\n * Loaded plugin with static binding property\n */\nexport interface LoadedPluginWithBinding<\n TContract extends AnyContractRouter,\n TVariables extends AnySchema,\n TSecrets extends AnySchema,\n TRequestContext extends AnySchema | undefined,\n TDeps extends Record<string, any> = Record<never, never>,\n> {\n new (): Plugin<TContract, TVariables, TSecrets, TRequestContext, TDeps>;\n binding: {\n contract: TContract;\n variables: TVariables;\n secrets: TSecrets;\n context: TRequestContext;\n };\n}\n\n/**\n * Plugin interface\n */\nexport interface Plugin<\n TContract extends AnyContractRouter,\n TVariables extends AnySchema,\n TSecrets extends AnySchema,\n TRequestContext extends AnySchema | undefined,\n TDeps extends Record<string, any> = Record<never, never>,\n> {\n readonly id: string;\n readonly contract: TContract;\n readonly configSchema: PluginConfigFor<TVariables, TSecrets, TRequestContext>;\n\n initialize(\n config: PluginInitializeInput<TVariables, TSecrets>,\n plugins: Record<string, unknown>,\n tools: PluginServicesTools,\n ): Effect.Effect<TDeps, unknown, Scope.Scope>;\n\n shutdown(): Effect.Effect<void, never>;\n\n /**\n * Creates the strongly-typed oRPC router for this plugin.\n * The router's procedure types are inferred directly from the contract.\n * @param deps The initialized plugin dependencies\n * @returns A router with procedures matching the plugin's contract\n */\n createRouter(deps: TDeps): Router<TContract, any>;\n}\n\nexport interface CreatePluginFn {\n <\n V extends AnySchema,\n S extends AnySchema,\n TContract extends AnyContractRouter,\n TRequestContext extends AnySchema | undefined = undefined,\n TDeps extends Record<string, any> = Record<never, never>,\n P extends Record<string, unknown> = Record<string, never>,\n >(\n config: PluginDefinition<V, S, TContract, TRequestContext, TDeps, P>,\n ): LoadedPluginWithBinding<TContract, V, S, TRequestContext, TDeps>;\n\n withPlugins: <P extends Record<string, unknown>>() => CreatePluginWithPlugins<P>;\n}\n\nexport const createPlugin: CreatePluginFn = function createPlugin<\n V extends AnySchema,\n S extends AnySchema,\n TContract extends AnyContractRouter,\n TRequestContext extends AnySchema | undefined = undefined,\n TDeps extends Record<string, any> = Record<never, never>,\n P extends Record<string, unknown> = Record<string, never>,\n>(config: PluginDefinition<V, S, TContract, TRequestContext, TDeps, P>) {\n const configSchema: PluginConfigFor<V, S, TRequestContext> = {\n variables: config.variables,\n secrets: config.secrets,\n context: config.context as TRequestContext,\n };\n\n class CreatedPlugin implements Plugin<TContract, V, S, TRequestContext, TDeps> {\n /** set during instantiation - registry key */\n id!: string;\n readonly contract = config.contract;\n readonly configSchema = configSchema;\n\n private _deps: TDeps | null = null;\n\n initialize(\n pluginConfig: PluginInitializeInput<V, S>,\n plugins: Record<string, unknown> = {},\n tools: PluginServicesTools,\n ): Effect.Effect<TDeps, unknown, Scope.Scope> {\n const init = config.initialize ?? (() => Effect.succeed({} as TDeps));\n\n return init(pluginConfig, plugins as P, tools).pipe(\n Effect.tap((deps) =>\n Effect.sync(() => {\n this._deps = deps;\n }),\n ),\n Effect.map(() => this._deps as TDeps),\n Effect.mapError((error) => error as unknown),\n );\n }\n\n shutdown(): Effect.Effect<void, never> {\n const self = this;\n return Effect.gen(function* () {\n if (config.shutdown && self._deps) {\n yield* config\n .shutdown(self._deps)\n .pipe(\n Effect.catchAll((error) =>\n Effect.logWarning(`Plugin shutdown hook failed for ${self.id}`, error),\n ),\n );\n }\n self._deps = null;\n });\n }\n\n createRouter(deps: TDeps): Router<TContract, any> {\n const base = implement(config.contract).$context<ContextOutput<TRequestContext>>();\n const errorMiddleware = onError((error: unknown) => {\n const unwrapped = extractFromFiberFailure(error);\n\n if (unwrapped !== error && unwrapped instanceof ORPCError) {\n throw unwrapped;\n }\n\n const formatted = formatORPCError(error);\n if (formatted) console.error(formatted);\n throw error;\n }) as any;\n\n const builder = (base as any).use(errorMiddleware);\n const router = config.createRouter(deps, builder as any);\n return router as Router<TContract, any>;\n }\n }\n\n const PluginConstructor = CreatedPlugin as unknown as {\n new (): Plugin<TContract, V, S, TRequestContext, TDeps>;\n binding: {\n contract: TContract;\n variables: V;\n secrets: S;\n context: TRequestContext;\n };\n };\n\n PluginConstructor.binding = {\n contract: config.contract,\n variables: config.variables,\n secrets: config.secrets,\n context: config.context as TRequestContext,\n };\n\n return PluginConstructor as LoadedPluginWithBinding<TContract, V, S, TRequestContext, TDeps>;\n};\n\nexport type CreatePluginWithPlugins<P extends Record<string, unknown>> = <\n V extends AnySchema,\n S extends AnySchema,\n TContract extends AnyContractRouter,\n TRequestContext extends AnySchema | undefined = undefined,\n TDeps extends Record<string, any> = Record<never, never>,\n>(\n config: PluginDefinition<V, S, TContract, TRequestContext, TDeps, P>,\n) => LoadedPluginWithBinding<TContract, V, S, TRequestContext, TDeps>;\n\nexport function withPlugins<P extends Record<string, unknown>>(): CreatePluginWithPlugins<P> {\n return <\n V extends AnySchema,\n S extends AnySchema,\n TContract extends AnyContractRouter,\n TRequestContext extends AnySchema | undefined = undefined,\n TDeps extends Record<string, any> = Record<never, never>,\n >(\n config: PluginDefinition<V, S, TContract, TRequestContext, TDeps, P>,\n ) => createPlugin<V, S, TContract, TRequestContext, TDeps, P>(config as any);\n}\n\ncreatePlugin.withPlugins = withPlugins;\n"],"mappings":";;;;;;AAiCA,IAAa,cAAb,cAAiCA,eAAQ,IAAI,UAAU,CAAC,CAAsB,CAAC,CAAC,CAAC;AAgGjF,MAAa,eAA+B,SAAS,aAOnD,QAAsE;CACtE,MAAM,eAAuD;EAC3D,WAAW,OAAO;EAClB,SAAS,OAAO;EAChB,SAAS,OAAO;CAClB;CAEA,MAAM,cAAyE;;EAE7E;EACA,AAAS,WAAW,OAAO;EAC3B,AAAS,eAAe;EAExB,AAAQ,QAAsB;EAE9B,WACE,cACA,UAAmC,CAAC,GACpC,OAC4C;GAG5C,QAFa,OAAO,qBAAqBC,cAAO,QAAQ,CAAC,CAAU,GAExD,CAAC,cAAc,SAAc,KAAK,CAAC,CAAC,KAC7CA,cAAO,KAAK,SACVA,cAAO,WAAW;IAChB,KAAK,QAAQ;GACf,CAAC,CACH,GACAA,cAAO,UAAU,KAAK,KAAc,GACpCA,cAAO,UAAU,UAAU,KAAgB,CAC7C;EACF;EAEA,WAAuC;GACrC,MAAM,OAAO;GACb,OAAOA,cAAO,IAAI,aAAa;IAC7B,IAAI,OAAO,YAAY,KAAK,OAC1B,OAAO,OACJ,SAAS,KAAK,KAAK,CAAC,CACpB,KACCA,cAAO,UAAU,UACfA,cAAO,WAAW,mCAAmC,KAAK,MAAM,KAAK,CACvE,CACF;IAEJ,KAAK,QAAQ;GACf,CAAC;EACH;EAEA,aAAa,MAAqC;GAChD,MAAM,mCAAiB,OAAO,QAAQ,CAAC,CAAC,SAAyC;GACjF,MAAM,6CAA2B,UAAmB;IAClD,MAAM,YAAYC,uCAAwB,KAAK;IAE/C,IAAI,cAAc,SAAS,qBAAqBC,0BAC9C,MAAM;IAGR,MAAM,YAAYC,+BAAgB,KAAK;IACvC,IAAI,WAAW,QAAQ,MAAM,SAAS;IACtC,MAAM;GACR,CAAC;GAED,MAAM,UAAW,KAAa,IAAI,eAAe;GAEjD,OADe,OAAO,aAAa,MAAM,OAC7B;EACd;CACF;CAEA,MAAM,oBAAoB;CAU1B,kBAAkB,UAAU;EAC1B,UAAU,OAAO;EACjB,WAAW,OAAO;EAClB,SAAS,OAAO;EAChB,SAAS,OAAO;CAClB;CAEA,OAAO;AACT;AAYA,SAAgB,cAA6E;CAC3F,QAOE,WACG,aAAyD,MAAa;AAC7E;AAEA,aAAa,cAAc"}
package/dist/plugin.d.cts CHANGED
@@ -1,7 +1,6 @@
1
1
  import { Context, Effect, Layer, Scope } from "effect";
2
2
  import { AnyContractRouter, AnySchema, InferSchemaOutput } from "@orpc/contract";
3
3
  import { Implementer, Router } from "@orpc/server";
4
-
5
4
  //#region src/plugin.d.ts
6
5
  type ContextOutput<T> = T extends AnySchema ? InferSchemaOutput<T> : Record<string, never>;
7
6
  type PluginConfigFor<V extends AnySchema, S extends AnySchema, TRequestContext extends AnySchema | undefined> = {
@@ -20,6 +19,8 @@ type ServiceOf<T> = T extends Context.Tag<any, infer S> ? S : never;
20
19
  type PluginServicesTools = {
21
20
  buildService: <T>(tag: T, layer: Layer.Layer<any, any, any>) => Effect.Effect<ServiceOf<T>>;
22
21
  };
22
+ declare const PluginIdTag_base: Context.TagClass<PluginIdTag, "PluginId", string>;
23
+ declare class PluginIdTag extends PluginIdTag_base {}
23
24
  type PluginDefinition<V extends AnySchema, S extends AnySchema, TContract extends AnyContractRouter, TRequestContext extends AnySchema | undefined, TDeps extends Record<string, any>, P extends Record<string, unknown>> = {
24
25
  variables: V;
25
26
  secrets: S;
@@ -71,5 +72,5 @@ declare const createPlugin: CreatePluginFn;
71
72
  type CreatePluginWithPlugins<P extends Record<string, unknown>> = <V extends AnySchema, S extends AnySchema, TContract extends AnyContractRouter, TRequestContext extends AnySchema | undefined = undefined, TDeps extends Record<string, any> = Record<never, never>>(config: PluginDefinition<V, S, TContract, TRequestContext, TDeps, P>) => LoadedPluginWithBinding<TContract, V, S, TRequestContext, TDeps>;
72
73
  declare function withPlugins<P extends Record<string, unknown>>(): CreatePluginWithPlugins<P>;
73
74
  //#endregion
74
- export { CreatePluginFn, CreatePluginWithPlugins, LoadedPluginWithBinding, Plugin, PluginConfigFor, PluginServicesTools, createPlugin, withPlugins };
75
+ export { CreatePluginFn, CreatePluginWithPlugins, LoadedPluginWithBinding, Plugin, PluginConfigFor, PluginIdTag, PluginServicesTools, createPlugin, withPlugins };
75
76
  //# sourceMappingURL=plugin.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.cts","names":[],"sources":["../src/plugin.ts"],"mappings":"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"}
1
+ {"version":3,"file":"plugin.d.cts","names":[],"sources":["../src/plugin.ts"],"mappings":";;;;KAOK,cAAc,KAAK,UAAU,YAAY,kBAAkB,KAAK;KAEzD,gBACV,UAAU,WACV,UAAU,WACV,wBAAwB;EAExB,WAAW;EACX,SAAS;EACT,SAAS;;KAGN,sBAAsB,UAAU,WAAW,UAAU;EACxD,WAAW,kBAAkB;EAC7B,SAAS,kBAAkB;;;;;KAMxB,UAAU,KAAK,UAAU,QAAc,eAAe,KAAK;KAEpD;EACV,eAAe,GAAG,KAAK,GAAG,OAAO,MAAM,yBAAyB,OAAO,OAAO,UAAU;;;cAG7E,oBAAoB;KAE5B,iBACH,UAAU,WACV,UAAU,WACV,kBAAkB,mBAClB,wBAAwB,uBACxB,cAAc,qBACd,UAAU;EAEV,WAAW;EACX,SAAS;EACT,UAAU;EACV,UAAU;;;;;;EAMV,cACE,QAAQ,sBAAsB,GAAG,IACjC,SAAS,GACT,OAAO,wBACJ,OAAO,OAAO,OAAO,OAAO,MAAM;EACvC,eACE,MAAM,OACN,SAAS,YAAY,WAAW,cAAc,kBAAkB,cAAc,sBAC3E,OAAO;EACZ,YAAY,MAAM,UAAU,OAAO,aAAa;;;;;UAMjC,wBACf,kBAAkB,mBAClB,mBAAmB,WACnB,iBAAiB,WACjB,wBAAwB,uBACxB,cAAc,sBAAsB;UAE5B,OAAO,WAAW,YAAY,UAAU,iBAAiB;EACjE;IACE,UAAU;IACV,WAAW;IACX,SAAS;IACT,SAAS;;;;;;UAOI,OACf,kBAAkB,mBAClB,mBAAmB,WACnB,iBAAiB,WACjB,wBAAwB,uBACxB,cAAc,sBAAsB;WAE3B;WACA,UAAU;WACV,cAAc,gBAAgB,YAAY,UAAU;EAE7D,WACE,QAAQ,sBAAsB,YAAY,WAC1C,SAAS,yBACT,OAAO,sBACN,OAAO,OAAO,gBAAgB,MAAM;EAEvC,YAAY,OAAO;;;;;;;EAQnB,aAAa,MAAM,QAAQ,OAAO;;UAGnB;GAEb,UAAU,WACV,UAAU,WACV,kBAAkB,mBAClB,wBAAwB,mCACxB,cAAc,sBAAsB,sBACpC,UAAU,0BAA0B,uBAEpC,QAAQ,iBAAiB,GAAG,GAAG,WAAW,iBAAiB,OAAO,KACjE,wBAAwB,WAAW,GAAG,GAAG,iBAAiB;EAE7D,cAAc,UAAU,8BAA8B,wBAAwB;;cAGnE,cAAc;KAgGf,wBAAwB,UAAU,4BAC5C,UAAU,WACV,UAAU,WACV,kBAAkB,mBAClB,wBAAwB,mCACxB,cAAc,sBAAsB,sBAEpC,QAAQ,iBAAiB,GAAG,GAAG,WAAW,iBAAiB,OAAO,OAC/D,wBAAwB,WAAW,GAAG,GAAG,iBAAiB;iBAE/C,YAAY,UAAU,4BAA4B,wBAAwB"}
package/dist/plugin.d.mts CHANGED
@@ -1,7 +1,6 @@
1
1
  import { AnyContractRouter, AnySchema, InferSchemaOutput } from "@orpc/contract";
2
2
  import { Context, Effect, Layer, Scope } from "effect";
3
3
  import { Implementer, Router } from "@orpc/server";
4
-
5
4
  //#region src/plugin.d.ts
6
5
  type ContextOutput<T> = T extends AnySchema ? InferSchemaOutput<T> : Record<string, never>;
7
6
  type PluginConfigFor<V extends AnySchema, S extends AnySchema, TRequestContext extends AnySchema | undefined> = {
@@ -20,6 +19,8 @@ type ServiceOf<T> = T extends Context.Tag<any, infer S> ? S : never;
20
19
  type PluginServicesTools = {
21
20
  buildService: <T>(tag: T, layer: Layer.Layer<any, any, any>) => Effect.Effect<ServiceOf<T>>;
22
21
  };
22
+ declare const PluginIdTag_base: Context.TagClass<PluginIdTag, "PluginId", string>;
23
+ declare class PluginIdTag extends PluginIdTag_base {}
23
24
  type PluginDefinition<V extends AnySchema, S extends AnySchema, TContract extends AnyContractRouter, TRequestContext extends AnySchema | undefined, TDeps extends Record<string, any>, P extends Record<string, unknown>> = {
24
25
  variables: V;
25
26
  secrets: S;
@@ -71,5 +72,5 @@ declare const createPlugin: CreatePluginFn;
71
72
  type CreatePluginWithPlugins<P extends Record<string, unknown>> = <V extends AnySchema, S extends AnySchema, TContract extends AnyContractRouter, TRequestContext extends AnySchema | undefined = undefined, TDeps extends Record<string, any> = Record<never, never>>(config: PluginDefinition<V, S, TContract, TRequestContext, TDeps, P>) => LoadedPluginWithBinding<TContract, V, S, TRequestContext, TDeps>;
72
73
  declare function withPlugins<P extends Record<string, unknown>>(): CreatePluginWithPlugins<P>;
73
74
  //#endregion
74
- export { CreatePluginFn, CreatePluginWithPlugins, LoadedPluginWithBinding, Plugin, PluginConfigFor, PluginServicesTools, createPlugin, withPlugins };
75
+ export { CreatePluginFn, CreatePluginWithPlugins, LoadedPluginWithBinding, Plugin, PluginConfigFor, PluginIdTag, PluginServicesTools, createPlugin, withPlugins };
75
76
  //# sourceMappingURL=plugin.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.mts","names":[],"sources":["../src/plugin.ts"],"mappings":"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"}
1
+ {"version":3,"file":"plugin.d.mts","names":[],"sources":["../src/plugin.ts"],"mappings":";;;;KAOK,cAAc,KAAK,UAAU,YAAY,kBAAkB,KAAK;KAEzD,gBACV,UAAU,WACV,UAAU,WACV,wBAAwB;EAExB,WAAW;EACX,SAAS;EACT,SAAS;;KAGN,sBAAsB,UAAU,WAAW,UAAU;EACxD,WAAW,kBAAkB;EAC7B,SAAS,kBAAkB;;;;;KAMxB,UAAU,KAAK,UAAU,QAAc,eAAe,KAAK;KAEpD;EACV,eAAe,GAAG,KAAK,GAAG,OAAO,MAAM,yBAAyB,OAAO,OAAO,UAAU;;;cAG7E,oBAAoB;KAE5B,iBACH,UAAU,WACV,UAAU,WACV,kBAAkB,mBAClB,wBAAwB,uBACxB,cAAc,qBACd,UAAU;EAEV,WAAW;EACX,SAAS;EACT,UAAU;EACV,UAAU;;;;;;EAMV,cACE,QAAQ,sBAAsB,GAAG,IACjC,SAAS,GACT,OAAO,wBACJ,OAAO,OAAO,OAAO,OAAO,MAAM;EACvC,eACE,MAAM,OACN,SAAS,YAAY,WAAW,cAAc,kBAAkB,cAAc,sBAC3E,OAAO;EACZ,YAAY,MAAM,UAAU,OAAO,aAAa;;;;;UAMjC,wBACf,kBAAkB,mBAClB,mBAAmB,WACnB,iBAAiB,WACjB,wBAAwB,uBACxB,cAAc,sBAAsB;UAE5B,OAAO,WAAW,YAAY,UAAU,iBAAiB;EACjE;IACE,UAAU;IACV,WAAW;IACX,SAAS;IACT,SAAS;;;;;;UAOI,OACf,kBAAkB,mBAClB,mBAAmB,WACnB,iBAAiB,WACjB,wBAAwB,uBACxB,cAAc,sBAAsB;WAE3B;WACA,UAAU;WACV,cAAc,gBAAgB,YAAY,UAAU;EAE7D,WACE,QAAQ,sBAAsB,YAAY,WAC1C,SAAS,yBACT,OAAO,sBACN,OAAO,OAAO,gBAAgB,MAAM;EAEvC,YAAY,OAAO;;;;;;;EAQnB,aAAa,MAAM,QAAQ,OAAO;;UAGnB;GAEb,UAAU,WACV,UAAU,WACV,kBAAkB,mBAClB,wBAAwB,mCACxB,cAAc,sBAAsB,sBACpC,UAAU,0BAA0B,uBAEpC,QAAQ,iBAAiB,GAAG,GAAG,WAAW,iBAAiB,OAAO,KACjE,wBAAwB,WAAW,GAAG,GAAG,iBAAiB;EAE7D,cAAc,UAAU,8BAA8B,wBAAwB;;cAGnE,cAAc;KAgGf,wBAAwB,UAAU,4BAC5C,UAAU,WACV,UAAU,WACV,kBAAkB,mBAClB,wBAAwB,mCACxB,cAAc,sBAAsB,sBAEpC,QAAQ,iBAAiB,GAAG,GAAG,WAAW,iBAAiB,OAAO,OAC/D,wBAAwB,WAAW,GAAG,GAAG,iBAAiB;iBAE/C,YAAY,UAAU,4BAA4B,wBAAwB"}
package/dist/plugin.mjs CHANGED
@@ -1,9 +1,10 @@
1
1
  import { extractFromFiberFailure, formatORPCError } from "./runtime/errors.mjs";
2
2
  import { ORPCError } from "@orpc/contract";
3
- import { Effect } from "effect";
3
+ import { Context, Effect } from "effect";
4
4
  import { implement, onError } from "@orpc/server";
5
5
 
6
6
  //#region src/plugin.ts
7
+ var PluginIdTag = class extends Context.Tag("PluginId")() {};
7
8
  const createPlugin = function createPlugin(config) {
8
9
  const configSchema = {
9
10
  variables: config.variables,
@@ -56,5 +57,5 @@ function withPlugins() {
56
57
  createPlugin.withPlugins = withPlugins;
57
58
 
58
59
  //#endregion
59
- export { createPlugin, withPlugins };
60
+ export { PluginIdTag, createPlugin, withPlugins };
60
61
  //# sourceMappingURL=plugin.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.mjs","names":[],"sources":["../src/plugin.ts"],"sourcesContent":["import type { AnyContractRouter, AnySchema, InferSchemaOutput } from \"@orpc/contract\";\nimport { ORPCError } from \"@orpc/contract\";\nimport type { Implementer, Router } from \"@orpc/server\";\nimport { implement, onError } from \"@orpc/server\";\nimport { Effect, type Context as EffectContext, type Layer, type Scope } from \"effect\";\nimport { extractFromFiberFailure, formatORPCError } from \"./runtime/errors\";\n\ntype ContextOutput<T> = T extends AnySchema ? InferSchemaOutput<T> : Record<string, never>;\n\nexport type PluginConfigFor<\n V extends AnySchema,\n S extends AnySchema,\n TRequestContext extends AnySchema | undefined,\n> = {\n variables: V;\n secrets: S;\n context: TRequestContext;\n};\n\ntype PluginInitializeInput<V extends AnySchema, S extends AnySchema> = {\n variables: InferSchemaOutput<V>;\n secrets: InferSchemaOutput<S>;\n};\n\n/**\n * Tools provided to plugin initialize/services for building long-lived scoped resources.\n */\ntype ServiceOf<T> = T extends EffectContext.Tag<any, infer S> ? S : never;\n\nexport type PluginServicesTools = {\n buildService: <T>(tag: T, layer: Layer.Layer<any, any, any>) => Effect.Effect<ServiceOf<T>>;\n};\n\ntype PluginDefinition<\n V extends AnySchema,\n S extends AnySchema,\n TContract extends AnyContractRouter,\n TRequestContext extends AnySchema | undefined,\n TDeps extends Record<string, any>,\n P extends Record<string, unknown>,\n> = {\n variables: V;\n secrets: S;\n contract: TContract;\n context?: TRequestContext;\n /**\n * Initialize the plugin and build dependencies.\n * A third argument `tools` is provided for building long-lived scoped resources\n * (e.g. database pools) via `tools.buildService(tag, layer)`.\n */\n initialize?: (\n config: PluginInitializeInput<V, S>,\n plugins: P,\n tools: PluginServicesTools,\n ) => Effect.Effect<TDeps, Error, Scope.Scope>;\n createRouter: (\n deps: TDeps,\n builder: Implementer<TContract, ContextOutput<TRequestContext>, ContextOutput<TRequestContext>>,\n ) => Router<TContract, any>;\n shutdown?: (deps: TDeps) => Effect.Effect<void, Error, never>;\n};\n\n/**\n * Loaded plugin with static binding property\n */\nexport interface LoadedPluginWithBinding<\n TContract extends AnyContractRouter,\n TVariables extends AnySchema,\n TSecrets extends AnySchema,\n TRequestContext extends AnySchema | undefined,\n TDeps extends Record<string, any> = Record<never, never>,\n> {\n new (): Plugin<TContract, TVariables, TSecrets, TRequestContext, TDeps>;\n binding: {\n contract: TContract;\n variables: TVariables;\n secrets: TSecrets;\n context: TRequestContext;\n };\n}\n\n/**\n * Plugin interface\n */\nexport interface Plugin<\n TContract extends AnyContractRouter,\n TVariables extends AnySchema,\n TSecrets extends AnySchema,\n TRequestContext extends AnySchema | undefined,\n TDeps extends Record<string, any> = Record<never, never>,\n> {\n readonly id: string;\n readonly contract: TContract;\n readonly configSchema: PluginConfigFor<TVariables, TSecrets, TRequestContext>;\n\n initialize(\n config: PluginInitializeInput<TVariables, TSecrets>,\n plugins: Record<string, unknown>,\n tools: PluginServicesTools,\n ): Effect.Effect<TDeps, unknown, Scope.Scope>;\n\n shutdown(): Effect.Effect<void, never>;\n\n /**\n * Creates the strongly-typed oRPC router for this plugin.\n * The router's procedure types are inferred directly from the contract.\n * @param deps The initialized plugin dependencies\n * @returns A router with procedures matching the plugin's contract\n */\n createRouter(deps: TDeps): Router<TContract, any>;\n}\n\nexport interface CreatePluginFn {\n <\n V extends AnySchema,\n S extends AnySchema,\n TContract extends AnyContractRouter,\n TRequestContext extends AnySchema | undefined = undefined,\n TDeps extends Record<string, any> = Record<never, never>,\n P extends Record<string, unknown> = Record<string, never>,\n >(\n config: PluginDefinition<V, S, TContract, TRequestContext, TDeps, P>,\n ): LoadedPluginWithBinding<TContract, V, S, TRequestContext, TDeps>;\n\n withPlugins: <P extends Record<string, unknown>>() => CreatePluginWithPlugins<P>;\n}\n\nexport const createPlugin: CreatePluginFn = function createPlugin<\n V extends AnySchema,\n S extends AnySchema,\n TContract extends AnyContractRouter,\n TRequestContext extends AnySchema | undefined = undefined,\n TDeps extends Record<string, any> = Record<never, never>,\n P extends Record<string, unknown> = Record<string, never>,\n>(config: PluginDefinition<V, S, TContract, TRequestContext, TDeps, P>) {\n const configSchema: PluginConfigFor<V, S, TRequestContext> = {\n variables: config.variables,\n secrets: config.secrets,\n context: config.context as TRequestContext,\n };\n\n class CreatedPlugin implements Plugin<TContract, V, S, TRequestContext, TDeps> {\n /** set during instantiation - registry key */\n id!: string;\n readonly contract = config.contract;\n readonly configSchema = configSchema;\n\n private _deps: TDeps | null = null;\n\n initialize(\n pluginConfig: PluginInitializeInput<V, S>,\n plugins: Record<string, unknown> = {},\n tools: PluginServicesTools,\n ): Effect.Effect<TDeps, unknown, Scope.Scope> {\n const init = config.initialize ?? (() => Effect.succeed({} as TDeps));\n\n return init(pluginConfig, plugins as P, tools).pipe(\n Effect.tap((deps) =>\n Effect.sync(() => {\n this._deps = deps;\n }),\n ),\n Effect.map(() => this._deps as TDeps),\n Effect.mapError((error) => error as unknown),\n );\n }\n\n shutdown(): Effect.Effect<void, never> {\n const self = this;\n return Effect.gen(function* () {\n if (config.shutdown && self._deps) {\n yield* config\n .shutdown(self._deps)\n .pipe(\n Effect.catchAll((error) =>\n Effect.logWarning(`Plugin shutdown hook failed for ${self.id}`, error),\n ),\n );\n }\n self._deps = null;\n });\n }\n\n createRouter(deps: TDeps): Router<TContract, any> {\n const base = implement(config.contract).$context<ContextOutput<TRequestContext>>();\n const errorMiddleware = onError((error: unknown) => {\n const unwrapped = extractFromFiberFailure(error);\n\n if (unwrapped !== error && unwrapped instanceof ORPCError) {\n throw unwrapped;\n }\n\n const formatted = formatORPCError(error);\n if (formatted) console.error(formatted);\n throw error;\n }) as any;\n\n const builder = (base as any).use(errorMiddleware);\n const router = config.createRouter(deps, builder as any);\n return router as Router<TContract, any>;\n }\n }\n\n const PluginConstructor = CreatedPlugin as unknown as {\n new (): Plugin<TContract, V, S, TRequestContext, TDeps>;\n binding: {\n contract: TContract;\n variables: V;\n secrets: S;\n context: TRequestContext;\n };\n };\n\n PluginConstructor.binding = {\n contract: config.contract,\n variables: config.variables,\n secrets: config.secrets,\n context: config.context as TRequestContext,\n };\n\n return PluginConstructor as LoadedPluginWithBinding<TContract, V, S, TRequestContext, TDeps>;\n};\n\nexport type CreatePluginWithPlugins<P extends Record<string, unknown>> = <\n V extends AnySchema,\n S extends AnySchema,\n TContract extends AnyContractRouter,\n TRequestContext extends AnySchema | undefined = undefined,\n TDeps extends Record<string, any> = Record<never, never>,\n>(\n config: PluginDefinition<V, S, TContract, TRequestContext, TDeps, P>,\n) => LoadedPluginWithBinding<TContract, V, S, TRequestContext, TDeps>;\n\nexport function withPlugins<P extends Record<string, unknown>>(): CreatePluginWithPlugins<P> {\n return <\n V extends AnySchema,\n S extends AnySchema,\n TContract extends AnyContractRouter,\n TRequestContext extends AnySchema | undefined = undefined,\n TDeps extends Record<string, any> = Record<never, never>,\n >(\n config: PluginDefinition<V, S, TContract, TRequestContext, TDeps, P>,\n ) => createPlugin<V, S, TContract, TRequestContext, TDeps, P>(config as any);\n}\n\ncreatePlugin.withPlugins = withPlugins;\n"],"mappings":";;;;;;AA+HA,MAAa,eAA+B,SAAS,aAOnD,QAAsE;CACtE,MAAM,eAAuD;EAC3D,WAAW,OAAO;EAClB,SAAS,OAAO;EAChB,SAAS,OAAO;EACjB;CAED,MAAM,cAAyE;;EAE7E;EACA,AAAS,WAAW,OAAO;EAC3B,AAAS,eAAe;EAExB,AAAQ,QAAsB;EAE9B,WACE,cACA,UAAmC,EAAE,EACrC,OAC4C;AAG5C,WAFa,OAAO,qBAAqB,OAAO,QAAQ,EAAE,CAAU,GAExD,cAAc,SAAc,MAAM,CAAC,KAC7C,OAAO,KAAK,SACV,OAAO,WAAW;AAChB,SAAK,QAAQ;KACb,CACH,EACD,OAAO,UAAU,KAAK,MAAe,EACrC,OAAO,UAAU,UAAU,MAAiB,CAC7C;;EAGH,WAAuC;GACrC,MAAM,OAAO;AACb,UAAO,OAAO,IAAI,aAAa;AAC7B,QAAI,OAAO,YAAY,KAAK,MAC1B,QAAO,OACJ,SAAS,KAAK,MAAM,CACpB,KACC,OAAO,UAAU,UACf,OAAO,WAAW,mCAAmC,KAAK,MAAM,MAAM,CACvE,CACF;AAEL,SAAK,QAAQ;KACb;;EAGJ,aAAa,MAAqC;GAChD,MAAM,OAAO,UAAU,OAAO,SAAS,CAAC,UAA0C;GAClF,MAAM,kBAAkB,SAAS,UAAmB;IAClD,MAAM,YAAY,wBAAwB,MAAM;AAEhD,QAAI,cAAc,SAAS,qBAAqB,UAC9C,OAAM;IAGR,MAAM,YAAY,gBAAgB,MAAM;AACxC,QAAI,UAAW,SAAQ,MAAM,UAAU;AACvC,UAAM;KACN;GAEF,MAAM,UAAW,KAAa,IAAI,gBAAgB;AAElD,UADe,OAAO,aAAa,MAAM,QAC5B;;;CAIjB,MAAM,oBAAoB;AAU1B,mBAAkB,UAAU;EAC1B,UAAU,OAAO;EACjB,WAAW,OAAO;EAClB,SAAS,OAAO;EAChB,SAAS,OAAO;EACjB;AAED,QAAO;;AAaT,SAAgB,cAA6E;AAC3F,SAOE,WACG,aAAyD,OAAc;;AAG9E,aAAa,cAAc"}
1
+ {"version":3,"file":"plugin.mjs","names":[],"sources":["../src/plugin.ts"],"sourcesContent":["import type { AnyContractRouter, AnySchema, InferSchemaOutput } from \"@orpc/contract\";\nimport { ORPCError } from \"@orpc/contract\";\nimport type { Implementer, Router } from \"@orpc/server\";\nimport { implement, onError } from \"@orpc/server\";\nimport { Context, Effect, type Context as EffectContext, type Layer, type Scope } from \"effect\";\nimport { extractFromFiberFailure, formatORPCError } from \"./runtime/errors\";\n\ntype ContextOutput<T> = T extends AnySchema ? InferSchemaOutput<T> : Record<string, never>;\n\nexport type PluginConfigFor<\n V extends AnySchema,\n S extends AnySchema,\n TRequestContext extends AnySchema | undefined,\n> = {\n variables: V;\n secrets: S;\n context: TRequestContext;\n};\n\ntype PluginInitializeInput<V extends AnySchema, S extends AnySchema> = {\n variables: InferSchemaOutput<V>;\n secrets: InferSchemaOutput<S>;\n};\n\n/**\n * Tools provided to plugin initialize/services for building long-lived scoped resources.\n */\ntype ServiceOf<T> = T extends EffectContext.Tag<any, infer S> ? S : never;\n\nexport type PluginServicesTools = {\n buildService: <T>(tag: T, layer: Layer.Layer<any, any, any>) => Effect.Effect<ServiceOf<T>>;\n};\n\nexport class PluginIdTag extends Context.Tag(\"PluginId\")<PluginIdTag, string>() {}\n\ntype PluginDefinition<\n V extends AnySchema,\n S extends AnySchema,\n TContract extends AnyContractRouter,\n TRequestContext extends AnySchema | undefined,\n TDeps extends Record<string, any>,\n P extends Record<string, unknown>,\n> = {\n variables: V;\n secrets: S;\n contract: TContract;\n context?: TRequestContext;\n /**\n * Initialize the plugin and build dependencies.\n * A third argument `tools` is provided for building long-lived scoped resources\n * (e.g. database pools) via `tools.buildService(tag, layer)`.\n */\n initialize?: (\n config: PluginInitializeInput<V, S>,\n plugins: P,\n tools: PluginServicesTools,\n ) => Effect.Effect<TDeps, Error, Scope.Scope>;\n createRouter: (\n deps: TDeps,\n builder: Implementer<TContract, ContextOutput<TRequestContext>, ContextOutput<TRequestContext>>,\n ) => Router<TContract, any>;\n shutdown?: (deps: TDeps) => Effect.Effect<void, Error, never>;\n};\n\n/**\n * Loaded plugin with static binding property\n */\nexport interface LoadedPluginWithBinding<\n TContract extends AnyContractRouter,\n TVariables extends AnySchema,\n TSecrets extends AnySchema,\n TRequestContext extends AnySchema | undefined,\n TDeps extends Record<string, any> = Record<never, never>,\n> {\n new (): Plugin<TContract, TVariables, TSecrets, TRequestContext, TDeps>;\n binding: {\n contract: TContract;\n variables: TVariables;\n secrets: TSecrets;\n context: TRequestContext;\n };\n}\n\n/**\n * Plugin interface\n */\nexport interface Plugin<\n TContract extends AnyContractRouter,\n TVariables extends AnySchema,\n TSecrets extends AnySchema,\n TRequestContext extends AnySchema | undefined,\n TDeps extends Record<string, any> = Record<never, never>,\n> {\n readonly id: string;\n readonly contract: TContract;\n readonly configSchema: PluginConfigFor<TVariables, TSecrets, TRequestContext>;\n\n initialize(\n config: PluginInitializeInput<TVariables, TSecrets>,\n plugins: Record<string, unknown>,\n tools: PluginServicesTools,\n ): Effect.Effect<TDeps, unknown, Scope.Scope>;\n\n shutdown(): Effect.Effect<void, never>;\n\n /**\n * Creates the strongly-typed oRPC router for this plugin.\n * The router's procedure types are inferred directly from the contract.\n * @param deps The initialized plugin dependencies\n * @returns A router with procedures matching the plugin's contract\n */\n createRouter(deps: TDeps): Router<TContract, any>;\n}\n\nexport interface CreatePluginFn {\n <\n V extends AnySchema,\n S extends AnySchema,\n TContract extends AnyContractRouter,\n TRequestContext extends AnySchema | undefined = undefined,\n TDeps extends Record<string, any> = Record<never, never>,\n P extends Record<string, unknown> = Record<string, never>,\n >(\n config: PluginDefinition<V, S, TContract, TRequestContext, TDeps, P>,\n ): LoadedPluginWithBinding<TContract, V, S, TRequestContext, TDeps>;\n\n withPlugins: <P extends Record<string, unknown>>() => CreatePluginWithPlugins<P>;\n}\n\nexport const createPlugin: CreatePluginFn = function createPlugin<\n V extends AnySchema,\n S extends AnySchema,\n TContract extends AnyContractRouter,\n TRequestContext extends AnySchema | undefined = undefined,\n TDeps extends Record<string, any> = Record<never, never>,\n P extends Record<string, unknown> = Record<string, never>,\n>(config: PluginDefinition<V, S, TContract, TRequestContext, TDeps, P>) {\n const configSchema: PluginConfigFor<V, S, TRequestContext> = {\n variables: config.variables,\n secrets: config.secrets,\n context: config.context as TRequestContext,\n };\n\n class CreatedPlugin implements Plugin<TContract, V, S, TRequestContext, TDeps> {\n /** set during instantiation - registry key */\n id!: string;\n readonly contract = config.contract;\n readonly configSchema = configSchema;\n\n private _deps: TDeps | null = null;\n\n initialize(\n pluginConfig: PluginInitializeInput<V, S>,\n plugins: Record<string, unknown> = {},\n tools: PluginServicesTools,\n ): Effect.Effect<TDeps, unknown, Scope.Scope> {\n const init = config.initialize ?? (() => Effect.succeed({} as TDeps));\n\n return init(pluginConfig, plugins as P, tools).pipe(\n Effect.tap((deps) =>\n Effect.sync(() => {\n this._deps = deps;\n }),\n ),\n Effect.map(() => this._deps as TDeps),\n Effect.mapError((error) => error as unknown),\n );\n }\n\n shutdown(): Effect.Effect<void, never> {\n const self = this;\n return Effect.gen(function* () {\n if (config.shutdown && self._deps) {\n yield* config\n .shutdown(self._deps)\n .pipe(\n Effect.catchAll((error) =>\n Effect.logWarning(`Plugin shutdown hook failed for ${self.id}`, error),\n ),\n );\n }\n self._deps = null;\n });\n }\n\n createRouter(deps: TDeps): Router<TContract, any> {\n const base = implement(config.contract).$context<ContextOutput<TRequestContext>>();\n const errorMiddleware = onError((error: unknown) => {\n const unwrapped = extractFromFiberFailure(error);\n\n if (unwrapped !== error && unwrapped instanceof ORPCError) {\n throw unwrapped;\n }\n\n const formatted = formatORPCError(error);\n if (formatted) console.error(formatted);\n throw error;\n }) as any;\n\n const builder = (base as any).use(errorMiddleware);\n const router = config.createRouter(deps, builder as any);\n return router as Router<TContract, any>;\n }\n }\n\n const PluginConstructor = CreatedPlugin as unknown as {\n new (): Plugin<TContract, V, S, TRequestContext, TDeps>;\n binding: {\n contract: TContract;\n variables: V;\n secrets: S;\n context: TRequestContext;\n };\n };\n\n PluginConstructor.binding = {\n contract: config.contract,\n variables: config.variables,\n secrets: config.secrets,\n context: config.context as TRequestContext,\n };\n\n return PluginConstructor as LoadedPluginWithBinding<TContract, V, S, TRequestContext, TDeps>;\n};\n\nexport type CreatePluginWithPlugins<P extends Record<string, unknown>> = <\n V extends AnySchema,\n S extends AnySchema,\n TContract extends AnyContractRouter,\n TRequestContext extends AnySchema | undefined = undefined,\n TDeps extends Record<string, any> = Record<never, never>,\n>(\n config: PluginDefinition<V, S, TContract, TRequestContext, TDeps, P>,\n) => LoadedPluginWithBinding<TContract, V, S, TRequestContext, TDeps>;\n\nexport function withPlugins<P extends Record<string, unknown>>(): CreatePluginWithPlugins<P> {\n return <\n V extends AnySchema,\n S extends AnySchema,\n TContract extends AnyContractRouter,\n TRequestContext extends AnySchema | undefined = undefined,\n TDeps extends Record<string, any> = Record<never, never>,\n >(\n config: PluginDefinition<V, S, TContract, TRequestContext, TDeps, P>,\n ) => createPlugin<V, S, TContract, TRequestContext, TDeps, P>(config as any);\n}\n\ncreatePlugin.withPlugins = withPlugins;\n"],"mappings":";;;;;;AAiCA,IAAa,cAAb,cAAiC,QAAQ,IAAI,UAAU,CAAC,CAAsB,CAAC,CAAC,CAAC;AAgGjF,MAAa,eAA+B,SAAS,aAOnD,QAAsE;CACtE,MAAM,eAAuD;EAC3D,WAAW,OAAO;EAClB,SAAS,OAAO;EAChB,SAAS,OAAO;CAClB;CAEA,MAAM,cAAyE;;EAE7E;EACA,AAAS,WAAW,OAAO;EAC3B,AAAS,eAAe;EAExB,AAAQ,QAAsB;EAE9B,WACE,cACA,UAAmC,CAAC,GACpC,OAC4C;GAG5C,QAFa,OAAO,qBAAqB,OAAO,QAAQ,CAAC,CAAU,GAExD,CAAC,cAAc,SAAc,KAAK,CAAC,CAAC,KAC7C,OAAO,KAAK,SACV,OAAO,WAAW;IAChB,KAAK,QAAQ;GACf,CAAC,CACH,GACA,OAAO,UAAU,KAAK,KAAc,GACpC,OAAO,UAAU,UAAU,KAAgB,CAC7C;EACF;EAEA,WAAuC;GACrC,MAAM,OAAO;GACb,OAAO,OAAO,IAAI,aAAa;IAC7B,IAAI,OAAO,YAAY,KAAK,OAC1B,OAAO,OACJ,SAAS,KAAK,KAAK,CAAC,CACpB,KACC,OAAO,UAAU,UACf,OAAO,WAAW,mCAAmC,KAAK,MAAM,KAAK,CACvE,CACF;IAEJ,KAAK,QAAQ;GACf,CAAC;EACH;EAEA,aAAa,MAAqC;GAChD,MAAM,OAAO,UAAU,OAAO,QAAQ,CAAC,CAAC,SAAyC;GACjF,MAAM,kBAAkB,SAAS,UAAmB;IAClD,MAAM,YAAY,wBAAwB,KAAK;IAE/C,IAAI,cAAc,SAAS,qBAAqB,WAC9C,MAAM;IAGR,MAAM,YAAY,gBAAgB,KAAK;IACvC,IAAI,WAAW,QAAQ,MAAM,SAAS;IACtC,MAAM;GACR,CAAC;GAED,MAAM,UAAW,KAAa,IAAI,eAAe;GAEjD,OADe,OAAO,aAAa,MAAM,OAC7B;EACd;CACF;CAEA,MAAM,oBAAoB;CAU1B,kBAAkB,UAAU;EAC1B,UAAU,OAAO;EACjB,WAAW,OAAO;EAClB,SAAS,OAAO;EAChB,SAAS,OAAO;CAClB;CAEA,OAAO;AACT;AAYA,SAAgB,cAA6E;CAC3F,QAOE,WACG,aAAyD,MAAa;AAC7E;AAEA,aAAa,cAAc"}
@@ -1,4 +1,3 @@
1
- const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
2
1
  let _orpc_contract = require("@orpc/contract");
3
2
  let effect = require("effect");
4
3
 
@@ -1 +1 @@
1
- {"version":3,"file":"errors.cjs","names":["Data","ORPCError","Cause"],"sources":["../../src/runtime/errors.ts"],"sourcesContent":["import { ORPCError } from \"@orpc/contract\";\nimport { Cause, Data } from \"effect\";\nimport type { z } from \"zod\";\n\nexport class PluginRuntimeError extends Data.TaggedError(\"PluginRuntimeError\")<{\n readonly pluginId?: string;\n readonly operation?: string;\n readonly procedureName?: string;\n readonly cause?: Error;\n readonly retryable: boolean;\n}> {}\n\nexport class ModuleFederationError extends Data.TaggedError(\"ModuleFederationError\")<{\n readonly pluginId: string;\n readonly remoteUrl: string;\n readonly cause?: Error;\n}> {}\n\nexport class ValidationError extends Data.TaggedError(\"ValidationError\")<{\n readonly pluginId: string;\n readonly stage: \"config\" | \"input\" | \"output\" | \"state\";\n readonly zodError: z.ZodError;\n}> {}\n\nconst extractErrorMessage = (error: unknown): string => {\n if (!error) return \"Unknown error\";\n\n if (error instanceof Error) {\n if (error.message) return error.message;\n if ((error as any).cause instanceof Error) {\n return extractErrorMessage((error as any).cause);\n }\n }\n\n if (error instanceof AggregateError && error.errors?.length) {\n return error.errors.map((e) => extractErrorMessage(e)).join(\"; \");\n }\n\n if (typeof error === \"object\" && \"message\" in error) {\n return String((error as any).message);\n }\n\n return String(error);\n};\n\nconst formatValidationIssue = (issue: any, index: number, maxDisplay: number): string => {\n if (index >= maxDisplay) return \"\";\n\n const path =\n Array.isArray(issue.path) && issue.path.length > 0\n ? issue.path.join(\".\")\n : issue.path || \"root\";\n\n const message = issue.message || \"Validation failed\";\n\n return `│ ${index + 1}. ${path}: ${message}`;\n};\n\nconst formatDataPreview = (data: unknown, maxLength = 100): string => {\n if (!data) return \"undefined\";\n\n try {\n const str = JSON.stringify(data);\n if (str.length <= maxLength) return str;\n\n if (typeof data === \"object\" && data !== null) {\n if (Array.isArray(data)) {\n return `Array(${data.length}) [...]`;\n }\n const keys = Object.keys(data);\n return `{ ${keys.slice(0, 3).join(\", \")}${keys.length > 3 ? \", ...\" : \"\"} }`;\n }\n\n return `${str.slice(0, maxLength)}...`;\n } catch {\n return String(data).slice(0, maxLength);\n }\n};\n\nconst formatORPCValidationError = (error: any): string[] | null => {\n const cause = error?.cause || error;\n\n if (!cause?.issues || !Array.isArray(cause.issues) || cause.issues.length === 0) {\n return null;\n }\n\n const lines: string[] = [];\n const errorType = error?.message || cause?.message || \"Validation failed\";\n\n lines.push(`\\n╭─ oRPC Validation Error ${\"─\".repeat(30)}`);\n lines.push(`│ ${errorType}`);\n lines.push(`│`);\n\n const maxDisplay = 10;\n const totalIssues = cause.issues.length;\n\n lines.push(`│ Issues (${totalIssues}):`);\n\n const displayedIssues = cause.issues.slice(0, maxDisplay);\n displayedIssues.forEach((issue: any, idx: number) => {\n const formatted = formatValidationIssue(issue, idx, maxDisplay);\n if (formatted) lines.push(formatted);\n });\n\n if (totalIssues > maxDisplay) {\n lines.push(`│ ... and ${totalIssues - maxDisplay} more`);\n }\n\n if (cause.data !== undefined) {\n lines.push(`│`);\n lines.push(`│ Data preview: ${formatDataPreview(cause.data, 80)}`);\n }\n\n lines.push(`╰${\"─\".repeat(50)}\\n`);\n\n return lines;\n};\n\nexport const formatORPCError = (error: any): string | null => {\n if (!(error instanceof ORPCError)) {\n return null;\n }\n\n const validationLines = formatORPCValidationError(error);\n if (validationLines) {\n return validationLines.join(\"\\n\");\n }\n\n const lines: string[] = [];\n const code = error.code || \"UNKNOWN\";\n const status = error.status || 500;\n const message = error.message || \"An error occurred\";\n\n lines.push(`\\n╭─ oRPC Error ${\"─\".repeat(40)}`);\n const messageLines = message.split(\"\\n\");\n for (const line of messageLines) {\n lines.push(`│ ${line}`);\n }\n lines.push(`│ Code: ${code} (${status})`);\n lines.push(`│`);\n\n if (error.data) {\n const dataType = typeof error.data;\n if (dataType === \"object\" && error.data !== null) {\n if (\"retryAfter\" in error.data) {\n lines.push(`│ Retry after: ${error.data.retryAfter} seconds`);\n }\n if (\"remainingRequests\" in error.data) {\n lines.push(`│ Remaining: ${error.data.remainingRequests} requests`);\n }\n if (\"host\" in error.data) {\n lines.push(`│ Host: ${error.data.host}`);\n }\n if (\"port\" in error.data) {\n lines.push(`│ Port: ${error.data.port}`);\n }\n if (\"suggestion\" in error.data) {\n lines.push(`│ → ${error.data.suggestion}`);\n }\n if (\"resource\" in error.data) {\n lines.push(`│ Resource: ${error.data.resource}`);\n }\n if (\"resourceId\" in error.data) {\n lines.push(`│ ID: ${error.data.resourceId}`);\n }\n }\n }\n\n switch (code) {\n case \"UNAUTHORIZED\":\n lines.push(`│ → Check your API key or credentials`);\n break;\n case \"TOO_MANY_REQUESTS\":\n lines.push(`│ → Wait before retrying`);\n break;\n case \"SERVICE_UNAVAILABLE\":\n case \"BAD_GATEWAY\":\n case \"GATEWAY_TIMEOUT\":\n lines.push(`│ → The service may be temporarily unavailable`);\n break;\n case \"TIMEOUT\":\n lines.push(`│ → The operation took too long`);\n break;\n }\n\n lines.push(`╰${\"─\".repeat(50)}\\n`);\n return lines.join(\"\\n\");\n};\n\nconst isRetryableError = (message: string): boolean => {\n const retryablePatterns = [\"ETIMEDOUT\", \"ECONNRESET\", \"timeout\", \"503\", \"429\"];\n return retryablePatterns.some((p) => message.toLowerCase().includes(p.toLowerCase()));\n};\n\n// Helper to determine if an oRPC error code is retryable\nexport const isRetryableORPCCode = (code: string): boolean => {\n switch (code) {\n case \"TOO_MANY_REQUESTS\":\n case \"SERVICE_UNAVAILABLE\":\n case \"BAD_GATEWAY\":\n case \"GATEWAY_TIMEOUT\":\n case \"TIMEOUT\":\n return true;\n default:\n return false;\n }\n};\n\n// Convert ORPC errors from plugin procedures to PluginRuntimeError\nexport const wrapORPCError = (\n orpcError: ORPCError<string, unknown>,\n pluginId?: string,\n procedureName?: string,\n operation?: string,\n): PluginRuntimeError => {\n return new PluginRuntimeError({\n pluginId,\n operation,\n procedureName,\n retryable: isRetryableORPCCode(orpcError.code),\n cause: orpcError as Error,\n });\n};\n\n/**\n * Extracts the underlying error from Effect's FiberFailure wrapper.\n * When Effect.runPromise rejects, errors are wrapped in FiberFailure.\n * This extracts the original error so oRPC can handle it properly.\n */\nexport const extractFromFiberFailure = (error: unknown): unknown => {\n if (!error || typeof error !== \"object\") return error;\n\n if (\"cause\" in error) {\n const cause = (error as { cause?: unknown }).cause;\n\n if (cause && typeof cause === \"object\" && \"_tag\" in cause) {\n try {\n const squashed = Cause.squash(cause as Cause.Cause<unknown>);\n if (squashed instanceof ORPCError) {\n return squashed;\n }\n return squashed;\n } catch {\n // Not a valid Cause\n }\n }\n\n if (cause instanceof ORPCError) {\n return cause;\n }\n }\n\n return error;\n};\n\n// Universal error converter for the runtime\nexport const toPluginRuntimeError = (\n error: unknown,\n pluginId?: string,\n procedureName?: string,\n operation?: string,\n defaultRetryable = false,\n): PluginRuntimeError => {\n if (error instanceof ORPCError) {\n return wrapORPCError(error, pluginId, procedureName, operation);\n }\n\n if (error instanceof PluginRuntimeError) {\n return error;\n }\n\n return new PluginRuntimeError({\n pluginId,\n operation,\n procedureName,\n retryable: defaultRetryable || isRetryableError(extractErrorMessage(error)),\n cause: error instanceof Error ? error : new Error(extractErrorMessage(error)),\n });\n};\n"],"mappings":";;;;;AAIA,IAAa,qBAAb,cAAwCA,YAAK,YAAY,qBAAqB,CAM3E;AAEH,IAAa,wBAAb,cAA2CA,YAAK,YAAY,wBAAwB,CAIjF;AAEH,IAAa,kBAAb,cAAqCA,YAAK,YAAY,kBAAkB,CAIrE;AAEH,MAAM,uBAAuB,UAA2B;AACtD,KAAI,CAAC,MAAO,QAAO;AAEnB,KAAI,iBAAiB,OAAO;AAC1B,MAAI,MAAM,QAAS,QAAO,MAAM;AAChC,MAAK,MAAc,iBAAiB,MAClC,QAAO,oBAAqB,MAAc,MAAM;;AAIpD,KAAI,iBAAiB,kBAAkB,MAAM,QAAQ,OACnD,QAAO,MAAM,OAAO,KAAK,MAAM,oBAAoB,EAAE,CAAC,CAAC,KAAK,KAAK;AAGnE,KAAI,OAAO,UAAU,YAAY,aAAa,MAC5C,QAAO,OAAQ,MAAc,QAAQ;AAGvC,QAAO,OAAO,MAAM;;AAGtB,MAAM,yBAAyB,OAAY,OAAe,eAA+B;AACvF,KAAI,SAAS,WAAY,QAAO;CAEhC,MAAM,OACJ,MAAM,QAAQ,MAAM,KAAK,IAAI,MAAM,KAAK,SAAS,IAC7C,MAAM,KAAK,KAAK,IAAI,GACpB,MAAM,QAAQ;CAEpB,MAAM,UAAU,MAAM,WAAW;AAEjC,QAAO,QAAQ,QAAQ,EAAE,IAAI,KAAK,IAAI;;AAGxC,MAAM,qBAAqB,MAAe,YAAY,QAAgB;AACpE,KAAI,CAAC,KAAM,QAAO;AAElB,KAAI;EACF,MAAM,MAAM,KAAK,UAAU,KAAK;AAChC,MAAI,IAAI,UAAU,UAAW,QAAO;AAEpC,MAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAC7C,OAAI,MAAM,QAAQ,KAAK,CACrB,QAAO,SAAS,KAAK,OAAO;GAE9B,MAAM,OAAO,OAAO,KAAK,KAAK;AAC9B,UAAO,KAAK,KAAK,MAAM,GAAG,EAAE,CAAC,KAAK,KAAK,GAAG,KAAK,SAAS,IAAI,UAAU,GAAG;;AAG3E,SAAO,GAAG,IAAI,MAAM,GAAG,UAAU,CAAC;SAC5B;AACN,SAAO,OAAO,KAAK,CAAC,MAAM,GAAG,UAAU;;;AAI3C,MAAM,6BAA6B,UAAgC;CACjE,MAAM,QAAQ,OAAO,SAAS;AAE9B,KAAI,CAAC,OAAO,UAAU,CAAC,MAAM,QAAQ,MAAM,OAAO,IAAI,MAAM,OAAO,WAAW,EAC5E,QAAO;CAGT,MAAM,QAAkB,EAAE;CAC1B,MAAM,YAAY,OAAO,WAAW,OAAO,WAAW;AAEtD,OAAM,KAAK,8BAA8B,IAAI,OAAO,GAAG,GAAG;AAC1D,OAAM,KAAK,MAAM,YAAY;AAC7B,OAAM,KAAK,IAAI;CAEf,MAAM,aAAa;CACnB,MAAM,cAAc,MAAM,OAAO;AAEjC,OAAM,KAAK,cAAc,YAAY,IAAI;AAGzC,CADwB,MAAM,OAAO,MAAM,GAAG,WAC/B,CAAC,SAAS,OAAY,QAAgB;EACnD,MAAM,YAAY,sBAAsB,OAAO,KAAK,WAAW;AAC/D,MAAI,UAAW,OAAM,KAAK,UAAU;GACpC;AAEF,KAAI,cAAc,WAChB,OAAM,KAAK,gBAAgB,cAAc,WAAW,OAAO;AAG7D,KAAI,MAAM,SAAS,QAAW;AAC5B,QAAM,KAAK,IAAI;AACf,QAAM,KAAK,oBAAoB,kBAAkB,MAAM,MAAM,GAAG,GAAG;;AAGrE,OAAM,KAAK,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI;AAElC,QAAO;;AAGT,MAAa,mBAAmB,UAA8B;AAC5D,KAAI,EAAE,iBAAiBC,0BACrB,QAAO;CAGT,MAAM,kBAAkB,0BAA0B,MAAM;AACxD,KAAI,gBACF,QAAO,gBAAgB,KAAK,KAAK;CAGnC,MAAM,QAAkB,EAAE;CAC1B,MAAM,OAAO,MAAM,QAAQ;CAC3B,MAAM,SAAS,MAAM,UAAU;CAC/B,MAAM,UAAU,MAAM,WAAW;AAEjC,OAAM,KAAK,mBAAmB,IAAI,OAAO,GAAG,GAAG;CAC/C,MAAM,eAAe,QAAQ,MAAM,KAAK;AACxC,MAAK,MAAM,QAAQ,aACjB,OAAM,KAAK,MAAM,OAAO;AAE1B,OAAM,KAAK,YAAY,KAAK,IAAI,OAAO,GAAG;AAC1C,OAAM,KAAK,IAAI;AAEf,KAAI,MAAM,MAER;MAAI,OADoB,MAAM,SACb,YAAY,MAAM,SAAS,MAAM;AAChD,OAAI,gBAAgB,MAAM,KACxB,OAAM,KAAK,mBAAmB,MAAM,KAAK,WAAW,UAAU;AAEhE,OAAI,uBAAuB,MAAM,KAC/B,OAAM,KAAK,iBAAiB,MAAM,KAAK,kBAAkB,WAAW;AAEtE,OAAI,UAAU,MAAM,KAClB,OAAM,KAAK,YAAY,MAAM,KAAK,OAAO;AAE3C,OAAI,UAAU,MAAM,KAClB,OAAM,KAAK,YAAY,MAAM,KAAK,OAAO;AAE3C,OAAI,gBAAgB,MAAM,KACxB,OAAM,KAAK,QAAQ,MAAM,KAAK,aAAa;AAE7C,OAAI,cAAc,MAAM,KACtB,OAAM,KAAK,gBAAgB,MAAM,KAAK,WAAW;AAEnD,OAAI,gBAAgB,MAAM,KACxB,OAAM,KAAK,UAAU,MAAM,KAAK,aAAa;;;AAKnD,SAAQ,MAAR;EACE,KAAK;AACH,SAAM,KAAK,yCAAyC;AACpD;EACF,KAAK;AACH,SAAM,KAAK,4BAA4B;AACvC;EACF,KAAK;EACL,KAAK;EACL,KAAK;AACH,SAAM,KAAK,kDAAkD;AAC7D;EACF,KAAK;AACH,SAAM,KAAK,mCAAmC;AAC9C;;AAGJ,OAAM,KAAK,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI;AAClC,QAAO,MAAM,KAAK,KAAK;;AAGzB,MAAM,oBAAoB,YAA6B;AAErD,QAAO;EADoB;EAAa;EAAc;EAAW;EAAO;EAChD,CAAC,MAAM,MAAM,QAAQ,aAAa,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;;AAIvF,MAAa,uBAAuB,SAA0B;AAC5D,SAAQ,MAAR;EACE,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK,UACH,QAAO;EACT,QACE,QAAO;;;AAKb,MAAa,iBACX,WACA,UACA,eACA,cACuB;AACvB,QAAO,IAAI,mBAAmB;EAC5B;EACA;EACA;EACA,WAAW,oBAAoB,UAAU,KAAK;EAC9C,OAAO;EACR,CAAC;;;;;;;AAQJ,MAAa,2BAA2B,UAA4B;AAClE,KAAI,CAAC,SAAS,OAAO,UAAU,SAAU,QAAO;AAEhD,KAAI,WAAW,OAAO;EACpB,MAAM,QAAS,MAA8B;AAE7C,MAAI,SAAS,OAAO,UAAU,YAAY,UAAU,MAClD,KAAI;GACF,MAAM,WAAWC,aAAM,OAAO,MAA8B;AAC5D,OAAI,oBAAoBD,yBACtB,QAAO;AAET,UAAO;UACD;AAKV,MAAI,iBAAiBA,yBACnB,QAAO;;AAIX,QAAO;;AAIT,MAAa,wBACX,OACA,UACA,eACA,WACA,mBAAmB,UACI;AACvB,KAAI,iBAAiBA,yBACnB,QAAO,cAAc,OAAO,UAAU,eAAe,UAAU;AAGjE,KAAI,iBAAiB,mBACnB,QAAO;AAGT,QAAO,IAAI,mBAAmB;EAC5B;EACA;EACA;EACA,WAAW,oBAAoB,iBAAiB,oBAAoB,MAAM,CAAC;EAC3E,OAAO,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,oBAAoB,MAAM,CAAC;EAC9E,CAAC"}
1
+ {"version":3,"file":"errors.cjs","names":["Data","ORPCError","Cause"],"sources":["../../src/runtime/errors.ts"],"sourcesContent":["import { ORPCError } from \"@orpc/contract\";\nimport { Cause, Data } from \"effect\";\nimport type { z } from \"zod\";\n\nexport class PluginRuntimeError extends Data.TaggedError(\"PluginRuntimeError\")<{\n readonly pluginId?: string;\n readonly operation?: string;\n readonly procedureName?: string;\n readonly cause?: Error;\n readonly retryable: boolean;\n}> {}\n\nexport class ModuleFederationError extends Data.TaggedError(\"ModuleFederationError\")<{\n readonly pluginId: string;\n readonly remoteUrl: string;\n readonly cause?: Error;\n}> {}\n\nexport class ValidationError extends Data.TaggedError(\"ValidationError\")<{\n readonly pluginId: string;\n readonly stage: \"config\" | \"input\" | \"output\" | \"state\";\n readonly zodError: z.ZodError;\n}> {}\n\nconst extractErrorMessage = (error: unknown): string => {\n if (!error) return \"Unknown error\";\n\n if (error instanceof Error) {\n if (error.message) return error.message;\n if ((error as any).cause instanceof Error) {\n return extractErrorMessage((error as any).cause);\n }\n }\n\n if (error instanceof AggregateError && error.errors?.length) {\n return error.errors.map((e) => extractErrorMessage(e)).join(\"; \");\n }\n\n if (typeof error === \"object\" && \"message\" in error) {\n return String((error as any).message);\n }\n\n return String(error);\n};\n\nconst formatValidationIssue = (issue: any, index: number, maxDisplay: number): string => {\n if (index >= maxDisplay) return \"\";\n\n const path =\n Array.isArray(issue.path) && issue.path.length > 0\n ? issue.path.join(\".\")\n : issue.path || \"root\";\n\n const message = issue.message || \"Validation failed\";\n\n return `│ ${index + 1}. ${path}: ${message}`;\n};\n\nconst formatDataPreview = (data: unknown, maxLength = 100): string => {\n if (!data) return \"undefined\";\n\n try {\n const str = JSON.stringify(data);\n if (str.length <= maxLength) return str;\n\n if (typeof data === \"object\" && data !== null) {\n if (Array.isArray(data)) {\n return `Array(${data.length}) [...]`;\n }\n const keys = Object.keys(data);\n return `{ ${keys.slice(0, 3).join(\", \")}${keys.length > 3 ? \", ...\" : \"\"} }`;\n }\n\n return `${str.slice(0, maxLength)}...`;\n } catch {\n return String(data).slice(0, maxLength);\n }\n};\n\nconst formatORPCValidationError = (error: any): string[] | null => {\n const cause = error?.cause || error;\n\n if (!cause?.issues || !Array.isArray(cause.issues) || cause.issues.length === 0) {\n return null;\n }\n\n const lines: string[] = [];\n const errorType = error?.message || cause?.message || \"Validation failed\";\n\n lines.push(`\\n╭─ oRPC Validation Error ${\"─\".repeat(30)}`);\n lines.push(`│ ${errorType}`);\n lines.push(`│`);\n\n const maxDisplay = 10;\n const totalIssues = cause.issues.length;\n\n lines.push(`│ Issues (${totalIssues}):`);\n\n const displayedIssues = cause.issues.slice(0, maxDisplay);\n displayedIssues.forEach((issue: any, idx: number) => {\n const formatted = formatValidationIssue(issue, idx, maxDisplay);\n if (formatted) lines.push(formatted);\n });\n\n if (totalIssues > maxDisplay) {\n lines.push(`│ ... and ${totalIssues - maxDisplay} more`);\n }\n\n if (cause.data !== undefined) {\n lines.push(`│`);\n lines.push(`│ Data preview: ${formatDataPreview(cause.data, 80)}`);\n }\n\n lines.push(`╰${\"─\".repeat(50)}\\n`);\n\n return lines;\n};\n\nexport const formatORPCError = (error: any): string | null => {\n if (!(error instanceof ORPCError)) {\n return null;\n }\n\n const validationLines = formatORPCValidationError(error);\n if (validationLines) {\n return validationLines.join(\"\\n\");\n }\n\n const lines: string[] = [];\n const code = error.code || \"UNKNOWN\";\n const status = error.status || 500;\n const message = error.message || \"An error occurred\";\n\n lines.push(`\\n╭─ oRPC Error ${\"─\".repeat(40)}`);\n const messageLines = message.split(\"\\n\");\n for (const line of messageLines) {\n lines.push(`│ ${line}`);\n }\n lines.push(`│ Code: ${code} (${status})`);\n lines.push(`│`);\n\n if (error.data) {\n const dataType = typeof error.data;\n if (dataType === \"object\" && error.data !== null) {\n if (\"retryAfter\" in error.data) {\n lines.push(`│ Retry after: ${error.data.retryAfter} seconds`);\n }\n if (\"remainingRequests\" in error.data) {\n lines.push(`│ Remaining: ${error.data.remainingRequests} requests`);\n }\n if (\"host\" in error.data) {\n lines.push(`│ Host: ${error.data.host}`);\n }\n if (\"port\" in error.data) {\n lines.push(`│ Port: ${error.data.port}`);\n }\n if (\"suggestion\" in error.data) {\n lines.push(`│ → ${error.data.suggestion}`);\n }\n if (\"resource\" in error.data) {\n lines.push(`│ Resource: ${error.data.resource}`);\n }\n if (\"resourceId\" in error.data) {\n lines.push(`│ ID: ${error.data.resourceId}`);\n }\n }\n }\n\n switch (code) {\n case \"UNAUTHORIZED\":\n lines.push(`│ → Check your API key or credentials`);\n break;\n case \"TOO_MANY_REQUESTS\":\n lines.push(`│ → Wait before retrying`);\n break;\n case \"SERVICE_UNAVAILABLE\":\n case \"BAD_GATEWAY\":\n case \"GATEWAY_TIMEOUT\":\n lines.push(`│ → The service may be temporarily unavailable`);\n break;\n case \"TIMEOUT\":\n lines.push(`│ → The operation took too long`);\n break;\n }\n\n lines.push(`╰${\"─\".repeat(50)}\\n`);\n return lines.join(\"\\n\");\n};\n\nconst isRetryableError = (message: string): boolean => {\n const retryablePatterns = [\"ETIMEDOUT\", \"ECONNRESET\", \"timeout\", \"503\", \"429\"];\n return retryablePatterns.some((p) => message.toLowerCase().includes(p.toLowerCase()));\n};\n\n// Helper to determine if an oRPC error code is retryable\nexport const isRetryableORPCCode = (code: string): boolean => {\n switch (code) {\n case \"TOO_MANY_REQUESTS\":\n case \"SERVICE_UNAVAILABLE\":\n case \"BAD_GATEWAY\":\n case \"GATEWAY_TIMEOUT\":\n case \"TIMEOUT\":\n return true;\n default:\n return false;\n }\n};\n\n// Convert ORPC errors from plugin procedures to PluginRuntimeError\nexport const wrapORPCError = (\n orpcError: ORPCError<string, unknown>,\n pluginId?: string,\n procedureName?: string,\n operation?: string,\n): PluginRuntimeError => {\n return new PluginRuntimeError({\n pluginId,\n operation,\n procedureName,\n retryable: isRetryableORPCCode(orpcError.code),\n cause: orpcError as Error,\n });\n};\n\n/**\n * Extracts the underlying error from Effect's FiberFailure wrapper.\n * When Effect.runPromise rejects, errors are wrapped in FiberFailure.\n * This extracts the original error so oRPC can handle it properly.\n */\nexport const extractFromFiberFailure = (error: unknown): unknown => {\n if (!error || typeof error !== \"object\") return error;\n\n if (\"cause\" in error) {\n const cause = (error as { cause?: unknown }).cause;\n\n if (cause && typeof cause === \"object\" && \"_tag\" in cause) {\n try {\n const squashed = Cause.squash(cause as Cause.Cause<unknown>);\n if (squashed instanceof ORPCError) {\n return squashed;\n }\n return squashed;\n } catch {\n // Not a valid Cause\n }\n }\n\n if (cause instanceof ORPCError) {\n return cause;\n }\n }\n\n return error;\n};\n\n// Universal error converter for the runtime\nexport const toPluginRuntimeError = (\n error: unknown,\n pluginId?: string,\n procedureName?: string,\n operation?: string,\n defaultRetryable = false,\n): PluginRuntimeError => {\n if (error instanceof ORPCError) {\n return wrapORPCError(error, pluginId, procedureName, operation);\n }\n\n if (error instanceof PluginRuntimeError) {\n return error;\n }\n\n return new PluginRuntimeError({\n pluginId,\n operation,\n procedureName,\n retryable: defaultRetryable || isRetryableError(extractErrorMessage(error)),\n cause: error instanceof Error ? error : new Error(extractErrorMessage(error)),\n });\n};\n"],"mappings":";;;;AAIA,IAAa,qBAAb,cAAwCA,YAAK,YAAY,oBAAoB,CAAC,CAM3E,CAAC;AAEJ,IAAa,wBAAb,cAA2CA,YAAK,YAAY,uBAAuB,CAAC,CAIjF,CAAC;AAEJ,IAAa,kBAAb,cAAqCA,YAAK,YAAY,iBAAiB,CAAC,CAIrE,CAAC;AAEJ,MAAM,uBAAuB,UAA2B;CACtD,IAAI,CAAC,OAAO,OAAO;CAEnB,IAAI,iBAAiB,OAAO;EAC1B,IAAI,MAAM,SAAS,OAAO,MAAM;EAChC,IAAK,MAAc,iBAAiB,OAClC,OAAO,oBAAqB,MAAc,KAAK;CAEnD;CAEA,IAAI,iBAAiB,kBAAkB,MAAM,QAAQ,QACnD,OAAO,MAAM,OAAO,KAAK,MAAM,oBAAoB,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI;CAGlE,IAAI,OAAO,UAAU,YAAY,aAAa,OAC5C,OAAO,OAAQ,MAAc,OAAO;CAGtC,OAAO,OAAO,KAAK;AACrB;AAEA,MAAM,yBAAyB,OAAY,OAAe,eAA+B;CACvF,IAAI,SAAS,YAAY,OAAO;CAEhC,MAAM,OACJ,MAAM,QAAQ,MAAM,IAAI,KAAK,MAAM,KAAK,SAAS,IAC7C,MAAM,KAAK,KAAK,GAAG,IACnB,MAAM,QAAQ;CAEpB,MAAM,UAAU,MAAM,WAAW;CAEjC,OAAO,QAAQ,QAAQ,EAAE,IAAI,KAAK,IAAI;AACxC;AAEA,MAAM,qBAAqB,MAAe,YAAY,QAAgB;CACpE,IAAI,CAAC,MAAM,OAAO;CAElB,IAAI;EACF,MAAM,MAAM,KAAK,UAAU,IAAI;EAC/B,IAAI,IAAI,UAAU,WAAW,OAAO;EAEpC,IAAI,OAAO,SAAS,YAAY,SAAS,MAAM;GAC7C,IAAI,MAAM,QAAQ,IAAI,GACpB,OAAO,SAAS,KAAK,OAAO;GAE9B,MAAM,OAAO,OAAO,KAAK,IAAI;GAC7B,OAAO,KAAK,KAAK,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,SAAS,IAAI,UAAU,GAAG;EAC3E;EAEA,OAAO,GAAG,IAAI,MAAM,GAAG,SAAS,EAAE;CACpC,QAAQ;EACN,OAAO,OAAO,IAAI,CAAC,CAAC,MAAM,GAAG,SAAS;CACxC;AACF;AAEA,MAAM,6BAA6B,UAAgC;CACjE,MAAM,QAAQ,OAAO,SAAS;CAE9B,IAAI,CAAC,OAAO,UAAU,CAAC,MAAM,QAAQ,MAAM,MAAM,KAAK,MAAM,OAAO,WAAW,GAC5E,OAAO;CAGT,MAAM,QAAkB,CAAC;CACzB,MAAM,YAAY,OAAO,WAAW,OAAO,WAAW;CAEtD,MAAM,KAAK,8BAA8B,IAAI,OAAO,EAAE,GAAG;CACzD,MAAM,KAAK,MAAM,WAAW;CAC5B,MAAM,KAAK,GAAG;CAEd,MAAM,aAAa;CACnB,MAAM,cAAc,MAAM,OAAO;CAEjC,MAAM,KAAK,cAAc,YAAY,GAAG;CAGxC,AADwB,MAAM,OAAO,MAAM,GAAG,UAChC,CAAC,CAAC,SAAS,OAAY,QAAgB;EACnD,MAAM,YAAY,sBAAsB,OAAO,KAAK,UAAU;EAC9D,IAAI,WAAW,MAAM,KAAK,SAAS;CACrC,CAAC;CAED,IAAI,cAAc,YAChB,MAAM,KAAK,gBAAgB,cAAc,WAAW,MAAM;CAG5D,IAAI,MAAM,SAAS,QAAW;EAC5B,MAAM,KAAK,GAAG;EACd,MAAM,KAAK,oBAAoB,kBAAkB,MAAM,MAAM,EAAE,GAAG;CACpE;CAEA,MAAM,KAAK,IAAI,IAAI,OAAO,EAAE,EAAE,GAAG;CAEjC,OAAO;AACT;AAEA,MAAa,mBAAmB,UAA8B;CAC5D,IAAI,EAAE,iBAAiBC,2BACrB,OAAO;CAGT,MAAM,kBAAkB,0BAA0B,KAAK;CACvD,IAAI,iBACF,OAAO,gBAAgB,KAAK,IAAI;CAGlC,MAAM,QAAkB,CAAC;CACzB,MAAM,OAAO,MAAM,QAAQ;CAC3B,MAAM,SAAS,MAAM,UAAU;CAC/B,MAAM,UAAU,MAAM,WAAW;CAEjC,MAAM,KAAK,mBAAmB,IAAI,OAAO,EAAE,GAAG;CAC9C,MAAM,eAAe,QAAQ,MAAM,IAAI;CACvC,KAAK,MAAM,QAAQ,cACjB,MAAM,KAAK,MAAM,MAAM;CAEzB,MAAM,KAAK,YAAY,KAAK,IAAI,OAAO,EAAE;CACzC,MAAM,KAAK,GAAG;CAEd,IAAI,MAAM,MAER;MAAI,OADoB,MAAM,SACb,YAAY,MAAM,SAAS,MAAM;GAChD,IAAI,gBAAgB,MAAM,MACxB,MAAM,KAAK,mBAAmB,MAAM,KAAK,WAAW,SAAS;GAE/D,IAAI,uBAAuB,MAAM,MAC/B,MAAM,KAAK,iBAAiB,MAAM,KAAK,kBAAkB,UAAU;GAErE,IAAI,UAAU,MAAM,MAClB,MAAM,KAAK,YAAY,MAAM,KAAK,MAAM;GAE1C,IAAI,UAAU,MAAM,MAClB,MAAM,KAAK,YAAY,MAAM,KAAK,MAAM;GAE1C,IAAI,gBAAgB,MAAM,MACxB,MAAM,KAAK,QAAQ,MAAM,KAAK,YAAY;GAE5C,IAAI,cAAc,MAAM,MACtB,MAAM,KAAK,gBAAgB,MAAM,KAAK,UAAU;GAElD,IAAI,gBAAgB,MAAM,MACxB,MAAM,KAAK,UAAU,MAAM,KAAK,YAAY;EAEhD;;CAGF,QAAQ,MAAR;EACE,KAAK;GACH,MAAM,KAAK,wCAAwC;GACnD;EACF,KAAK;GACH,MAAM,KAAK,2BAA2B;GACtC;EACF,KAAK;EACL,KAAK;EACL,KAAK;GACH,MAAM,KAAK,iDAAiD;GAC5D;EACF,KAAK;GACH,MAAM,KAAK,kCAAkC;GAC7C;CACJ;CAEA,MAAM,KAAK,IAAI,IAAI,OAAO,EAAE,EAAE,GAAG;CACjC,OAAO,MAAM,KAAK,IAAI;AACxB;AAEA,MAAM,oBAAoB,YAA6B;CAErD,OAAO;EADoB;EAAa;EAAc;EAAW;EAAO;CACjD,CAAC,CAAC,MAAM,MAAM,QAAQ,YAAY,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AACtF;AAGA,MAAa,uBAAuB,SAA0B;CAC5D,QAAQ,MAAR;EACE,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK,WACH,OAAO;EACT,SACE,OAAO;CACX;AACF;AAGA,MAAa,iBACX,WACA,UACA,eACA,cACuB;CACvB,OAAO,IAAI,mBAAmB;EAC5B;EACA;EACA;EACA,WAAW,oBAAoB,UAAU,IAAI;EAC7C,OAAO;CACT,CAAC;AACH;;;;;;AAOA,MAAa,2BAA2B,UAA4B;CAClE,IAAI,CAAC,SAAS,OAAO,UAAU,UAAU,OAAO;CAEhD,IAAI,WAAW,OAAO;EACpB,MAAM,QAAS,MAA8B;EAE7C,IAAI,SAAS,OAAO,UAAU,YAAY,UAAU,OAClD,IAAI;GACF,MAAM,WAAWC,aAAM,OAAO,KAA6B;GAC3D,IAAI,oBAAoBD,0BACtB,OAAO;GAET,OAAO;EACT,QAAQ,CAER;EAGF,IAAI,iBAAiBA,0BACnB,OAAO;CAEX;CAEA,OAAO;AACT;AAGA,MAAa,wBACX,OACA,UACA,eACA,WACA,mBAAmB,UACI;CACvB,IAAI,iBAAiBA,0BACnB,OAAO,cAAc,OAAO,UAAU,eAAe,SAAS;CAGhE,IAAI,iBAAiB,oBACnB,OAAO;CAGT,OAAO,IAAI,mBAAmB;EAC5B;EACA;EACA;EACA,WAAW,oBAAoB,iBAAiB,oBAAoB,KAAK,CAAC;EAC1E,OAAO,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,oBAAoB,KAAK,CAAC;CAC9E,CAAC;AACH"}
@@ -1,10 +1,8 @@
1
1
  import { Cause } from "effect";
2
2
  import { z } from "zod";
3
- import * as _$effect_Types0 from "effect/Types";
4
3
  import { ORPCError } from "@orpc/contract";
5
-
6
4
  //#region src/runtime/errors.d.ts
7
- declare const PluginRuntimeError_base: new <A extends Record<string, any> = {}>(args: _$effect_Types0.VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }>) => Cause.YieldableError & {
5
+ declare const PluginRuntimeError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => Cause.YieldableError & {
8
6
  readonly _tag: "PluginRuntimeError";
9
7
  } & Readonly<A>;
10
8
  declare class PluginRuntimeError extends PluginRuntimeError_base<{
@@ -14,7 +12,7 @@ declare class PluginRuntimeError extends PluginRuntimeError_base<{
14
12
  readonly cause?: Error;
15
13
  readonly retryable: boolean;
16
14
  }> {}
17
- declare const ModuleFederationError_base: new <A extends Record<string, any> = {}>(args: _$effect_Types0.VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }>) => Cause.YieldableError & {
15
+ declare const ModuleFederationError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => Cause.YieldableError & {
18
16
  readonly _tag: "ModuleFederationError";
19
17
  } & Readonly<A>;
20
18
  declare class ModuleFederationError extends ModuleFederationError_base<{
@@ -22,7 +20,7 @@ declare class ModuleFederationError extends ModuleFederationError_base<{
22
20
  readonly remoteUrl: string;
23
21
  readonly cause?: Error;
24
22
  }> {}
25
- declare const ValidationError_base: new <A extends Record<string, any> = {}>(args: _$effect_Types0.VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }>) => Cause.YieldableError & {
23
+ declare const ValidationError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => Cause.YieldableError & {
26
24
  readonly _tag: "ValidationError";
27
25
  } & Readonly<A>;
28
26
  declare class ValidationError extends ValidationError_base<{
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.cts","names":[],"sources":["../../src/runtime/errors.ts"],"mappings":";;;;;;cAE6B,uBAAA;;;cAEhB,kBAAA,SAA2B,uBAAA;EAAA,SAC7B,QAAA;EAAA,SACA,SAAA;EAAA,SACA,aAAA;EAAA,SACA,KAAA,GAAQ,KAAA;EAAA,SACR,SAAA;AAAA;AAAA,cACN,0BAAA;;;cAEQ,qBAAA,SAA8B,0BAAA;EAAA,SAChC,QAAA;EAAA,SACA,SAAA;EAAA,SACA,KAAA,GAAQ,KAAA;AAAA;AAAA,cACd,oBAAA;;;cAEQ,eAAA,SAAwB,oBAAA;EAAA,SAC1B,QAAA;EAAA,SACA,KAAA;EAAA,SACA,QAAA,EAAU,CAAA,CAAE,QAAA;AAAA;AAAA,cAiGV,eAAA,GAAmB,KAAA;AAAA,cA6EnB,mBAAA,GAAuB,IAAA;AAAA,cAcvB,aAAA,GACX,SAAA,EAAW,SAAA,mBACX,QAAA,WACA,aAAA,WACA,SAAA,cACC,kBAAA;;;;AAlNH;;cAiOa,uBAAA,GAA2B,KAAA;AAAA,cA2B3B,oBAAA,GACX,KAAA,WACA,QAAA,WACA,aAAA,WACA,SAAA,WACA,gBAAA,eACC,kBAAA"}
1
+ {"version":3,"file":"errors.d.cts","names":[],"sources":["../../src/runtime/errors.ts"],"mappings":";;;;;;;cAIa,2BAA2B;WAC7B;WACA;WACA;WACA,QAAQ;WACR;;;;;cAGE,8BAA8B;WAChC;WACA;WACA,QAAQ;;;;;cAGN,wBAAwB;WAC1B;WACA;WACA,UAAU,EAAE;;cAiGV,kBAAmB;cA6EnB,sBAAuB;cAcvB,gBACX,WAAW,4BACX,mBACA,wBACA,uBACC;;;;;;cAeU,0BAA2B;cA2B3B,uBACX,gBACA,mBACA,wBACA,oBACA,+BACC"}
@@ -1,10 +1,8 @@
1
1
  import { z } from "zod";
2
2
  import { ORPCError } from "@orpc/contract";
3
3
  import { Cause } from "effect";
4
- import * as _$effect_Types0 from "effect/Types";
5
-
6
4
  //#region src/runtime/errors.d.ts
7
- declare const PluginRuntimeError_base: new <A extends Record<string, any> = {}>(args: _$effect_Types0.VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }>) => Cause.YieldableError & {
5
+ declare const PluginRuntimeError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => Cause.YieldableError & {
8
6
  readonly _tag: "PluginRuntimeError";
9
7
  } & Readonly<A>;
10
8
  declare class PluginRuntimeError extends PluginRuntimeError_base<{
@@ -14,7 +12,7 @@ declare class PluginRuntimeError extends PluginRuntimeError_base<{
14
12
  readonly cause?: Error;
15
13
  readonly retryable: boolean;
16
14
  }> {}
17
- declare const ModuleFederationError_base: new <A extends Record<string, any> = {}>(args: _$effect_Types0.VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }>) => Cause.YieldableError & {
15
+ declare const ModuleFederationError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => Cause.YieldableError & {
18
16
  readonly _tag: "ModuleFederationError";
19
17
  } & Readonly<A>;
20
18
  declare class ModuleFederationError extends ModuleFederationError_base<{
@@ -22,7 +20,7 @@ declare class ModuleFederationError extends ModuleFederationError_base<{
22
20
  readonly remoteUrl: string;
23
21
  readonly cause?: Error;
24
22
  }> {}
25
- declare const ValidationError_base: new <A extends Record<string, any> = {}>(args: _$effect_Types0.VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }>) => Cause.YieldableError & {
23
+ declare const ValidationError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => Cause.YieldableError & {
26
24
  readonly _tag: "ValidationError";
27
25
  } & Readonly<A>;
28
26
  declare class ValidationError extends ValidationError_base<{
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.mts","names":[],"sources":["../../src/runtime/errors.ts"],"mappings":";;;;;;cAE6B,uBAAA;;;cAEhB,kBAAA,SAA2B,uBAAA;EAAA,SAC7B,QAAA;EAAA,SACA,SAAA;EAAA,SACA,aAAA;EAAA,SACA,KAAA,GAAQ,KAAA;EAAA,SACR,SAAA;AAAA;AAAA,cACN,0BAAA;;;cAEQ,qBAAA,SAA8B,0BAAA;EAAA,SAChC,QAAA;EAAA,SACA,SAAA;EAAA,SACA,KAAA,GAAQ,KAAA;AAAA;AAAA,cACd,oBAAA;;;cAEQ,eAAA,SAAwB,oBAAA;EAAA,SAC1B,QAAA;EAAA,SACA,KAAA;EAAA,SACA,QAAA,EAAU,CAAA,CAAE,QAAA;AAAA;AAAA,cAiGV,eAAA,GAAmB,KAAA;AAAA,cA6EnB,mBAAA,GAAuB,IAAA;AAAA,cAcvB,aAAA,GACX,SAAA,EAAW,SAAA,mBACX,QAAA,WACA,aAAA,WACA,SAAA,cACC,kBAAA;;;;AAlNH;;cAiOa,uBAAA,GAA2B,KAAA;AAAA,cA2B3B,oBAAA,GACX,KAAA,WACA,QAAA,WACA,aAAA,WACA,SAAA,WACA,gBAAA,eACC,kBAAA"}
1
+ {"version":3,"file":"errors.d.mts","names":[],"sources":["../../src/runtime/errors.ts"],"mappings":";;;;;;;cAIa,2BAA2B;WAC7B;WACA;WACA;WACA,QAAQ;WACR;;;;;cAGE,8BAA8B;WAChC;WACA;WACA,QAAQ;;;;;cAGN,wBAAwB;WAC1B;WACA;WACA,UAAU,EAAE;;cAiGV,kBAAmB;cA6EnB,sBAAuB;cAcvB,gBACX,WAAW,4BACX,mBACA,wBACA,uBACC;;;;;;cAeU,0BAA2B;cA2B3B,uBACX,gBACA,mBACA,wBACA,oBACA,+BACC"}