@owlmeans/server-app 0.1.18-rc.2 → 0.1.18-rc.21

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/README.md CHANGED
@@ -12,7 +12,7 @@ The main entry point for OwlMeans backend services — aggregates server package
12
12
  ## Installation
13
13
 
14
14
  ```bash
15
- bun add @owlmeans/server-app
15
+ bun add @owlmeans/server-app@^0.1.18-rc.17
16
16
  ```
17
17
 
18
18
  ## Usage
@@ -20,27 +20,32 @@ bun add @owlmeans/server-app
20
20
  Bootstrap a backend service:
21
21
 
22
22
  ```typescript
23
- import { makeContext, main, modules, config, service, AppType, Layer } from '@owlmeans/server-app'
23
+ import { makeContext, main, entrypoints, config, service, AppType } from '@owlmeans/server-app'
24
24
 
25
25
  const appConfig = config(
26
26
  AppType.Backend,
27
27
  'manager-api',
28
- service({ service: 'mongo', host: process.env.MONGO_HOST!, port: 27017 }),
29
- { layer: Layer.Service, port: 3000 }
28
+ service({ service: 'manager-api', host: process.env.API_HOST!, port: 3000 }),
29
+ { port: 3000, dbs: [{ service: 'mongo', alias: 'mongo', host: process.env.MONGO_HOST!, port: 27017 }] }
30
30
  )
31
31
 
32
32
  const context = makeContext(appConfig)
33
- await main(context, [...modules, ...appModules])
33
+ await main(context, [...entrypoints, ...appEntrypoints])
34
34
  ```
35
35
 
36
- Elevate an entrypoint with a handler:
36
+ Bind a shared protocol with a handler:
37
37
 
38
38
  ```typescript
39
- import { elevate, handleBody, guard, GUARD_ED25519, modules } from '@owlmeans/server-app'
40
-
41
- elevate(modules, 'project-create', handleBody<CreateProject>(async (payload, ctx) => {
42
- return await (ctx as Context).project().create(payload)
43
- }), guard(GUARD_ED25519))
39
+ import { bind } from '@owlmeans/server-entrypoint'
40
+ import { handlers } from '@owlmeans/server-api'
41
+ import { appEntrypoints as protocols } from 'my-app-common'
42
+ import type { Context } from 'my-app-backend'
43
+
44
+ const api = handlers<Context>()
45
+ const appEntrypoints = [
46
+ bind(protocols.api.projectCreate, api.request(protocols.api.projectCreate, async (req, ctx) =>
47
+ (ctx as Context).project().create(req.body))),
48
+ ]
44
49
  ```
45
50
 
46
51
  ## API
@@ -57,31 +62,32 @@ Registers entrypoints, calls `configure().init()`, then starts the Fastify serve
57
62
 
58
63
  | Symbol | Source |
59
64
  |---|---|
60
- | `handleBody`, `handleParams`, `handleRequest` | `@owlmeans/server-api` |
61
- | `elevate`, `entrypoint`, `guard` | `@owlmeans/server-entrypoint` |
62
- | `celevate` | `@owlmeans/client-entrypoint` |
65
+ | `handlers` | `@owlmeans/server-api` |
66
+ | `bind`, `bindAll`, `guard` | `@owlmeans/server-entrypoint` |
63
67
  | `route` | `@owlmeans/route` |
64
68
  | `broute` | `@owlmeans/server-route` |
65
- | `filter`, `body`, `params`, `parent`, `EntrypointOutcome` | `@owlmeans/entrypoint` |
69
+ | `filter`, `body`, `params`, `EntrypointOutcome` | `@owlmeans/entrypoint` |
66
70
  | `config`, `service`, `sservice`, `toConfigRecord` | various config packages |
67
- | `AppType`, `Layer`, `BASE`, `assertContext` | `@owlmeans/context` |
71
+ | `AppType`, `BASE`, `assertContext` | `@owlmeans/context` |
68
72
  | `DAUTH_GUARD` | `@owlmeans/server-auth` |
