@serve.zone/interfaces 11.1.1 → 11.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 CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026-07-15 - 11.2.0
4
+
5
+ ### Features
6
+
7
+ - Support priority and managed-kind metadata on gateway routes.
8
+ - Allow combined `hostname` plus `routeRef` ownership so multiple managed routes for one hostname reconcile independently.
9
+ - Define the canonical `letsencrypt-http01-forward` managed route kind.
10
+
11
+ ### Maintenance
12
+
13
+ - Update the release toolchain to pnpm 11.13.0 and Node.js types 26.1.1.
14
+
3
15
  ## 2026-07-13 - 11.1.1
4
16
 
5
17
  ### Fixes
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@serve.zone/interfaces',
6
- version: '11.1.1',
6
+ version: '11.2.0',
7
7
  description: 'Shared TypeScript interfaces and TypedRequest contracts for the serve.zone ecosystem.'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx3QkFBd0I7SUFDOUIsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLHVGQUF1RjtDQUNyRyxDQUFBIn0=
@@ -3,6 +3,10 @@ import type { TDnsRecordType } from './dns.js';
3
3
  * Type of platform acting as a gateway client against a gateway (dcrouter).
4
4
  */
5
5
  export type TGatewayClientType = 'onebox' | 'cloudly' | 'custom';
6
+ /**
7
+ * Canonical managed route purposes understood by gateways.
8
+ */
9
+ export type TManagedRouteKind = 'letsencrypt-http01-forward';
6
10
  /**
7
11
  * Identity attached to gateway requests. Gateways run their own user/auth
8
12
  * domain (e.g. dcrouter operator accounts), so role/type stay open strings;
@@ -175,7 +179,11 @@ export interface IGatewayClientOwnership {
175
179
  appId: string;
176
180
  /** Hostname ownership for domain routes. Preserved for existing route keys. */
177
181
  hostname?: string;
178
- /** Stable non-domain route key, for example public-port mapping exposure refs. */
182
+ /**
183
+ * Stable route key. Without hostname it identifies a non-domain route such as
184
+ * a public-port mapping. Together with hostname it distinguishes multiple
185
+ * managed routes for the same hostname.
186
+ */
179
187
  routeRef?: string;
180
188
  }
