@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.
- package/dist/index.js +132 -104
- package/dist/index.js.map +7 -7
- package/dist/src/create-server.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/create-server.ts +25 -8
|
@@ -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,
|
|
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.
|
|
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.
|
|
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": "
|
|
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.
|
|
27
|
+
"@arcote.tech/arc": "^0.5.0"
|
|
28
28
|
}
|
|
29
29
|
}
|
package/src/create-server.ts
CHANGED
|
@@ -66,12 +66,17 @@ export async function createArcServer(
|
|
|
66
66
|
|
|
67
67
|
const connectionManager = new ConnectionManager();
|
|
68
68
|
|
|
69
|
-
|
|
70
|
-
"
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
"
|
|
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
|
-
|
|
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
|