@zero-server/sdk 0.9.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 (126) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +437 -0
  3. package/index.js +412 -0
  4. package/lib/app.js +1172 -0
  5. package/lib/auth/authorize.js +399 -0
  6. package/lib/auth/enrollment.js +367 -0
  7. package/lib/auth/index.js +57 -0
  8. package/lib/auth/jwt.js +731 -0
  9. package/lib/auth/oauth.js +362 -0
  10. package/lib/auth/session.js +588 -0
  11. package/lib/auth/trustedDevice.js +409 -0
  12. package/lib/auth/twoFactor.js +1150 -0
  13. package/lib/auth/webauthn.js +946 -0
  14. package/lib/body/index.js +14 -0
  15. package/lib/body/json.js +109 -0
  16. package/lib/body/multipart.js +440 -0
  17. package/lib/body/raw.js +71 -0
  18. package/lib/body/rawBuffer.js +161 -0
  19. package/lib/body/sendError.js +25 -0
  20. package/lib/body/text.js +75 -0
  21. package/lib/body/typeMatch.js +42 -0
  22. package/lib/body/urlencoded.js +235 -0
  23. package/lib/cli.js +845 -0
  24. package/lib/cluster.js +666 -0
  25. package/lib/debug.js +372 -0
  26. package/lib/env/index.js +465 -0
  27. package/lib/errors.js +683 -0
  28. package/lib/fetch/index.js +256 -0
  29. package/lib/grpc/balancer.js +378 -0
  30. package/lib/grpc/call.js +708 -0
  31. package/lib/grpc/client.js +764 -0
  32. package/lib/grpc/codec.js +1221 -0
  33. package/lib/grpc/credentials.js +398 -0
  34. package/lib/grpc/frame.js +262 -0
  35. package/lib/grpc/health.js +287 -0
  36. package/lib/grpc/index.js +121 -0
  37. package/lib/grpc/metadata.js +461 -0
  38. package/lib/grpc/proto.js +821 -0
  39. package/lib/grpc/reflection.js +590 -0
  40. package/lib/grpc/server.js +445 -0
  41. package/lib/grpc/status.js +118 -0
  42. package/lib/grpc/watch.js +173 -0
  43. package/lib/http/index.js +10 -0
  44. package/lib/http/request.js +727 -0
  45. package/lib/http/response.js +799 -0
  46. package/lib/lifecycle.js +557 -0
  47. package/lib/middleware/compress.js +230 -0
  48. package/lib/middleware/cookieParser.js +237 -0
  49. package/lib/middleware/cors.js +93 -0
  50. package/lib/middleware/csrf.js +137 -0
  51. package/lib/middleware/errorHandler.js +101 -0
  52. package/lib/middleware/helmet.js +176 -0
  53. package/lib/middleware/index.js +17 -0
  54. package/lib/middleware/logger.js +74 -0
  55. package/lib/middleware/rateLimit.js +88 -0
  56. package/lib/middleware/requestId.js +54 -0
  57. package/lib/middleware/static.js +326 -0
  58. package/lib/middleware/timeout.js +72 -0
  59. package/lib/middleware/validator.js +255 -0
  60. package/lib/observe/health.js +326 -0
  61. package/lib/observe/index.js +50 -0
  62. package/lib/observe/logger.js +359 -0
  63. package/lib/observe/metrics.js +805 -0
  64. package/lib/observe/tracing.js +592 -0
  65. package/lib/orm/adapters/json.js +290 -0
  66. package/lib/orm/adapters/memory.js +764 -0
  67. package/lib/orm/adapters/mongo.js +764 -0
  68. package/lib/orm/adapters/mysql.js +933 -0
  69. package/lib/orm/adapters/postgres.js +1144 -0
  70. package/lib/orm/adapters/redis.js +1534 -0
  71. package/lib/orm/adapters/sql-base.js +212 -0
  72. package/lib/orm/adapters/sqlite.js +858 -0
  73. package/lib/orm/audit.js +649 -0
  74. package/lib/orm/cache.js +394 -0
  75. package/lib/orm/geo.js +387 -0
  76. package/lib/orm/index.js +784 -0
  77. package/lib/orm/migrate.js +432 -0
  78. package/lib/orm/model.js +1706 -0
  79. package/lib/orm/plugin.js +375 -0
  80. package/lib/orm/procedures.js +836 -0
  81. package/lib/orm/profiler.js +233 -0
  82. package/lib/orm/query.js +1772 -0
  83. package/lib/orm/replicas.js +241 -0
  84. package/lib/orm/schema.js +307 -0
  85. package/lib/orm/search.js +380 -0
  86. package/lib/orm/seed/data/commerce.js +136 -0
  87. package/lib/orm/seed/data/internet.js +111 -0
  88. package/lib/orm/seed/data/locations.js +204 -0
  89. package/lib/orm/seed/data/names.js +338 -0
  90. package/lib/orm/seed/data/person.js +128 -0
  91. package/lib/orm/seed/data/phone.js +211 -0
  92. package/lib/orm/seed/data/words.js +134 -0
  93. package/lib/orm/seed/factory.js +178 -0
  94. package/lib/orm/seed/fake.js +1186 -0
  95. package/lib/orm/seed/index.js +18 -0
  96. package/lib/orm/seed/rng.js +71 -0
  97. package/lib/orm/seed/seeder.js +125 -0
  98. package/lib/orm/seed/unique.js +68 -0
  99. package/lib/orm/snapshot.js +366 -0
  100. package/lib/orm/tenancy.js +605 -0
  101. package/lib/orm/views.js +350 -0
  102. package/lib/router/index.js +436 -0
  103. package/lib/sse/index.js +8 -0
  104. package/lib/sse/stream.js +349 -0
  105. package/lib/ws/connection.js +451 -0
  106. package/lib/ws/handshake.js +125 -0
  107. package/lib/ws/index.js +14 -0
  108. package/lib/ws/room.js +223 -0
  109. package/package.json +73 -0
  110. package/types/app.d.ts +223 -0
  111. package/types/auth.d.ts +520 -0
  112. package/types/cluster.d.ts +75 -0
  113. package/types/env.d.ts +80 -0
  114. package/types/errors.d.ts +316 -0
  115. package/types/fetch.d.ts +43 -0
  116. package/types/grpc.d.ts +432 -0
  117. package/types/index.d.ts +384 -0
  118. package/types/lifecycle.d.ts +60 -0
  119. package/types/middleware.d.ts +320 -0
  120. package/types/observe.d.ts +304 -0
  121. package/types/orm.d.ts +1887 -0
  122. package/types/request.d.ts +109 -0
  123. package/types/response.d.ts +157 -0
  124. package/types/router.d.ts +78 -0
  125. package/types/sse.d.ts +78 -0
  126. package/types/websocket.d.ts +126 -0