181
189
  /**
@@ -224,6 +232,10 @@ export interface IGatewayRouteConfig {
224
232
  name: string;
225
233
  match: IGatewayRouteMatch;
226
234
  action: IGatewayRouteAction;
235
+ /** Higher values are matched first by the gateway. */
236
+ priority?: number;
237
+ /** Declares a canonical gateway-managed route purpose. */
238
+ managedRouteKind?: TManagedRouteKind;
227
239
  remoteIngress?: {
228
240
  enabled: boolean;
229
241
  edgeFilter?: string[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@serve.zone/interfaces",
3
- "version": "11.1.1",
3
+ "version": "11.2.0",
4
4
  "private": false,
5
5
  "description": "Shared TypeScript interfaces and TypedRequest contracts for the serve.zone ecosystem.",
6
6
  "exports": {
@@ -19,7 +19,7 @@
19
19
  "@git.zone/tsdoc": "^2.1.1",
20
20
  "@git.zone/tsrun": "^2.0.5",
21
21
  "@git.zone/tstest": "^3.6.6",
22
- "@types/node": "^26.1.0"
22
+ "@types/node": "^26.1.1"
23
23
  },
24
24
  "files": [
25
25
  "ts/**/*",
package/readme.md CHANGED
@@ -95,7 +95,7 @@ Common data contracts include:
95
95
  - `IService`, `IDeployment`, `IImage`, `IRegistryTarget`, and `IExternalRegistry` for workload delivery.
96
96
  - Service port contracts including `IServiceTargetPort`, `IServiceDomainRoute`, and `IServicePublicPortMapping` for canonical backend targets, domain target references, and edge/Coretraffic TCP/UDP public exposure.
97
97
  - `IDomain`, `IDnsEntry`, and traffic contracts for routing and DNS management.
98
- - Traffic and gateway route contracts including `ICoretrafficPortRouteConfig`, routing `portRoutes`, `IGatewayClientRoute` client-owned route views, gateway route `routeRef` ownership, optional match `domains`, `transport`, and `remoteIngress` route intent.
98
+ - Traffic and gateway route contracts including `ICoretrafficPortRouteConfig`, routing `portRoutes`, and `IGatewayClientRoute` client-owned route views. Gateway route intent supports optional match `domains`, `transport`, and `remoteIngress`, plus explicit route `priority` and `managedRouteKind`. Ownership can combine `hostname` with `routeRef` so a normal route and a path-specific managed route for the same hostname reconcile independently.
99
99
  - `ISecretBundle` and `ISecretGroup` for secret ownership and shared secret groups.
100
100
  - Mail gateway contracts for domain authorities, address bindings, WorkApp bindings, managed SMTP/API credentials, spool items, delivery journals, and inbound/outbound message payloads.
101
101
  - Service-level mail configuration through `IService.data.mail`, including per-address inbound `smtpForward` settings and outbound credential metadata. Cloudly settings include dcrouter gateway, SMTP submission, and inbound forward-target keys for reconciling those bindings.
@@ -140,7 +140,7 @@ interface IExampleRequest {
140
140
 
141
141
  `requests.config.IRequest_Any_Cloudly_GetClusterConfig` accepts `data.IIdentityCredential`, which contains only the JWT needed for server-side identity resolution. Username/password login and machine-token exchange responses continue to return the full `data.IIdentity`.
142
142
 
143
- Gateway request contracts include `getGatewayClientRoutes` (`requests.gateway.IReq_GetGatewayClientRoutes`) for listing owned `IGatewayClientRoute[]` route views, and `syncGatewayClientRoute` for idempotently syncing or deleting hostname-owned and routeRef-owned routes. Mail request contracts include `syncMailAddressBinding`, `deleteMailAddressBinding`, `rotateMailCredential`, and `getMailDeliveryStatus`. `IReq_GetMailDeliveryStatus` looks up a delivery spool item by `spoolItemId`, returns `data.IMailDeliveryStatus`, and accepts `IMailSubmissionRequestAuth` so service-mail credentials can query their own accepted, queued, deferred, delivered, or failed status. `TMailAddressBindingSync.outboundEnabled` explicitly controls whether a gateway should maintain a managed outbound SMTP credential for an address binding. Binding credential metadata is public; `rotateMailCredential` returns the new secret only in its one-time `IMailCredentialOneTimeSecret` response.
143
+ Gateway request contracts include `getGatewayClientRoutes` (`requests.gateway.IReq_GetGatewayClientRoutes`) for listing owned `IGatewayClientRoute[]` route views, and `syncGatewayClientRoute` for idempotently syncing or deleting hostname-owned, routeRef-owned, and combined hostname-plus-routeRef routes. A client can label canonical intent with `managedRouteKind: 'letsencrypt-http01-forward'` and set a higher `priority` for a path-specific HTTP-01 route while retaining a separate normal route for the same hostname. Mail request contracts include `syncMailAddressBinding`, `deleteMailAddressBinding`, `rotateMailCredential`, and `getMailDeliveryStatus`. `IReq_GetMailDeliveryStatus` looks up a delivery spool item by `spoolItemId`, returns `data.IMailDeliveryStatus`, and accepts `IMailSubmissionRequestAuth` so service-mail credentials can query their own accepted, queued, deferred, delivered, or failed status. `TMailAddressBindingSync.outboundEnabled` explicitly controls whether a gateway should maintain a managed outbound SMTP credential for an address binding. Binding credential metadata is public; `rotateMailCredential` returns the new secret only in its one-time `IMailCredentialOneTimeSecret` response.
144
144
 
145
145
  Request groups are exported by product area:
146
146
 
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@serve.zone/interfaces',
6
- version: '11.1.1',
6
+ version: '11.2.0',
7
7
  description: 'Shared TypeScript interfaces and TypedRequest contracts for the serve.zone ecosystem.'
8
8
  }
@@ -5,6 +5,11 @@ import type { TDnsRecordType } from './dns.js';
5
5
  */
6
6
  export type TGatewayClientType = 'onebox' | 'cloudly' | 'custom';
7
7
 
8
+ /**
9
+ * Canonical managed route purposes understood by gateways.
10
+ */
11
+ export type TManagedRouteKind = 'letsencrypt-http01-forward';
12
+
8
13
  /**
9
14
  * Identity attached to gateway requests. Gateways run their own user/auth
10
15
  * domain (e.g. dcrouter operator accounts), so role/type stay open strings;
@@ -187,7 +192,11 @@ export interface IGatewayClientOwnership {
187
192
  appId: string;
188
193
  /** Hostname ownership for domain routes. Preserved for existing route keys. */
189
194
  hostname?: string;
190
- /** Stable non-domain route key, for example public-port mapping exposure refs. */
195
+ /**
196
+ * Stable route key. Without hostname it identifies a non-domain route such as
197
+ * a public-port mapping. Together with hostname it distinguishes multiple
198
+ * managed routes for the same hostname.
199
+ */
191
200
  routeRef?: string;
192
201
  }
193
202
 
@@ -241,6 +250,10 @@ export interface IGatewayRouteConfig {
241
250
  name: string;
242
251
  match: IGatewayRouteMatch;
243
252
  action: IGatewayRouteAction;
253
+ /** Higher values are matched first by the gateway. */
254
+ priority?: number;
255
+ /** Declares a canonical gateway-managed route purpose. */
256
+ managedRouteKind?: TManagedRouteKind;
244
257
  remoteIngress?: {
245
258
  enabled: boolean;
246
259
  edgeFilter?: string[];