@procedures/client 0.0.0-stage → 0.2.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.
- package/CHANGELOG.md +42 -0
- package/LICENSE +21 -0
- package/README.md +832 -2
- package/dist/.tsbuildinfo +1 -0
- package/dist/adapters/http/client/index.d.ts +11 -0
- package/dist/adapters/http/client/index.d.ts.map +1 -0
- package/dist/adapters/http/client/index.js +18 -0
- package/dist/adapters/http/client/index.js.map +1 -0
- package/dist/adapters/http/client/transport.d.ts +72 -0
- package/dist/adapters/http/client/transport.d.ts.map +1 -0
- package/dist/adapters/http/client/transport.js +282 -0
- package/dist/adapters/http/client/transport.js.map +1 -0
- package/dist/adapters/http/client/types.d.ts +27 -0
- package/dist/adapters/http/client/types.d.ts.map +1 -0
- package/dist/adapters/http/client/types.js +8 -0
- package/dist/adapters/http/client/types.js.map +1 -0
- package/dist/adapters/http/index.d.ts +7 -0
- package/dist/adapters/http/index.d.ts.map +1 -0
- package/dist/adapters/http/index.js +7 -0
- package/dist/adapters/http/index.js.map +1 -0
- package/dist/adapters/http/server/index.d.ts +9 -0
- package/dist/adapters/http/server/index.d.ts.map +1 -0
- package/dist/adapters/http/server/index.js +10 -0
- package/dist/adapters/http/server/index.js.map +1 -0
- package/dist/adapters/http/server/strategies.d.ts +39 -0
- package/dist/adapters/http/server/strategies.d.ts.map +1 -0
- package/dist/adapters/http/server/strategies.js +90 -0
- package/dist/adapters/http/server/strategies.js.map +1 -0
- package/dist/adapters/http/server/transport.d.ts +66 -0
- package/dist/adapters/http/server/transport.d.ts.map +1 -0
- package/dist/adapters/http/server/transport.js +562 -0
- package/dist/adapters/http/server/transport.js.map +1 -0
- package/dist/adapters/http/server/types.d.ts +71 -0
- package/dist/adapters/http/server/types.d.ts.map +1 -0
- package/dist/adapters/http/server/types.js +7 -0
- package/dist/adapters/http/server/types.js.map +1 -0
- package/dist/adapters/http/shared/constants.d.ts +95 -0
- package/dist/adapters/http/shared/constants.d.ts.map +1 -0
- package/dist/adapters/http/shared/constants.js +102 -0
- package/dist/adapters/http/shared/constants.js.map +1 -0
- package/dist/adapters/http/shared/errors.d.ts +78 -0
- package/dist/adapters/http/shared/errors.d.ts.map +1 -0
- package/dist/adapters/http/shared/errors.js +151 -0
- package/dist/adapters/http/shared/errors.js.map +1 -0
- package/dist/adapters/http/shared/headers.d.ts +122 -0
- package/dist/adapters/http/shared/headers.d.ts.map +1 -0
- package/dist/adapters/http/shared/headers.js +216 -0
- package/dist/adapters/http/shared/headers.js.map +1 -0
- package/dist/adapters/http/shared/index.d.ts +12 -0
- package/dist/adapters/http/shared/index.d.ts.map +1 -0
- package/dist/adapters/http/shared/index.js +17 -0
- package/dist/adapters/http/shared/index.js.map +1 -0
- package/dist/adapters/http/shared/status-codes.d.ts +92 -0
- package/dist/adapters/http/shared/status-codes.d.ts.map +1 -0
- package/dist/adapters/http/shared/status-codes.js +189 -0
- package/dist/adapters/http/shared/status-codes.js.map +1 -0
- package/dist/adapters/http/shared/strategies.d.ts +90 -0
- package/dist/adapters/http/shared/strategies.d.ts.map +1 -0
- package/dist/adapters/http/shared/strategies.js +180 -0
- package/dist/adapters/http/shared/strategies.js.map +1 -0
- package/dist/adapters/local/client/index.d.ts +8 -0
- package/dist/adapters/local/client/index.d.ts.map +1 -0
- package/dist/adapters/local/client/index.js +8 -0
- package/dist/adapters/local/client/index.js.map +1 -0
- package/dist/adapters/local/client/transport.d.ts +81 -0
- package/dist/adapters/local/client/transport.d.ts.map +1 -0
- package/dist/adapters/local/client/transport.js +172 -0
- package/dist/adapters/local/client/transport.js.map +1 -0
- package/dist/adapters/local/client/types.d.ts +39 -0
- package/dist/adapters/local/client/types.d.ts.map +1 -0
- package/dist/adapters/local/client/types.js +13 -0
- package/dist/adapters/local/client/types.js.map +1 -0
- package/dist/adapters/metadata.d.ts +10 -0
- package/dist/adapters/metadata.d.ts.map +1 -0
- package/dist/adapters/metadata.js +19 -0
- package/dist/adapters/metadata.js.map +1 -0
- package/dist/adapters/mock/client/builder.d.ts +35 -0
- package/dist/adapters/mock/client/builder.d.ts.map +1 -0
- package/dist/adapters/mock/client/builder.js +58 -0
- package/dist/adapters/mock/client/builder.js.map +1 -0
- package/dist/adapters/mock/client/index.d.ts +9 -0
- package/dist/adapters/mock/client/index.d.ts.map +1 -0
- package/dist/adapters/mock/client/index.js +10 -0
- package/dist/adapters/mock/client/index.js.map +1 -0
- package/dist/adapters/mock/client/transport.d.ts +149 -0
- package/dist/adapters/mock/client/transport.d.ts.map +1 -0
- package/dist/adapters/mock/client/transport.js +289 -0
- package/dist/adapters/mock/client/transport.js.map +1 -0
- package/dist/adapters/mock/client/types.d.ts +86 -0
- package/dist/adapters/mock/client/types.d.ts.map +1 -0
- package/dist/adapters/mock/client/types.js +7 -0
- package/dist/adapters/mock/client/types.js.map +1 -0
- package/dist/adapters/websocket/client/index.d.ts +9 -0
- package/dist/adapters/websocket/client/index.d.ts.map +1 -0
- package/dist/adapters/websocket/client/index.js +9 -0
- package/dist/adapters/websocket/client/index.js.map +1 -0
- package/dist/adapters/websocket/client/transport.d.ts +106 -0
- package/dist/adapters/websocket/client/transport.d.ts.map +1 -0
- package/dist/adapters/websocket/client/transport.js +647 -0
- package/dist/adapters/websocket/client/transport.js.map +1 -0
- package/dist/adapters/websocket/client/types.d.ts +192 -0
- package/dist/adapters/websocket/client/types.d.ts.map +1 -0
- package/dist/adapters/websocket/client/types.js +17 -0
- package/dist/adapters/websocket/client/types.js.map +1 -0
- package/dist/adapters/websocket/index.d.ts +8 -0
- package/dist/adapters/websocket/index.d.ts.map +1 -0
- package/dist/adapters/websocket/index.js +8 -0
- package/dist/adapters/websocket/index.js.map +1 -0
- package/dist/adapters/websocket/server/index.d.ts +8 -0
- package/dist/adapters/websocket/server/index.d.ts.map +1 -0
- package/dist/adapters/websocket/server/index.js +8 -0
- package/dist/adapters/websocket/server/index.js.map +1 -0
- package/dist/adapters/websocket/server/transport.d.ts +112 -0
- package/dist/adapters/websocket/server/transport.d.ts.map +1 -0
- package/dist/adapters/websocket/server/transport.js +619 -0
- package/dist/adapters/websocket/server/transport.js.map +1 -0
- package/dist/adapters/websocket/server/types.d.ts +140 -0
- package/dist/adapters/websocket/server/types.d.ts.map +1 -0
- package/dist/adapters/websocket/server/types.js +7 -0
- package/dist/adapters/websocket/server/types.js.map +1 -0
- package/dist/browser.d.ts +51 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +89 -0
- package/dist/browser.js.map +1 -0
- package/dist/client/batch-executor.d.ts +160 -0
- package/dist/client/batch-executor.d.ts.map +1 -0
- package/dist/client/batch-executor.js +397 -0
- package/dist/client/batch-executor.js.map +1 -0
- package/dist/client/call-types.d.ts +271 -0
- package/dist/client/call-types.d.ts.map +1 -0
- package/dist/client/call-types.js +208 -0
- package/dist/client/call-types.js.map +1 -0
- package/dist/client/client.d.ts +525 -0
- package/dist/client/client.d.ts.map +1 -0
- package/dist/client/client.js +1011 -0
- package/dist/client/client.js.map +1 -0
- package/dist/client/consumption.d.ts +191 -0
- package/dist/client/consumption.d.ts.map +1 -0
- package/dist/client/consumption.js +98 -0
- package/dist/client/consumption.js.map +1 -0
- package/dist/client/context.d.ts +116 -0
- package/dist/client/context.d.ts.map +1 -0
- package/dist/client/context.js +111 -0
- package/dist/client/context.js.map +1 -0
- package/dist/client/errors/codes.d.ts +71 -0
- package/dist/client/errors/codes.d.ts.map +1 -0
- package/dist/client/errors/codes.js +81 -0
- package/dist/client/errors/codes.js.map +1 -0
- package/dist/client/errors/factory.d.ts +102 -0
- package/dist/client/errors/factory.d.ts.map +1 -0
- package/dist/client/errors/factory.js +210 -0
- package/dist/client/errors/factory.js.map +1 -0
- package/dist/client/errors/http-errors.d.ts +47 -0
- package/dist/client/errors/http-errors.d.ts.map +1 -0
- package/dist/client/errors/http-errors.js +548 -0
- package/dist/client/errors/http-errors.js.map +1 -0
- package/dist/client/errors/http-status.d.ts +73 -0
- package/dist/client/errors/http-status.d.ts.map +1 -0
- package/dist/client/errors/http-status.js +79 -0
- package/dist/client/errors/http-status.js.map +1 -0
- package/dist/client/errors/index.d.ts +36 -0
- package/dist/client/errors/index.d.ts.map +1 -0
- package/dist/client/errors/index.js +40 -0
- package/dist/client/errors/index.js.map +1 -0
- package/dist/client/errors/registry.d.ts +38 -0
- package/dist/client/errors/registry.d.ts.map +1 -0
- package/dist/client/errors/registry.js +535 -0
- package/dist/client/errors/registry.js.map +1 -0
- package/dist/client/errors/types.d.ts +112 -0
- package/dist/client/errors/types.d.ts.map +1 -0
- package/dist/client/errors/types.js +45 -0
- package/dist/client/errors/types.js.map +1 -0
- package/dist/client/index.d.ts +44 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +36 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/middleware/auth.d.ts +90 -0
- package/dist/client/middleware/auth.d.ts.map +1 -0
- package/dist/client/middleware/auth.js +98 -0
- package/dist/client/middleware/auth.js.map +1 -0
- package/dist/client/middleware/batching.d.ts +102 -0
- package/dist/client/middleware/batching.d.ts.map +1 -0
- package/dist/client/middleware/batching.js +245 -0
- package/dist/client/middleware/batching.js.map +1 -0
- package/dist/client/middleware/cache.d.ts +124 -0
- package/dist/client/middleware/cache.d.ts.map +1 -0
- package/dist/client/middleware/cache.js +208 -0
- package/dist/client/middleware/cache.js.map +1 -0
- package/dist/client/middleware/circuit-breaker.d.ts +113 -0
- package/dist/client/middleware/circuit-breaker.d.ts.map +1 -0
- package/dist/client/middleware/circuit-breaker.js +236 -0
- package/dist/client/middleware/circuit-breaker.js.map +1 -0
- package/dist/client/middleware/contexts.d.ts +199 -0
- package/dist/client/middleware/contexts.d.ts.map +1 -0
- package/dist/client/middleware/contexts.js +74 -0
- package/dist/client/middleware/contexts.js.map +1 -0
- package/dist/client/middleware/items.d.ts +37 -0
- package/dist/client/middleware/items.d.ts.map +1 -0
- package/dist/client/middleware/items.js +100 -0
- package/dist/client/middleware/items.js.map +1 -0
- package/dist/client/middleware/lru.d.ts +32 -0
- package/dist/client/middleware/lru.d.ts.map +1 -0
- package/dist/client/middleware/lru.js +62 -0
- package/dist/client/middleware/lru.js.map +1 -0
- package/dist/client/middleware/pagination.d.ts +114 -0
- package/dist/client/middleware/pagination.d.ts.map +1 -0
- package/dist/client/middleware/pagination.js +148 -0
- package/dist/client/middleware/pagination.js.map +1 -0
- package/dist/client/middleware/rate-limit.d.ts +105 -0
- package/dist/client/middleware/rate-limit.d.ts.map +1 -0
- package/dist/client/middleware/rate-limit.js +222 -0
- package/dist/client/middleware/rate-limit.js.map +1 -0
- package/dist/client/middleware/retry.d.ts +100 -0
- package/dist/client/middleware/retry.d.ts.map +1 -0
- package/dist/client/middleware/retry.js +150 -0
- package/dist/client/middleware/retry.js.map +1 -0
- package/dist/client/middleware/timeout.d.ts +91 -0
- package/dist/client/middleware/timeout.d.ts.map +1 -0
- package/dist/client/middleware/timeout.js +253 -0
- package/dist/client/middleware/timeout.js.map +1 -0
- package/dist/client/middleware/tracing.d.ts +118 -0
- package/dist/client/middleware/tracing.d.ts.map +1 -0
- package/dist/client/middleware/tracing.js +152 -0
- package/dist/client/middleware/tracing.js.map +1 -0
- package/dist/client/route-resolver.d.ts +181 -0
- package/dist/client/route-resolver.d.ts.map +1 -0
- package/dist/client/route-resolver.js +300 -0
- package/dist/client/route-resolver.js.map +1 -0
- package/dist/client/typed-method.d.ts +29 -0
- package/dist/client/typed-method.d.ts.map +1 -0
- package/dist/client/typed-method.js +36 -0
- package/dist/client/typed-method.js.map +1 -0
- package/dist/client/typed.d.ts +102 -0
- package/dist/client/typed.d.ts.map +1 -0
- package/dist/client/typed.js +52 -0
- package/dist/client/typed.js.map +1 -0
- package/dist/client/types.d.ts +305 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +26 -0
- package/dist/client/types.js.map +1 -0
- package/dist/client/validation/index.d.ts +34 -0
- package/dist/client/validation/index.d.ts.map +1 -0
- package/dist/client/validation/index.js +36 -0
- package/dist/client/validation/index.js.map +1 -0
- package/dist/client/validation/middleware.d.ts +82 -0
- package/dist/client/validation/middleware.d.ts.map +1 -0
- package/dist/client/validation/middleware.js +138 -0
- package/dist/client/validation/middleware.js.map +1 -0
- package/dist/client/validation/types.d.ts +118 -0
- package/dist/client/validation/types.d.ts.map +1 -0
- package/dist/client/validation/types.js +59 -0
- package/dist/client/validation/types.js.map +1 -0
- package/dist/collections/async/async-queue.d.ts +144 -0
- package/dist/collections/async/async-queue.d.ts.map +1 -0
- package/dist/collections/async/async-queue.js +347 -0
- package/dist/collections/async/async-queue.js.map +1 -0
- package/dist/collections/async/channels.d.ts +188 -0
- package/dist/collections/async/channels.d.ts.map +1 -0
- package/dist/collections/async/channels.js +312 -0
- package/dist/collections/async/channels.js.map +1 -0
- package/dist/collections/behaviors/bounded.d.ts +79 -0
- package/dist/collections/behaviors/bounded.d.ts.map +1 -0
- package/dist/collections/behaviors/bounded.js +384 -0
- package/dist/collections/behaviors/bounded.js.map +1 -0
- package/dist/collections/behaviors/evented.d.ts +154 -0
- package/dist/collections/behaviors/evented.d.ts.map +1 -0
- package/dist/collections/behaviors/evented.js +299 -0
- package/dist/collections/behaviors/evented.js.map +1 -0
- package/dist/collections/behaviors/lru.d.ts +84 -0
- package/dist/collections/behaviors/lru.d.ts.map +1 -0
- package/dist/collections/behaviors/lru.js +330 -0
- package/dist/collections/behaviors/lru.js.map +1 -0
- package/dist/collections/behaviors/readonly.d.ts +73 -0
- package/dist/collections/behaviors/readonly.d.ts.map +1 -0
- package/dist/collections/behaviors/readonly.js +158 -0
- package/dist/collections/behaviors/readonly.js.map +1 -0
- package/dist/collections/behaviors/safe.d.ts +163 -0
- package/dist/collections/behaviors/safe.d.ts.map +1 -0
- package/dist/collections/behaviors/safe.js +172 -0
- package/dist/collections/behaviors/safe.js.map +1 -0
- package/dist/collections/behaviors/synchronized.d.ts +88 -0
- package/dist/collections/behaviors/synchronized.d.ts.map +1 -0
- package/dist/collections/behaviors/synchronized.js +294 -0
- package/dist/collections/behaviors/synchronized.js.map +1 -0
- package/dist/collections/behaviors/ttl.d.ts +118 -0
- package/dist/collections/behaviors/ttl.d.ts.map +1 -0
- package/dist/collections/behaviors/ttl.js +338 -0
- package/dist/collections/behaviors/ttl.js.map +1 -0
- package/dist/collections/core/effects.d.ts +176 -0
- package/dist/collections/core/effects.d.ts.map +1 -0
- package/dist/collections/core/effects.js +180 -0
- package/dist/collections/core/effects.js.map +1 -0
- package/dist/collections/core/events.d.ts +192 -0
- package/dist/collections/core/events.d.ts.map +1 -0
- package/dist/collections/core/events.js +291 -0
- package/dist/collections/core/events.js.map +1 -0
- package/dist/collections/core/middleware.d.ts +231 -0
- package/dist/collections/core/middleware.d.ts.map +1 -0
- package/dist/collections/core/middleware.js +161 -0
- package/dist/collections/core/middleware.js.map +1 -0
- package/dist/collections/core/policies.d.ts +220 -0
- package/dist/collections/core/policies.d.ts.map +1 -0
- package/dist/collections/core/policies.js +48 -0
- package/dist/collections/core/policies.js.map +1 -0
- package/dist/collections/core/traits.d.ts +142 -0
- package/dist/collections/core/traits.d.ts.map +1 -0
- package/dist/collections/core/traits.js +8 -0
- package/dist/collections/core/traits.js.map +1 -0
- package/dist/collections/examples.d.ts +13 -0
- package/dist/collections/examples.d.ts.map +1 -0
- package/dist/collections/examples.js +302 -0
- package/dist/collections/examples.js.map +1 -0
- package/dist/collections/fx/collectors.d.ts +190 -0
- package/dist/collections/fx/collectors.d.ts.map +1 -0
- package/dist/collections/fx/collectors.js +369 -0
- package/dist/collections/fx/collectors.js.map +1 -0
- package/dist/collections/fx/iter.d.ts +166 -0
- package/dist/collections/fx/iter.d.ts.map +1 -0
- package/dist/collections/fx/iter.js +421 -0
- package/dist/collections/fx/iter.js.map +1 -0
- package/dist/collections/impl/array-deque.d.ts +107 -0
- package/dist/collections/impl/array-deque.d.ts.map +1 -0
- package/dist/collections/impl/array-deque.js +381 -0
- package/dist/collections/impl/array-deque.js.map +1 -0
- package/dist/collections/impl/array-list.d.ts +101 -0
- package/dist/collections/impl/array-list.d.ts.map +1 -0
- package/dist/collections/impl/array-list.js +387 -0
- package/dist/collections/impl/array-list.js.map +1 -0
- package/dist/collections/impl/hash-map.d.ts +141 -0
- package/dist/collections/impl/hash-map.d.ts.map +1 -0
- package/dist/collections/impl/hash-map.js +450 -0
- package/dist/collections/impl/hash-map.js.map +1 -0
- package/dist/collections/impl/hash-set.d.ts +125 -0
- package/dist/collections/impl/hash-set.d.ts.map +1 -0
- package/dist/collections/impl/hash-set.js +264 -0
- package/dist/collections/impl/hash-set.js.map +1 -0
- package/dist/collections/impl/linked-hash-map.d.ts +141 -0
- package/dist/collections/impl/linked-hash-map.d.ts.map +1 -0
- package/dist/collections/impl/linked-hash-map.js +472 -0
- package/dist/collections/impl/linked-hash-map.js.map +1 -0
- package/dist/collections/impl/linked-list.d.ts +109 -0
- package/dist/collections/impl/linked-list.d.ts.map +1 -0
- package/dist/collections/impl/linked-list.js +491 -0
- package/dist/collections/impl/linked-list.js.map +1 -0
- package/dist/collections/impl/priority-queue.d.ts +134 -0
- package/dist/collections/impl/priority-queue.d.ts.map +1 -0
- package/dist/collections/impl/priority-queue.js +336 -0
- package/dist/collections/impl/priority-queue.js.map +1 -0
- package/dist/collections/impl/tree-map.d.ts +146 -0
- package/dist/collections/impl/tree-map.d.ts.map +1 -0
- package/dist/collections/impl/tree-map.js +781 -0
- package/dist/collections/impl/tree-map.js.map +1 -0
- package/dist/collections/impl/tree-set.d.ts +112 -0
- package/dist/collections/impl/tree-set.d.ts.map +1 -0
- package/dist/collections/impl/tree-set.js +374 -0
- package/dist/collections/impl/tree-set.js.map +1 -0
- package/dist/collections/index.d.ts +105 -0
- package/dist/collections/index.d.ts.map +1 -0
- package/dist/collections/index.js +135 -0
- package/dist/collections/index.js.map +1 -0
- package/dist/collections/interfaces/collection.d.ts +119 -0
- package/dist/collections/interfaces/collection.d.ts.map +1 -0
- package/dist/collections/interfaces/collection.js +8 -0
- package/dist/collections/interfaces/collection.js.map +1 -0
- package/dist/collections/interfaces/list.d.ts +247 -0
- package/dist/collections/interfaces/list.d.ts.map +1 -0
- package/dist/collections/interfaces/list.js +8 -0
- package/dist/collections/interfaces/list.js.map +1 -0
- package/dist/collections/interfaces/map.d.ts +344 -0
- package/dist/collections/interfaces/map.d.ts.map +1 -0
- package/dist/collections/interfaces/map.js +8 -0
- package/dist/collections/interfaces/map.js.map +1 -0
- package/dist/collections/interfaces/queue.d.ts +304 -0
- package/dist/collections/interfaces/queue.d.ts.map +1 -0
- package/dist/collections/interfaces/queue.js +8 -0
- package/dist/collections/interfaces/queue.js.map +1 -0
- package/dist/collections/interfaces/set.d.ts +137 -0
- package/dist/collections/interfaces/set.d.ts.map +1 -0
- package/dist/collections/interfaces/set.js +8 -0
- package/dist/collections/interfaces/set.js.map +1 -0
- package/dist/collections/storage/api.d.ts +109 -0
- package/dist/collections/storage/api.d.ts.map +1 -0
- package/dist/collections/storage/api.js +182 -0
- package/dist/collections/storage/api.js.map +1 -0
- package/dist/collections/storage/hybrid.d.ts +164 -0
- package/dist/collections/storage/hybrid.d.ts.map +1 -0
- package/dist/collections/storage/hybrid.js +416 -0
- package/dist/collections/storage/hybrid.js.map +1 -0
- package/dist/collections/storage/index.d.ts +16 -0
- package/dist/collections/storage/index.d.ts.map +1 -0
- package/dist/collections/storage/index.js +13 -0
- package/dist/collections/storage/index.js.map +1 -0
- package/dist/collections/storage/interface.d.ts +141 -0
- package/dist/collections/storage/interface.d.ts.map +1 -0
- package/dist/collections/storage/interface.js +23 -0
- package/dist/collections/storage/interface.js.map +1 -0
- package/dist/collections/storage/memory.d.ts +68 -0
- package/dist/collections/storage/memory.d.ts.map +1 -0
- package/dist/collections/storage/memory.js +154 -0
- package/dist/collections/storage/memory.js.map +1 -0
- package/dist/collections/utils/defaults.d.ts +135 -0
- package/dist/collections/utils/defaults.d.ts.map +1 -0
- package/dist/collections/utils/defaults.js +322 -0
- package/dist/collections/utils/defaults.js.map +1 -0
- package/dist/collections/utils/factories.d.ts +144 -0
- package/dist/collections/utils/factories.d.ts.map +1 -0
- package/dist/collections/utils/factories.js +293 -0
- package/dist/collections/utils/factories.js.map +1 -0
- package/dist/collections/utils/helpers.d.ts +137 -0
- package/dist/collections/utils/helpers.d.ts.map +1 -0
- package/dist/collections/utils/helpers.js +221 -0
- package/dist/collections/utils/helpers.js.map +1 -0
- package/dist/collections.d.ts +12 -0
- package/dist/collections.d.ts.map +1 -0
- package/dist/collections.js +10 -0
- package/dist/collections.js.map +1 -0
- package/dist/components/define.d.ts +134 -0
- package/dist/components/define.d.ts.map +1 -0
- package/dist/components/define.js +486 -0
- package/dist/components/define.js.map +1 -0
- package/dist/components/index.d.ts +39 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +38 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/types.d.ts +264 -0
- package/dist/components/types.d.ts.map +1 -0
- package/dist/components/types.js +46 -0
- package/dist/components/types.js.map +1 -0
- package/dist/events/bus.d.ts +193 -0
- package/dist/events/bus.d.ts.map +1 -0
- package/dist/events/bus.js +511 -0
- package/dist/events/bus.js.map +1 -0
- package/dist/events/index.d.ts +34 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +36 -0
- package/dist/events/index.js.map +1 -0
- package/dist/events/types.d.ts +242 -0
- package/dist/events/types.d.ts.map +1 -0
- package/dist/events/types.js +8 -0
- package/dist/events/types.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/middleware/compose.d.ts +88 -0
- package/dist/middleware/compose.d.ts.map +1 -0
- package/dist/middleware/compose.js +108 -0
- package/dist/middleware/compose.js.map +1 -0
- package/dist/middleware/index.d.ts +12 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +11 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/types.d.ts +112 -0
- package/dist/middleware/types.d.ts.map +1 -0
- package/dist/middleware/types.js +14 -0
- package/dist/middleware/types.js.map +1 -0
- package/dist/procedures/capability.d.ts +111 -0
- package/dist/procedures/capability.d.ts.map +1 -0
- package/dist/procedures/capability.js +269 -0
- package/dist/procedures/capability.js.map +1 -0
- package/dist/procedures/cli/announce.d.ts +67 -0
- package/dist/procedures/cli/announce.d.ts.map +1 -0
- package/dist/procedures/cli/announce.js +392 -0
- package/dist/procedures/cli/announce.js.map +1 -0
- package/dist/procedures/cli/discover.d.ts +66 -0
- package/dist/procedures/cli/discover.d.ts.map +1 -0
- package/dist/procedures/cli/discover.js +310 -0
- package/dist/procedures/cli/discover.js.map +1 -0
- package/dist/procedures/cli/index.d.ts +13 -0
- package/dist/procedures/cli/index.d.ts.map +1 -0
- package/dist/procedures/cli/index.js +203 -0
- package/dist/procedures/cli/index.js.map +1 -0
- package/dist/procedures/cli/init.d.ts +17 -0
- package/dist/procedures/cli/init.d.ts.map +1 -0
- package/dist/procedures/cli/init.js +336 -0
- package/dist/procedures/cli/init.js.map +1 -0
- package/dist/procedures/collection/index.d.ts +10 -0
- package/dist/procedures/collection/index.d.ts.map +1 -0
- package/dist/procedures/collection/index.js +10 -0
- package/dist/procedures/collection/index.js.map +1 -0
- package/dist/procedures/collection/procedures.d.ts +21 -0
- package/dist/procedures/collection/procedures.d.ts.map +1 -0
- package/dist/procedures/collection/procedures.js +210 -0
- package/dist/procedures/collection/procedures.js.map +1 -0
- package/dist/procedures/collection/schemas.d.ts +131 -0
- package/dist/procedures/collection/schemas.d.ts.map +1 -0
- package/dist/procedures/collection/schemas.js +422 -0
- package/dist/procedures/collection/schemas.js.map +1 -0
- package/dist/procedures/collection/storage.d.ts +53 -0
- package/dist/procedures/collection/storage.d.ts.map +1 -0
- package/dist/procedures/collection/storage.js +2 -0
- package/dist/procedures/collection/storage.js.map +1 -0
- package/dist/procedures/core/array.d.ts +276 -0
- package/dist/procedures/core/array.d.ts.map +1 -0
- package/dist/procedures/core/array.js +639 -0
- package/dist/procedures/core/array.js.map +1 -0
- package/dist/procedures/core/comparison.d.ts +85 -0
- package/dist/procedures/core/comparison.d.ts.map +1 -0
- package/dist/procedures/core/comparison.js +158 -0
- package/dist/procedures/core/comparison.js.map +1 -0
- package/dist/procedures/core/index.d.ts +261 -0
- package/dist/procedures/core/index.d.ts.map +1 -0
- package/dist/procedures/core/index.js +588 -0
- package/dist/procedures/core/index.js.map +1 -0
- package/dist/procedures/core/logic.d.ts +144 -0
- package/dist/procedures/core/logic.d.ts.map +1 -0
- package/dist/procedures/core/logic.js +169 -0
- package/dist/procedures/core/logic.js.map +1 -0
- package/dist/procedures/core/math.d.ts +139 -0
- package/dist/procedures/core/math.d.ts.map +1 -0
- package/dist/procedures/core/math.js +275 -0
- package/dist/procedures/core/math.js.map +1 -0
- package/dist/procedures/core/meta.d.ts +111 -0
- package/dist/procedures/core/meta.d.ts.map +1 -0
- package/dist/procedures/core/meta.js +244 -0
- package/dist/procedures/core/meta.js.map +1 -0
- package/dist/procedures/core/object.d.ts +109 -0
- package/dist/procedures/core/object.d.ts.map +1 -0
- package/dist/procedures/core/object.js +272 -0
- package/dist/procedures/core/object.js.map +1 -0
- package/dist/procedures/core/operands.d.ts +51 -0
- package/dist/procedures/core/operands.d.ts.map +1 -0
- package/dist/procedures/core/operands.js +90 -0
- package/dist/procedures/core/operands.js.map +1 -0
- package/dist/procedures/core/outputs.d.ts +28 -0
- package/dist/procedures/core/outputs.d.ts.map +1 -0
- package/dist/procedures/core/outputs.js +42 -0
- package/dist/procedures/core/outputs.js.map +1 -0
- package/dist/procedures/core/results.d.ts +202 -0
- package/dist/procedures/core/results.d.ts.map +1 -0
- package/dist/procedures/core/results.js +106 -0
- package/dist/procedures/core/results.js.map +1 -0
- package/dist/procedures/core/schemas.d.ts +48 -0
- package/dist/procedures/core/schemas.d.ts.map +1 -0
- package/dist/procedures/core/schemas.js +102 -0
- package/dist/procedures/core/schemas.js.map +1 -0
- package/dist/procedures/core/string.d.ts +138 -0
- package/dist/procedures/core/string.d.ts.map +1 -0
- package/dist/procedures/core/string.js +270 -0
- package/dist/procedures/core/string.js.map +1 -0
- package/dist/procedures/core/type.d.ts +101 -0
- package/dist/procedures/core/type.d.ts.map +1 -0
- package/dist/procedures/core/type.js +210 -0
- package/dist/procedures/core/type.js.map +1 -0
- package/dist/procedures/define-procedure.d.ts +187 -0
- package/dist/procedures/define-procedure.d.ts.map +1 -0
- package/dist/procedures/define-procedure.js +357 -0
- package/dist/procedures/define-procedure.js.map +1 -0
- package/dist/procedures/define.d.ts +228 -0
- package/dist/procedures/define.d.ts.map +1 -0
- package/dist/procedures/define.js +300 -0
- package/dist/procedures/define.js.map +1 -0
- package/dist/procedures/discovery.d.ts +57 -0
- package/dist/procedures/discovery.d.ts.map +1 -0
- package/dist/procedures/discovery.js +68 -0
- package/dist/procedures/discovery.js.map +1 -0
- package/dist/procedures/effects.d.ts +15 -0
- package/dist/procedures/effects.d.ts.map +1 -0
- package/dist/procedures/effects.js +18 -0
- package/dist/procedures/effects.js.map +1 -0
- package/dist/procedures/index.d.ts +27 -0
- package/dist/procedures/index.d.ts.map +1 -0
- package/dist/procedures/index.js +54 -0
- package/dist/procedures/index.js.map +1 -0
- package/dist/procedures/interceptors.d.ts +82 -0
- package/dist/procedures/interceptors.d.ts.map +1 -0
- package/dist/procedures/interceptors.js +194 -0
- package/dist/procedures/interceptors.js.map +1 -0
- package/dist/procedures/invoke.d.ts +155 -0
- package/dist/procedures/invoke.d.ts.map +1 -0
- package/dist/procedures/invoke.js +343 -0
- package/dist/procedures/invoke.js.map +1 -0
- package/dist/procedures/module.d.ts +54 -0
- package/dist/procedures/module.d.ts.map +1 -0
- package/dist/procedures/module.js +103 -0
- package/dist/procedures/module.js.map +1 -0
- package/dist/procedures/policy.d.ts +70 -0
- package/dist/procedures/policy.d.ts.map +1 -0
- package/dist/procedures/policy.js +138 -0
- package/dist/procedures/policy.js.map +1 -0
- package/dist/procedures/ref.d.ts +606 -0
- package/dist/procedures/ref.d.ts.map +1 -0
- package/dist/procedures/ref.js +895 -0
- package/dist/procedures/ref.js.map +1 -0
- package/dist/procedures/registry.d.ts +208 -0
- package/dist/procedures/registry.d.ts.map +1 -0
- package/dist/procedures/registry.js +402 -0
- package/dist/procedures/registry.js.map +1 -0
- package/dist/procedures/schema.d.ts +126 -0
- package/dist/procedures/schema.d.ts.map +1 -0
- package/dist/procedures/schema.js +108 -0
- package/dist/procedures/schema.js.map +1 -0
- package/dist/procedures/storage/adapter.d.ts +148 -0
- package/dist/procedures/storage/adapter.d.ts.map +1 -0
- package/dist/procedures/storage/adapter.js +214 -0
- package/dist/procedures/storage/adapter.js.map +1 -0
- package/dist/procedures/storage/api.d.ts +125 -0
- package/dist/procedures/storage/api.d.ts.map +1 -0
- package/dist/procedures/storage/api.js +220 -0
- package/dist/procedures/storage/api.js.map +1 -0
- package/dist/procedures/storage/factory.d.ts +134 -0
- package/dist/procedures/storage/factory.d.ts.map +1 -0
- package/dist/procedures/storage/factory.js +166 -0
- package/dist/procedures/storage/factory.js.map +1 -0
- package/dist/procedures/storage/hybrid.d.ts +193 -0
- package/dist/procedures/storage/hybrid.d.ts.map +1 -0
- package/dist/procedures/storage/hybrid.js +519 -0
- package/dist/procedures/storage/hybrid.js.map +1 -0
- package/dist/procedures/storage/index.d.ts +17 -0
- package/dist/procedures/storage/index.d.ts.map +1 -0
- package/dist/procedures/storage/index.js +17 -0
- package/dist/procedures/storage/index.js.map +1 -0
- package/dist/procedures/storage/procedures.d.ts +39 -0
- package/dist/procedures/storage/procedures.d.ts.map +1 -0
- package/dist/procedures/storage/procedures.js +261 -0
- package/dist/procedures/storage/procedures.js.map +1 -0
- package/dist/procedures/storage/serialization.d.ts +123 -0
- package/dist/procedures/storage/serialization.d.ts.map +1 -0
- package/dist/procedures/storage/serialization.js +216 -0
- package/dist/procedures/storage/serialization.js.map +1 -0
- package/dist/procedures/storage/synced-registry.d.ts +246 -0
- package/dist/procedures/storage/synced-registry.d.ts.map +1 -0
- package/dist/procedures/storage/synced-registry.js +575 -0
- package/dist/procedures/storage/synced-registry.js.map +1 -0
- package/dist/procedures/storage/types.d.ts +130 -0
- package/dist/procedures/storage/types.d.ts.map +1 -0
- package/dist/procedures/storage/types.js +8 -0
- package/dist/procedures/storage/types.js.map +1 -0
- package/dist/procedures/types.d.ts +468 -0
- package/dist/procedures/types.d.ts.map +1 -0
- package/dist/procedures/types.js +23 -0
- package/dist/procedures/types.js.map +1 -0
- package/dist/register.d.ts +8 -0
- package/dist/register.d.ts.map +1 -0
- package/dist/register.js +9 -0
- package/dist/register.js.map +1 -0
- package/dist/server/browser-guard.d.ts +69 -0
- package/dist/server/browser-guard.d.ts.map +1 -0
- package/dist/server/browser-guard.js +103 -0
- package/dist/server/browser-guard.js.map +1 -0
- package/dist/server/host-policy.d.ts +81 -0
- package/dist/server/host-policy.d.ts.map +1 -0
- package/dist/server/host-policy.js +104 -0
- package/dist/server/host-policy.js.map +1 -0
- package/dist/server/index.d.ts +46 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +42 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/method.d.ts +24 -0
- package/dist/server/method.d.ts.map +1 -0
- package/dist/server/method.js +29 -0
- package/dist/server/method.js.map +1 -0
- package/dist/server/procedure-server.d.ts +226 -0
- package/dist/server/procedure-server.d.ts.map +1 -0
- package/dist/server/procedure-server.js +348 -0
- package/dist/server/procedure-server.js.map +1 -0
- package/dist/server/server.d.ts +161 -0
- package/dist/server/server.d.ts.map +1 -0
- package/dist/server/server.js +279 -0
- package/dist/server/server.js.map +1 -0
- package/dist/server/types.d.ts +106 -0
- package/dist/server/types.d.ts.map +1 -0
- package/dist/server/types.js +29 -0
- package/dist/server/types.js.map +1 -0
- package/package.json +117 -3
- package/src/adapters/http/client/index.ts +51 -0
- package/src/adapters/http/client/transport.ts +338 -0
- package/src/adapters/http/client/types.ts +33 -0
- package/src/adapters/http/index.ts +7 -0
- package/src/adapters/http/server/index.ts +14 -0
- package/src/adapters/http/server/strategies.ts +105 -0
- package/src/adapters/http/server/transport.ts +623 -0
- package/src/adapters/http/server/types.ts +81 -0
- package/src/adapters/http/shared/constants.ts +108 -0
- package/src/adapters/http/shared/errors.ts +199 -0
- package/src/adapters/http/shared/headers.ts +291 -0
- package/src/adapters/http/shared/index.ts +21 -0
- package/src/adapters/http/shared/status-codes.ts +212 -0
- package/src/adapters/http/shared/strategies.ts +255 -0
- package/src/adapters/local/client/index.ts +11 -0
- package/src/adapters/local/client/transport.ts +188 -0
- package/src/adapters/local/client/types.ts +50 -0
- package/src/adapters/metadata.ts +17 -0
- package/src/adapters/mock/client/builder.ts +64 -0
- package/src/adapters/mock/client/index.ts +19 -0
- package/src/adapters/mock/client/transport.ts +352 -0
- package/src/adapters/mock/client/types.ts +99 -0
- package/src/adapters/websocket/client/index.ts +18 -0
- package/src/adapters/websocket/client/transport.ts +733 -0
- package/src/adapters/websocket/client/types.ts +235 -0
- package/src/adapters/websocket/index.ts +24 -0
- package/src/adapters/websocket/server/index.ts +18 -0
- package/src/adapters/websocket/server/transport.ts +705 -0
- package/src/adapters/websocket/server/types.ts +169 -0
- package/src/browser.ts +401 -0
- package/src/client/batch-executor.ts +514 -0
- package/src/client/call-types.ts +491 -0
- package/src/client/client.ts +1229 -0
- package/src/client/consumption.ts +288 -0
- package/src/client/context.ts +228 -0
- package/src/client/errors/README.md +279 -0
- package/src/client/errors/codes.ts +88 -0
- package/src/client/errors/factory.ts +263 -0
- package/src/client/errors/http-errors.ts +601 -0
- package/src/client/errors/http-status.ts +82 -0
- package/src/client/errors/index.ts +72 -0
- package/src/client/errors/registry.ts +595 -0
- package/src/client/errors/types.ts +139 -0
- package/src/client/index.ts +124 -0
- package/src/client/middleware/auth.ts +132 -0
- package/src/client/middleware/cache.ts +316 -0
- package/src/client/middleware/circuit-breaker.ts +339 -0
- package/src/client/middleware/contexts.ts +319 -0
- package/src/client/middleware/items.ts +114 -0
- package/src/client/middleware/lru.ts +66 -0
- package/src/client/middleware/pagination.ts +213 -0
- package/src/client/middleware/rate-limit.ts +315 -0
- package/src/client/middleware/retry.ts +236 -0
- package/src/client/middleware/timeout.ts +308 -0
- package/src/client/middleware/tracing.ts +191 -0
- package/src/client/route-resolver.ts +407 -0
- package/src/client/typed-method.ts +65 -0
- package/src/client/typed.ts +140 -0
- package/src/client/types.ts +372 -0
- package/src/client/validation/index.ts +56 -0
- package/src/client/validation/middleware.ts +254 -0
- package/src/client/validation/types.ts +162 -0
- package/src/events/bus.ts +594 -0
- package/src/events/index.ts +67 -0
- package/src/events/types.ts +263 -0
- package/src/index.ts +33 -0
- package/src/middleware/compose.ts +159 -0
- package/src/middleware/index.ts +28 -0
- package/src/middleware/types.ts +166 -0
- package/src/procedures/capability.ts +333 -0
- package/src/procedures/cli/announce.ts +470 -0
- package/src/procedures/cli/discover.ts +390 -0
- package/src/procedures/cli/index.ts +231 -0
- package/src/procedures/cli/init.ts +370 -0
- package/src/procedures/collection/index.ts +51 -0
- package/src/procedures/collection/procedures.ts +257 -0
- package/src/procedures/collection/schemas.ts +550 -0
- package/src/procedures/collection/storage.ts +53 -0
- package/src/procedures/core/array.ts +1026 -0
- package/src/procedures/core/comparison.ts +265 -0
- package/src/procedures/core/index.ts +898 -0
- package/src/procedures/core/logic.ts +225 -0
- package/src/procedures/core/math.ts +471 -0
- package/src/procedures/core/meta.ts +389 -0
- package/src/procedures/core/object.ts +429 -0
- package/src/procedures/core/operands.ts +119 -0
- package/src/procedures/core/outputs.ts +48 -0
- package/src/procedures/core/results.ts +296 -0
- package/src/procedures/core/schemas.ts +123 -0
- package/src/procedures/core/string.ts +460 -0
- package/src/procedures/core/type.ts +346 -0
- package/src/procedures/define-procedure.ts +532 -0
- package/src/procedures/define.ts +387 -0
- package/src/procedures/discovery.ts +76 -0
- package/src/procedures/effects.ts +24 -0
- package/src/procedures/index.ts +239 -0
- package/src/procedures/interceptors.ts +273 -0
- package/src/procedures/invoke.ts +506 -0
- package/src/procedures/module.ts +117 -0
- package/src/procedures/policy.ts +171 -0
- package/src/procedures/ref.ts +1305 -0
- package/src/procedures/registry.ts +473 -0
- package/src/procedures/schema.ts +225 -0
- package/src/procedures/types.ts +596 -0
- package/src/register.ts +10 -0
- package/src/server/browser-guard.ts +147 -0
- package/src/server/host-policy.ts +163 -0
- package/src/server/index.ts +70 -0
- package/src/server/method.ts +33 -0
- package/src/server/procedure-server.ts +459 -0
- package/src/server/server.ts +364 -0
- package/src/server/types.ts +147 -0
|
@@ -0,0 +1,601 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP Error Registry Extension
|
|
3
|
+
*
|
|
4
|
+
* Comprehensive HTTP status code mappings with full metadata.
|
|
5
|
+
* Integrates with the universal error registry system.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { ErrorCategory, ErrorSeverity, type ErrorMetadata } from "./types.js";
|
|
9
|
+
import { ErrorCode } from "./codes.js";
|
|
10
|
+
import { HTTPStatus } from "./http-status.js";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Helper to create HTTP error metadata.
|
|
14
|
+
*
|
|
15
|
+
* Uses HTTPStatus enum - NO MAGIC NUMBERS!
|
|
16
|
+
*/
|
|
17
|
+
function defineHTTPError(
|
|
18
|
+
code: ErrorCode,
|
|
19
|
+
httpStatus: HTTPStatus,
|
|
20
|
+
meta: {
|
|
21
|
+
summary: string;
|
|
22
|
+
detail: string;
|
|
23
|
+
category: ErrorCategory;
|
|
24
|
+
retryable: boolean;
|
|
25
|
+
severity: ErrorSeverity;
|
|
26
|
+
userMessage: string;
|
|
27
|
+
devMessage: string;
|
|
28
|
+
suggestions?: string[];
|
|
29
|
+
}
|
|
30
|
+
): ErrorMetadata {
|
|
31
|
+
const result: ErrorMetadata = {
|
|
32
|
+
code,
|
|
33
|
+
httpStatus,
|
|
34
|
+
summary: meta.summary,
|
|
35
|
+
detail: meta.detail,
|
|
36
|
+
category: meta.category,
|
|
37
|
+
retryable: meta.retryable,
|
|
38
|
+
severity: meta.severity,
|
|
39
|
+
userMessage: meta.userMessage,
|
|
40
|
+
devMessage: meta.devMessage,
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
if (meta.suggestions) {
|
|
44
|
+
result.suggestions = meta.suggestions;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Bidirectional HTTP Status <-> Error Code Mapping
|
|
52
|
+
*
|
|
53
|
+
* Single source of truth for status/error associations.
|
|
54
|
+
* Used by both client (status -> code) and server (code -> status).
|
|
55
|
+
*
|
|
56
|
+
* NO MAGIC NUMBERS - uses HTTPStatus enum!
|
|
57
|
+
* NO MAGIC STRINGS - uses ErrorCode enum!
|
|
58
|
+
*/
|
|
59
|
+
const HTTP_STATUS_ERROR_MAP: ReadonlyArray<readonly [HTTPStatus, ErrorCode]> = [
|
|
60
|
+
// 4xx Client Errors
|
|
61
|
+
[HTTPStatus.BAD_REQUEST, ErrorCode.BAD_REQUEST],
|
|
62
|
+
[HTTPStatus.UNAUTHORIZED, ErrorCode.UNAUTHORIZED],
|
|
63
|
+
[HTTPStatus.FORBIDDEN, ErrorCode.FORBIDDEN],
|
|
64
|
+
[HTTPStatus.NOT_FOUND, ErrorCode.NOT_FOUND],
|
|
65
|
+
[HTTPStatus.METHOD_NOT_ALLOWED, ErrorCode.METHOD_NOT_ALLOWED],
|
|
66
|
+
[HTTPStatus.NOT_ACCEPTABLE, ErrorCode.NOT_ACCEPTABLE],
|
|
67
|
+
[HTTPStatus.PROXY_AUTHENTICATION_REQUIRED, ErrorCode.PROXY_AUTHENTICATION_REQUIRED],
|
|
68
|
+
[HTTPStatus.REQUEST_TIMEOUT, ErrorCode.TIMEOUT],
|
|
69
|
+
[HTTPStatus.CONFLICT, ErrorCode.CONFLICT],
|
|
70
|
+
[HTTPStatus.GONE, ErrorCode.GONE],
|
|
71
|
+
[HTTPStatus.LENGTH_REQUIRED, ErrorCode.LENGTH_REQUIRED],
|
|
72
|
+
[HTTPStatus.PRECONDITION_FAILED, ErrorCode.PRECONDITION_FAILED],
|
|
73
|
+
[HTTPStatus.PAYLOAD_TOO_LARGE, ErrorCode.PAYLOAD_TOO_LARGE],
|
|
74
|
+
[HTTPStatus.URI_TOO_LONG, ErrorCode.URI_TOO_LONG],
|
|
75
|
+
[HTTPStatus.UNSUPPORTED_MEDIA_TYPE, ErrorCode.UNSUPPORTED_MEDIA_TYPE],
|
|
76
|
+
[HTTPStatus.RANGE_NOT_SATISFIABLE, ErrorCode.RANGE_NOT_SATISFIABLE],
|
|
77
|
+
[HTTPStatus.EXPECTATION_FAILED, ErrorCode.EXPECTATION_FAILED],
|
|
78
|
+
[HTTPStatus.IM_A_TEAPOT, ErrorCode.IM_A_TEAPOT],
|
|
79
|
+
[HTTPStatus.MISDIRECTED_REQUEST, ErrorCode.MISDIRECTED_REQUEST],
|
|
80
|
+
[HTTPStatus.UNPROCESSABLE_ENTITY, ErrorCode.UNPROCESSABLE_ENTITY],
|
|
81
|
+
[HTTPStatus.LOCKED, ErrorCode.LOCKED],
|
|
82
|
+
[HTTPStatus.FAILED_DEPENDENCY, ErrorCode.FAILED_DEPENDENCY],
|
|
83
|
+
[HTTPStatus.TOO_EARLY, ErrorCode.TOO_EARLY],
|
|
84
|
+
[HTTPStatus.UPGRADE_REQUIRED, ErrorCode.UPGRADE_REQUIRED],
|
|
85
|
+
[HTTPStatus.PRECONDITION_REQUIRED, ErrorCode.PRECONDITION_REQUIRED],
|
|
86
|
+
[HTTPStatus.TOO_MANY_REQUESTS, ErrorCode.TOO_MANY_REQUESTS],
|
|
87
|
+
[HTTPStatus.REQUEST_HEADER_FIELDS_TOO_LARGE, ErrorCode.REQUEST_HEADER_FIELDS_TOO_LARGE],
|
|
88
|
+
[HTTPStatus.UNAVAILABLE_FOR_LEGAL_REASONS, ErrorCode.UNAVAILABLE_FOR_LEGAL_REASONS],
|
|
89
|
+
[HTTPStatus.CLIENT_CLOSED_REQUEST, ErrorCode.CLIENT_CLOSED_REQUEST],
|
|
90
|
+
|
|
91
|
+
// 5xx Server Errors
|
|
92
|
+
[HTTPStatus.INTERNAL_SERVER_ERROR, ErrorCode.INTERNAL_ERROR],
|
|
93
|
+
[HTTPStatus.NOT_IMPLEMENTED, ErrorCode.NOT_IMPLEMENTED],
|
|
94
|
+
[HTTPStatus.BAD_GATEWAY, ErrorCode.BAD_GATEWAY],
|
|
95
|
+
[HTTPStatus.SERVICE_UNAVAILABLE, ErrorCode.SERVICE_UNAVAILABLE],
|
|
96
|
+
[HTTPStatus.GATEWAY_TIMEOUT, ErrorCode.GATEWAY_TIMEOUT],
|
|
97
|
+
[HTTPStatus.HTTP_VERSION_NOT_SUPPORTED, ErrorCode.HTTP_VERSION_NOT_SUPPORTED],
|
|
98
|
+
[HTTPStatus.VARIANT_ALSO_NEGOTIATES, ErrorCode.VARIANT_ALSO_NEGOTIATES],
|
|
99
|
+
[HTTPStatus.INSUFFICIENT_STORAGE, ErrorCode.INSUFFICIENT_STORAGE],
|
|
100
|
+
[HTTPStatus.LOOP_DETECTED, ErrorCode.LOOP_DETECTED],
|
|
101
|
+
[HTTPStatus.NOT_EXTENDED, ErrorCode.NOT_EXTENDED],
|
|
102
|
+
[HTTPStatus.NETWORK_AUTHENTICATION_REQUIRED, ErrorCode.NETWORK_AUTHENTICATION_REQUIRED],
|
|
103
|
+
[HTTPStatus.NETWORK_CONNECT_TIMEOUT, ErrorCode.HTTP_NETWORK_CONNECT_TIMEOUT],
|
|
104
|
+
] as const;
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* HTTP Status Code Error Registry
|
|
108
|
+
*
|
|
109
|
+
* Complete mapping of all HTTP status codes to rich error metadata.
|
|
110
|
+
*/
|
|
111
|
+
export const HTTP_ERROR_REGISTRY: Record<string, ErrorMetadata> = {
|
|
112
|
+
//
|
|
113
|
+
// ═══ 4xx Client Errors (Additional) ═══
|
|
114
|
+
//
|
|
115
|
+
|
|
116
|
+
[ErrorCode.NOT_ACCEPTABLE]: defineHTTPError(ErrorCode.NOT_ACCEPTABLE, HTTPStatus.NOT_ACCEPTABLE, {
|
|
117
|
+
summary: "Not acceptable",
|
|
118
|
+
detail: "The server cannot produce a response matching the accept headers sent by the client.",
|
|
119
|
+
category: ErrorCategory.CLIENT,
|
|
120
|
+
retryable: false,
|
|
121
|
+
severity: ErrorSeverity.ERROR,
|
|
122
|
+
userMessage: "The server cannot provide the requested format.",
|
|
123
|
+
devMessage: "Content negotiation failed. Check Accept headers and available content types.",
|
|
124
|
+
suggestions: [
|
|
125
|
+
"Check Accept header in request",
|
|
126
|
+
"Verify server supports requested content type",
|
|
127
|
+
"Try different accept formats (application/json, etc.)",
|
|
128
|
+
],
|
|
129
|
+
}),
|
|
130
|
+
|
|
131
|
+
[ErrorCode.PROXY_AUTHENTICATION_REQUIRED]: defineHTTPError(ErrorCode.PROXY_AUTHENTICATION_REQUIRED, HTTPStatus.PROXY_AUTHENTICATION_REQUIRED, {
|
|
132
|
+
summary: "Proxy authentication required",
|
|
133
|
+
detail: "Authentication with the proxy server is required before the request can proceed.",
|
|
134
|
+
category: ErrorCategory.AUTH,
|
|
135
|
+
retryable: false,
|
|
136
|
+
severity: ErrorSeverity.ERROR,
|
|
137
|
+
userMessage: "Proxy authentication is required.",
|
|
138
|
+
devMessage: "Proxy requires authentication. Provide Proxy-Authorization header.",
|
|
139
|
+
suggestions: [
|
|
140
|
+
"Provide Proxy-Authorization header",
|
|
141
|
+
"Check proxy credentials",
|
|
142
|
+
"Verify proxy configuration",
|
|
143
|
+
],
|
|
144
|
+
}),
|
|
145
|
+
|
|
146
|
+
[ErrorCode.GONE]: defineHTTPError(ErrorCode.GONE, HTTPStatus.GONE, {
|
|
147
|
+
summary: "Gone",
|
|
148
|
+
detail: "The requested resource is no longer available and will not be available again.",
|
|
149
|
+
category: ErrorCategory.CLIENT,
|
|
150
|
+
retryable: false,
|
|
151
|
+
severity: ErrorSeverity.ERROR,
|
|
152
|
+
userMessage: "This resource is no longer available.",
|
|
153
|
+
devMessage: "Resource permanently removed. No forwarding address known.",
|
|
154
|
+
suggestions: [
|
|
155
|
+
"Remove references to this resource",
|
|
156
|
+
"Check for alternative resources",
|
|
157
|
+
"Update client to handle permanent removal",
|
|
158
|
+
],
|
|
159
|
+
}),
|
|
160
|
+
|
|
161
|
+
[ErrorCode.LENGTH_REQUIRED]: defineHTTPError(ErrorCode.LENGTH_REQUIRED, HTTPStatus.LENGTH_REQUIRED, {
|
|
162
|
+
summary: "Length required",
|
|
163
|
+
detail: "The server requires the Content-Length header to be specified.",
|
|
164
|
+
category: ErrorCategory.CLIENT,
|
|
165
|
+
retryable: false,
|
|
166
|
+
severity: ErrorSeverity.ERROR,
|
|
167
|
+
userMessage: "Request format error.",
|
|
168
|
+
devMessage: "Content-Length header is required. Add Content-Length to request.",
|
|
169
|
+
suggestions: [
|
|
170
|
+
"Add Content-Length header",
|
|
171
|
+
"Verify request body size",
|
|
172
|
+
"Check HTTP client configuration",
|
|
173
|
+
],
|
|
174
|
+
}),
|
|
175
|
+
|
|
176
|
+
[ErrorCode.PRECONDITION_FAILED]: defineHTTPError(ErrorCode.PRECONDITION_FAILED, HTTPStatus.PRECONDITION_FAILED, {
|
|
177
|
+
summary: "Precondition failed",
|
|
178
|
+
detail: "One or more preconditions in the request headers evaluated to false.",
|
|
179
|
+
category: ErrorCategory.CLIENT,
|
|
180
|
+
retryable: false,
|
|
181
|
+
severity: ErrorSeverity.ERROR,
|
|
182
|
+
userMessage: "The precondition check failed.",
|
|
183
|
+
devMessage: "Conditional request headers (If-Match, If-None-Match, etc.) failed. Check ETag/date conditions.",
|
|
184
|
+
suggestions: [
|
|
185
|
+
"Refresh resource state",
|
|
186
|
+
"Check If-Match/If-None-Match headers",
|
|
187
|
+
"Verify Last-Modified conditions",
|
|
188
|
+
],
|
|
189
|
+
}),
|
|
190
|
+
|
|
191
|
+
[ErrorCode.URI_TOO_LONG]: defineHTTPError(ErrorCode.URI_TOO_LONG, HTTPStatus.URI_TOO_LONG, {
|
|
192
|
+
summary: "URI too long",
|
|
193
|
+
detail: "The URI provided was too long for the server to process.",
|
|
194
|
+
category: ErrorCategory.CLIENT,
|
|
195
|
+
retryable: false,
|
|
196
|
+
severity: ErrorSeverity.ERROR,
|
|
197
|
+
userMessage: "The request URL is too long.",
|
|
198
|
+
devMessage: "URI exceeds server limits. Reduce query parameters or switch to POST.",
|
|
199
|
+
suggestions: [
|
|
200
|
+
"Reduce query parameter count",
|
|
201
|
+
"Shorten URL paths",
|
|
202
|
+
"Switch from GET to POST for large payloads",
|
|
203
|
+
],
|
|
204
|
+
}),
|
|
205
|
+
|
|
206
|
+
[ErrorCode.UNSUPPORTED_MEDIA_TYPE]: defineHTTPError(ErrorCode.UNSUPPORTED_MEDIA_TYPE, HTTPStatus.UNSUPPORTED_MEDIA_TYPE, {
|
|
207
|
+
summary: "Unsupported media type",
|
|
208
|
+
detail: "The server does not support the media type in the request payload.",
|
|
209
|
+
category: ErrorCategory.CLIENT,
|
|
210
|
+
retryable: false,
|
|
211
|
+
severity: ErrorSeverity.ERROR,
|
|
212
|
+
userMessage: "The format of your request is not supported.",
|
|
213
|
+
devMessage: "Content-Type not supported by server. Check supported media types.",
|
|
214
|
+
suggestions: [
|
|
215
|
+
"Use application/json content type",
|
|
216
|
+
"Check server supported media types",
|
|
217
|
+
"Verify Content-Type header is correct",
|
|
218
|
+
],
|
|
219
|
+
}),
|
|
220
|
+
|
|
221
|
+
[ErrorCode.RANGE_NOT_SATISFIABLE]: defineHTTPError(ErrorCode.RANGE_NOT_SATISFIABLE, HTTPStatus.RANGE_NOT_SATISFIABLE, {
|
|
222
|
+
summary: "Range not satisfiable",
|
|
223
|
+
detail: "The range specified in the Range header cannot be satisfied.",
|
|
224
|
+
category: ErrorCategory.CLIENT,
|
|
225
|
+
retryable: false,
|
|
226
|
+
severity: ErrorSeverity.ERROR,
|
|
227
|
+
userMessage: "The requested range is not available.",
|
|
228
|
+
devMessage: "Range header specifies invalid or out-of-bounds range.",
|
|
229
|
+
suggestions: [
|
|
230
|
+
"Check Range header values",
|
|
231
|
+
"Verify resource size",
|
|
232
|
+
"Request full resource without Range header",
|
|
233
|
+
],
|
|
234
|
+
}),
|
|
235
|
+
|
|
236
|
+
[ErrorCode.EXPECTATION_FAILED]: defineHTTPError(ErrorCode.EXPECTATION_FAILED, HTTPStatus.EXPECTATION_FAILED, {
|
|
237
|
+
summary: "Expectation failed",
|
|
238
|
+
detail: "The server cannot meet the requirements of the Expect request header.",
|
|
239
|
+
category: ErrorCategory.CLIENT,
|
|
240
|
+
retryable: false,
|
|
241
|
+
severity: ErrorSeverity.ERROR,
|
|
242
|
+
userMessage: "Server cannot meet request expectations.",
|
|
243
|
+
devMessage: "Expect header requirements cannot be met. Remove or modify Expect header.",
|
|
244
|
+
suggestions: [
|
|
245
|
+
"Remove Expect: 100-continue header",
|
|
246
|
+
"Check server capabilities",
|
|
247
|
+
"Modify request expectations",
|
|
248
|
+
],
|
|
249
|
+
}),
|
|
250
|
+
|
|
251
|
+
[ErrorCode.IM_A_TEAPOT]: defineHTTPError(ErrorCode.IM_A_TEAPOT, HTTPStatus.IM_A_TEAPOT, {
|
|
252
|
+
summary: "I'm a teapot",
|
|
253
|
+
detail: "The server refuses to brew coffee because it is, permanently, a teapot (RFC 2324 April Fools' joke).",
|
|
254
|
+
category: ErrorCategory.CLIENT,
|
|
255
|
+
retryable: false,
|
|
256
|
+
severity: ErrorSeverity.INFO,
|
|
257
|
+
userMessage: "This server is a teapot and cannot brew coffee.",
|
|
258
|
+
devMessage: "HTCPCP Easter egg. This is likely a joke response or test endpoint.",
|
|
259
|
+
suggestions: [
|
|
260
|
+
"Check if this is a test/joke endpoint",
|
|
261
|
+
"Verify correct API endpoint",
|
|
262
|
+
"Enjoy the RFC 2324 humor",
|
|
263
|
+
],
|
|
264
|
+
}),
|
|
265
|
+
|
|
266
|
+
[ErrorCode.MISDIRECTED_REQUEST]: defineHTTPError(ErrorCode.MISDIRECTED_REQUEST, HTTPStatus.MISDIRECTED_REQUEST, {
|
|
267
|
+
summary: "Misdirected request",
|
|
268
|
+
detail: "The request was directed at a server that is not able to produce a response.",
|
|
269
|
+
category: ErrorCategory.CLIENT,
|
|
270
|
+
retryable: true,
|
|
271
|
+
severity: ErrorSeverity.ERROR,
|
|
272
|
+
userMessage: "Request sent to wrong server.",
|
|
273
|
+
devMessage: "HTTP/2 connection routing issue. Server cannot handle this authority.",
|
|
274
|
+
suggestions: [
|
|
275
|
+
"Check server hostname",
|
|
276
|
+
"Verify HTTP/2 connection routing",
|
|
277
|
+
"Retry with different connection",
|
|
278
|
+
],
|
|
279
|
+
}),
|
|
280
|
+
|
|
281
|
+
[ErrorCode.LOCKED]: defineHTTPError(ErrorCode.LOCKED, HTTPStatus.LOCKED, {
|
|
282
|
+
summary: "Locked",
|
|
283
|
+
detail: "The resource being accessed is locked (WebDAV).",
|
|
284
|
+
category: ErrorCategory.CLIENT,
|
|
285
|
+
retryable: false,
|
|
286
|
+
severity: ErrorSeverity.ERROR,
|
|
287
|
+
userMessage: "This resource is currently locked.",
|
|
288
|
+
devMessage: "WebDAV resource is locked. Check for active locks and wait for release.",
|
|
289
|
+
suggestions: [
|
|
290
|
+
"Wait for resource to be unlocked",
|
|
291
|
+
"Check who holds the lock",
|
|
292
|
+
"Request lock release",
|
|
293
|
+
],
|
|
294
|
+
}),
|
|
295
|
+
|
|
296
|
+
[ErrorCode.FAILED_DEPENDENCY]: defineHTTPError(ErrorCode.FAILED_DEPENDENCY, HTTPStatus.FAILED_DEPENDENCY, {
|
|
297
|
+
summary: "Failed dependency",
|
|
298
|
+
detail: "The request failed because it depended on another request that failed (WebDAV).",
|
|
299
|
+
category: ErrorCategory.CLIENT,
|
|
300
|
+
retryable: false,
|
|
301
|
+
severity: ErrorSeverity.ERROR,
|
|
302
|
+
userMessage: "Request failed due to dependency failure.",
|
|
303
|
+
devMessage: "Dependent request failed. Check order of operations and dependencies.",
|
|
304
|
+
suggestions: [
|
|
305
|
+
"Verify dependent requests succeeded",
|
|
306
|
+
"Check request order",
|
|
307
|
+
"Review WebDAV transaction logs",
|
|
308
|
+
],
|
|
309
|
+
}),
|
|
310
|
+
|
|
311
|
+
[ErrorCode.TOO_EARLY]: defineHTTPError(ErrorCode.TOO_EARLY, HTTPStatus.TOO_EARLY, {
|
|
312
|
+
summary: "Too early",
|
|
313
|
+
detail: "The server is unwilling to process a request that might be replayed.",
|
|
314
|
+
category: ErrorCategory.CLIENT,
|
|
315
|
+
retryable: true,
|
|
316
|
+
severity: ErrorSeverity.WARNING,
|
|
317
|
+
userMessage: "Request sent too early, please retry.",
|
|
318
|
+
devMessage: "Early data (0-RTT) rejected due to replay risk. Retry after TLS handshake completes.",
|
|
319
|
+
suggestions: [
|
|
320
|
+
"Retry request after connection established",
|
|
321
|
+
"Disable 0-RTT for this request",
|
|
322
|
+
"Wait for full TLS handshake",
|
|
323
|
+
],
|
|
324
|
+
}),
|
|
325
|
+
|
|
326
|
+
[ErrorCode.UPGRADE_REQUIRED]: defineHTTPError(ErrorCode.UPGRADE_REQUIRED, HTTPStatus.UPGRADE_REQUIRED, {
|
|
327
|
+
summary: "Upgrade required",
|
|
328
|
+
detail: "The server requires the client to upgrade to a different protocol.",
|
|
329
|
+
category: ErrorCategory.CLIENT,
|
|
330
|
+
retryable: false,
|
|
331
|
+
severity: ErrorSeverity.ERROR,
|
|
332
|
+
userMessage: "Protocol upgrade required.",
|
|
333
|
+
devMessage: "Server requires protocol upgrade (e.g., HTTP/2, WebSocket). Check Upgrade header.",
|
|
334
|
+
suggestions: [
|
|
335
|
+
"Check Upgrade header in response",
|
|
336
|
+
"Upgrade to requested protocol",
|
|
337
|
+
"Verify client supports required protocol",
|
|
338
|
+
],
|
|
339
|
+
}),
|
|
340
|
+
|
|
341
|
+
[ErrorCode.PRECONDITION_REQUIRED]: defineHTTPError(ErrorCode.PRECONDITION_REQUIRED, HTTPStatus.PRECONDITION_REQUIRED, {
|
|
342
|
+
summary: "Precondition required",
|
|
343
|
+
detail: "The server requires the request to be conditional to prevent lost update problems.",
|
|
344
|
+
category: ErrorCategory.CLIENT,
|
|
345
|
+
retryable: false,
|
|
346
|
+
severity: ErrorSeverity.ERROR,
|
|
347
|
+
userMessage: "Conditional headers are required for this request.",
|
|
348
|
+
devMessage: "Server requires If-Match or similar conditional headers. Add ETags or timestamps.",
|
|
349
|
+
suggestions: [
|
|
350
|
+
"Add If-Match header with current ETag",
|
|
351
|
+
"Use If-Unmodified-Since header",
|
|
352
|
+
"Implement optimistic locking",
|
|
353
|
+
],
|
|
354
|
+
}),
|
|
355
|
+
|
|
356
|
+
[ErrorCode.REQUEST_HEADER_FIELDS_TOO_LARGE]: defineHTTPError(ErrorCode.REQUEST_HEADER_FIELDS_TOO_LARGE, HTTPStatus.REQUEST_HEADER_FIELDS_TOO_LARGE, {
|
|
357
|
+
summary: "Request header fields too large",
|
|
358
|
+
detail: "One or more header fields in the request are too large.",
|
|
359
|
+
category: ErrorCategory.CLIENT,
|
|
360
|
+
retryable: false,
|
|
361
|
+
severity: ErrorSeverity.ERROR,
|
|
362
|
+
userMessage: "Request headers are too large.",
|
|
363
|
+
devMessage: "Request headers exceed server limits. Reduce header size or count.",
|
|
364
|
+
suggestions: [
|
|
365
|
+
"Reduce number of headers",
|
|
366
|
+
"Shorten header values (especially cookies)",
|
|
367
|
+
"Move large data to request body",
|
|
368
|
+
],
|
|
369
|
+
}),
|
|
370
|
+
|
|
371
|
+
[ErrorCode.UNAVAILABLE_FOR_LEGAL_REASONS]: defineHTTPError(ErrorCode.UNAVAILABLE_FOR_LEGAL_REASONS, HTTPStatus.UNAVAILABLE_FOR_LEGAL_REASONS, {
|
|
372
|
+
summary: "Unavailable for legal reasons",
|
|
373
|
+
detail: "The resource is unavailable due to legal reasons (censorship, compliance, etc.).",
|
|
374
|
+
category: ErrorCategory.CLIENT,
|
|
375
|
+
retryable: false,
|
|
376
|
+
severity: ErrorSeverity.ERROR,
|
|
377
|
+
userMessage: "This content is unavailable for legal reasons.",
|
|
378
|
+
devMessage: "Resource blocked by legal requirement. Cannot be accessed from this region/context.",
|
|
379
|
+
suggestions: [
|
|
380
|
+
"Check geographical restrictions",
|
|
381
|
+
"Review content compliance requirements",
|
|
382
|
+
"Contact legal team if unexpected",
|
|
383
|
+
],
|
|
384
|
+
}),
|
|
385
|
+
|
|
386
|
+
[ErrorCode.CLIENT_CLOSED_REQUEST]: defineHTTPError(ErrorCode.CLIENT_CLOSED_REQUEST, HTTPStatus.CLIENT_CLOSED_REQUEST, {
|
|
387
|
+
summary: "Client closed request",
|
|
388
|
+
detail: "The client closed the connection before the server could send a response (nginx-specific).",
|
|
389
|
+
category: ErrorCategory.CANCELLED,
|
|
390
|
+
retryable: false,
|
|
391
|
+
severity: ErrorSeverity.WARNING,
|
|
392
|
+
userMessage: "Request was cancelled.",
|
|
393
|
+
devMessage: "Client aborted connection before response. Check client timeout settings.",
|
|
394
|
+
suggestions: [
|
|
395
|
+
"Increase client timeout",
|
|
396
|
+
"Optimize server response time",
|
|
397
|
+
"Check for client-side cancellations",
|
|
398
|
+
],
|
|
399
|
+
}),
|
|
400
|
+
|
|
401
|
+
//
|
|
402
|
+
// ═══ 5xx Server Errors (Additional) ═══
|
|
403
|
+
//
|
|
404
|
+
|
|
405
|
+
[ErrorCode.HTTP_VERSION_NOT_SUPPORTED]: defineHTTPError(ErrorCode.HTTP_VERSION_NOT_SUPPORTED, HTTPStatus.HTTP_VERSION_NOT_SUPPORTED, {
|
|
406
|
+
summary: "HTTP version not supported",
|
|
407
|
+
detail: "The server does not support the HTTP protocol version used in the request.",
|
|
408
|
+
category: ErrorCategory.SERVER,
|
|
409
|
+
retryable: false,
|
|
410
|
+
severity: ErrorSeverity.ERROR,
|
|
411
|
+
userMessage: "HTTP version not supported by server.",
|
|
412
|
+
devMessage: "Server doesn't support HTTP version used. Downgrade to HTTP/1.1 or upgrade server.",
|
|
413
|
+
suggestions: [
|
|
414
|
+
"Check HTTP version in request",
|
|
415
|
+
"Downgrade to HTTP/1.1",
|
|
416
|
+
"Upgrade server to support HTTP/2 or HTTP/3",
|
|
417
|
+
],
|
|
418
|
+
}),
|
|
419
|
+
|
|
420
|
+
[ErrorCode.VARIANT_ALSO_NEGOTIATES]: defineHTTPError(ErrorCode.VARIANT_ALSO_NEGOTIATES, HTTPStatus.VARIANT_ALSO_NEGOTIATES, {
|
|
421
|
+
summary: "Variant also negotiates",
|
|
422
|
+
detail: "Transparent content negotiation for the request results in a circular reference.",
|
|
423
|
+
category: ErrorCategory.SERVER,
|
|
424
|
+
retryable: false,
|
|
425
|
+
severity: ErrorSeverity.ERROR,
|
|
426
|
+
userMessage: "Server configuration error.",
|
|
427
|
+
devMessage: "Content negotiation configuration error causing circular reference.",
|
|
428
|
+
suggestions: [
|
|
429
|
+
"Report to server administrators",
|
|
430
|
+
"Check server content negotiation config",
|
|
431
|
+
"Try specific content type in Accept header",
|
|
432
|
+
],
|
|
433
|
+
}),
|
|
434
|
+
|
|
435
|
+
[ErrorCode.INSUFFICIENT_STORAGE]: defineHTTPError(ErrorCode.INSUFFICIENT_STORAGE, HTTPStatus.INSUFFICIENT_STORAGE, {
|
|
436
|
+
summary: "Insufficient storage",
|
|
437
|
+
detail: "The server cannot store the representation needed to complete the request (WebDAV).",
|
|
438
|
+
category: ErrorCategory.SERVER,
|
|
439
|
+
retryable: true,
|
|
440
|
+
severity: ErrorSeverity.ERROR,
|
|
441
|
+
userMessage: "Server storage is full.",
|
|
442
|
+
devMessage: "Server out of storage space. May be temporary. Check disk space and quotas.",
|
|
443
|
+
suggestions: [
|
|
444
|
+
"Retry after storage is freed",
|
|
445
|
+
"Reduce request payload size",
|
|
446
|
+
"Contact server administrators",
|
|
447
|
+
],
|
|
448
|
+
}),
|
|
449
|
+
|
|
450
|
+
[ErrorCode.LOOP_DETECTED]: defineHTTPError(ErrorCode.LOOP_DETECTED, HTTPStatus.LOOP_DETECTED, {
|
|
451
|
+
summary: "Loop detected",
|
|
452
|
+
detail: "The server detected an infinite loop while processing the request (WebDAV).",
|
|
453
|
+
category: ErrorCategory.SERVER,
|
|
454
|
+
retryable: false,
|
|
455
|
+
severity: ErrorSeverity.ERROR,
|
|
456
|
+
userMessage: "Server detected a loop in request processing.",
|
|
457
|
+
devMessage: "Infinite loop detected in WebDAV Depth header processing. Fix resource structure.",
|
|
458
|
+
suggestions: [
|
|
459
|
+
"Check for circular resource references",
|
|
460
|
+
"Review WebDAV Depth header",
|
|
461
|
+
"Report to server administrators",
|
|
462
|
+
],
|
|
463
|
+
}),
|
|
464
|
+
|
|
465
|
+
[ErrorCode.NOT_EXTENDED]: defineHTTPError(ErrorCode.NOT_EXTENDED, HTTPStatus.NOT_EXTENDED, {
|
|
466
|
+
summary: "Not extended",
|
|
467
|
+
detail: "Further extensions to the request are required for the server to fulfill it.",
|
|
468
|
+
category: ErrorCategory.SERVER,
|
|
469
|
+
retryable: false,
|
|
470
|
+
severity: ErrorSeverity.ERROR,
|
|
471
|
+
userMessage: "Additional request extensions required.",
|
|
472
|
+
devMessage: "Server requires HTTP extensions not present in request (RFC 2774).",
|
|
473
|
+
suggestions: [
|
|
474
|
+
"Check required extensions in response",
|
|
475
|
+
"Add necessary HTTP extensions",
|
|
476
|
+
"Contact server documentation",
|
|
477
|
+
],
|
|
478
|
+
}),
|
|
479
|
+
|
|
480
|
+
[ErrorCode.NETWORK_AUTHENTICATION_REQUIRED]: defineHTTPError(ErrorCode.NETWORK_AUTHENTICATION_REQUIRED, HTTPStatus.NETWORK_AUTHENTICATION_REQUIRED, {
|
|
481
|
+
summary: "Network authentication required",
|
|
482
|
+
detail: "The client needs to authenticate to gain network access (captive portal).",
|
|
483
|
+
category: ErrorCategory.AUTH,
|
|
484
|
+
retryable: false,
|
|
485
|
+
severity: ErrorSeverity.ERROR,
|
|
486
|
+
userMessage: "Network authentication required.",
|
|
487
|
+
devMessage: "Captive portal authentication needed. User must authenticate with network before accessing resources.",
|
|
488
|
+
suggestions: [
|
|
489
|
+
"Authenticate with captive portal",
|
|
490
|
+
"Check network access requirements",
|
|
491
|
+
"Connect to authenticated network",
|
|
492
|
+
],
|
|
493
|
+
}),
|
|
494
|
+
|
|
495
|
+
[ErrorCode.HTTP_NETWORK_CONNECT_TIMEOUT]: defineHTTPError(ErrorCode.HTTP_NETWORK_CONNECT_TIMEOUT, HTTPStatus.NETWORK_CONNECT_TIMEOUT, {
|
|
496
|
+
summary: "Network connect timeout",
|
|
497
|
+
detail: "Network connection timeout (non-standard, used by some proxies).",
|
|
498
|
+
category: ErrorCategory.TIMEOUT,
|
|
499
|
+
retryable: true,
|
|
500
|
+
severity: ErrorSeverity.ERROR,
|
|
501
|
+
userMessage: "Connection to server timed out.",
|
|
502
|
+
devMessage: "Network connect timeout at proxy/gateway level. Check network connectivity.",
|
|
503
|
+
suggestions: [
|
|
504
|
+
"Retry the request",
|
|
505
|
+
"Check network connectivity",
|
|
506
|
+
"Verify server is accessible",
|
|
507
|
+
],
|
|
508
|
+
}),
|
|
509
|
+
|
|
510
|
+
//
|
|
511
|
+
// ═══ HTTP-specific Transport Errors ═══
|
|
512
|
+
//
|
|
513
|
+
// These errors don't have standard HTTP status codes (use 0 as placeholder)
|
|
514
|
+
|
|
515
|
+
[ErrorCode.HTTP_ERROR]: defineHTTPError(ErrorCode.HTTP_ERROR, 0 as HTTPStatus, {
|
|
516
|
+
summary: "HTTP error",
|
|
517
|
+
detail: "A general HTTP error occurred that doesn't fit other categories.",
|
|
518
|
+
category: ErrorCategory.PROTOCOL,
|
|
519
|
+
retryable: false,
|
|
520
|
+
severity: ErrorSeverity.ERROR,
|
|
521
|
+
userMessage: "An HTTP error occurred.",
|
|
522
|
+
devMessage: "Generic HTTP error. Check response details and status code.",
|
|
523
|
+
suggestions: [
|
|
524
|
+
"Check specific HTTP status code",
|
|
525
|
+
"Review error response body",
|
|
526
|
+
"Check server logs for details",
|
|
527
|
+
],
|
|
528
|
+
}),
|
|
529
|
+
|
|
530
|
+
[ErrorCode.INVALID_URL]: defineHTTPError(ErrorCode.INVALID_URL, 0 as HTTPStatus, {
|
|
531
|
+
summary: "Invalid URL",
|
|
532
|
+
detail: "The provided URL is malformed or invalid.",
|
|
533
|
+
category: ErrorCategory.CLIENT,
|
|
534
|
+
retryable: false,
|
|
535
|
+
severity: ErrorSeverity.ERROR,
|
|
536
|
+
userMessage: "Invalid server address.",
|
|
537
|
+
devMessage: "URL parsing failed. Check URL format and components.",
|
|
538
|
+
suggestions: [
|
|
539
|
+
"Verify URL format is correct",
|
|
540
|
+
"Check protocol (http/https)",
|
|
541
|
+
"Verify hostname is valid",
|
|
542
|
+
],
|
|
543
|
+
}),
|
|
544
|
+
|
|
545
|
+
[ErrorCode.INVALID_METHOD]: defineHTTPError(ErrorCode.INVALID_METHOD, 0 as HTTPStatus, {
|
|
546
|
+
summary: "Invalid HTTP method",
|
|
547
|
+
detail: "The HTTP method provided is invalid or malformed.",
|
|
548
|
+
category: ErrorCategory.CLIENT,
|
|
549
|
+
retryable: false,
|
|
550
|
+
severity: ErrorSeverity.ERROR,
|
|
551
|
+
userMessage: "Invalid request method.",
|
|
552
|
+
devMessage: "Invalid HTTP method. Use GET, POST, PUT, PATCH, DELETE, etc.",
|
|
553
|
+
suggestions: [
|
|
554
|
+
"Use standard HTTP methods",
|
|
555
|
+
"Check method spelling",
|
|
556
|
+
"Verify method is supported",
|
|
557
|
+
],
|
|
558
|
+
}),
|
|
559
|
+
|
|
560
|
+
};
|
|
561
|
+
|
|
562
|
+
/**
|
|
563
|
+
* Map HTTP status code to error code (client-side).
|
|
564
|
+
*
|
|
565
|
+
* Uses bidirectional mapping - NO MAGIC STRINGS OR NUMBERS!
|
|
566
|
+
*
|
|
567
|
+
* @param status - HTTP status number
|
|
568
|
+
* @returns Error code from enum
|
|
569
|
+
*
|
|
570
|
+
* @example
|
|
571
|
+
* ```typescript
|
|
572
|
+
* const code = httpStatusToErrorCode(404); // ErrorCode.NOT_FOUND
|
|
573
|
+
* const code2 = httpStatusToErrorCode(500); // ErrorCode.INTERNAL_ERROR
|
|
574
|
+
* ```
|
|
575
|
+
*/
|
|
576
|
+
export function httpStatusToErrorCode(status: number): ErrorCode {
|
|
577
|
+
// Build map from HTTP_STATUS_ERROR_MAP
|
|
578
|
+
const entry = HTTP_STATUS_ERROR_MAP.find(([httpStatus]) => httpStatus === status);
|
|
579
|
+
return entry?.[1] ?? ErrorCode.UNKNOWN;
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
/**
|
|
583
|
+
* Map error code to HTTP status code (server-side).
|
|
584
|
+
*
|
|
585
|
+
* Used by servers to determine appropriate HTTP status for an error code.
|
|
586
|
+
* Uses bidirectional mapping - NO MAGIC STRINGS OR NUMBERS!
|
|
587
|
+
*
|
|
588
|
+
* @param code - Error code from enum
|
|
589
|
+
* @returns HTTP status number
|
|
590
|
+
*
|
|
591
|
+
* @example
|
|
592
|
+
* ```typescript
|
|
593
|
+
* const status = errorCodeToHTTPStatus(ErrorCode.NOT_FOUND); // 404
|
|
594
|
+
* const status2 = errorCodeToHTTPStatus(ErrorCode.INTERNAL_ERROR); // 500
|
|
595
|
+
* ```
|
|
596
|
+
*/
|
|
597
|
+
export function errorCodeToHTTPStatus(code: ErrorCode): HTTPStatus {
|
|
598
|
+
// Build map from HTTP_STATUS_ERROR_MAP
|
|
599
|
+
const entry = HTTP_STATUS_ERROR_MAP.find(([, errorCode]) => errorCode === code);
|
|
600
|
+
return entry?.[0] ?? HTTPStatus.INTERNAL_SERVER_ERROR;
|
|
601
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP Status Code Constants
|
|
3
|
+
*
|
|
4
|
+
* Comprehensive enum of HTTP status codes.
|
|
5
|
+
* NO MAGIC NUMBERS - use these constants everywhere!
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export enum HTTPStatus {
|
|
9
|
+
// 1xx Informational
|
|
10
|
+
CONTINUE = 100,
|
|
11
|
+
SWITCHING_PROTOCOLS = 101,
|
|
12
|
+
PROCESSING = 102,
|
|
13
|
+
EARLY_HINTS = 103,
|
|
14
|
+
|
|
15
|
+
// 2xx Success
|
|
16
|
+
OK = 200,
|
|
17
|
+
CREATED = 201,
|
|
18
|
+
ACCEPTED = 202,
|
|
19
|
+
NON_AUTHORITATIVE_INFORMATION = 203,
|
|
20
|
+
NO_CONTENT = 204,
|
|
21
|
+
RESET_CONTENT = 205,
|
|
22
|
+
PARTIAL_CONTENT = 206,
|
|
23
|
+
MULTI_STATUS = 207,
|
|
24
|
+
ALREADY_REPORTED = 208,
|
|
25
|
+
IM_USED = 226,
|
|
26
|
+
|
|
27
|
+
// 3xx Redirection
|
|
28
|
+
MULTIPLE_CHOICES = 300,
|
|
29
|
+
MOVED_PERMANENTLY = 301,
|
|
30
|
+
FOUND = 302,
|
|
31
|
+
SEE_OTHER = 303,
|
|
32
|
+
NOT_MODIFIED = 304,
|
|
33
|
+
USE_PROXY = 305,
|
|
34
|
+
TEMPORARY_REDIRECT = 307,
|
|
35
|
+
PERMANENT_REDIRECT = 308,
|
|
36
|
+
|
|
37
|
+
// 4xx Client Errors
|
|
38
|
+
BAD_REQUEST = 400,
|
|
39
|
+
UNAUTHORIZED = 401,
|
|
40
|
+
PAYMENT_REQUIRED = 402,
|
|
41
|
+
FORBIDDEN = 403,
|
|
42
|
+
NOT_FOUND = 404,
|
|
43
|
+
METHOD_NOT_ALLOWED = 405,
|
|
44
|
+
NOT_ACCEPTABLE = 406,
|
|
45
|
+
PROXY_AUTHENTICATION_REQUIRED = 407,
|
|
46
|
+
REQUEST_TIMEOUT = 408,
|
|
47
|
+
CONFLICT = 409,
|
|
48
|
+
GONE = 410,
|
|
49
|
+
LENGTH_REQUIRED = 411,
|
|
50
|
+
PRECONDITION_FAILED = 412,
|
|
51
|
+
PAYLOAD_TOO_LARGE = 413,
|
|
52
|
+
URI_TOO_LONG = 414,
|
|
53
|
+
UNSUPPORTED_MEDIA_TYPE = 415,
|
|
54
|
+
RANGE_NOT_SATISFIABLE = 416,
|
|
55
|
+
EXPECTATION_FAILED = 417,
|
|
56
|
+
IM_A_TEAPOT = 418,
|
|
57
|
+
MISDIRECTED_REQUEST = 421,
|
|
58
|
+
UNPROCESSABLE_ENTITY = 422,
|
|
59
|
+
LOCKED = 423,
|
|
60
|
+
FAILED_DEPENDENCY = 424,
|
|
61
|
+
TOO_EARLY = 425,
|
|
62
|
+
UPGRADE_REQUIRED = 426,
|
|
63
|
+
PRECONDITION_REQUIRED = 428,
|
|
64
|
+
TOO_MANY_REQUESTS = 429,
|
|
65
|
+
REQUEST_HEADER_FIELDS_TOO_LARGE = 431,
|
|
66
|
+
UNAVAILABLE_FOR_LEGAL_REASONS = 451,
|
|
67
|
+
CLIENT_CLOSED_REQUEST = 499, // nginx-specific
|
|
68
|
+
|
|
69
|
+
// 5xx Server Errors
|
|
70
|
+
INTERNAL_SERVER_ERROR = 500,
|
|
71
|
+
NOT_IMPLEMENTED = 501,
|
|
72
|
+
BAD_GATEWAY = 502,
|
|
73
|
+
SERVICE_UNAVAILABLE = 503,
|
|
74
|
+
GATEWAY_TIMEOUT = 504,
|
|
75
|
+
HTTP_VERSION_NOT_SUPPORTED = 505,
|
|
76
|
+
VARIANT_ALSO_NEGOTIATES = 506,
|
|
77
|
+
INSUFFICIENT_STORAGE = 507,
|
|
78
|
+
LOOP_DETECTED = 508,
|
|
79
|
+
NOT_EXTENDED = 510,
|
|
80
|
+
NETWORK_AUTHENTICATION_REQUIRED = 511,
|
|
81
|
+
NETWORK_CONNECT_TIMEOUT = 599, // non-standard
|
|
82
|
+
}
|