package/index.js ADDED
@@ -0,0 +1,412 @@
1
+ /**
2
+ * @module @zero-server/sdk
3
+ * @description Public entry point for the @zero-server/sdk package.
4
+ * Re-exports every middleware, the app factory, and the fetch helper.
5
+ */
6
+ const App = require('./lib/app');
7
+ const Router = require('./lib/router');
8
+ const cors = require('./lib/middleware/cors');
9
+ const fetch = require('./lib/fetch');
10
+ const body = require('./lib/body');
11
+ const serveStatic = require('./lib/middleware/static');
12
+ const rateLimit = require('./lib/middleware/rateLimit');
13
+ const logger = require('./lib/middleware/logger');
14
+ const compress = require('./lib/middleware/compress');
15
+ const helmet = require('./lib/middleware/helmet');
16
+ const timeout = require('./lib/middleware/timeout');
17
+ const requestId = require('./lib/middleware/requestId');
18
+ const cookieParser = require('./lib/middleware/cookieParser');
19
+ const csrf = require('./lib/middleware/csrf');
20
+ const validate = require('./lib/middleware/validator');
21
+ const errorHandler = require('./lib/middleware/errorHandler');
22
+ const { WebSocketConnection, WebSocketPool } = require('./lib/ws');
23
+ const { SSEStream } = require('./lib/sse');
24
+ const env = require('./lib/env');
25
+ const { Database, Model, TYPES, Query, validateFKAction, validateCheck, Migrator, defineMigration, QueryCache, Seeder, SeederRunner, Factory, Fake, QueryProfiler, ReplicaManager, DatabaseView, FullTextSearch, GeoQuery, EARTH_RADIUS_KM, EARTH_RADIUS_MI, TenantManager, AuditLog, PluginManager, StoredProcedure, StoredFunction, TriggerManager, buildSnapshot, loadSnapshot, saveSnapshot, diffSnapshots, hasNoChanges, generateMigrationCode, discoverModels, SNAPSHOT_FILE } = require('./lib/orm');
26
+ const { CLI, runCLI } = require('./lib/cli');
27
+ const errors = require('./lib/errors');
28
+ const debug = require('./lib/debug');
29
+ const { LifecycleManager, LIFECYCLE_STATE } = require('./lib/lifecycle');
30
+ const { ClusterManager, clusterize } = require('./lib/cluster');
31
+ const {
32
+ Logger, structuredLogger,
33
+ Counter, Gauge, Histogram, MetricsRegistry, DEFAULT_BUCKETS,
34
+ createDefaultMetrics, metricsMiddleware, metricsEndpoint: metricsEndpointHandler,
35
+ Span, Tracer, parseTraceparent, formatTraceparent, tracingMiddleware, instrumentFetch,
36
+ healthCheck, createHealthHandlers, memoryCheck, eventLoopCheck, diskSpaceCheck,
37
+ } = require('./lib/observe');
38
+ const {
39
+ jwt, sign: jwtSign, verify: jwtVerify, decode: jwtDecode, jwks, tokenPair, createRefreshToken, SUPPORTED_ALGORITHMS,
40
+ session, Session, MemoryStore,
41
+ oauth, generatePKCE, generateState, PROVIDERS: OAUTH_PROVIDERS,
42
+ authorize, can, canAny, Policy, gate, attachUserHelpers,
43
+ twoFactor,
44
+ webauthn,
45
+ trustedDevice,
46
+ enrollment,
47
+ } = require('./lib/auth');
48
+ const {
49
+ GrpcStatus, grpcToHttp, statusName: grpcStatusName, STATUS_NAMES: GRPC_STATUS_NAMES,
50
+ Metadata: GrpcMetadata,
51
+ Writer: ProtoWriter, Reader: ProtoReader, encode: protoEncode, decode: protoDecode,
52
+ WIRE_TYPE, TYPE_INFO,
53
+ parseProto, parseProtoFile,
54
+ frameEncode, FrameParser,
55
+ GrpcServiceRegistry, GrpcClient,
56
+ HealthService: GrpcHealthService, ServingStatus: GrpcServingStatus,
57
+ ReflectionService: GrpcReflectionService,
58
+ LoadBalancer: GrpcLoadBalancer, Subchannel: GrpcSubchannel, SubchannelState: GrpcSubchannelState,
59
+ ChannelCredentials, createRotatingCredentials,
60
+ watchProto,
61
+ } = require('./lib/grpc');
62
+ const { version } = require('./package.json');
63
+
64
+ module.exports = {
65
+ /**
66
+ * Create a new application instance.
67
+ * @returns {import('./lib/app')} Fresh App with an empty middleware stack.
68
+ */
69
+ createApp: () => new App(),
70
+ /**
71
+ * Create a standalone Router for modular route grouping.
72
+ * Mount on an App with `app.use('/prefix', router)`.
73
+ * @returns {import('./lib/router')} Fresh Router instance.
74
+ */
75
+ Router: () => new Router(),
76
+ /** @see module:cors */
77
+ cors,
78
+ /** @see module:fetch */
79
+ fetch,
80
+ // body parsers
81
+ /** @see module:body/json */
82
+ json: body.json,
83
+ /** @see module:body/urlencoded */
84
+ urlencoded: body.urlencoded,
85
+ /** @see module:body/text */
86
+ text: body.text,
87
+ /** @see module:body/raw */
88
+ raw: body.raw,
89
+ /** @see module:body/multipart */
90
+ multipart: body.multipart,
91
+ // serving
92
+ /** @see module:static */
93
+ static: serveStatic,
94
+ // middleware
95
+ /** @see module:rateLimit */
96
+ rateLimit,
97
+ /** @see module:logger */
98
+ logger,
99
+ /** @see module:compress */
100
+ compress,
101
+ /** @see module:helmet */
102
+ helmet,
103
+ /** @see module:timeout */
104
+ timeout,
105
+ /** @see module:requestId */
106
+ requestId,
107
+ /** @see module:cookieParser */
108
+ cookieParser,
109
+ /** @see module:csrf */
110
+ csrf,
111
+ /** @see module:validator */
112
+ validate,
113
+ /** @see module:middleware/errorHandler */
114
+ errorHandler,
115
+ // env
116
+ /** @see module:env */
117
+ env,
118
+ // ORM
119
+ /** @see module:orm */
120
+ Database,
121
+ /** @see module:orm/model */
122
+ Model,
123
+ /** @see module:orm/schema */
124
+ TYPES,
125
+ /** @see module:orm/query */
126
+ Query,
127
+ /** @see module:orm/schema */
128
+ validateFKAction,
129
+ /** @see module:orm/schema */
130
+ validateCheck,
131
+ // ORM: Migration framework
132
+ /** @see module:orm/migrate */
133
+ Migrator,
134
+ /** @see module:orm/migrate */
135
+ defineMigration,
136
+ // ORM: Schema snapshots (EF Core–style auto-migrations)
137
+ /** @see module:orm/snapshot */
138
+ buildSnapshot,
139
+ loadSnapshot,
140
+ saveSnapshot,
141
+ diffSnapshots,
142
+ hasNoChanges,
143
+ generateMigrationCode,
144
+ discoverModels,
145
+ SNAPSHOT_FILE,
146
+ // ORM: Query caching
147
+ /** @see module:orm/cache */
148
+ QueryCache,
149
+ // ORM: Seeding
150
+ /** @see module:orm/seed */
151
+ Seeder,
152
+ /** @see module:orm/seed */
153
+ SeederRunner,
154
+ /** @see module:orm/seed */
155
+ Factory,
156
+ /** @see module:orm/seed */
157
+ Fake,
158
+ // ORM: Performance & Scalability
159
+ /** @see module:orm/profiler */
160
+ QueryProfiler,
161
+ /** @see module:orm/replicas */
162
+ ReplicaManager,
163
+ // ORM: Advanced Features (Phase 3)
164
+ /** @see module:orm/views */
165
+ DatabaseView,
166
+ /** @see module:orm/search */
167
+ FullTextSearch,
168
+ /** @see module:orm/geo */
169
+ GeoQuery,
170
+ /** @see module:orm/geo */
171
+ EARTH_RADIUS_KM,
172
+ /** @see module:orm/geo */
173
+ EARTH_RADIUS_MI,
174
+ // ORM: Enterprise Infrastructure (Phase 4)
175
+ /** @see module:orm/tenancy */
176
+ TenantManager,
177
+ /** @see module:orm/audit */
178
+ AuditLog,
179
+ /** @see module:orm/plugin */
180
+ PluginManager,
181
+ /** @see module:orm/procedures */
182
+ StoredProcedure,
183
+ /** @see module:orm/procedures */
184
+ StoredFunction,
185
+ /** @see module:orm/procedures */
186
+ TriggerManager,
187
+ // Error handling & debugging
188
+ /** @see module:errors */
189
+ HttpError: errors.HttpError,
190
+ BadRequestError: errors.BadRequestError,
191
+ UnauthorizedError: errors.UnauthorizedError,
192
+ ForbiddenError: errors.ForbiddenError,
193
+ NotFoundError: errors.NotFoundError,
194
+ MethodNotAllowedError: errors.MethodNotAllowedError,
195
+ ConflictError: errors.ConflictError,
196
+ GoneError: errors.GoneError,
197
+ PayloadTooLargeError: errors.PayloadTooLargeError,
198
+ UnprocessableEntityError: errors.UnprocessableEntityError,
199
+ ValidationError: errors.ValidationError,
200
+ TooManyRequestsError: errors.TooManyRequestsError,
201
+ InternalError: errors.InternalError,
202
+ NotImplementedError: errors.NotImplementedError,
203
+ BadGatewayError: errors.BadGatewayError,
204
+ ServiceUnavailableError: errors.ServiceUnavailableError,
205
+ // Framework-specific errors
206
+ DatabaseError: errors.DatabaseError,
207
+ ConfigurationError: errors.ConfigurationError,
208
+ MiddlewareError: errors.MiddlewareError,
209
+ RoutingError: errors.RoutingError,
210
+ TimeoutError: errors.TimeoutError,
211
+ // ORM-specific errors
212
+ ConnectionError: errors.ConnectionError,
213
+ MigrationError: errors.MigrationError,
214
+ TransactionError: errors.TransactionError,
215
+ QueryError: errors.QueryError,
216
+ AdapterError: errors.AdapterError,
217
+ CacheError: errors.CacheError,
218
+ // Phase 4 errors
219
+ TenancyError: errors.TenancyError,
220
+ AuditError: errors.AuditError,
221
+ PluginError: errors.PluginError,
222
+ ProcedureError: errors.ProcedureError,
223
+ createError: errors.createError,
224
+ isHttpError: errors.isHttpError,
225
+ /** @see module:debug */
226
+ debug,
227
+ // ORM: CLI tooling
228
+ /** @see module:cli */
229
+ CLI,
230
+ /** @see module:cli */
231
+ runCLI,
232
+ // classes (for advanced / direct usage)
233
+ /** @see module:ws/connection */
234
+ WebSocketConnection,
235
+ /** @see module:ws/room */
236
+ WebSocketPool,
237
+ /** @see module:sse/stream */
238
+ SSEStream,
239
+ // Lifecycle & Clustering
240
+ /** @see module:lifecycle */
241
+ LifecycleManager,
242
+ /** @see module:lifecycle */
243
+ LIFECYCLE_STATE,
244
+ /** @see module:cluster */
245
+ ClusterManager,
246
+ /** @see module:cluster */
247
+ cluster: clusterize,
248
+ // Observability — Structured Logging
249
+ /** @see module:observe/logger */
250
+ Logger,
251
+ /** @see module:observe/logger */
252
+ structuredLogger,
253
+ // Observability — Metrics
254
+ /** @see module:observe/metrics */
255
+ Counter,
256
+ /** @see module:observe/metrics */
257
+ Gauge,
258
+ /** @see module:observe/metrics */
259
+ Histogram,
260
+ /** @see module:observe/metrics */
261
+ MetricsRegistry,
262
+ /** @see module:observe/metrics */
263
+ DEFAULT_BUCKETS,
264
+ /** @see module:observe/metrics */
265
+ createDefaultMetrics,
266
+ /** @see module:observe/metrics */
267
+ metricsMiddleware,
268
+ /** @see module:observe/metrics */
269
+ metricsEndpoint: metricsEndpointHandler,
270
+ // Observability — Tracing
271
+ /** @see module:observe/tracing */
272
+ Span,
273
+ /** @see module:observe/tracing */
274
+ Tracer,
275
+ /** @see module:observe/tracing */
276
+ parseTraceparent,
277
+ /** @see module:observe/tracing */
278
+ formatTraceparent,
279
+ /** @see module:observe/tracing */
280
+ tracingMiddleware,
281
+ /** @see module:observe/tracing */
282
+ instrumentFetch,
283
+ // Observability — Health Checks
284
+ /** @see module:observe/health */
285
+ healthCheck,
286
+ /** @see module:observe/health */
287
+ createHealthHandlers,
288
+ /** @see module:observe/health */
289
+ memoryCheck,
290
+ /** @see module:observe/health */
291
+ eventLoopCheck,
292
+ /** @see module:observe/health */
293
+ diskSpaceCheck,
294
+ // Authentication & Sessions (Phase 3)
295
+ /** @see module:auth/jwt */
296
+ jwt,
297
+ /** @see module:auth/jwt */
298
+ jwtSign,
299
+ /** @see module:auth/jwt */
300
+ jwtVerify,
301
+ /** @see module:auth/jwt */
302
+ jwtDecode,
303
+ /** @see module:auth/jwt */
304
+ jwks,
305
+ /** @see module:auth/jwt */
306
+ tokenPair,
307
+ /** @see module:auth/jwt */
308
+ createRefreshToken,
309
+ /** @see module:auth/jwt */
310
+ SUPPORTED_ALGORITHMS,
311
+ // Auth: Sessions
312
+ /** @see module:auth/session */
313
+ session,
314
+ /** @see module:auth/session */
315
+ Session,
316
+ /** @see module:auth/session */
317
+ MemoryStore,
318
+ // Auth: OAuth2
319
+ /** @see module:auth/oauth */
320
+ oauth,
321
+ /** @see module:auth/oauth */
322
+ generatePKCE,
323
+ /** @see module:auth/oauth */
324
+ generateState,
325
+ /** @see module:auth/oauth */
326
+ OAUTH_PROVIDERS,
327
+ // Auth: Authorization
328
+ /** @see module:auth/authorize */
329
+ authorize,
330
+ /** @see module:auth/authorize */
331
+ can,
332
+ /** @see module:auth/authorize */
333
+ canAny,
334
+ /** @see module:auth/authorize */
335
+ Policy,
336
+ /** @see module:auth/authorize */
337
+ gate,
338
+ /** @see module:auth/authorize */
339
+ attachUserHelpers,
340
+ // Auth: Two-Factor Authentication
341
+ /** @see module:auth/twoFactor */
342
+ twoFactor,
343
+ // Auth: WebAuthn / Passkeys
344
+ /** @see module:auth/webauthn */
345
+ webauthn,
346
+ // Auth: Trusted Device / Remember Me
347
+ /** @see module:auth/trustedDevice */
348
+ trustedDevice,
349
+ // Auth: 2FA Enrollment Flow
350
+ /** @see module:auth/enrollment */
351
+ enrollment,
352
+ // gRPC
353
+ /** @see module:grpc/status */
354
+ GrpcStatus,
355
+ /** @see module:grpc/status */
356
+ grpcToHttp,
357
+ /** @see module:grpc/status */
358
+ grpcStatusName,
359
+ /** @see module:grpc/status */
360
+ GRPC_STATUS_NAMES,
361
+ /** @see module:grpc/metadata */
362
+ GrpcMetadata,
363
+ /** @see module:grpc/codec */
364
+ ProtoWriter,
365
+ /** @see module:grpc/codec */
366
+ ProtoReader,
367
+ /** @see module:grpc/codec */
368
+ protoEncode,
369
+ /** @see module:grpc/codec */
370
+ protoDecode,
371
+ /** @see module:grpc/codec */
372
+ WIRE_TYPE,
373
+ /** @see module:grpc/codec */
374
+ TYPE_INFO,
375
+ /** @see module:grpc/proto */
376
+ parseProto,
377
+ /** @see module:grpc/proto */
378
+ parseProtoFile,
379
+ /** @see module:grpc/frame */
380
+ frameEncode,
381
+ /** @see module:grpc/frame */
382
+ FrameParser,
383
+ /** @see module:grpc/server */
384
+ GrpcServiceRegistry,
385
+ /** @see module:grpc/client */
386
+ GrpcClient,
387
+ // gRPC: Health check
388
+ /** @see module:grpc/health */
389
+ GrpcHealthService,
390
+ /** @see module:grpc/health */
391
+ GrpcServingStatus,
392
+ // gRPC: Server reflection
393
+ /** @see module:grpc/reflection */
394
+ GrpcReflectionService,
395
+ // gRPC: Load balancing
396
+ /** @see module:grpc/balancer */
397
+ GrpcLoadBalancer,
398
+ /** @see module:grpc/balancer */
399
+ GrpcSubchannel,
400
+ /** @see module:grpc/balancer */
401
+ GrpcSubchannelState,
402
+ // gRPC: Channel credentials
403
+ /** @see module:grpc/credentials */
404
+ ChannelCredentials,
405
+ /** @see module:grpc/credentials */
406
+ createRotatingCredentials,
407
+ // gRPC: Proto hot-reload
408
+ /** @see module:grpc/watch */
409
+ watchProto,
410
+ /** Package version */
411
+ version,
412
+ };