@arcote.tech/arc-host 0.4.10 → 0.5.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.
@@ -1 +1 @@
1
- {"version":3,"file":"create-server.d.ts","sourceRoot":"","sources":["../../src/create-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAElC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAOjD,OAAO,KAAK,EACV,cAAc,EAGd,YAAY,EACb,MAAM,oBAAoB,CAAC;AAG5B,KAAK,aAAa,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1C,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,aAAa,CAAC;IACvB,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IACzD,YAAY,CAAC,EAAE,cAAc,EAAE,CAAC;IAChC,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oFAAoF;IACpF,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;IAC9B,cAAc,EAAE,cAAc,CAAC;IAC/B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,aAAa,EAAE,aAAa,CAAC;IAC7B,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,SAAS,CAAC,CAkKpB"}
1
+ {"version":3,"file":"create-server.d.ts","sourceRoot":"","sources":["../../src/create-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAElC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAOjD,OAAO,KAAK,EACV,cAAc,EAGd,YAAY,EACb,MAAM,oBAAoB,CAAC;AAG5B,KAAK,aAAa,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1C,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,aAAa,CAAC;IACvB,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IACzD,YAAY,CAAC,EAAE,cAAc,EAAE,CAAC;IAChC,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oFAAoF;IACpF,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;IAC9B,cAAc,EAAE,cAAc,CAAC;IAC/B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,aAAa,EAAE,aAAa,CAAC;IAC7B,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,SAAS,CAAC,CAmLpB"}
package/package.json CHANGED
@@ -4,18 +4,18 @@
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",
7
- "version": "0.4.10",
7
+ "version": "0.5.0",
8
8
  "private": false,
9
9
  "author": "Przemysław Krasiński [arcote.tech]",
10
10
  "dependencies": {
11
- "@arcote.tech/arc-adapter-db-sqlite": "^0.4.10",
11
+ "@arcote.tech/arc-adapter-db-sqlite": "^0.5.0",
12
12
  "croner": "^9.0.0",
13
13
  "jsonwebtoken": "^9.0.2"
14
14
  },
15
15
  "scripts": {
16
16
  "build": "rm -rf dist && bun build ./index.ts --target=bun --outdir=dist --sourcemap --external @arcote.tech/arc && bun run build:declaration",
17
17
  "build:declaration": "tsc --emitDeclarationOnly --declarationMap --project tsconfig.types.json",
18
- "postbuild": "rimraf tsconfig.types.tsbuildinfo",
18
+ "postbuild": "rm -f tsconfig.types.tsbuildinfo",
19
19
  "type-check": "tsc",
20
20
  "dev": "nodemon --ignore dist -e ts,tsx --exec 'bun run build'"
21
21
  },
@@ -24,6 +24,6 @@
24
24
  "@types/bun": "^1.2.0"
25
25
  },
26
26
  "peerDependencies": {
27
- "@arcote.tech/arc": "^0.4.10"
27
+ "@arcote.tech/arc": "^0.5.0"
28
28
  }
29
29
  }
@@ -66,12 +66,17 @@ export async function createArcServer(
66
66
 
67
67
  const connectionManager = new ConnectionManager();
68
68
 
69
- const corsHeaders = {
70
- "Access-Control-Allow-Origin": "*",
71
- "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, PATCH, OPTIONS",
72
- "Access-Control-Allow-Headers":
73
- "Content-Type, Authorization, X-Arc-Scope, X-Arc-Tokens",
74
- };
69
+ function buildCorsHeaders(req?: Request) {
70
+ const origin = req?.headers.get("Origin") || "*";
71
+ return {
72
+ "Access-Control-Allow-Origin": origin,
73
+ "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, PATCH, OPTIONS",
74
+ "Access-Control-Allow-Headers":
75
+ "Content-Type, Authorization, X-Arc-Scope, X-Arc-Tokens",
76
+ "Access-Control-Allow-Credentials": "true",
77
+ };
78
+ }
79
+ const corsHeaders = buildCorsHeaders();
75
80
 
76
81
  function verifyToken(token: string): TokenPayload | null {
77
82
  try {
@@ -127,16 +132,28 @@ export async function createArcServer(
127
132
  async fetch(req, server) {
128
133
  const url = new URL(req.url);
129
134
 
135
+ // Build CORS headers with request origin
136
+ const corsHeaders = buildCorsHeaders(req);
137
+
130
138
  // CORS preflight
131
139
  if (req.method === "OPTIONS") {
132
140
  return new Response(null, { headers: corsHeaders });
133
141
  }
134
142
 
135
- // Token extraction
143
+ // Token extraction: Authorization header > query param > cookie
136
144
  const authHeader = req.headers.get("Authorization");
137
- const rawToken =
145
+ let rawToken =
138
146
  authHeader?.replace("Bearer ", "") ||
139
147
  url.searchParams.get("token");
148
+
149
+ if (!rawToken) {
150
+ const cookieHeader = req.headers.get("Cookie");
151
+ if (cookieHeader) {
152
+ const match = cookieHeader.match(/arc_token=([^;]+)/);
153
+ if (match) rawToken = decodeURIComponent(match[1]);
154
+ }
155
+ }
156
+
140
157
  const tokenPayload = rawToken ? verifyToken(rawToken) : null;
141
158
 
142
159
  // WebSocket upgrade