@sylphx/lens-server 1.2.0 → 1.3.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/dist/index.d.ts +73 -10
- package/dist/index.js +10 -0
- package/package.json +2 -2
- package/src/index.ts +21 -0
- package/src/server/create.ts +79 -7
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { query, mutation, router, QueryBuilder, MutationBuilder, QueryDef as QueryDef2, MutationDef as MutationDef2, RouterDef as RouterDef2, RouterRoutes, ResolverFn, ResolverContext, InferRouterContext as InferRouterContext2 } from "@sylphx/lens-core";
|
|
2
|
+
import { ContextValue, EntityDef, EntityDefinition, EntityResolvers, EntityResolversDefinition, InferRouterContext, MutationDef, QueryDef, RelationDef, RelationTypeWithForeignKey, RouterDef } from "@sylphx/lens-core";
|
|
2
3
|
import { EntityKey, Update, EmitCommand, InternalFieldUpdate, ArrayOperation } from "@sylphx/lens-core";
|
|
3
4
|
/** Client connection interface */
|
|
4
5
|
interface StateClient {
|
|
@@ -228,20 +229,23 @@ type OperationsMap = {
|
|
|
228
229
|
[key: string]: OperationMeta | OperationsMap;
|
|
229
230
|
};
|
|
230
231
|
/** Server configuration */
|
|
231
|
-
interface LensServerConfig<
|
|
232
|
+
interface LensServerConfig<
|
|
233
|
+
TContext extends ContextValue = ContextValue,
|
|
234
|
+
TRouter extends RouterDef = RouterDef
|
|
235
|
+
> {
|
|
232
236
|
/** Entity definitions */
|
|
233
237
|
entities?: EntitiesMap;
|
|
234
238
|
/** Relation definitions */
|
|
235
239
|
relations?: RelationsArray;
|
|
236
|
-
/** Router definition (namespaced operations) */
|
|
237
|
-
router?:
|
|
240
|
+
/** Router definition (namespaced operations) - context type is inferred */
|
|
241
|
+
router?: TRouter;
|
|
238
242
|
/** Query definitions (flat, legacy) */
|
|
239
243
|
queries?: QueriesMap;
|
|
240
244
|
/** Mutation definitions (flat, legacy) */
|
|
241
245
|
mutations?: MutationsMap;
|
|
242
246
|
/** Entity resolvers */
|
|
243
247
|
resolvers?: EntityResolvers<EntityResolversDefinition>;
|
|
244
|
-
/** Context factory */
|
|
248
|
+
/** Context factory - must return the context type expected by the router */
|
|
245
249
|
context?: (req?: unknown) => TContext | Promise<TContext>;
|
|
246
250
|
/** Server version */
|
|
247
251
|
version?: string;
|
|
@@ -422,19 +426,78 @@ type InferApi<T extends LensServer> = T extends LensServerImpl<infer Q, infer M>
|
|
|
422
426
|
mutations: M;
|
|
423
427
|
} : never;
|
|
424
428
|
/**
|
|
425
|
-
*
|
|
429
|
+
* Config helper type that infers context from router
|
|
426
430
|
*/
|
|
427
|
-
|
|
431
|
+
type ServerConfigWithInferredContext<
|
|
432
|
+
TRouter extends RouterDef,
|
|
433
|
+
Q extends QueriesMap = QueriesMap,
|
|
434
|
+
M extends MutationsMap = MutationsMap
|
|
435
|
+
> = {
|
|
436
|
+
entities?: EntitiesMap;
|
|
437
|
+
relations?: RelationsArray;
|
|
438
|
+
router: TRouter;
|
|
439
|
+
queries?: Q;
|
|
440
|
+
mutations?: M;
|
|
441
|
+
resolvers?: EntityResolvers<EntityResolversDefinition>;
|
|
442
|
+
/** Context factory - type is inferred from router's procedures */
|
|
443
|
+
context?: (req?: unknown) => InferRouterContext<TRouter> | Promise<InferRouterContext<TRouter>>;
|
|
444
|
+
version?: string;
|
|
445
|
+
};
|
|
446
|
+
/**
|
|
447
|
+
* Config without router (legacy flat queries/mutations)
|
|
448
|
+
*/
|
|
449
|
+
type ServerConfigLegacy<
|
|
428
450
|
TContext extends ContextValue = ContextValue,
|
|
429
451
|
Q extends QueriesMap = QueriesMap,
|
|
430
452
|
M extends MutationsMap = MutationsMap
|
|
431
|
-
>
|
|
453
|
+
> = {
|
|
454
|
+
entities?: EntitiesMap;
|
|
455
|
+
relations?: RelationsArray;
|
|
456
|
+
router?: undefined;
|
|
432
457
|
queries?: Q;
|
|
433
458
|
mutations?: M;
|
|
434
|
-
|
|
459
|
+
resolvers?: EntityResolvers<EntityResolversDefinition>;
|
|
460
|
+
context?: (req?: unknown) => TContext | Promise<TContext>;
|
|
461
|
+
version?: string;
|
|
462
|
+
};
|
|
463
|
+
/**
|
|
464
|
+
* Create Lens server with Operations API + Optimization Layer
|
|
465
|
+
*
|
|
466
|
+
* When using a router with typed context (from initLens), the context
|
|
467
|
+
* function's return type is automatically enforced to match.
|
|
468
|
+
*
|
|
469
|
+
* @example
|
|
470
|
+
* ```typescript
|
|
471
|
+
* // Context type is inferred from router's procedures
|
|
472
|
+
* const server = createServer({
|
|
473
|
+
* router: appRouter, // RouterDef with MyContext
|
|
474
|
+
* context: () => ({
|
|
475
|
+
* db: prisma,
|
|
476
|
+
* user: null,
|
|
477
|
+
* }), // Must match MyContext!
|
|
478
|
+
* })
|
|
479
|
+
* ```
|
|
480
|
+
*/
|
|
481
|
+
declare function createServer<
|
|
482
|
+
TRouter extends RouterDef,
|
|
483
|
+
Q extends QueriesMap = QueriesMap,
|
|
484
|
+
M extends MutationsMap = MutationsMap
|
|
485
|
+
>(config: ServerConfigWithInferredContext<TRouter, Q, M>): LensServer & {
|
|
486
|
+
_types: {
|
|
487
|
+
queries: Q;
|
|
488
|
+
mutations: M;
|
|
489
|
+
context: InferRouterContext<TRouter>;
|
|
490
|
+
};
|
|
491
|
+
};
|
|
492
|
+
declare function createServer<
|
|
493
|
+
TContext extends ContextValue = ContextValue,
|
|
494
|
+
Q extends QueriesMap = QueriesMap,
|
|
495
|
+
M extends MutationsMap = MutationsMap
|
|
496
|
+
>(config: ServerConfigLegacy<TContext, Q, M>): LensServer & {
|
|
435
497
|
_types: {
|
|
436
498
|
queries: Q;
|
|
437
499
|
mutations: M;
|
|
500
|
+
context: TContext;
|
|
438
501
|
};
|
|
439
502
|
};
|
|
440
503
|
/** SSE handler configuration */
|
|
@@ -507,4 +570,4 @@ declare class SSEHandler {
|
|
|
507
570
|
* Create SSE handler (transport adapter)
|
|
508
571
|
*/
|
|
509
572
|
declare function createSSEHandler(config: SSEHandlerConfig): SSEHandler;
|
|
510
|
-
export { createServer, createSSEHandler, createGraphStateManager, WebSocketLike, Subscription, StateUpdateMessage, StateFullMessage, StateClient, ServerMetadata, LensServerConfig as ServerConfig, SelectionObject, SSEHandlerConfig, SSEHandler, SSEClientInfo, RelationsArray, QueriesMap, OperationsMap, OperationMeta, MutationsMap, LensServer, LensResult, LensOperation, InferOutput, InferInput, InferApi, GraphStateManagerConfig, GraphStateManager, EntityKey, EntitiesMap };
|
|
573
|
+
export { router, query, mutation, createServer, createSSEHandler, createGraphStateManager, WebSocketLike, Subscription, StateUpdateMessage, StateFullMessage, StateClient, ServerMetadata, LensServerConfig as ServerConfig, SelectionObject, SSEHandlerConfig, SSEHandler, SSEClientInfo, RouterRoutes, RouterDef2 as RouterDef, ResolverFn, ResolverContext, RelationsArray, QueryDef2 as QueryDef, QueryBuilder, QueriesMap, OperationsMap, OperationMeta, MutationsMap, MutationDef2 as MutationDef, MutationBuilder, LensServer, LensResult, LensOperation, InferRouterContext2 as InferRouterContext, InferOutput, InferInput, InferApi, GraphStateManagerConfig, GraphStateManager, EntityKey, EntitiesMap };
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
// src/index.ts
|
|
2
|
+
import {
|
|
3
|
+
query,
|
|
4
|
+
mutation,
|
|
5
|
+
router
|
|
6
|
+
} from "@sylphx/lens-core";
|
|
7
|
+
|
|
1
8
|
// src/server/create.ts
|
|
2
9
|
import {
|
|
3
10
|
createContext,
|
|
@@ -1403,6 +1410,9 @@ function createSSEHandler(config) {
|
|
|
1403
1410
|
return new SSEHandler(config);
|
|
1404
1411
|
}
|
|
1405
1412
|
export {
|
|
1413
|
+
router,
|
|
1414
|
+
query,
|
|
1415
|
+
mutation,
|
|
1406
1416
|
createServer,
|
|
1407
1417
|
createSSEHandler,
|
|
1408
1418
|
createGraphStateManager,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sylphx/lens-server",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Server runtime for Lens API framework",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"author": "SylphxAI",
|
|
30
30
|
"license": "MIT",
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@sylphx/lens-core": "^1.
|
|
32
|
+
"@sylphx/lens-core": "^1.3.0"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"typescript": "^5.9.3",
|
package/src/index.ts
CHANGED
|
@@ -5,6 +5,27 @@
|
|
|
5
5
|
* Operations-based server with GraphStateManager for reactive updates.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
+
// =============================================================================
|
|
9
|
+
// Re-exports from Core (commonly used with server)
|
|
10
|
+
// =============================================================================
|
|
11
|
+
|
|
12
|
+
export {
|
|
13
|
+
// Operations
|
|
14
|
+
query,
|
|
15
|
+
mutation,
|
|
16
|
+
router,
|
|
17
|
+
// Types
|
|
18
|
+
type QueryBuilder,
|
|
19
|
+
type MutationBuilder,
|
|
20
|
+
type QueryDef,
|
|
21
|
+
type MutationDef,
|
|
22
|
+
type RouterDef,
|
|
23
|
+
type RouterRoutes,
|
|
24
|
+
type ResolverFn,
|
|
25
|
+
type ResolverContext,
|
|
26
|
+
type InferRouterContext,
|
|
27
|
+
} from "@sylphx/lens-core";
|
|
28
|
+
|
|
8
29
|
// =============================================================================
|
|
9
30
|
// Server
|
|
10
31
|
// =============================================================================
|
package/src/server/create.ts
CHANGED
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
type EntityResolvers,
|
|
18
18
|
type EntityResolversDefinition,
|
|
19
19
|
type FieldType,
|
|
20
|
+
type InferRouterContext,
|
|
20
21
|
type MutationDef,
|
|
21
22
|
type QueryDef,
|
|
22
23
|
type RelationDef,
|
|
@@ -72,20 +73,23 @@ export type OperationsMap = {
|
|
|
72
73
|
};
|
|
73
74
|
|
|
74
75
|
/** Server configuration */
|
|
75
|
-
export interface LensServerConfig<
|
|
76
|
+
export interface LensServerConfig<
|
|
77
|
+
TContext extends ContextValue = ContextValue,
|
|
78
|
+
TRouter extends RouterDef = RouterDef,
|
|
79
|
+
> {
|
|
76
80
|
/** Entity definitions */
|
|
77
81
|
entities?: EntitiesMap;
|
|
78
82
|
/** Relation definitions */
|
|
79
83
|
relations?: RelationsArray;
|
|
80
|
-
/** Router definition (namespaced operations) */
|
|
81
|
-
router?:
|
|
84
|
+
/** Router definition (namespaced operations) - context type is inferred */
|
|
85
|
+
router?: TRouter;
|
|
82
86
|
/** Query definitions (flat, legacy) */
|
|
83
87
|
queries?: QueriesMap;
|
|
84
88
|
/** Mutation definitions (flat, legacy) */
|
|
85
89
|
mutations?: MutationsMap;
|
|
86
90
|
/** Entity resolvers */
|
|
87
91
|
resolvers?: EntityResolvers<EntityResolversDefinition>;
|
|
88
|
-
/** Context factory */
|
|
92
|
+
/** Context factory - must return the context type expected by the router */
|
|
89
93
|
context?: (req?: unknown) => TContext | Promise<TContext>;
|
|
90
94
|
/** Server version */
|
|
91
95
|
version?: string;
|
|
@@ -1546,17 +1550,85 @@ export type InferApi<T extends LensServer> = T extends LensServerImpl<infer Q, i
|
|
|
1546
1550
|
// Factory
|
|
1547
1551
|
// =============================================================================
|
|
1548
1552
|
|
|
1553
|
+
/**
|
|
1554
|
+
* Config helper type that infers context from router
|
|
1555
|
+
*/
|
|
1556
|
+
export type ServerConfigWithInferredContext<
|
|
1557
|
+
TRouter extends RouterDef,
|
|
1558
|
+
Q extends QueriesMap = QueriesMap,
|
|
1559
|
+
M extends MutationsMap = MutationsMap,
|
|
1560
|
+
> = {
|
|
1561
|
+
entities?: EntitiesMap;
|
|
1562
|
+
relations?: RelationsArray;
|
|
1563
|
+
router: TRouter;
|
|
1564
|
+
queries?: Q;
|
|
1565
|
+
mutations?: M;
|
|
1566
|
+
resolvers?: EntityResolvers<EntityResolversDefinition>;
|
|
1567
|
+
/** Context factory - type is inferred from router's procedures */
|
|
1568
|
+
context?: (req?: unknown) => InferRouterContext<TRouter> | Promise<InferRouterContext<TRouter>>;
|
|
1569
|
+
version?: string;
|
|
1570
|
+
};
|
|
1571
|
+
|
|
1572
|
+
/**
|
|
1573
|
+
* Config without router (legacy flat queries/mutations)
|
|
1574
|
+
*/
|
|
1575
|
+
export type ServerConfigLegacy<
|
|
1576
|
+
TContext extends ContextValue = ContextValue,
|
|
1577
|
+
Q extends QueriesMap = QueriesMap,
|
|
1578
|
+
M extends MutationsMap = MutationsMap,
|
|
1579
|
+
> = {
|
|
1580
|
+
entities?: EntitiesMap;
|
|
1581
|
+
relations?: RelationsArray;
|
|
1582
|
+
router?: undefined;
|
|
1583
|
+
queries?: Q;
|
|
1584
|
+
mutations?: M;
|
|
1585
|
+
resolvers?: EntityResolvers<EntityResolversDefinition>;
|
|
1586
|
+
context?: (req?: unknown) => TContext | Promise<TContext>;
|
|
1587
|
+
version?: string;
|
|
1588
|
+
};
|
|
1589
|
+
|
|
1549
1590
|
/**
|
|
1550
1591
|
* Create Lens server with Operations API + Optimization Layer
|
|
1592
|
+
*
|
|
1593
|
+
* When using a router with typed context (from initLens), the context
|
|
1594
|
+
* function's return type is automatically enforced to match.
|
|
1595
|
+
*
|
|
1596
|
+
* @example
|
|
1597
|
+
* ```typescript
|
|
1598
|
+
* // Context type is inferred from router's procedures
|
|
1599
|
+
* const server = createServer({
|
|
1600
|
+
* router: appRouter, // RouterDef with MyContext
|
|
1601
|
+
* context: () => ({
|
|
1602
|
+
* db: prisma,
|
|
1603
|
+
* user: null,
|
|
1604
|
+
* }), // Must match MyContext!
|
|
1605
|
+
* })
|
|
1606
|
+
* ```
|
|
1551
1607
|
*/
|
|
1608
|
+
export function createServer<
|
|
1609
|
+
TRouter extends RouterDef,
|
|
1610
|
+
Q extends QueriesMap = QueriesMap,
|
|
1611
|
+
M extends MutationsMap = MutationsMap,
|
|
1612
|
+
>(
|
|
1613
|
+
config: ServerConfigWithInferredContext<TRouter, Q, M>,
|
|
1614
|
+
): LensServer & { _types: { queries: Q; mutations: M; context: InferRouterContext<TRouter> } };
|
|
1615
|
+
|
|
1616
|
+
export function createServer<
|
|
1617
|
+
TContext extends ContextValue = ContextValue,
|
|
1618
|
+
Q extends QueriesMap = QueriesMap,
|
|
1619
|
+
M extends MutationsMap = MutationsMap,
|
|
1620
|
+
>(
|
|
1621
|
+
config: ServerConfigLegacy<TContext, Q, M>,
|
|
1622
|
+
): LensServer & { _types: { queries: Q; mutations: M; context: TContext } };
|
|
1623
|
+
|
|
1552
1624
|
export function createServer<
|
|
1553
1625
|
TContext extends ContextValue = ContextValue,
|
|
1554
1626
|
Q extends QueriesMap = QueriesMap,
|
|
1555
1627
|
M extends MutationsMap = MutationsMap,
|
|
1556
1628
|
>(
|
|
1557
1629
|
config: LensServerConfig<TContext> & { queries?: Q; mutations?: M },
|
|
1558
|
-
): LensServer & { _types: { queries: Q; mutations: M } } {
|
|
1559
|
-
const server = new LensServerImpl(config) as LensServerImpl<Q, M>;
|
|
1630
|
+
): LensServer & { _types: { queries: Q; mutations: M; context: TContext } } {
|
|
1631
|
+
const server = new LensServerImpl(config) as LensServerImpl<Q, M, TContext>;
|
|
1560
1632
|
// Attach type marker for inference (stripped at runtime)
|
|
1561
|
-
return server as unknown as LensServer & { _types: { queries: Q; mutations: M } };
|
|
1633
|
+
return server as unknown as LensServer & { _types: { queries: Q; mutations: M; context: TContext } };
|
|
1562
1634
|
}
|