69
73
  | `GUARD_ED25519`, `BED255_CASHE_RESOURCE` | `@owlmeans/auth-common` |
70
74
  | `klusterize` | `@owlmeans/kluster` |
71
- | `Request`, `Response`, `CommonEntrypoint`, `ClientEntrypoint` | type re-exports |
75
+ | `createListSchema`, `filterObject` | `@owlmeans/resource` |
76
+ | `Request`, `Response`, `RefedEntrypointHandler` | type re-exports |
77
+ | `Criteria`, `ListOptions`, `ListQuery`, `ListResult`, `Sort` | type re-exports from `@owlmeans/resource` |
72
78
 
73
- ### `modules`
79
+ ### `entrypoints`
74
80
 
75
81
  Default entrypoint array providing auth and API config routes. Spread into `main()`:
76
82
  ```typescript
77
- await main(context, [...modules, ...myModules])
83
+ await main(context, [...entrypoints, ...myEntrypoints])
78
84
  ```
79
85
 
80
86
  ## Related Packages
81
87
 
82
88
  - [`@owlmeans/server-context`](../server-context) — `makeServerContext` called internally by `makeContext`
83
- - [`@owlmeans/server-api`](../server-api) — handler wrappers re-exported here
84
- - [`@owlmeans/server-entrypoint`](../server-entrypoint) — `elevate` re-exported here
89
+ - [`@owlmeans/server-api`](../server-api) — typed handler factories re-exported here
90
+ - [`@owlmeans/server-entrypoint`](../server-entrypoint) — protocol binding helpers
85
91
 
86
92
  <!-- owlmeans:agent-guidance:start -->
87
93
  ## Agent guidance
@@ -91,7 +97,7 @@ This package ships embedded agent skills under `agent-meta/`. After installing y
91
97
  your project's skill store (`.agents/skills/`):
92
98
 
93
99
  ```sh
94
- npx @owlmeans/agent-skills
100
+ npx @owlmeans/agent-skills@^0.1.18-rc.15
95
101
  ```
96
102
 
97
103
  The embedded files are version-matched to this package release. Do not edit them
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
3
  "package": "@owlmeans/server-app",
4
- "version": "0.1.18-rc.0",
5
- "generatedAt": "2026-08-16T22:20:50.509Z",
4
+ "version": "0.1.18-rc.21",
5
+ "generatedAt": "2026-09-12T08:39:52.726Z",
6
6
  "canonicalRepo": "https://github.com/owlmeans/common",
