@atcute/xrpc-server 0.1.9 → 0.1.10

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.
@@ -1,3 +1,3 @@
1
- export * from './jwt-creator.js';
2
- export * from './jwt-verifier.js';
1
+ export * from './jwt-creator.ts';
2
+ export * from './jwt-verifier.ts';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1,7 +1,7 @@
1
1
  import { type DidDocumentResolver } from '@atcute/identity-resolver';
2
2
  import type { Did, Nsid } from '@atcute/lexicons';
3
- import type { Result } from '../types/misc.js';
4
- import type { AuthError } from './types.js';
3
+ import type { Result } from '../types/misc.ts';
4
+ import type { AuthError } from './types.ts';
5
5
  export interface ServiceJwtVerifierOptions {
6
6
  serviceDid: Did | null;
7
7
  resolver: DidDocumentResolver;
@@ -1,6 +1,6 @@
1
1
  import type { Did, Nsid } from '@atcute/lexicons';
2
- import type { Result } from '../types/misc.js';
3
- import type { AuthError } from './types.js';
2
+ import type { Result } from '../types/misc.ts';
3
+ import type { AuthError } from './types.ts';
4
4
  export interface JwtHeader {
5
5
  typ?: string;
6
6
  alg: string;
package/dist/auth/jwt.js CHANGED
@@ -32,7 +32,7 @@ const readJwtPortion = (schema, input) => {
32
32
  try {
33
33
  const raw = decodeUtf8From(fromBase64Url(input));
34
34
  const json = JSON.parse(raw);
35
- const result = schema.try(json);
35
+ const result = schema.try(json, { mode: 'passthrough' });
36
36
  if (result.ok) {
37
37
  return result;
38
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"jwt.js","sourceRoot":"","sources":["../../lib/auth/jwt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jwt.js","sourceRoot":"","sources":["../../lib/auth/jwt.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- export * from './response.js';
2
- export * from './router.js';
3
- export * from './xrpc-error.js';
4
- export * from './xrpc-handler.js';
5
- export type { ProcedureConfig, ProcedureContext, ProcedureHandler, QueryConfig, QueryContext, QueryHandler, SubscriptionConfig, SubscriptionContext, SubscriptionHandler, } from './types/operation.js';
6
- export * from './types/websocket.js';
1
+ export * from './response.ts';
2
+ export * from './router.ts';
3
+ export * from './xrpc-error.ts';
4
+ export * from './xrpc-handler.ts';
5
+ export type { ProcedureConfig, ProcedureContext, ProcedureHandler, QueryConfig, QueryContext, QueryHandler, SubscriptionConfig, SubscriptionContext, SubscriptionHandler, } from './types/operation.ts';
6
+ export * from './types/websocket.ts';
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1,9 +1,9 @@
1
1
  import { type XRPCProcedureMetadata, type XRPCQueryMetadata, type XRPCSubscriptionMetadata } from '@atcute/lexicons/validations';
2
- import type { Promisable } from '../types/misc.js';
3
- import type { ProcedureConfig, QueryConfig, SubscriptionConfig } from './types/operation.js';
4
- import type { WebSocketAdapter } from './types/websocket.js';
5
- import { type Middleware } from './utils/middlewares.js';
6
- import { type Namespaced } from './utils/namespaced.js';
2
+ import type { Promisable } from '../types/misc.ts';
3
+ import type { ProcedureConfig, QueryConfig, SubscriptionConfig } from './types/operation.ts';
4
+ import type { WebSocketAdapter } from './types/websocket.ts';
5
+ import { type Middleware } from './utils/middlewares.ts';
6
+ import { type Namespaced } from './utils/namespaced.ts';
7
7
  export type FetchMiddleware = Middleware<[request: Request], Promise<Response>>;
8
8
  export type NotFoundHandler = (request: Request) => Promisable<Response>;
9
9
  export type ExceptionHandler = (error: unknown, request: Request) => Promisable<Response>;
@@ -1,6 +1,6 @@
1
1
  import type { InferOutput, ObjectSchema, VariantSchema, XRPCBlobBodyParam, XRPCLexBodyParam, XRPCProcedureMetadata, XRPCQueryMetadata, XRPCSubscriptionMetadata } from '@atcute/lexicons/validations';
2
- import type { Literal, Promisable } from '../../types/misc.js';
3
- import type { JSONResponse } from '../response.js';
2
+ import type { Literal, Promisable } from '../../types/misc.ts';
3
+ import type { JSONResponse } from '../response.ts';
4
4
  export type UnknownOperationContext = {
5
5
  request: Request;
6
6
  signal: AbortSignal;
@@ -1,4 +1,4 @@
1
- import type { Promisable } from '../../types/misc.js';
1
+ import type { Promisable } from '../../types/misc.ts';
2
2
  export interface WebSocketConnection {
3
3
  signal: AbortSignal;
4
4
  send(data: Uint8Array): void | Promise<void>;
@@ -1,4 +1,4 @@
1
1
  import type { XRPCBlobBodyParam, XRPCLexBodyParam } from '@atcute/lexicons/validations';
2
- import type { Result } from '../../types/misc.js';
2
+ import type { Result } from '../../types/misc.ts';
3
3
  export declare const constructMimeValidator: (param: XRPCBlobBodyParam | XRPCLexBodyParam<import("@atcute/lexicons/validations").ObjectSchema<import("@atcute/lexicons/validations").LooseObjectShape> | import("@atcute/lexicons/validations").VariantSchema<readonly import("@atcute/lexicons/validations").ObjectSchema<any>[], boolean>>) => ((request: Request) => Result<void, string>) | null;
4
4
  //# sourceMappingURL=request-input.d.ts.map
@@ -1,5 +1,5 @@
1
1
  import { type ObjectSchema, type ValidationResult } from '@atcute/lexicons/validations';
2
- import type { Literal } from '../../types/misc.js';
2
+ import type { Literal } from '../../types/misc.ts';
3
3
  type MaybeArray<T> = T | T[];
4
4
  export declare const constructParamsHandler: <TSchema extends ObjectSchema<import("@atcute/lexicons/validations").LooseObjectShape>>(schema: TSchema) => (searchParams: URLSearchParams) => ValidationResult<Record<string, MaybeArray<Literal>>>;
5
5
  export {};
@@ -1,7 +1,7 @@
1
- import type { Promisable } from '../../types/misc.js';
2
- import type { XRPCRouter } from '../router.js';
3
- import type { WebSocketAdapter, WebSocketConnection } from '../types/websocket.js';
4
- import { EventEmitter } from './event-emitter.js';
1
+ import type { Promisable } from '../../types/misc.ts';
2
+ import type { XRPCRouter } from '../router.ts';
3
+ import type { WebSocketAdapter, WebSocketConnection } from '../types/websocket.ts';
4
+ import { EventEmitter } from './event-emitter.ts';
5
5
  export interface SubscriptionClient extends Disposable {
6
6
  events: EventEmitter<{
7
7
  message: [data: Uint8Array];
@@ -1,7 +1,7 @@
1
1
  import type { XRPCProcedureMetadata, XRPCQueryMetadata } from '@atcute/lexicons/validations';
2
- import { type XRPCRouterOptions } from './router.js';
3
- import type { ProcedureConfig, QueryConfig } from './types/operation.js';
4
- import { type Namespaced } from './utils/namespaced.js';
2
+ import { type XRPCRouterOptions } from './router.ts';
3
+ import type { ProcedureConfig, QueryConfig } from './types/operation.ts';
4
+ import { type Namespaced } from './utils/namespaced.ts';
5
5
  type XrpcHandlerRouterOptions = Pick<XRPCRouterOptions, 'middlewares' | 'handleNotFound' | 'handleException'>;
6
6
  export type XrpcQueryHandlerOptions<TQuery extends XRPCQueryMetadata> = {
7
7
  lxm: TQuery | Namespaced<TQuery>;
@@ -1,4 +1,4 @@
1
- import type { FetchMiddleware } from '../main/router.js';
1
+ import type { FetchMiddleware } from '../main/router.ts';
2
2
  export interface CORSOptions {
3
3
  /** Additional headers to expose to the client */
4
4
  exposedHeaders?: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"cors.d.ts","sourceRoot":"","sources":["../../lib/middlewares/cors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,MAAM,WAAW,WAAW;IAC3B,iDAAiD;IACjD,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,kCAAkC;IAClC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,+EAA+E;IAC/E,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAwBD,eAAO,MAAM,IAAI,4CAiEhB,CAAC"}
1
+ {"version":3,"file":"cors.d.ts","sourceRoot":"","sources":["../../lib/middlewares/cors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,MAAM,WAAW,WAAW;IAC3B,iDAAiD;IACjD,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,kCAAkC;IAClC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,+EAA+E;IAC/E,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAwBD,eAAO,MAAM,IAAI,4CAoEhB,CAAC"}
@@ -15,8 +15,11 @@ const DEFAULT_ALLOWED_HEADERS = [
15
15
  ];
16
16
  const RE_XRPC_NSID = /^\/xrpc\/([^?]*)/;
17
17
  export const cors = (options = {}) => {
18
- const exposedHeaders = Array.from(new Set([...DEFAULT_EXPOSED_HEADERS, ...(options.exposedHeaders?.map((h) => h.toLowerCase()) || [])])).sort();
18
+ const exposedHeaders = Array.from(new Set([...DEFAULT_EXPOSED_HEADERS, ...(options.exposedHeaders?.map((h) => h.toLowerCase()) || [])]))
19
+ // oxlint-disable-next-line unicorn/no-array-sort -- Array.from already clones
20
+ .sort();
19
21
  const allowedHeaders = Array.from(new Set([...DEFAULT_ALLOWED_HEADERS, ...(options.allowedHeaders?.map((h) => h.toLowerCase()) || [])]))
22
+ // oxlint-disable-next-line unicorn/no-array-sort -- Array.from already clones
20
23
  .sort()
21
24
  .join(',');
22
25
  const exclude = options.exclude;
@@ -1 +1 @@
1
- {"version":3,"file":"cors.js","sourceRoot":"","sources":["../../lib/middlewares/cors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cors.js","sourceRoot":"","sources":["../../lib/middlewares/cors.ts"],"names":[],"mappings":"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"}
package/lib/auth/index.ts CHANGED
@@ -1,2 +1,2 @@
1
- export * from './jwt-creator.js';
2
- export * from './jwt-verifier.js';
1
+ export * from './jwt-creator.ts';
2
+ export * from './jwt-verifier.ts';
@@ -5,7 +5,7 @@ import { encodeUtf8 } from '@atcute/uint8array';
5
5
 
6
6
  import { nanoid } from 'nanoid';
7
7
 
8
- import type { JwtHeader, JwtPayload } from './jwt.js';
8
+ import type { JwtHeader, JwtPayload } from './jwt.ts';
9
9
 
10
10
  export interface CreateServiceJwtOptions {
11
11
  keypair: PrivateKey;
@@ -4,10 +4,10 @@ import { type DidDocumentResolver } from '@atcute/identity-resolver';
4
4
  import type { Did, Nsid } from '@atcute/lexicons';
5
5
  import * as uint8arrays from '@atcute/uint8array';
6
6
 
7
- import type { Result } from '../types/misc.js';
7
+ import type { Result } from '../types/misc.ts';
8
8
 
9
- import { parseJwt, type ParsedJwt } from './jwt.js';
10
- import type { AuthError } from './types.js';
9
+ import { parseJwt, type ParsedJwt } from './jwt.ts';
10
+ import type { AuthError } from './types.ts';
11
11
 
12
12
  export interface ServiceJwtVerifierOptions {
13
13
  serviceDid: Did | null;
package/lib/auth/jwt.ts CHANGED
@@ -5,9 +5,9 @@ import { decodeUtf8From, encodeUtf8 } from '@atcute/uint8array';
5
5
 
6
6
  import * as v from '@badrap/valita';
7
7
 
8
- import type { Result } from '../types/misc.js';
8
+ import type { Result } from '../types/misc.ts';
9
9
 
10
- import type { AuthError } from './types.js';
10
+ import type { AuthError } from './types.ts';
11
11
 
12
12
  const didString = v.string().assert(isDid, `must be a did`);
13
13
  const nsidString = v.string().assert(isNsid, `must be an nsid`);
@@ -65,7 +65,7 @@ const readJwtPortion = <T>(schema: v.Type<T>, input: string): Result<T, AuthErro
65
65
  const raw = decodeUtf8From(fromBase64Url(input));
66
66
  const json = JSON.parse(raw);
67
67
 
68
- const result = schema.try(json);
68
+ const result = schema.try(json, { mode: 'passthrough' });
69
69
  if (result.ok) {
70
70
  return result;
71
71
  }
package/lib/main/index.ts CHANGED
@@ -1,7 +1,7 @@
1
- export * from './response.js';
2
- export * from './router.js';
3
- export * from './xrpc-error.js';
4
- export * from './xrpc-handler.js';
1
+ export * from './response.ts';
2
+ export * from './router.ts';
3
+ export * from './xrpc-error.ts';
4
+ export * from './xrpc-handler.ts';
5
5
 
6
6
  export type {
7
7
  ProcedureConfig,
@@ -13,5 +13,5 @@ export type {
13
13
  SubscriptionConfig,
14
14
  SubscriptionContext,
15
15
  SubscriptionHandler,
16
- } from './types/operation.js';
17
- export * from './types/websocket.js';
16
+ } from './types/operation.ts';
17
+ export * from './types/websocket.ts';
@@ -5,7 +5,7 @@ import {
5
5
  type XRPCSubscriptionMetadata,
6
6
  } from '@atcute/lexicons/validations';
7
7
 
8
- import type { Literal, Promisable } from '../types/misc.js';
8
+ import type { Literal, Promisable } from '../types/misc.ts';
9
9
 
10
10
  import type {
11
11
  ProcedureConfig,
@@ -13,15 +13,15 @@ import type {
13
13
  SubscriptionConfig,
14
14
  UnknownOperationContext,
15
15
  UnknownSubscriptionContext,
16
- } from './types/operation.js';
17
- import type { WebSocketAdapter } from './types/websocket.js';
18
- import { encodeErrorFrame, encodeMessageFrame, extractMessageType, omitMessageType } from './utils/frames.js';
19
- import { createAsyncMiddlewareRunner, type Middleware } from './utils/middlewares.js';
20
- import { unwrapLxm, type Namespaced } from './utils/namespaced.js';
21
- import { constructMimeValidator } from './utils/request-input.js';
22
- import { constructParamsHandler } from './utils/request-params.js';
23
- import { invalidRequest, validationError } from './utils/response.js';
24
- import { XRPCError, XRPCSubscriptionError } from './xrpc-error.js';
16
+ } from './types/operation.ts';
17
+ import type { WebSocketAdapter } from './types/websocket.ts';
18
+ import { encodeErrorFrame, encodeMessageFrame, extractMessageType, omitMessageType } from './utils/frames.ts';
19
+ import { createAsyncMiddlewareRunner, type Middleware } from './utils/middlewares.ts';
20
+ import { unwrapLxm, type Namespaced } from './utils/namespaced.ts';
21
+ import { constructMimeValidator } from './utils/request-input.ts';
22
+ import { constructParamsHandler } from './utils/request-params.ts';
23
+ import { invalidRequest, validationError } from './utils/response.ts';
24
+ import { XRPCError, XRPCSubscriptionError } from './xrpc-error.ts';
25
25
 
26
26
  type InternalRequestContext = {
27
27
  url: URL;
@@ -9,8 +9,8 @@ import type {
9
9
  XRPCSubscriptionMetadata,
10
10
  } from '@atcute/lexicons/validations';
11
11
 
12
- import type { Literal, Promisable } from '../../types/misc.js';
13
- import type { JSONResponse } from '../response.js';
12
+ import type { Literal, Promisable } from '../../types/misc.ts';
13
+ import type { JSONResponse } from '../response.ts';
14
14
 
15
15
  export type UnknownOperationContext = {
16
16
  request: Request;
@@ -1,4 +1,4 @@
1
- import type { Promisable } from '../../types/misc.js';
1
+ import type { Promisable } from '../../types/misc.ts';
2
2
 
3
3
  export interface WebSocketConnection {
4
4
  signal: AbortSignal;
@@ -1,6 +1,6 @@
1
1
  import type { XRPCBlobBodyParam, XRPCLexBodyParam } from '@atcute/lexicons/validations';
2
2
 
3
- import type { Result } from '../../types/misc.js';
3
+ import type { Result } from '../../types/misc.ts';
4
4
 
5
5
  const jsonMimeValidator = (() => {
6
6
  const JSON_RE = /^\s*application\/json\s*(?:$|;)/;
@@ -7,7 +7,7 @@ import {
7
7
  type ValidationResult,
8
8
  } from '@atcute/lexicons/validations';
9
9
 
10
- import type { Literal } from '../../types/misc.js';
10
+ import type { Literal } from '../../types/misc.ts';
11
11
 
12
12
  type MaybeArray<T> = T | T[];
13
13
 
@@ -1,10 +1,10 @@
1
1
  import { AsyncLocalStorage } from 'node:async_hooks';
2
2
 
3
- import type { Promisable } from '../../types/misc.js';
4
- import type { XRPCRouter } from '../router.js';
5
- import type { WebSocketAdapter, WebSocketConnection } from '../types/websocket.js';
3
+ import type { Promisable } from '../../types/misc.ts';
4
+ import type { XRPCRouter } from '../router.ts';
5
+ import type { WebSocketAdapter, WebSocketConnection } from '../types/websocket.ts';
6
6
 
7
- import { EventEmitter } from './event-emitter.js';
7
+ import { EventEmitter } from './event-emitter.ts';
8
8
 
9
9
  interface WebSocketHandlerContext {
10
10
  handler: ((ws: WebSocketConnection) => Promisable<void>) | null;
@@ -1,8 +1,8 @@
1
1
  import type { XRPCProcedureMetadata, XRPCQueryMetadata } from '@atcute/lexicons/validations';
2
2
 
3
- import { XRPCRouter, type XRPCRouterOptions } from './router.js';
4
- import type { ProcedureConfig, QueryConfig } from './types/operation.js';
5
- import { unwrapLxm, type Namespaced } from './utils/namespaced.js';
3
+ import { XRPCRouter, type XRPCRouterOptions } from './router.ts';
4
+ import type { ProcedureConfig, QueryConfig } from './types/operation.ts';
5
+ import { unwrapLxm, type Namespaced } from './utils/namespaced.ts';
6
6
 
7
7
  type XrpcHandlerRouterOptions = Pick<XRPCRouterOptions, 'middlewares' | 'handleNotFound' | 'handleException'>;
8
8
 
@@ -1,4 +1,4 @@
1
- import type { FetchMiddleware } from '../main/router.js';
1
+ import type { FetchMiddleware } from '../main/router.ts';
2
2
 
3
3
  export interface CORSOptions {
4
4
  /** Additional headers to expose to the client */
@@ -36,11 +36,14 @@ const RE_XRPC_NSID = /^\/xrpc\/([^?]*)/;
36
36
  export const cors = (options: CORSOptions = {}): FetchMiddleware => {
37
37
  const exposedHeaders = Array.from(
38
38
  new Set([...DEFAULT_EXPOSED_HEADERS, ...(options.exposedHeaders?.map((h) => h.toLowerCase()) || [])]),
39
- ).sort();
39
+ )
40
+ // oxlint-disable-next-line unicorn/no-array-sort -- Array.from already clones
41
+ .sort();
40
42
 
41
43
  const allowedHeaders = Array.from(
42
44
  new Set([...DEFAULT_ALLOWED_HEADERS, ...(options.allowedHeaders?.map((h) => h.toLowerCase()) || [])]),
43
45
  )
46
+ // oxlint-disable-next-line unicorn/no-array-sort -- Array.from already clones
44
47
  .sort()
45
48
  .join(',');
46
49
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atcute/xrpc-server",
3
- "version": "0.1.9",
3
+ "version": "0.1.10",
4
4
  "description": "a small web framework for handling XRPC operations",
5
5
  "license": "0BSD",
6
6
  "repository": {
@@ -25,21 +25,21 @@
25
25
  "dependencies": {
26
26
  "@badrap/valita": "^0.4.6",
27
27
  "nanoid": "^5.1.6",
28
- "@atcute/cbor": "^2.3.0",
28
+ "@atcute/cbor": "^2.3.2",
29
29
  "@atcute/crypto": "^2.3.0",
30
- "@atcute/identity-resolver": "^1.2.2",
31
30
  "@atcute/identity": "^1.1.3",
32
- "@atcute/multibase": "^1.1.7",
33
- "@atcute/lexicons": "^1.2.7",
34
- "@atcute/uint8array": "^1.1.0"
31
+ "@atcute/lexicons": "^1.2.9",
32
+ "@atcute/multibase": "^1.1.8",
33
+ "@atcute/uint8array": "^1.1.1",
34
+ "@atcute/identity-resolver": "^1.2.2"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@atcute/xrpc-server": "file:",
38
- "@types/node": "^22.19.3",
39
- "@vitest/coverage-v8": "^4.0.16",
40
- "vitest": "^4.0.16",
38
+ "@types/node": "^25.2.3",
39
+ "@vitest/coverage-v8": "^4.0.18",
40
+ "vitest": "^4.0.18",
41
41
  "@atcute/atproto": "^3.1.10",
42
- "@atcute/bluesky": "^3.2.16"
42
+ "@atcute/bluesky": "^3.2.18"
43
43
  },
44
44
  "scripts": {
45
45
  "build": "tsgo --project tsconfig.build.json",