7
7
  "entries": [
8
8
  {
@@ -1,78 +1,43 @@
1
1
  ---
2
2
  name: server-app
3
- description: How to use @owlmeans/server-app — main() entry point, handleRequest()/handleBody() handler wrappers, elevate()/celevate() to attach handlers to module declarations, sservice() to register backend services. Auto-invoked when working with the server entry point or request handlers.
4
- user-invocable: false
3
+ description: Build OwlMeans server applications from immutable entrypoint protocol declarations. Use when starting a server, binding endpoint implementations, configuring services, or registering server entrypoints.
5
4
  ---
6
5
  <!-- AUTO-GENERATED — do not edit. Regenerate via sync-agent-meta. -->
7
6
 
8
- # @owlmeans/server-app
7
+ # Server application entrypoints
9
8
 
10
- **Layer:** Server
11
- **Install:** `"@owlmeans/server-app": "^0.1.18-rc.0"` in `dependencies`
9
+ Declare routes and request/response contracts in a shared package with `protocol()` or
10
+ `openProtocol()`. A server package supplies local implementations with `bind()` and `handlers()`;
11
+ it never changes a shared declaration by alias.
12
12
 
13
- ## Key Exports
13
+ ```ts
14
+ import { bind, entrypoints, handlers } from '@owlmeans/server-app'
15
+ import { projectEntrypoints } from 'project-common'
16
+ import { createProject } from './app/project.js'
14
17
 
15
- | Export | Description |
16
- |--------|-------------|
17
- | `main<E, C, T>(context, modules)` | Entry point — boots Express, registers all entrypoints as routes |
18
- | `handleRequest(fn)` | Wrap an async function as a server handler `(req, context) => result` |
19
- | `handleBody<T>(fn)` | Wrap an async function with validated body — `(payload, context, req) => result` |
20
- | `elevate(modules, alias, handler)` | Attach a handler to an entrypoint declaration |
21
- | `celevate(modules, alias, handler)` | Conditional elevate — only if entrypoint exists |
22
- | `sservice(options, cfg)` | Register a server-side service entry in the config |
23
- | `modules` | Built-in system entrypoints — spread into `appModules` |
24
- | `Context`, `Config`, `ClientEntrypoint` re-exports | Common types |
18
+ const api = handlers<Context>()
25
19
 
26
- ## Usage
27
-
28
- ### Entry point
29
- ```typescript
30
- // index.ts
31
- import { main } from '@owlmeans/server-app'
32
- import config from './config.js'
33
- import { makeContext } from './context.js'
34
- import { appModules } from './modules.js'
35
-
36
- const context = makeContext(config)
37
- main<{}, Config, Context>(context, appModules)
38
- ```
39
-
40
- ### Handlers
41
- ```typescript
42
- import { handleRequest, handleBody } from '@owlmeans/server-app'
43
- import { AuthUnknown } from '@owlmeans/auth'
44
- import type { ClientEntrypoint } from '@owlmeans/server-app'
45
-
46
- export const list = handleRequest(async (req, context) => {
47
- if (req.auth?.entityId == null) throw new AuthUnknown('entity')
48
- const ctx = context as Context
49
- const { items } = await ctx.project().list({ entityId: req.auth.entityId })
50
- return items
51
- })
52
-
53
- export const create = handleBody<CreateProject>(async (payload, context, req) => {
54
- const ctx = context as Context
55
- const [result] = await ctx.entrypoint<ClientEntrypoint<Project>>(agent.project.create).call({
56
- body: { prompt: payload.prompt, entity: req.auth?.entityId }
57
- })
58
- return result
59
- })
20
+ export const appEntrypoints = [
21
+ ...entrypoints,
22
+ bind(projectEntrypoints.base),
23
+ bind(projectEntrypoints.create, api.body(projectEntrypoints.create, createProject)),
24
+ ]
60
25
  ```
61
26
 
62
- ### Module elevation
63
- ```typescript
64
- import { elevate, modules } from '@owlmeans/server-app'
65
- import { managerModules } from 'my-common'
66
- import { create, list } from './app/project/index.js'
27
+ `handlers<Context>().body`, `.params` and `.request` infer request sections and response values
28
+ from the declaration. Use `.request` for a transport-level handler that needs the complete request
29
+ boundary.
67
30
 
68
- elevate(managerModules, manager.back.project.create, create)
69
- elevate(managerModules, manager.back.project.list, list)
70
-
71
- export const appModules = [...modules, ...paymentModules, ...managerModules]
72
- ```
31
+ ## Rules
73
32
 
74
- ## Depends On
33
+ - Keep `protocol()` declarations in the common package shared by callers and servers.
34
+ - Bind parent/group declarations as well as leaves; parents establish inherited paths and access.
35
+ - Use direct protocol references in `context.entrypoint(protocol)`; do not supply a caller-side
36
+ response generic.
37
+ - Model validation belongs in `contract()` with `typed()` or `schema()`, not in a wrapper around a
38
+ handler.
39
+ - `entrypoints` contains framework registrations. Add local entrypoints to a new array and register
40
+ that array during context initialization.
75
41
 
76
- - `@owlmeans/server-context`, `@owlmeans/server-entrypoint`, `@owlmeans/server-route`, `@owlmeans/server-api`
77
- - `@owlmeans/entrypoint`, `@owlmeans/route`, `@owlmeans/auth`, `@owlmeans/error`
78
- - `express` / `fastify` (server runtime)
42
+ `holdApiPort`, `config`, `sservice`, `service`, `AppType` and the context bootstrap exports remain
43
+ available from this package for process wiring.
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAMvD,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,cAAa,OAAO,MAkBnG,CAAA"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAMvD,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,cAAa,OAAO,MAgBnG,CAAA"}
package/build/context.js CHANGED
@@ -15,7 +15,6 @@ export const makeContext = (cfg, customize = false) => {
15
15
  appendStaticResource(context, AUTH_CACHE);
16
16
  appendAuthService(context);
17
17
  }
18
- context.makeContext = cfg => makeContext(cfg, customize);
19
18
  return context;
20
19
  };
21
20
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAErF,MAAM,CAAC,MAAM,WAAW,GAAG,CAA+C,GAAM,EAAE,SAAS,GAAY,KAAK,EAAE,EAAE;IAC9G,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAM,CAAA;IAE3C,eAAe,CAAO,OAAO,CAAC,CAAA;IAC9B,eAAe,CAAO,OAAO,CAAC,CAAA;IAC9B,mBAAmB,CAAO,OAAO,CAAC,CAAA;IAElC,OAAO,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,CAAC,CAAA;IAEpD,oBAAoB,CAAO,OAAO,CAAC,CAAA;IACnC,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;QACnD,oBAAoB,CAAO,OAAO,EAAE,UAAU,CAAC,CAAA;QAC/C,iBAAiB,CAAO,OAAO,CAAC,CAAA;IAClC,CAAC;IAED,OAAO,CAAC,WAAW,GAAG,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,SAAS,CAAQ,CAAA;IAE/D,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAErF,MAAM,CAAC,MAAM,WAAW,GAAG,CAA+C,GAAM,EAAE,SAAS,GAAY,KAAK,EAAE,EAAE;IAC9G,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAM,CAAA;IAE3C,eAAe,CAAO,OAAO,CAAC,CAAA;IAC9B,eAAe,CAAO,OAAO,CAAC,CAAA;IAC9B,mBAAmB,CAAO,OAAO,CAAC,CAAA;IAElC,OAAO,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,CAAC,CAAA;IAEpD,oBAAoB,CAAO,OAAO,CAAC,CAAA;IACnC,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;QACnD,oBAAoB,CAAO,OAAO,EAAE,UAAU,CAAC,CAAA;QAC/C,iBAAiB,CAAO,OAAO,CAAC,CAAA;IAClC,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ /** Framework server entrypoints every application receives. */
2
+ export declare const entrypoints: import("@owlmeans/server-entrypoint").ServerProtocolEntrypoint<import("@owlmeans/entrypoint").EntrypointProtocolDeclaration>[];
3
+ //# sourceMappingURL=entrypoints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entrypoints.d.ts","sourceRoot":"","sources":["../src/entrypoints.ts"],"names":[],"mappings":"AAGA,+DAA+D;AAC/D,eAAO,MAAM,WAAW,gIAA0C,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { entrypoints as apiConfigBindings } from '@owlmeans/api-config-server';
2
+ import { entrypoints as authBindings } from '@owlmeans/server-auth';
3
+ /** Framework server entrypoints every application receives. */
4
+ export const entrypoints = [...authBindings, ...apiConfigBindings];
5
+ //# sourceMappingURL=entrypoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entrypoints.js","sourceRoot":"","sources":["../src/entrypoints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAC9E,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEnE,+DAA+D;AAC/D,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAG,YAAY,EAAE,GAAG,iBAAiB,CAAC,CAAA"}
@@ -1,21 +1,25 @@
1
1
  export { config } from '@owlmeans/server-context';
2
+ export { makeContext } from './context.js';
3
+ export { main } from './main.js';
4
+ export type { AppConfig, AppContext } from './types.js';
2
5
  export { sservice } from '@owlmeans/server-config';
3
6
  export { addWebService } from '@owlmeans/client-config';
4
7
  export { service, toConfigRecord, PLUGINS } from '@owlmeans/config';
5
- export { parent, filter, body, params, EntrypointOutcome } from '@owlmeans/entrypoint';
8
+ export { contract, protocol, typed, EntrypointOutcome } from '@owlmeans/entrypoint';
6
9
  export type { AbstractRequest as Request, AbstractResponse as Response } from '@owlmeans/entrypoint';
7
10
  export { createListSchema, filterObject } from '@owlmeans/resource';
8
- export type { ListResult } from '@owlmeans/resource';
9
- export { AppType, BASE, Layer, assertContext } from '@owlmeans/context';
10
- export { elevate, entrypoint, guard } from '@owlmeans/server-entrypoint';
11
- export { elevate as celevate } from '@owlmeans/client-entrypoint';
12
- export type { ServerEntrypoint as Module, RefedEntrypointHandler } from '@owlmeans/server-entrypoint';
13
- export type { ClientEntrypoint } from '@owlmeans/client-entrypoint';
11
+ export type { Criteria, ListOptions, ListQuery, ListResult, Sort } from '@owlmeans/resource';
12
+ export { AppType, BASE, assertContext } from '@owlmeans/context';
13
+ export { bind, bindAll } from '@owlmeans/server-entrypoint';
14
14
  export { route as broute } from '@owlmeans/server-route';
15
- export { handleRequest, handleBody, handleParams } from '@owlmeans/server-api';
15
+ export { handlers, holdApiPort } from '@owlmeans/server-api';
16
+ export { handleIntermediate, handleBody, handleRequest, handleParams } from '@owlmeans/server-api';
17
+ export type { ApiPortHold, ApiPortHoldOptions } from '@owlmeans/server-api';
18
+ export type { ClientEntrypoint } from '@owlmeans/client-entrypoint';
16
19
  export { route } from '@owlmeans/route';
17
20
  export { DEFAULT_ALIAS as DAUTH_GUARD } from '@owlmeans/server-auth';
18
21
  export { klusterize } from '@owlmeans/kluster';
19
22
  export type { PluginConfig } from '@owlmeans/config';
20
23
  export { GUARD_ED25519, BED255_CASHE_RESOURCE } from '@owlmeans/auth-common';
24
+ export { entrypoints } from './entrypoints.js';
21
25
  //# sourceMappingURL=exports.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACtF,YAAY,EAAE,eAAe,IAAI,OAAO,EAAE,gBAAgB,IAAI,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AACpG,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACnE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACvE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAA;AACxE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AACjE,YAAY,EAAE,gBAAgB,IAAI,MAAM,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACrG,YAAY,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AACnE,OAAO,EAAE,KAAK,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAC9E,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,aAAa,IAAI,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA"}
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AACnE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACnF,YAAY,EAAE,eAAe,IAAI,OAAO,EAAE,gBAAgB,IAAI,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AACpG,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACnE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAC5F,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAC3D,OAAO,EAAE,KAAK,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAClG,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC3E,YAAY,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,aAAa,IAAI,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA"}
package/build/exports.js CHANGED
@@ -1,16 +1,19 @@
1
1
  export { config } from '@owlmeans/server-context';
2
+ export { makeContext } from './context.js';
3
+ export { main } from './main.js';
2
4
  export { sservice } from '@owlmeans/server-config';
3
5
  export { addWebService } from '@owlmeans/client-config';
4
6
  export { service, toConfigRecord, PLUGINS } from '@owlmeans/config';
5
- export { parent, filter, body, params, EntrypointOutcome } from '@owlmeans/entrypoint';
7
+ export { contract, protocol, typed, EntrypointOutcome } from '@owlmeans/entrypoint';
6
8
  export { createListSchema, filterObject } from '@owlmeans/resource';
7
- export { AppType, BASE, Layer, assertContext } from '@owlmeans/context';
8
- export { elevate, entrypoint, guard } from '@owlmeans/server-entrypoint';
9
- export { elevate as celevate } from '@owlmeans/client-entrypoint';
9
+ export { AppType, BASE, assertContext } from '@owlmeans/context';
10
+ export { bind, bindAll } from '@owlmeans/server-entrypoint';
10
11
  export { route as broute } from '@owlmeans/server-route';
11
- export { handleRequest, handleBody, handleParams } from '@owlmeans/server-api';
12
+ export { handlers, holdApiPort } from '@owlmeans/server-api';
13
+ export { handleIntermediate, handleBody, handleRequest, handleParams } from '@owlmeans/server-api';
12
14
  export { route } from '@owlmeans/route';
13
15
  export { DEFAULT_ALIAS as DAUTH_GUARD } from '@owlmeans/server-auth';
14
16
  export { klusterize } from '@owlmeans/kluster';
15
17
  export { GUARD_ED25519, BED255_CASHE_RESOURCE } from '@owlmeans/auth-common';
18
+ export { entrypoints } from './entrypoints.js';
16
19
  //# sourceMappingURL=exports.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"exports.js","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAEtF,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEnE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACvE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAA;AACxE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAGjE,OAAO,EAAE,KAAK,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAC9E,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,aAAa,IAAI,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA"}
1
+ {"version":3,"file":"exports.js","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AACnE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAEnF,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEnE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAC3D,OAAO,EAAE,KAAK,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAGlG,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,aAAa,IAAI,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA"}
package/build/index.d.ts CHANGED
@@ -2,5 +2,5 @@ export * from './exports.js';
2
2
  export * from './main.js';
3
3
  export type * from './types.js';
4
4
  export * from './context.js';
5
- export * from './modules.js';
5
+ export * from './entrypoints.js';
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,mBAAmB,YAAY,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,mBAAmB,YAAY,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA"}
package/build/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export * from './exports.js';
2
2
  export * from './main.js';
3
3
  export * from './context.js';
4
- export * from './modules.js';
4
+ export * from './entrypoints.js';
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AAEzB,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AAEzB,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA"}
package/build/main.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { ServerEntrypoint } from '@owlmeans/server-entrypoint';
2
2
  import type { CommonEntrypoint } from '@owlmeans/entrypoint';
3
3
  import type { AppContext, AppConfig } from './types.js';
4
- export declare const main: <R, C extends AppConfig, T extends AppContext<C>>(ctx: T, modules: (CommonEntrypoint | ServerEntrypoint<R>)[]) => Promise<void>;
4
+ export declare const main: <R, C extends AppConfig, T extends AppContext<C>>(ctx: T, entrypoints: (CommonEntrypoint | ServerEntrypoint<R>)[]) => Promise<void>;
5
5
  //# sourceMappingURL=main.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAIvD,eAAO,MAAM,IAAI,GAAU,CAAC,EAAE,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,OACnE,CAAC,WAAW,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,kBAK5D,CAAA"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAIvD,eAAO,MAAM,IAAI,GAAU,CAAC,EAAE,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,OACnE,CAAC,eAAe,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,kBAKhE,CAAA"}
package/build/main.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // @TODO Remove or refactor request types. We actually don't use them and this make
2
2
  // a mess with <R
3
- export const main = async (ctx, modules) => {
4
- ctx.registerEntrypoints(modules);
3
+ export const main = async (ctx, entrypoints) => {
4
+ ctx.registerEntrypoints(entrypoints);
5
5
  await ctx.configure().init();
6
6
  await ctx.getApiServer().listen();
7
7
  };
package/build/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAMA,mFAAmF;AACnF,iBAAiB;AACjB,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EACvB,GAAM,EAAE,OAAmD,EAC3D,EAAE;IACF,GAAG,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAA;IAChC,MAAM,GAAG,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,CAAA;IAC5B,MAAM,GAAG,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,CAAA;AACnC,CAAC,CAAA"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAMA,mFAAmF;AACnF,iBAAiB;AACjB,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EACvB,GAAM,EAAE,WAAuD,EAC/D,EAAE;IACF,GAAG,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAA;IACpC,MAAM,GAAG,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,CAAA;IAC5B,MAAM,GAAG,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,CAAA;AACnC,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@owlmeans/server-app",
3
- "version": "0.1.18-rc.2",
3
+ "version": "0.1.18-rc.21",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -21,21 +21,21 @@
21
21
  }
22
22
  },
23
23
  "dependencies": {
24
- "@owlmeans/api": "^0.1.18-rc.2",
25
- "@owlmeans/client-config": "^0.1.18-rc.2",
26
- "@owlmeans/client-entrypoint": "^0.1.18-rc.2",
27
- "@owlmeans/config": "^0.1.18-rc.2",
28
- "@owlmeans/context": "^0.1.18-rc.2",
29
- "@owlmeans/kluster": "^0.1.18-rc.2",
30
- "@owlmeans/entrypoint": "^0.1.18-rc.2",
31
- "@owlmeans/route": "^0.1.18-rc.2",
32
- "@owlmeans/server-api": "^0.1.18-rc.2",
33
- "@owlmeans/server-auth": "^0.1.18-rc.2",
34
- "@owlmeans/server-context": "^0.1.18-rc.2",
35
- "@owlmeans/server-entrypoint": "^0.1.18-rc.2",
36
- "@owlmeans/server-route": "^0.1.18-rc.2",
37
- "@owlmeans/server-socket": "^0.1.18-rc.2",
38
- "@owlmeans/static-resource": "^0.1.18-rc.2"
24
+ "@owlmeans/api": "^0.1.18-rc.16",
25
+ "@owlmeans/client-config": "^0.1.18-rc.15",
26
+ "@owlmeans/client-entrypoint": "^0.1.18-rc.16",
27
+ "@owlmeans/config": "^0.1.18-rc.15",
28
+ "@owlmeans/context": "^0.1.18-rc.11",
29
+ "@owlmeans/kluster": "^0.1.18-rc.15",
30
+ "@owlmeans/entrypoint": "^0.1.18-rc.14",
31
+ "@owlmeans/route": "^0.1.18-rc.12",
32
+ "@owlmeans/server-api": "^0.1.18-rc.20",
33
+ "@owlmeans/server-auth": "^0.1.18-rc.21",
34
+ "@owlmeans/server-context": "^0.1.18-rc.15",
35
+ "@owlmeans/server-entrypoint": "^0.1.18-rc.14",
36
+ "@owlmeans/server-route": "^0.1.18-rc.12",
37
+ "@owlmeans/server-socket": "^0.1.18-rc.21",
38
+ "@owlmeans/static-resource": "^0.1.18-rc.12"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@owlmeans/dep-config": "workspace:*",
package/src/context.ts CHANGED
@@ -21,7 +21,5 @@ export const makeContext = <C extends AppConfig, T extends AppContext<C>>(cfg: C
21
21
  appendAuthService<C, T>(context)
22
22
  }
23
23
 
24
- context.makeContext = cfg => makeContext(cfg, customize) as any
25
-
26
24
  return context
27
25
  }
@@ -0,0 +1,5 @@
1
+ import { entrypoints as apiConfigBindings } from '@owlmeans/api-config-server'
2
+ import { entrypoints as authBindings } from '@owlmeans/server-auth'
3
+
4
+ /** Framework server entrypoints every application receives. */
5
+ export const entrypoints = [...authBindings, ...apiConfigBindings]
package/src/exports.ts CHANGED
@@ -1,21 +1,25 @@
1
1
 
2
2
  export { config } from '@owlmeans/server-context'
3
+ export { makeContext } from './context.js'
4
+ export { main } from './main.js'
5
+ export type { AppConfig, AppContext } from './types.js'
3
6
  export { sservice } from '@owlmeans/server-config'
4
7
  export { addWebService } from '@owlmeans/client-config'
5
8
  export { service, toConfigRecord, PLUGINS } from '@owlmeans/config'
6
- export { parent, filter, body, params, EntrypointOutcome } from '@owlmeans/entrypoint'
9
+ export { contract, protocol, typed, EntrypointOutcome } from '@owlmeans/entrypoint'
7
10
  export type { AbstractRequest as Request, AbstractResponse as Response } from '@owlmeans/entrypoint'
8
11
  export { createListSchema, filterObject } from '@owlmeans/resource'
9
- export type { ListResult } from '@owlmeans/resource'
10
- export { AppType, BASE, Layer, assertContext } from '@owlmeans/context'
11
- export { elevate, entrypoint, guard } from '@owlmeans/server-entrypoint'
12
- export { elevate as celevate } from '@owlmeans/client-entrypoint'
13
- export type { ServerEntrypoint as Module, RefedEntrypointHandler } from '@owlmeans/server-entrypoint'
14
- export type { ClientEntrypoint } from '@owlmeans/client-entrypoint'
12
+ export type { Criteria, ListOptions, ListQuery, ListResult, Sort } from '@owlmeans/resource'
13
+ export { AppType, BASE, assertContext } from '@owlmeans/context'
14
+ export { bind, bindAll } from '@owlmeans/server-entrypoint'
15
15
  export { route as broute } from '@owlmeans/server-route'
16
- export { handleRequest, handleBody, handleParams } from '@owlmeans/server-api'
16
+ export { handlers, holdApiPort } from '@owlmeans/server-api'
17
+ export { handleIntermediate, handleBody, handleRequest, handleParams } from '@owlmeans/server-api'
18
+ export type { ApiPortHold, ApiPortHoldOptions } from '@owlmeans/server-api'
19
+ export type { ClientEntrypoint } from '@owlmeans/client-entrypoint'
17
20
  export { route } from '@owlmeans/route'
18
21
  export { DEFAULT_ALIAS as DAUTH_GUARD } from '@owlmeans/server-auth'
19
22
  export { klusterize } from '@owlmeans/kluster'
20
23
  export type { PluginConfig } from '@owlmeans/config'
21
24
  export { GUARD_ED25519, BED255_CASHE_RESOURCE } from '@owlmeans/auth-common'
25
+ export { entrypoints } from './entrypoints.js'
package/src/index.ts CHANGED
@@ -3,4 +3,4 @@ export * from './exports.js'
3
3
  export * from './main.js'
4
4
  export type * from './types.js'
5
5
  export * from './context.js'
6
- export * from './modules.js'
6
+ export * from './entrypoints.js'
package/src/main.ts CHANGED
@@ -7,9 +7,9 @@ import type { AppContext, AppConfig } from './types.js'
7
7
  // @TODO Remove or refactor request types. We actually don't use them and this make
8
8
  // a mess with <R
9
9
  export const main = async <R, C extends AppConfig, T extends AppContext<C>>(
10
- ctx: T, modules: (CommonEntrypoint | ServerEntrypoint<R>)[]
10
+ ctx: T, entrypoints: (CommonEntrypoint | ServerEntrypoint<R>)[]
11
11
  ) => {
12
- ctx.registerEntrypoints(modules)
12
+ ctx.registerEntrypoints(entrypoints)
13
13
  await ctx.configure().init()
14
14
  await ctx.getApiServer().listen()
15
15
  }
package/build/.gitkeep DELETED
File without changes
@@ -1,2 +0,0 @@
1
- export declare const modules: import("@owlmeans/server-entrypoint").ServerEntrypoint<unknown>[];
2
- //# sourceMappingURL=modules.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"modules.d.ts","sourceRoot":"","sources":["../src/modules.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,OAAO,mEAA0B,CAAA"}
package/build/modules.js DELETED
@@ -1,4 +0,0 @@
1
- import { modules as apiConfig } from '@owlmeans/api-config-server';
2
- import { modules as list } from '@owlmeans/server-auth';
3
- export const modules = [...list, ...apiConfig];
4
- //# sourceMappingURL=modules.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"modules.js","sourceRoot":"","sources":["../src/modules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAClE,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAEvD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,SAAS,CAAC,CAAA"}
package/src/modules.ts DELETED
@@ -1,4 +0,0 @@
1
- import { modules as apiConfig } from '@owlmeans/api-config-server'
2
- import { modules as list } from '@owlmeans/server-auth'
3
-
4
- export const modules = [...list, ...apiConfig]