@arcote.tech/arc-host 0.3.3 → 0.3.4
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 +22 -2
- package/dist/index.js.map +3 -3
- package/dist/src/arc-host.d.ts +6 -0
- package/dist/src/arc-host.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/arc-host.ts +41 -1
package/dist/index.js
CHANGED
|
@@ -4174,7 +4174,7 @@ class ArcHost {
|
|
|
4174
4174
|
});
|
|
4175
4175
|
}
|
|
4176
4176
|
try {
|
|
4177
|
-
const params = await
|
|
4177
|
+
const params = await this.parseCommandParams(req);
|
|
4178
4178
|
const result = await this.contextHandler.executeCommand(commandName, params, rawToken);
|
|
4179
4179
|
return new Response(JSON.stringify(result ?? { success: true }), {
|
|
4180
4180
|
headers: { ...corsHeaders, "Content-Type": "application/json" }
|
|
@@ -4190,6 +4190,26 @@ class ArcHost {
|
|
|
4190
4190
|
});
|
|
4191
4191
|
}
|
|
4192
4192
|
}
|
|
4193
|
+
async parseCommandParams(req) {
|
|
4194
|
+
const contentType = req.headers.get("Content-Type") || "";
|
|
4195
|
+
if (contentType.includes("multipart/form-data")) {
|
|
4196
|
+
const formData = await req.formData();
|
|
4197
|
+
const params = {};
|
|
4198
|
+
for (const [key, value] of formData.entries()) {
|
|
4199
|
+
if (typeof value === "object" && value !== null && "name" in value && "size" in value) {
|
|
4200
|
+
params[key] = value;
|
|
4201
|
+
} else {
|
|
4202
|
+
try {
|
|
4203
|
+
params[key] = JSON.parse(value);
|
|
4204
|
+
} catch {
|
|
4205
|
+
params[key] = value;
|
|
4206
|
+
}
|
|
4207
|
+
}
|
|
4208
|
+
}
|
|
4209
|
+
return params;
|
|
4210
|
+
}
|
|
4211
|
+
return await req.json();
|
|
4212
|
+
}
|
|
4193
4213
|
async handleHttpQuery(req, url, _token, corsHeaders, rawToken) {
|
|
4194
4214
|
const viewName = url.pathname.split("/query/")[1];
|
|
4195
4215
|
if (!viewName) {
|
|
@@ -4447,5 +4467,5 @@ export {
|
|
|
4447
4467
|
ArcHost
|
|
4448
4468
|
};
|
|
4449
4469
|
|
|
4450
|
-
//# debugId=
|
|
4470
|
+
//# debugId=3D741A6ED14793D164756E2164756E21
|
|
4451
4471
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -77,13 +77,13 @@
|
|
|
77
77
|
"/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\nfunction before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n}\n\n/**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\nfunction once(func) {\n return before(2, func);\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = once;\n",
|
|
78
78
|
"const timespan = require('./lib/timespan');\nconst PS_SUPPORTED = require('./lib/psSupported');\nconst validateAsymmetricKey = require('./lib/validateAsymmetricKey');\nconst jws = require('jws');\nconst includes = require('lodash.includes');\nconst isBoolean = require('lodash.isboolean');\nconst isInteger = require('lodash.isinteger');\nconst isNumber = require('lodash.isnumber');\nconst isPlainObject = require('lodash.isplainobject');\nconst isString = require('lodash.isstring');\nconst once = require('lodash.once');\nconst { KeyObject, createSecretKey, createPrivateKey } = require('crypto')\n\nconst SUPPORTED_ALGS = ['RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512', 'HS256', 'HS384', 'HS512', 'none'];\nif (PS_SUPPORTED) {\n SUPPORTED_ALGS.splice(3, 0, 'PS256', 'PS384', 'PS512');\n}\n\nconst sign_options_schema = {\n expiresIn: { isValid: function(value) { return isInteger(value) || (isString(value) && value); }, message: '\"expiresIn\" should be a number of seconds or string representing a timespan' },\n notBefore: { isValid: function(value) { return isInteger(value) || (isString(value) && value); }, message: '\"notBefore\" should be a number of seconds or string representing a timespan' },\n audience: { isValid: function(value) { return isString(value) || Array.isArray(value); }, message: '\"audience\" must be a string or array' },\n algorithm: { isValid: includes.bind(null, SUPPORTED_ALGS), message: '\"algorithm\" must be a valid string enum value' },\n header: { isValid: isPlainObject, message: '\"header\" must be an object' },\n encoding: { isValid: isString, message: '\"encoding\" must be a string' },\n issuer: { isValid: isString, message: '\"issuer\" must be a string' },\n subject: { isValid: isString, message: '\"subject\" must be a string' },\n jwtid: { isValid: isString, message: '\"jwtid\" must be a string' },\n noTimestamp: { isValid: isBoolean, message: '\"noTimestamp\" must be a boolean' },\n keyid: { isValid: isString, message: '\"keyid\" must be a string' },\n mutatePayload: { isValid: isBoolean, message: '\"mutatePayload\" must be a boolean' },\n allowInsecureKeySizes: { isValid: isBoolean, message: '\"allowInsecureKeySizes\" must be a boolean'},\n allowInvalidAsymmetricKeyTypes: { isValid: isBoolean, message: '\"allowInvalidAsymmetricKeyTypes\" must be a boolean'}\n};\n\nconst registered_claims_schema = {\n iat: { isValid: isNumber, message: '\"iat\" should be a number of seconds' },\n exp: { isValid: isNumber, message: '\"exp\" should be a number of seconds' },\n nbf: { isValid: isNumber, message: '\"nbf\" should be a number of seconds' }\n};\n\nfunction validate(schema, allowUnknown, object, parameterName) {\n if (!isPlainObject(object)) {\n throw new Error('Expected \"' + parameterName + '\" to be a plain object.');\n }\n Object.keys(object)\n .forEach(function(key) {\n const validator = schema[key];\n if (!validator) {\n if (!allowUnknown) {\n throw new Error('\"' + key + '\" is not allowed in \"' + parameterName + '\"');\n }\n return;\n }\n if (!validator.isValid(object[key])) {\n throw new Error(validator.message);\n }\n });\n}\n\nfunction validateOptions(options) {\n return validate(sign_options_schema, false, options, 'options');\n}\n\nfunction validatePayload(payload) {\n return validate(registered_claims_schema, true, payload, 'payload');\n}\n\nconst options_to_payload = {\n 'audience': 'aud',\n 'issuer': 'iss',\n 'subject': 'sub',\n 'jwtid': 'jti'\n};\n\nconst options_for_objects = [\n 'expiresIn',\n 'notBefore',\n 'noTimestamp',\n 'audience',\n 'issuer',\n 'subject',\n 'jwtid',\n];\n\nmodule.exports = function (payload, secretOrPrivateKey, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n } else {\n options = options || {};\n }\n\n const isObjectPayload = typeof payload === 'object' &&\n !Buffer.isBuffer(payload);\n\n const header = Object.assign({\n alg: options.algorithm || 'HS256',\n typ: isObjectPayload ? 'JWT' : undefined,\n kid: options.keyid\n }, options.header);\n\n function failure(err) {\n if (callback) {\n return callback(err);\n }\n throw err;\n }\n\n if (!secretOrPrivateKey && options.algorithm !== 'none') {\n return failure(new Error('secretOrPrivateKey must have a value'));\n }\n\n if (secretOrPrivateKey != null && !(secretOrPrivateKey instanceof KeyObject)) {\n try {\n secretOrPrivateKey = createPrivateKey(secretOrPrivateKey)\n } catch (_) {\n try {\n secretOrPrivateKey = createSecretKey(typeof secretOrPrivateKey === 'string' ? Buffer.from(secretOrPrivateKey) : secretOrPrivateKey)\n } catch (_) {\n return failure(new Error('secretOrPrivateKey is not valid key material'));\n }\n }\n }\n\n if (header.alg.startsWith('HS') && secretOrPrivateKey.type !== 'secret') {\n return failure(new Error((`secretOrPrivateKey must be a symmetric key when using ${header.alg}`)))\n } else if (/^(?:RS|PS|ES)/.test(header.alg)) {\n if (secretOrPrivateKey.type !== 'private') {\n return failure(new Error((`secretOrPrivateKey must be an asymmetric key when using ${header.alg}`)))\n }\n if (!options.allowInsecureKeySizes &&\n !header.alg.startsWith('ES') &&\n secretOrPrivateKey.asymmetricKeyDetails !== undefined && //KeyObject.asymmetricKeyDetails is supported in Node 15+\n secretOrPrivateKey.asymmetricKeyDetails.modulusLength < 2048) {\n return failure(new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`));\n }\n }\n\n if (typeof payload === 'undefined') {\n return failure(new Error('payload is required'));\n } else if (isObjectPayload) {\n try {\n validatePayload(payload);\n }\n catch (error) {\n return failure(error);\n }\n if (!options.mutatePayload) {\n payload = Object.assign({},payload);\n }\n } else {\n const invalid_options = options_for_objects.filter(function (opt) {\n return typeof options[opt] !== 'undefined';\n });\n\n if (invalid_options.length > 0) {\n return failure(new Error('invalid ' + invalid_options.join(',') + ' option for ' + (typeof payload ) + ' payload'));\n }\n }\n\n if (typeof payload.exp !== 'undefined' && typeof options.expiresIn !== 'undefined') {\n return failure(new Error('Bad \"options.expiresIn\" option the payload already has an \"exp\" property.'));\n }\n\n if (typeof payload.nbf !== 'undefined' && typeof options.notBefore !== 'undefined') {\n return failure(new Error('Bad \"options.notBefore\" option the payload already has an \"nbf\" property.'));\n }\n\n try {\n validateOptions(options);\n }\n catch (error) {\n return failure(error);\n }\n\n if (!options.allowInvalidAsymmetricKeyTypes) {\n try {\n validateAsymmetricKey(header.alg, secretOrPrivateKey);\n } catch (error) {\n return failure(error);\n }\n }\n\n const timestamp = payload.iat || Math.floor(Date.now() / 1000);\n\n if (options.noTimestamp) {\n delete payload.iat;\n } else if (isObjectPayload) {\n payload.iat = timestamp;\n }\n\n if (typeof options.notBefore !== 'undefined') {\n try {\n payload.nbf = timespan(options.notBefore, timestamp);\n }\n catch (err) {\n return failure(err);\n }\n if (typeof payload.nbf === 'undefined') {\n return failure(new Error('\"notBefore\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60'));\n }\n }\n\n if (typeof options.expiresIn !== 'undefined' && typeof payload === 'object') {\n try {\n payload.exp = timespan(options.expiresIn, timestamp);\n }\n catch (err) {\n return failure(err);\n }\n if (typeof payload.exp === 'undefined') {\n return failure(new Error('\"expiresIn\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60'));\n }\n }\n\n Object.keys(options_to_payload).forEach(function (key) {\n const claim = options_to_payload[key];\n if (typeof options[key] !== 'undefined') {\n if (typeof payload[claim] !== 'undefined') {\n return failure(new Error('Bad \"options.' + key + '\" option. The payload already has an \"' + claim + '\" property.'));\n }\n payload[claim] = options[key];\n }\n });\n\n const encoding = options.encoding || 'utf8';\n\n if (typeof callback === 'function') {\n callback = callback && once(callback);\n\n jws.createSign({\n header: header,\n privateKey: secretOrPrivateKey,\n payload: payload,\n encoding: encoding\n }).once('error', callback)\n .once('done', function (signature) {\n // TODO: Remove in favor of the modulus length check before signing once node 15+ is the minimum supported version\n if(!options.allowInsecureKeySizes && /^(?:RS|PS)/.test(header.alg) && signature.length < 256) {\n return callback(new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`))\n }\n callback(null, signature);\n });\n } else {\n let signature = jws.sign({header: header, payload: payload, secret: secretOrPrivateKey, encoding: encoding});\n // TODO: Remove in favor of the modulus length check before signing once node 15+ is the minimum supported version\n if(!options.allowInsecureKeySizes && /^(?:RS|PS)/.test(header.alg) && signature.length < 256) {\n throw new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`)\n }\n return signature\n }\n};\n",
|
|
79
79
|
"module.exports = {\n decode: require('./decode'),\n verify: require('./verify'),\n sign: require('./sign'),\n JsonWebTokenError: require('./lib/JsonWebTokenError'),\n NotBeforeError: require('./lib/NotBeforeError'),\n TokenExpiredError: require('./lib/TokenExpiredError'),\n};\n",
|
|
80
|
-
"import type { ArcRouteAny } from \"@arcote.tech/arc\";\nimport { liveQuery } from \"@arcote.tech/arc\";\nimport type { Server, ServerWebSocket } from \"bun\";\nimport jwt from \"jsonwebtoken\";\nimport { ConnectionManager } from \"./connection-manager\";\nimport { ContextHandler } from \"./context-handler\";\nimport { filterEventsForToken } from \"./event-auth\";\nimport type {\n ArcHostConfig,\n ClientToHostMessage,\n HostToClientMessage,\n TokenPayload,\n} from \"./types\";\n\ntype WebSocketData = {\n clientId: string;\n token: TokenPayload | null;\n rawToken: string | null;\n};\n\n/**\n * Active SSE stream connection\n */\ninterface StreamConnection {\n id: string;\n controller: ReadableStreamDefaultController<Uint8Array>;\n unsubscribe: () => void;\n}\n\n/**\n * Arc Host - WebSocket server for real-time event sync\n */\nexport class ArcHost {\n private server!: Server<WebSocketData>;\n private connectionManager = new ConnectionManager();\n private contextHandler!: ContextHandler;\n private streamConnections = new Map<string, StreamConnection>();\n private jwtSecret: string;\n private port: number;\n private streamIdCounter = 0;\n\n constructor(private config: ArcHostConfig) {\n this.jwtSecret =\n config.jwtSecret ||\n process.env.JWT_SECRET ||\n \"arc-host-secret-change-in-production\";\n this.port = config.port || 5005;\n }\n\n /**\n * Start the host server\n */\n async start(): Promise<void> {\n // Initialize context handler\n const dbAdapter = this.config.dbAdapterFactory(this.config.context);\n this.contextHandler = new ContextHandler(this.config.context, dbAdapter);\n await this.contextHandler.init();\n\n this.setupServer();\n }\n\n /**\n * Verify JWT token\n * Supports both standard JWT (jsonwebtoken) and Arc's custom JWT format\n */\n private verifyToken(token: string): TokenPayload | null {\n try {\n // Try standard JWT first\n const decoded = jwt.verify(token, this.jwtSecret) as any;\n\n // Handle Arc's custom JWT format (tokenName -> tokenType)\n if (decoded.tokenName && !decoded.tokenType) {\n return {\n tokenType: decoded.tokenName,\n params: decoded.params || {},\n iat: decoded.iat,\n exp: decoded.exp,\n };\n }\n\n return decoded as TokenPayload;\n } catch {\n // Try Arc's custom JWT format (base64 encoded, custom signature)\n try {\n const parts = token.split(\".\");\n if (parts.length !== 3) return null;\n\n const payload = JSON.parse(atob(parts[1]));\n\n // TODO: Verify signature with context's token secret\n // For now, just decode and trust (signature verification should be added)\n\n return {\n tokenType: payload.tokenName,\n params: payload.params || {},\n iat: payload.iat,\n exp: payload.exp,\n };\n } catch {\n return null;\n }\n }\n }\n\n /**\n * Handle WebSocket message\n */\n private async handleMessage(\n ws: ServerWebSocket<WebSocketData>,\n message: ClientToHostMessage,\n ): Promise<void> {\n const client = this.connectionManager.getClientByWs(ws);\n if (!client) {\n this.sendError(ws, \"Client not found\");\n return;\n }\n\n switch (message.type) {\n case \"sync-events\":\n await this.handleSyncEvents(client.id, message, client.token);\n break;\n\n case \"request-sync\":\n await this.handleRequestSync(client.id, message, client.token);\n break;\n\n case \"execute-command\":\n await this.handleExecuteCommand(client.id, message, client.rawToken);\n break;\n\n default:\n this.sendError(ws, `Unknown message type: ${(message as any).type}`);\n }\n }\n\n /**\n * Handle sync-events message\n */\n private async handleSyncEvents(\n clientId: string,\n message: Extract<ClientToHostMessage, { type: \"sync-events\" }>,\n token: TokenPayload | null,\n ): Promise<void> {\n // Persist events\n const persistedEvents = await this.contextHandler.persistEvents(\n message.events,\n clientId,\n token,\n );\n\n if (persistedEvents.length === 0) {\n return;\n }\n\n // Broadcast to other authorized clients\n const clients = this.connectionManager.getAllClients();\n\n for (const client of clients) {\n if (client.id === clientId) continue;\n\n // Filter events for this client's token\n const authorizedEvents = filterEventsForToken(\n client.token,\n persistedEvents,\n this.contextHandler.getEventDefinitions(),\n );\n\n if (authorizedEvents.length > 0) {\n this.connectionManager.sendToClient(client.id, {\n type: \"events\",\n events: authorizedEvents,\n });\n }\n }\n\n // Update sender's last synced ID\n const lastEvent = persistedEvents[persistedEvents.length - 1];\n this.connectionManager.updateLastSyncedEventId(clientId, lastEvent.hostId);\n\n // Confirm sync to sender\n this.connectionManager.sendToClient(clientId, {\n type: \"sync-complete\",\n lastHostEventId: lastEvent.hostId,\n });\n }\n\n /**\n * Handle request-sync message (initial sync or catch-up)\n */\n private async handleRequestSync(\n clientId: string,\n message: Extract<ClientToHostMessage, { type: \"request-sync\" }>,\n token: TokenPayload | null,\n ): Promise<void> {\n const events = await this.contextHandler.getEventsSince(\n message.lastHostEventId,\n token,\n );\n\n this.connectionManager.sendToClient(clientId, {\n type: \"events\",\n events,\n });\n\n if (events.length > 0) {\n const lastEvent = events[events.length - 1];\n this.connectionManager.updateLastSyncedEventId(\n clientId,\n lastEvent.hostId,\n );\n\n this.connectionManager.sendToClient(clientId, {\n type: \"sync-complete\",\n lastHostEventId: lastEvent.hostId,\n });\n } else {\n this.connectionManager.sendToClient(clientId, {\n type: \"sync-complete\",\n lastHostEventId: message.lastHostEventId || \"\",\n });\n }\n }\n\n /**\n * Handle execute-command message\n */\n private async handleExecuteCommand(\n clientId: string,\n message: Extract<ClientToHostMessage, { type: \"execute-command\" }>,\n rawToken: string | null,\n ): Promise<void> {\n try {\n const result = await this.contextHandler.executeCommand(\n message.commandName,\n message.params,\n rawToken,\n );\n\n this.connectionManager.sendToClient(clientId, {\n type: \"command-result\",\n requestId: message.requestId,\n result,\n });\n } catch (error) {\n this.connectionManager.sendToClient(clientId, {\n type: \"command-result\",\n requestId: message.requestId,\n error: (error as Error).message,\n });\n }\n }\n\n /**\n * Send error to WebSocket\n */\n private sendError(ws: ServerWebSocket<WebSocketData>, message: string): void {\n ws.send(JSON.stringify({ type: \"error\", message } as HostToClientMessage));\n }\n\n /**\n * Setup Bun server\n */\n private setupServer(): void {\n const self = this;\n\n this.server = Bun.serve<WebSocketData>({\n port: this.port,\n idleTimeout: 255,\n\n fetch(req, server) {\n const url = new URL(req.url);\n\n // CORS headers\n const corsHeaders = {\n \"Access-Control-Allow-Origin\": \"*\",\n \"Access-Control-Allow-Methods\": \"GET, POST, OPTIONS\",\n \"Access-Control-Allow-Headers\": \"Content-Type, Authorization\",\n };\n\n // Handle preflight\n if (req.method === \"OPTIONS\") {\n return new Response(null, { headers: corsHeaders });\n }\n\n // Extract token\n const authHeader = req.headers.get(\"Authorization\");\n const token =\n authHeader?.replace(\"Bearer \", \"\") || url.searchParams.get(\"token\");\n\n // Verify token\n let tokenPayload: TokenPayload | null = null;\n if (token) {\n tokenPayload = self.verifyToken(token);\n }\n\n // WebSocket upgrade for /ws\n if (\n url.pathname === \"/ws\" &&\n req.headers.get(\"Upgrade\") === \"websocket\"\n ) {\n // Pass token to WebSocket data\n if (\n server.upgrade(req, {\n data: {\n clientId: \"\",\n token: tokenPayload,\n rawToken: token,\n },\n })\n ) {\n // Connection will be set up in websocket.open\n return undefined;\n }\n return new Response(\"WebSocket upgrade failed\", {\n status: 500,\n headers: corsHeaders,\n });\n }\n\n // Health check\n if (url.pathname === \"/health\") {\n return new Response(\n JSON.stringify({\n status: \"ok\",\n clients: self.connectionManager.clientCount,\n }),\n {\n headers: { ...corsHeaders, \"Content-Type\": \"application/json\" },\n },\n );\n }\n\n // HTTP command endpoint: POST /command/:commandName\n if (url.pathname.startsWith(\"/command/\") && req.method === \"POST\") {\n return self.handleHttpCommand(req, url, corsHeaders, token);\n }\n\n // HTTP query endpoint: POST /query/:viewName\n if (url.pathname.startsWith(\"/query/\") && req.method === \"POST\") {\n return self.handleHttpQuery(\n req,\n url,\n tokenPayload,\n corsHeaders,\n token,\n );\n }\n\n // SSE stream endpoint: GET /stream/:viewName\n if (url.pathname.startsWith(\"/stream/\") && req.method === \"GET\") {\n return self.handleHttpStream(\n req,\n url,\n tokenPayload,\n corsHeaders,\n token,\n );\n }\n\n // HTTP event sync endpoint: POST /sync/events\n if (url.pathname === \"/sync/events\" && req.method === \"POST\") {\n return self.handleHttpEventSync(req, tokenPayload, corsHeaders);\n }\n\n // Route endpoints: /route/*\n if (url.pathname.startsWith(\"/route/\")) {\n return self.handleHttpRoute(\n req,\n url,\n tokenPayload,\n corsHeaders,\n token,\n );\n }\n\n return new Response(\"Not Found\", { status: 404, headers: corsHeaders });\n },\n\n websocket: {\n open(ws) {\n // Get token from upgrade data\n const tokenPayload = ws.data?.token || null;\n const rawToken = ws.data?.rawToken || null;\n\n // Add client to connection manager\n const client = self.connectionManager.addClient(\n ws,\n tokenPayload,\n rawToken,\n );\n\n console.log(`Client connected: ${client.id}`);\n },\n\n message(ws, messageStr) {\n try {\n const message = JSON.parse(\n messageStr as string,\n ) as ClientToHostMessage;\n self.handleMessage(ws, message);\n } catch (error) {\n console.error(\"Failed to parse message:\", error);\n self.sendError(ws, \"Invalid message format\");\n }\n },\n\n close(ws) {\n const client = self.connectionManager.getClientByWs(ws);\n if (client) {\n console.log(`Client disconnected: ${client.id}`);\n self.connectionManager.removeClient(client.id);\n }\n },\n },\n });\n\n console.log(`✅ Arc Host running on http://localhost:${this.port}`);\n }\n\n /**\n * Handle HTTP command request\n */\n private async handleHttpCommand(\n req: Request,\n url: URL,\n corsHeaders: Record<string, string>,\n rawToken: string | null,\n ): Promise<Response> {\n const commandName = url.pathname.split(\"/command/\")[1];\n if (!commandName) {\n return new Response(\"Invalid command path\", {\n status: 400,\n headers: corsHeaders,\n });\n }\n\n try {\n const params = await req.json();\n const result = await this.contextHandler.executeCommand(\n commandName,\n params,\n rawToken,\n );\n\n return new Response(JSON.stringify(result ?? { success: true }), {\n headers: { ...corsHeaders, \"Content-Type\": \"application/json\" },\n });\n } catch (error) {\n console.error(`[ARC HTTP] Command '${commandName}' error:`, error);\n if (error instanceof Error && error.stack) {\n console.error(`[ARC HTTP] Stack trace:`, error.stack);\n }\n return new Response(JSON.stringify({ error: (error as Error).message }), {\n status: 500,\n headers: { ...corsHeaders, \"Content-Type\": \"application/json\" },\n });\n }\n }\n\n /**\n * Handle HTTP query request\n * Uses view.queryContext() to apply protections consistently with liveQuery\n */\n private async handleHttpQuery(\n req: Request,\n url: URL,\n _token: TokenPayload | null,\n corsHeaders: Record<string, string>,\n rawToken: string | null,\n ): Promise<Response> {\n const viewName = url.pathname.split(\"/query/\")[1];\n if (!viewName) {\n return new Response(\"Invalid query path\", {\n status: 400,\n headers: corsHeaders,\n });\n }\n\n try {\n const params = await req.json();\n\n // Get view element\n const viewElement = this.contextHandler\n .getModel()\n .context.get(viewName) as any;\n\n if (!viewElement || !viewElement.queryContext) {\n return new Response(JSON.stringify({ error: \"View not found\" }), {\n status: 404,\n headers: { ...corsHeaders, \"Content-Type\": \"application/json\" },\n });\n }\n\n // Set auth token so view.queryContext() can apply protections\n this.contextHandler.setAuthToken(rawToken);\n\n // Use view's queryContext which applies protections automatically\n const model = this.contextHandler.getModel();\n const adapters = model.getAdapters();\n const queryCtx = viewElement.queryContext(adapters);\n\n // Execute query through view's queryContext (protections applied)\n const result = await queryCtx.find(params);\n\n return new Response(JSON.stringify(result), {\n headers: { ...corsHeaders, \"Content-Type\": \"application/json\" },\n });\n } catch (error) {\n return new Response(JSON.stringify({ error: (error as Error).message }), {\n status: 500,\n headers: { ...corsHeaders, \"Content-Type\": \"application/json\" },\n });\n }\n }\n\n /**\n * Handle HTTP stream (SSE) request for live queries\n */\n private handleHttpStream(\n _req: Request,\n url: URL,\n token: TokenPayload | null,\n corsHeaders: Record<string, string>,\n rawToken: string | null,\n ): Response {\n const viewName = url.pathname.split(\"/stream/\")[1];\n if (!viewName) {\n return new Response(\"Invalid stream path\", {\n status: 400,\n headers: corsHeaders,\n });\n }\n\n // Parse query options from URL params\n const findOptions: any = {};\n const whereParam = url.searchParams.get(\"where\");\n if (whereParam) {\n try {\n findOptions.where = JSON.parse(whereParam);\n } catch {\n return new Response(\"Invalid 'where' parameter\", {\n status: 400,\n headers: corsHeaders,\n });\n }\n }\n\n const orderByParam = url.searchParams.get(\"orderBy\");\n if (orderByParam) {\n try {\n findOptions.orderBy = JSON.parse(orderByParam);\n } catch {\n return new Response(\"Invalid 'orderBy' parameter\", {\n status: 400,\n headers: corsHeaders,\n });\n }\n }\n\n const limitParam = url.searchParams.get(\"limit\");\n if (limitParam) {\n findOptions.limit = parseInt(limitParam, 10);\n }\n\n // Create SSE stream\n const streamId = `stream_${++this.streamIdCounter}_${Date.now()}`;\n const self = this;\n\n const stream = new ReadableStream<Uint8Array>({\n start(controller) {\n // Set up live query\n const model = self.contextHandler.getModel();\n\n // Set the token on the auth adapter so view protection is applied\n self.contextHandler.setAuthToken(rawToken);\n\n const { unsubscribe } = liveQuery(\n model,\n async (q: any) => {\n const view = q[viewName];\n if (!view) {\n throw new Error(`View '${viewName}' not found`);\n }\n return view.find(findOptions);\n },\n (data: any[]) => {\n // Send SSE event\n const event = `data: ${JSON.stringify({ type: \"data\", data })}\\n\\n`;\n try {\n controller.enqueue(new TextEncoder().encode(event));\n } catch {\n // Stream closed\n unsubscribe();\n }\n },\n );\n\n // Store connection for cleanup\n self.streamConnections.set(streamId, {\n id: streamId,\n controller,\n unsubscribe,\n });\n\n // Send initial connection event\n const connectEvent = `data: ${JSON.stringify({ type: \"connected\", streamId })}\\n\\n`;\n controller.enqueue(new TextEncoder().encode(connectEvent));\n },\n\n cancel() {\n // Clean up on client disconnect\n const conn = self.streamConnections.get(streamId);\n if (conn) {\n conn.unsubscribe();\n self.streamConnections.delete(streamId);\n }\n },\n });\n\n return new Response(stream, {\n headers: {\n ...corsHeaders,\n \"Content-Type\": \"text/event-stream\",\n \"Cache-Control\": \"no-cache\",\n Connection: \"keep-alive\",\n },\n });\n }\n\n /**\n * Handle HTTP event sync request\n */\n private async handleHttpEventSync(\n req: Request,\n token: TokenPayload | null,\n corsHeaders: Record<string, string>,\n ): Promise<Response> {\n try {\n const body = await req.json();\n const events = body.events || [];\n\n // Persist events via context handler\n const persistedEvents = await this.contextHandler.persistEvents(\n events.map((e: any) => ({\n localId: e.localId,\n type: e.type,\n payload: e.payload,\n createdAt: e.createdAt,\n })),\n \"http-sync\",\n token,\n );\n\n return new Response(\n JSON.stringify({\n success: true,\n syncedIds: persistedEvents.map((e) => e.localId),\n }),\n {\n headers: { ...corsHeaders, \"Content-Type\": \"application/json\" },\n },\n );\n } catch (error) {\n return new Response(\n JSON.stringify({\n success: false,\n error: (error as Error).message,\n }),\n {\n status: 500,\n headers: { ...corsHeaders, \"Content-Type\": \"application/json\" },\n },\n );\n }\n }\n\n /**\n * Handle HTTP route request\n * Matches path against registered routes and executes handler\n */\n private async handleHttpRoute(\n req: Request,\n url: URL,\n tokenPayload: TokenPayload | null,\n corsHeaders: Record<string, string>,\n rawToken: string | null,\n ): Promise<Response> {\n const method = req.method as \"GET\" | \"POST\" | \"PUT\" | \"DELETE\" | \"PATCH\";\n\n // Find matching route in context\n const context = this.contextHandler.getModel().context;\n let matchedRoute: ArcRouteAny | null = null;\n let routeParams: Record<string, string> = {};\n\n for (const element of context.elements) {\n // Check if element is a route (has matchesPath method)\n if (element && typeof (element as any).matchesPath === \"function\") {\n const route = element as ArcRouteAny;\n const match = route.matchesPath(url.pathname);\n if (match.matches) {\n matchedRoute = route;\n routeParams = match.params;\n break;\n }\n }\n }\n\n if (!matchedRoute) {\n return new Response(JSON.stringify({ error: \"Route not found\" }), {\n status: 404,\n headers: { ...corsHeaders, \"Content-Type\": \"application/json\" },\n });\n }\n\n // Get handler for this method\n const handler = matchedRoute.getHandler(method);\n if (!handler) {\n return new Response(\n JSON.stringify({ error: `Method ${method} not allowed` }),\n {\n status: 405,\n headers: { ...corsHeaders, \"Content-Type\": \"application/json\" },\n },\n );\n }\n\n // Check protection\n if (!matchedRoute.isPublic && matchedRoute.hasProtections) {\n if (!tokenPayload) {\n return new Response(JSON.stringify({ error: \"Unauthorized\" }), {\n status: 401,\n headers: { ...corsHeaders, \"Content-Type\": \"application/json\" },\n });\n }\n\n // Set auth token for protection check\n this.contextHandler.setAuthToken(rawToken);\n\n // Check if token type matches any protection\n let isAuthorized = false;\n for (const protection of matchedRoute.protections) {\n if (protection.token.name === tokenPayload.tokenType) {\n // Create a mock token instance for the check\n const mockTokenInstance = {\n params: tokenPayload.params,\n getTokenDefinition: () => protection.token,\n };\n const allowed = await protection.check(mockTokenInstance as any);\n if (allowed) {\n isAuthorized = true;\n break;\n }\n }\n }\n\n if (!isAuthorized) {\n return new Response(JSON.stringify({ error: \"Forbidden\" }), {\n status: 403,\n headers: { ...corsHeaders, \"Content-Type\": \"application/json\" },\n });\n }\n } else if (!matchedRoute.isPublic && !matchedRoute.hasProtections) {\n // Route is not public and has no protections - require any valid token\n if (!tokenPayload) {\n return new Response(JSON.stringify({ error: \"Unauthorized\" }), {\n status: 401,\n headers: { ...corsHeaders, \"Content-Type\": \"application/json\" },\n });\n }\n }\n\n // Build route context\n this.contextHandler.setAuthToken(rawToken);\n const model = this.contextHandler.getModel();\n const adapters = model.getAdapters();\n\n const authParams = tokenPayload\n ? { params: tokenPayload.params, tokenName: tokenPayload.tokenType }\n : undefined;\n\n const routeContext = matchedRoute.buildContext(adapters, authParams);\n\n try {\n // Execute handler\n const response = await handler(routeContext, req, routeParams, url);\n\n // Add CORS headers to response\n const newHeaders = new Headers(response.headers);\n for (const [key, value] of Object.entries(corsHeaders)) {\n newHeaders.set(key, value);\n }\n\n return new Response(response.body, {\n status: response.status,\n statusText: response.statusText,\n headers: newHeaders,\n });\n } catch (error) {\n return new Response(JSON.stringify({ error: (error as Error).message }), {\n status: 500,\n headers: { ...corsHeaders, \"Content-Type\": \"application/json\" },\n });\n }\n }\n\n /**\n * Stop the server\n */\n stop(): void {\n // Clean up all stream connections\n for (const conn of this.streamConnections.values()) {\n conn.unsubscribe();\n }\n this.streamConnections.clear();\n\n this.server?.stop();\n }\n}\n",
|
|
80
|
+
"import type { ArcRouteAny } from \"@arcote.tech/arc\";\nimport { liveQuery } from \"@arcote.tech/arc\";\nimport type { Server, ServerWebSocket } from \"bun\";\nimport jwt from \"jsonwebtoken\";\nimport { ConnectionManager } from \"./connection-manager\";\nimport { ContextHandler } from \"./context-handler\";\nimport { filterEventsForToken } from \"./event-auth\";\nimport type {\n ArcHostConfig,\n ClientToHostMessage,\n HostToClientMessage,\n TokenPayload,\n} from \"./types\";\n\ntype WebSocketData = {\n clientId: string;\n token: TokenPayload | null;\n rawToken: string | null;\n};\n\n/**\n * Active SSE stream connection\n */\ninterface StreamConnection {\n id: string;\n controller: ReadableStreamDefaultController<Uint8Array>;\n unsubscribe: () => void;\n}\n\n/**\n * Arc Host - WebSocket server for real-time event sync\n */\nexport class ArcHost {\n private server!: Server<WebSocketData>;\n private connectionManager = new ConnectionManager();\n private contextHandler!: ContextHandler;\n private streamConnections = new Map<string, StreamConnection>();\n private jwtSecret: string;\n private port: number;\n private streamIdCounter = 0;\n\n constructor(private config: ArcHostConfig) {\n this.jwtSecret =\n config.jwtSecret ||\n process.env.JWT_SECRET ||\n \"arc-host-secret-change-in-production\";\n this.port = config.port || 5005;\n }\n\n /**\n * Start the host server\n */\n async start(): Promise<void> {\n // Initialize context handler\n const dbAdapter = this.config.dbAdapterFactory(this.config.context);\n this.contextHandler = new ContextHandler(this.config.context, dbAdapter);\n await this.contextHandler.init();\n\n this.setupServer();\n }\n\n /**\n * Verify JWT token\n * Supports both standard JWT (jsonwebtoken) and Arc's custom JWT format\n */\n private verifyToken(token: string): TokenPayload | null {\n try {\n // Try standard JWT first\n const decoded = jwt.verify(token, this.jwtSecret) as any;\n\n // Handle Arc's custom JWT format (tokenName -> tokenType)\n if (decoded.tokenName && !decoded.tokenType) {\n return {\n tokenType: decoded.tokenName,\n params: decoded.params || {},\n iat: decoded.iat,\n exp: decoded.exp,\n };\n }\n\n return decoded as TokenPayload;\n } catch {\n // Try Arc's custom JWT format (base64 encoded, custom signature)\n try {\n const parts = token.split(\".\");\n if (parts.length !== 3) return null;\n\n const payload = JSON.parse(atob(parts[1]));\n\n // TODO: Verify signature with context's token secret\n // For now, just decode and trust (signature verification should be added)\n\n return {\n tokenType: payload.tokenName,\n params: payload.params || {},\n iat: payload.iat,\n exp: payload.exp,\n };\n } catch {\n return null;\n }\n }\n }\n\n /**\n * Handle WebSocket message\n */\n private async handleMessage(\n ws: ServerWebSocket<WebSocketData>,\n message: ClientToHostMessage,\n ): Promise<void> {\n const client = this.connectionManager.getClientByWs(ws);\n if (!client) {\n this.sendError(ws, \"Client not found\");\n return;\n }\n\n switch (message.type) {\n case \"sync-events\":\n await this.handleSyncEvents(client.id, message, client.token);\n break;\n\n case \"request-sync\":\n await this.handleRequestSync(client.id, message, client.token);\n break;\n\n case \"execute-command\":\n await this.handleExecuteCommand(client.id, message, client.rawToken);\n break;\n\n default:\n this.sendError(ws, `Unknown message type: ${(message as any).type}`);\n }\n }\n\n /**\n * Handle sync-events message\n */\n private async handleSyncEvents(\n clientId: string,\n message: Extract<ClientToHostMessage, { type: \"sync-events\" }>,\n token: TokenPayload | null,\n ): Promise<void> {\n // Persist events\n const persistedEvents = await this.contextHandler.persistEvents(\n message.events,\n clientId,\n token,\n );\n\n if (persistedEvents.length === 0) {\n return;\n }\n\n // Broadcast to other authorized clients\n const clients = this.connectionManager.getAllClients();\n\n for (const client of clients) {\n if (client.id === clientId) continue;\n\n // Filter events for this client's token\n const authorizedEvents = filterEventsForToken(\n client.token,\n persistedEvents,\n this.contextHandler.getEventDefinitions(),\n );\n\n if (authorizedEvents.length > 0) {\n this.connectionManager.sendToClient(client.id, {\n type: \"events\",\n events: authorizedEvents,\n });\n }\n }\n\n // Update sender's last synced ID\n const lastEvent = persistedEvents[persistedEvents.length - 1];\n this.connectionManager.updateLastSyncedEventId(clientId, lastEvent.hostId);\n\n // Confirm sync to sender\n this.connectionManager.sendToClient(clientId, {\n type: \"sync-complete\",\n lastHostEventId: lastEvent.hostId,\n });\n }\n\n /**\n * Handle request-sync message (initial sync or catch-up)\n */\n private async handleRequestSync(\n clientId: string,\n message: Extract<ClientToHostMessage, { type: \"request-sync\" }>,\n token: TokenPayload | null,\n ): Promise<void> {\n const events = await this.contextHandler.getEventsSince(\n message.lastHostEventId,\n token,\n );\n\n this.connectionManager.sendToClient(clientId, {\n type: \"events\",\n events,\n });\n\n if (events.length > 0) {\n const lastEvent = events[events.length - 1];\n this.connectionManager.updateLastSyncedEventId(\n clientId,\n lastEvent.hostId,\n );\n\n this.connectionManager.sendToClient(clientId, {\n type: \"sync-complete\",\n lastHostEventId: lastEvent.hostId,\n });\n } else {\n this.connectionManager.sendToClient(clientId, {\n type: \"sync-complete\",\n lastHostEventId: message.lastHostEventId || \"\",\n });\n }\n }\n\n /**\n * Handle execute-command message\n */\n private async handleExecuteCommand(\n clientId: string,\n message: Extract<ClientToHostMessage, { type: \"execute-command\" }>,\n rawToken: string | null,\n ): Promise<void> {\n try {\n const result = await this.contextHandler.executeCommand(\n message.commandName,\n message.params,\n rawToken,\n );\n\n this.connectionManager.sendToClient(clientId, {\n type: \"command-result\",\n requestId: message.requestId,\n result,\n });\n } catch (error) {\n this.connectionManager.sendToClient(clientId, {\n type: \"command-result\",\n requestId: message.requestId,\n error: (error as Error).message,\n });\n }\n }\n\n /**\n * Send error to WebSocket\n */\n private sendError(ws: ServerWebSocket<WebSocketData>, message: string): void {\n ws.send(JSON.stringify({ type: \"error\", message } as HostToClientMessage));\n }\n\n /**\n * Setup Bun server\n */\n private setupServer(): void {\n const self = this;\n\n this.server = Bun.serve<WebSocketData>({\n port: this.port,\n idleTimeout: 255,\n\n fetch(req, server) {\n const url = new URL(req.url);\n\n // CORS headers\n const corsHeaders = {\n \"Access-Control-Allow-Origin\": \"*\",\n \"Access-Control-Allow-Methods\": \"GET, POST, OPTIONS\",\n \"Access-Control-Allow-Headers\": \"Content-Type, Authorization\",\n };\n\n // Handle preflight\n if (req.method === \"OPTIONS\") {\n return new Response(null, { headers: corsHeaders });\n }\n\n // Extract token\n const authHeader = req.headers.get(\"Authorization\");\n const token =\n authHeader?.replace(\"Bearer \", \"\") || url.searchParams.get(\"token\");\n\n // Verify token\n let tokenPayload: TokenPayload | null = null;\n if (token) {\n tokenPayload = self.verifyToken(token);\n }\n\n // WebSocket upgrade for /ws\n if (\n url.pathname === \"/ws\" &&\n req.headers.get(\"Upgrade\") === \"websocket\"\n ) {\n // Pass token to WebSocket data\n if (\n server.upgrade(req, {\n data: {\n clientId: \"\",\n token: tokenPayload,\n rawToken: token,\n },\n })\n ) {\n // Connection will be set up in websocket.open\n return undefined;\n }\n return new Response(\"WebSocket upgrade failed\", {\n status: 500,\n headers: corsHeaders,\n });\n }\n\n // Health check\n if (url.pathname === \"/health\") {\n return new Response(\n JSON.stringify({\n status: \"ok\",\n clients: self.connectionManager.clientCount,\n }),\n {\n headers: { ...corsHeaders, \"Content-Type\": \"application/json\" },\n },\n );\n }\n\n // HTTP command endpoint: POST /command/:commandName\n if (url.pathname.startsWith(\"/command/\") && req.method === \"POST\") {\n return self.handleHttpCommand(req, url, corsHeaders, token);\n }\n\n // HTTP query endpoint: POST /query/:viewName\n if (url.pathname.startsWith(\"/query/\") && req.method === \"POST\") {\n return self.handleHttpQuery(\n req,\n url,\n tokenPayload,\n corsHeaders,\n token,\n );\n }\n\n // SSE stream endpoint: GET /stream/:viewName\n if (url.pathname.startsWith(\"/stream/\") && req.method === \"GET\") {\n return self.handleHttpStream(\n req,\n url,\n tokenPayload,\n corsHeaders,\n token,\n );\n }\n\n // HTTP event sync endpoint: POST /sync/events\n if (url.pathname === \"/sync/events\" && req.method === \"POST\") {\n return self.handleHttpEventSync(req, tokenPayload, corsHeaders);\n }\n\n // Route endpoints: /route/*\n if (url.pathname.startsWith(\"/route/\")) {\n return self.handleHttpRoute(\n req,\n url,\n tokenPayload,\n corsHeaders,\n token,\n );\n }\n\n return new Response(\"Not Found\", { status: 404, headers: corsHeaders });\n },\n\n websocket: {\n open(ws) {\n // Get token from upgrade data\n const tokenPayload = ws.data?.token || null;\n const rawToken = ws.data?.rawToken || null;\n\n // Add client to connection manager\n const client = self.connectionManager.addClient(\n ws,\n tokenPayload,\n rawToken,\n );\n\n console.log(`Client connected: ${client.id}`);\n },\n\n message(ws, messageStr) {\n try {\n const message = JSON.parse(\n messageStr as string,\n ) as ClientToHostMessage;\n self.handleMessage(ws, message);\n } catch (error) {\n console.error(\"Failed to parse message:\", error);\n self.sendError(ws, \"Invalid message format\");\n }\n },\n\n close(ws) {\n const client = self.connectionManager.getClientByWs(ws);\n if (client) {\n console.log(`Client disconnected: ${client.id}`);\n self.connectionManager.removeClient(client.id);\n }\n },\n },\n });\n\n console.log(`✅ Arc Host running on http://localhost:${this.port}`);\n }\n\n /**\n * Handle HTTP command request\n * Supports both JSON and FormData (for file uploads)\n */\n private async handleHttpCommand(\n req: Request,\n url: URL,\n corsHeaders: Record<string, string>,\n rawToken: string | null,\n ): Promise<Response> {\n const commandName = url.pathname.split(\"/command/\")[1];\n if (!commandName) {\n return new Response(\"Invalid command path\", {\n status: 400,\n headers: corsHeaders,\n });\n }\n\n try {\n const params = await this.parseCommandParams(req);\n const result = await this.contextHandler.executeCommand(\n commandName,\n params,\n rawToken,\n );\n\n return new Response(JSON.stringify(result ?? { success: true }), {\n headers: { ...corsHeaders, \"Content-Type\": \"application/json\" },\n });\n } catch (error) {\n console.error(`[ARC HTTP] Command '${commandName}' error:`, error);\n if (error instanceof Error && error.stack) {\n console.error(`[ARC HTTP] Stack trace:`, error.stack);\n }\n return new Response(JSON.stringify({ error: (error as Error).message }), {\n status: 500,\n headers: { ...corsHeaders, \"Content-Type\": \"application/json\" },\n });\n }\n }\n\n /**\n * Parse command parameters from request body\n * Handles both JSON and FormData (multipart/form-data for file uploads)\n */\n private async parseCommandParams(req: Request): Promise<any> {\n const contentType = req.headers.get(\"Content-Type\") || \"\";\n\n if (contentType.includes(\"multipart/form-data\")) {\n // Parse FormData - files stay as File objects, other values are JSON-parsed\n const formData = await req.formData();\n const params: Record<string, any> = {};\n\n for (const [key, value] of formData.entries()) {\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"name\" in value &&\n \"size\" in value\n ) {\n // Keep File objects as-is\n params[key] = value;\n } else {\n // Try to parse as JSON (non-file values are JSON-stringified by client)\n try {\n params[key] = JSON.parse(value as string);\n } catch {\n // If not valid JSON, use as plain string\n params[key] = value;\n }\n }\n }\n\n return params;\n }\n\n // Default: parse as JSON\n return await req.json();\n }\n\n /**\n * Handle HTTP query request\n * Uses view.queryContext() to apply protections consistently with liveQuery\n */\n private async handleHttpQuery(\n req: Request,\n url: URL,\n _token: TokenPayload | null,\n corsHeaders: Record<string, string>,\n rawToken: string | null,\n ): Promise<Response> {\n const viewName = url.pathname.split(\"/query/\")[1];\n if (!viewName) {\n return new Response(\"Invalid query path\", {\n status: 400,\n headers: corsHeaders,\n });\n }\n\n try {\n const params = await req.json();\n\n // Get view element\n const viewElement = this.contextHandler\n .getModel()\n .context.get(viewName) as any;\n\n if (!viewElement || !viewElement.queryContext) {\n return new Response(JSON.stringify({ error: \"View not found\" }), {\n status: 404,\n headers: { ...corsHeaders, \"Content-Type\": \"application/json\" },\n });\n }\n\n // Set auth token so view.queryContext() can apply protections\n this.contextHandler.setAuthToken(rawToken);\n\n // Use view's queryContext which applies protections automatically\n const model = this.contextHandler.getModel();\n const adapters = model.getAdapters();\n const queryCtx = viewElement.queryContext(adapters);\n\n // Execute query through view's queryContext (protections applied)\n const result = await queryCtx.find(params);\n\n return new Response(JSON.stringify(result), {\n headers: { ...corsHeaders, \"Content-Type\": \"application/json\" },\n });\n } catch (error) {\n return new Response(JSON.stringify({ error: (error as Error).message }), {\n status: 500,\n headers: { ...corsHeaders, \"Content-Type\": \"application/json\" },\n });\n }\n }\n\n /**\n * Handle HTTP stream (SSE) request for live queries\n */\n private handleHttpStream(\n _req: Request,\n url: URL,\n token: TokenPayload | null,\n corsHeaders: Record<string, string>,\n rawToken: string | null,\n ): Response {\n const viewName = url.pathname.split(\"/stream/\")[1];\n if (!viewName) {\n return new Response(\"Invalid stream path\", {\n status: 400,\n headers: corsHeaders,\n });\n }\n\n // Parse query options from URL params\n const findOptions: any = {};\n const whereParam = url.searchParams.get(\"where\");\n if (whereParam) {\n try {\n findOptions.where = JSON.parse(whereParam);\n } catch {\n return new Response(\"Invalid 'where' parameter\", {\n status: 400,\n headers: corsHeaders,\n });\n }\n }\n\n const orderByParam = url.searchParams.get(\"orderBy\");\n if (orderByParam) {\n try {\n findOptions.orderBy = JSON.parse(orderByParam);\n } catch {\n return new Response(\"Invalid 'orderBy' parameter\", {\n status: 400,\n headers: corsHeaders,\n });\n }\n }\n\n const limitParam = url.searchParams.get(\"limit\");\n if (limitParam) {\n findOptions.limit = parseInt(limitParam, 10);\n }\n\n // Create SSE stream\n const streamId = `stream_${++this.streamIdCounter}_${Date.now()}`;\n const self = this;\n\n const stream = new ReadableStream<Uint8Array>({\n start(controller) {\n // Set up live query\n const model = self.contextHandler.getModel();\n\n // Set the token on the auth adapter so view protection is applied\n self.contextHandler.setAuthToken(rawToken);\n\n const { unsubscribe } = liveQuery(\n model,\n async (q: any) => {\n const view = q[viewName];\n if (!view) {\n throw new Error(`View '${viewName}' not found`);\n }\n return view.find(findOptions);\n },\n (data: any[]) => {\n // Send SSE event\n const event = `data: ${JSON.stringify({ type: \"data\", data })}\\n\\n`;\n try {\n controller.enqueue(new TextEncoder().encode(event));\n } catch {\n // Stream closed\n unsubscribe();\n }\n },\n );\n\n // Store connection for cleanup\n self.streamConnections.set(streamId, {\n id: streamId,\n controller,\n unsubscribe,\n });\n\n // Send initial connection event\n const connectEvent = `data: ${JSON.stringify({ type: \"connected\", streamId })}\\n\\n`;\n controller.enqueue(new TextEncoder().encode(connectEvent));\n },\n\n cancel() {\n // Clean up on client disconnect\n const conn = self.streamConnections.get(streamId);\n if (conn) {\n conn.unsubscribe();\n self.streamConnections.delete(streamId);\n }\n },\n });\n\n return new Response(stream, {\n headers: {\n ...corsHeaders,\n \"Content-Type\": \"text/event-stream\",\n \"Cache-Control\": \"no-cache\",\n Connection: \"keep-alive\",\n },\n });\n }\n\n /**\n * Handle HTTP event sync request\n */\n private async handleHttpEventSync(\n req: Request,\n token: TokenPayload | null,\n corsHeaders: Record<string, string>,\n ): Promise<Response> {\n try {\n const body = await req.json();\n const events = body.events || [];\n\n // Persist events via context handler\n const persistedEvents = await this.contextHandler.persistEvents(\n events.map((e: any) => ({\n localId: e.localId,\n type: e.type,\n payload: e.payload,\n createdAt: e.createdAt,\n })),\n \"http-sync\",\n token,\n );\n\n return new Response(\n JSON.stringify({\n success: true,\n syncedIds: persistedEvents.map((e) => e.localId),\n }),\n {\n headers: { ...corsHeaders, \"Content-Type\": \"application/json\" },\n },\n );\n } catch (error) {\n return new Response(\n JSON.stringify({\n success: false,\n error: (error as Error).message,\n }),\n {\n status: 500,\n headers: { ...corsHeaders, \"Content-Type\": \"application/json\" },\n },\n );\n }\n }\n\n /**\n * Handle HTTP route request\n * Matches path against registered routes and executes handler\n */\n private async handleHttpRoute(\n req: Request,\n url: URL,\n tokenPayload: TokenPayload | null,\n corsHeaders: Record<string, string>,\n rawToken: string | null,\n ): Promise<Response> {\n const method = req.method as \"GET\" | \"POST\" | \"PUT\" | \"DELETE\" | \"PATCH\";\n\n // Find matching route in context\n const context = this.contextHandler.getModel().context;\n let matchedRoute: ArcRouteAny | null = null;\n let routeParams: Record<string, string> = {};\n\n for (const element of context.elements) {\n // Check if element is a route (has matchesPath method)\n if (element && typeof (element as any).matchesPath === \"function\") {\n const route = element as ArcRouteAny;\n const match = route.matchesPath(url.pathname);\n if (match.matches) {\n matchedRoute = route;\n routeParams = match.params;\n break;\n }\n }\n }\n\n if (!matchedRoute) {\n return new Response(JSON.stringify({ error: \"Route not found\" }), {\n status: 404,\n headers: { ...corsHeaders, \"Content-Type\": \"application/json\" },\n });\n }\n\n // Get handler for this method\n const handler = matchedRoute.getHandler(method);\n if (!handler) {\n return new Response(\n JSON.stringify({ error: `Method ${method} not allowed` }),\n {\n status: 405,\n headers: { ...corsHeaders, \"Content-Type\": \"application/json\" },\n },\n );\n }\n\n // Check protection\n if (!matchedRoute.isPublic && matchedRoute.hasProtections) {\n if (!tokenPayload) {\n return new Response(JSON.stringify({ error: \"Unauthorized\" }), {\n status: 401,\n headers: { ...corsHeaders, \"Content-Type\": \"application/json\" },\n });\n }\n\n // Set auth token for protection check\n this.contextHandler.setAuthToken(rawToken);\n\n // Check if token type matches any protection\n let isAuthorized = false;\n for (const protection of matchedRoute.protections) {\n if (protection.token.name === tokenPayload.tokenType) {\n // Create a mock token instance for the check\n const mockTokenInstance = {\n params: tokenPayload.params,\n getTokenDefinition: () => protection.token,\n };\n const allowed = await protection.check(mockTokenInstance as any);\n if (allowed) {\n isAuthorized = true;\n break;\n }\n }\n }\n\n if (!isAuthorized) {\n return new Response(JSON.stringify({ error: \"Forbidden\" }), {\n status: 403,\n headers: { ...corsHeaders, \"Content-Type\": \"application/json\" },\n });\n }\n } else if (!matchedRoute.isPublic && !matchedRoute.hasProtections) {\n // Route is not public and has no protections - require any valid token\n if (!tokenPayload) {\n return new Response(JSON.stringify({ error: \"Unauthorized\" }), {\n status: 401,\n headers: { ...corsHeaders, \"Content-Type\": \"application/json\" },\n });\n }\n }\n\n // Build route context\n this.contextHandler.setAuthToken(rawToken);\n const model = this.contextHandler.getModel();\n const adapters = model.getAdapters();\n\n const authParams = tokenPayload\n ? { params: tokenPayload.params, tokenName: tokenPayload.tokenType }\n : undefined;\n\n const routeContext = matchedRoute.buildContext(adapters, authParams);\n\n try {\n // Execute handler\n const response = await handler(routeContext, req, routeParams, url);\n\n // Add CORS headers to response\n const newHeaders = new Headers(response.headers);\n for (const [key, value] of Object.entries(corsHeaders)) {\n newHeaders.set(key, value);\n }\n\n return new Response(response.body, {\n status: response.status,\n statusText: response.statusText,\n headers: newHeaders,\n });\n } catch (error) {\n return new Response(JSON.stringify({ error: (error as Error).message }), {\n status: 500,\n headers: { ...corsHeaders, \"Content-Type\": \"application/json\" },\n });\n }\n }\n\n /**\n * Stop the server\n */\n stop(): void {\n // Clean up all stream connections\n for (const conn of this.streamConnections.values()) {\n conn.unsubscribe();\n }\n this.streamConnections.clear();\n\n this.server?.stop();\n }\n}\n",
|
|
81
81
|
"import type { ServerWebSocket } from \"bun\";\nimport type {\n ConnectedClient,\n HostToClientMessage,\n TokenPayload,\n} from \"./types\";\n\n/**\n * Manages WebSocket connections for a host\n */\nexport class ConnectionManager {\n private clients = new Map<string, ConnectedClient>();\n private clientIdCounter = 0;\n\n /**\n * Add a new client connection\n */\n addClient(\n ws: ServerWebSocket<{ clientId: string }>,\n token: TokenPayload | null,\n rawToken: string | null,\n ): ConnectedClient {\n const clientId = `client_${++this.clientIdCounter}_${Date.now()}`;\n\n const client: ConnectedClient = {\n id: clientId,\n token,\n rawToken,\n lastHostEventId: null,\n ws,\n };\n\n this.clients.set(clientId, client);\n\n // Store clientId in WebSocket data for later lookup\n ws.data = { clientId };\n\n return client;\n }\n\n /**\n * Remove a client connection\n */\n removeClient(clientId: string): void {\n this.clients.delete(clientId);\n }\n\n /**\n * Get client by ID\n */\n getClient(clientId: string): ConnectedClient | undefined {\n return this.clients.get(clientId);\n }\n\n /**\n * Get client by WebSocket\n */\n getClientByWs(\n ws: ServerWebSocket<{ clientId: string }>,\n ): ConnectedClient | undefined {\n const clientId = ws.data?.clientId;\n if (!clientId) return undefined;\n return this.clients.get(clientId);\n }\n\n /**\n * Update client's last synced event ID\n */\n updateLastSyncedEventId(clientId: string, hostEventId: string): void {\n const client = this.clients.get(clientId);\n if (client) {\n client.lastHostEventId = hostEventId;\n }\n }\n\n /**\n * Get all connected clients\n */\n getAllClients(): ConnectedClient[] {\n return Array.from(this.clients.values());\n }\n\n /**\n * Send message to a specific client\n */\n sendToClient(clientId: string, message: HostToClientMessage): boolean {\n const client = this.clients.get(clientId);\n if (!client) return false;\n\n try {\n client.ws.send(JSON.stringify(message));\n return true;\n } catch (error) {\n console.error(`Failed to send message to client ${clientId}:`, error);\n return false;\n }\n }\n\n /**\n * Broadcast message to all clients\n */\n broadcast(message: HostToClientMessage, excludeClientId?: string): void {\n for (const client of this.clients.values()) {\n if (client.id === excludeClientId) continue;\n this.sendToClient(client.id, message);\n }\n }\n\n /**\n * Get total number of connected clients\n */\n get clientCount(): number {\n return this.clients.size;\n }\n}\n",
|
|
82
82
|
"import {\n type ArcContextAny,\n type ArcEventAny,\n AuthAdapter,\n type DatabaseAdapter,\n LocalEventPublisher,\n MasterDataStorage,\n Model,\n mutationExecutor,\n} from \"@arcote.tech/arc\";\nimport { canTokenEmitEvent, filterEventsForToken } from \"./event-auth\";\nimport type { SyncableEvent, TokenPayload } from \"./types\";\n\n/**\n * Handles a single context on the host\n */\nexport class ContextHandler {\n private model: Model<ArcContextAny>;\n private dataStorage: MasterDataStorage;\n private eventPublisher: LocalEventPublisher;\n private authAdapter: AuthAdapter;\n private eventDefinitions = new Map<string, ArcEventAny>();\n private hostEventIdCounter = 0;\n private initialized = false;\n\n constructor(\n public readonly context: ArcContextAny,\n dbAdapter: Promise<DatabaseAdapter>,\n ) {\n this.dataStorage = new MasterDataStorage(dbAdapter);\n this.eventPublisher = new LocalEventPublisher(this.dataStorage);\n this.authAdapter = new AuthAdapter();\n\n this.model = new Model(context, {\n adapters: {\n dataStorage: this.dataStorage,\n eventPublisher: this.eventPublisher,\n authAdapter: this.authAdapter,\n },\n environment: \"server\",\n });\n\n // Build event definitions map\n for (const element of context.elements) {\n if (\"tagFields\" in element && \"payload\" in element) {\n this.eventDefinitions.set(element.name, element as ArcEventAny);\n }\n }\n }\n\n /**\n * Initialize the context handler\n */\n async init(): Promise<void> {\n if (this.initialized) return;\n await this.model.init();\n this.initialized = true;\n }\n\n /**\n * Execute a command\n */\n async executeCommand(\n commandName: string,\n params: any,\n rawToken: string | null,\n ): Promise<any> {\n const mutations = mutationExecutor(this.model);\n const command = (mutations as any)[commandName];\n\n if (!command) {\n throw new Error(`Command '${commandName}' not found`);\n }\n\n // Set auth token on adapter so commands can access $auth.params\n // AuthAdapter decodes the JWT internally\n this.authAdapter.setToken(rawToken);\n\n // TODO: Check command protection with token\n\n try {\n return await command(params);\n } catch (error) {\n console.error(`[ARC] Command '${commandName}' failed:`);\n console.error(`[ARC] Params:`, JSON.stringify(params, null, 2));\n console.error(`[ARC] Error:`, error);\n if (error instanceof Error) {\n console.error(`[ARC] Stack:`, error.stack);\n }\n throw error;\n }\n }\n\n /**\n * Persist events from a client and return with host IDs\n */\n async persistEvents(\n events: Array<{\n localId: string;\n type: string;\n payload: any;\n createdAt: string;\n }>,\n clientId: string,\n token: TokenPayload | null,\n ): Promise<SyncableEvent[]> {\n const persistedEvents: SyncableEvent[] = [];\n\n for (const event of events) {\n // Get event definition\n const eventDef = this.eventDefinitions.get(event.type);\n if (!eventDef) {\n console.warn(`Unknown event type: ${event.type}`);\n continue;\n }\n\n // Check if token can emit this event\n if (!canTokenEmitEvent(token, eventDef, event.payload)) {\n console.warn(`Token not authorized to emit event: ${event.type}`);\n continue;\n }\n\n // Generate host ID\n const hostId = `host_${++this.hostEventIdCounter}_${Date.now()}`;\n\n const syncableEvent: SyncableEvent = {\n localId: event.localId,\n hostId,\n type: event.type,\n payload: event.payload,\n createdAt: event.createdAt,\n clientId,\n };\n\n // Persist to database via event publisher\n await this.eventPublisher.publish({\n id: hostId,\n type: event.type,\n payload: event.payload,\n createdAt: new Date(event.createdAt),\n });\n\n persistedEvents.push(syncableEvent);\n }\n\n return persistedEvents;\n }\n\n /**\n * Get events after a specific host ID, filtered by token\n */\n async getEventsSince(\n lastHostEventId: string | null,\n token: TokenPayload | null,\n ): Promise<SyncableEvent[]> {\n // Query events from database\n const eventsStore = this.dataStorage.getStore<any>(\"events\");\n const allEvents: any[] = await eventsStore.find({});\n\n let filteredEvents: any[];\n if (lastHostEventId) {\n // Extract timestamp from lastHostEventId (format: host_{counter}_{timestamp})\n const parts = lastHostEventId.split(\"_\");\n const lastTimestamp = parts.length >= 3 ? parseInt(parts[2], 10) : 0;\n\n // Filter events with timestamp > lastTimestamp\n filteredEvents = allEvents.filter((e) => {\n if (!e._id.startsWith(\"host_\")) return false;\n const eventParts = e._id.split(\"_\");\n const eventTimestamp =\n eventParts.length >= 3 ? parseInt(eventParts[2], 10) : 0;\n return eventTimestamp > lastTimestamp;\n });\n } else {\n // Return all host events\n filteredEvents = allEvents.filter((e) => e._id.startsWith(\"host_\"));\n }\n\n // Sort by timestamp to ensure correct order\n filteredEvents.sort((a, b) => {\n const aTimestamp = parseInt(a._id.split(\"_\")[2] || \"0\", 10);\n const bTimestamp = parseInt(b._id.split(\"_\")[2] || \"0\", 10);\n return aTimestamp - bTimestamp;\n });\n\n // Convert to SyncableEvent format\n const syncableEvents: SyncableEvent[] = filteredEvents.map((e) => ({\n localId: e._id,\n hostId: e._id,\n type: e.type,\n payload:\n typeof e.payload === \"string\" ? JSON.parse(e.payload) : e.payload,\n createdAt: e.createdAt,\n clientId: \"host\",\n }));\n\n // Filter by token authorization\n return filterEventsForToken(token, syncableEvents, this.eventDefinitions);\n }\n\n /**\n * Get the model for advanced operations\n */\n getModel(): Model<ArcContextAny> {\n return this.model;\n }\n\n /**\n * Get data storage for queries\n */\n getDataStorage(): MasterDataStorage {\n return this.dataStorage;\n }\n\n /**\n * Get event definitions map\n */\n getEventDefinitions(): Map<string, ArcEventAny> {\n return this.eventDefinitions;\n }\n\n /**\n * Set auth token on the adapter\n * Used to apply view protection for queries\n */\n setAuthToken(rawToken: string | null): void {\n this.authAdapter.setToken(rawToken);\n }\n}\n",
|
|
83
83
|
"import type { ArcEventAny } from \"@arcote.tech/arc\";\nimport type { SyncableEvent, TokenPayload } from \"./types\";\n\n/**\n * Check if a token can receive an event based on explicit protectBy rules\n *\n * Security model:\n * - Events WITHOUT protections: public, anyone can receive\n * - Events WITH protections: MUST have matching read rule for token\n */\nexport function canTokenReceiveEvent(\n token: TokenPayload | null,\n event: ArcEventAny,\n eventInstance: SyncableEvent,\n): boolean {\n // If event has no protections, it's public - allow everyone\n if (!event.hasProtections) {\n return true;\n }\n\n // Event has protections - require valid token\n if (!token) {\n return false;\n }\n\n // Check event protections for matching read rule\n for (const protection of event.protections) {\n // Check if this protection applies to the token type\n if (protection.token.name !== token.tokenType) {\n continue;\n }\n\n // Get protection rules for this token's params\n const rules = protection.protectionFn(token.params);\n\n // If read is explicitly false, deny access\n if (rules.read === false) {\n continue;\n }\n\n // Check read conditions against event payload\n if (rules.read) {\n const matches = checkConditionsMatch(rules.read, eventInstance.payload);\n if (matches) {\n return true;\n }\n }\n }\n\n // No matching protection rule found - deny access\n return false;\n}\n\n/**\n * Check if a token can emit an event\n */\nexport function canTokenEmitEvent(\n token: TokenPayload | null,\n event: ArcEventAny,\n payload: any,\n): boolean {\n // If no token, only allow unprotected events\n if (!token) {\n return !event.hasProtections;\n }\n\n // If event has no protections, allow all authenticated users\n if (!event.hasProtections) {\n return true;\n }\n\n // Check event protections\n for (const protection of event.protections) {\n // Check if this protection applies to the token type\n if (protection.token.name !== token.tokenType) {\n continue;\n }\n\n // Get protection rules for this token's params\n const rules = protection.protectionFn(token.params);\n\n // Check write rules against payload\n if (rules.write) {\n const matches = checkConditionsMatch(rules.write, payload);\n if (matches) {\n return true;\n }\n }\n }\n\n return false;\n}\n\n/**\n * Check if conditions match against data\n */\nfunction checkConditionsMatch(\n conditions: Record<string, any>,\n data: Record<string, any>,\n): boolean {\n for (const [key, expectedValue] of Object.entries(conditions)) {\n const actualValue = data[key];\n\n if (actualValue !== expectedValue) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Filter events that a token can receive\n */\nexport function filterEventsForToken(\n token: TokenPayload | null,\n events: SyncableEvent[],\n eventDefinitions: Map<string, ArcEventAny>,\n): SyncableEvent[] {\n return events.filter((eventInstance) => {\n const eventDef = eventDefinitions.get(eventInstance.type);\n if (!eventDef) {\n // Unknown event type, don't send\n return false;\n }\n return canTokenReceiveEvent(token, eventDef, eventInstance);\n });\n}\n",
|
|
84
84
|
"// Re-export everything from src\nexport * from \"./src\";\n\n// Helper function to start host\nimport type { ArcContextAny, DBAdapterFactory } from \"@arcote.tech/arc\";\nimport { ArcHost } from \"./src/arc-host\";\n\n/**\n * Start a host server for a context\n */\nexport function hostLiveModel<C extends ArcContextAny>(\n context: C,\n dbAdapterFactory: DBAdapterFactory,\n) {\n const host = new ArcHost({\n context,\n dbAdapterFactory,\n });\n host.start();\n return host;\n}\n"
|
|
85
85
|
],
|
|
86
|
-
"mappings": "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",
|
|
87
|
-
"debugId": "
|
|
86
|
+
"mappings": "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",
|
|
87
|
+
"debugId": "3D741A6ED14793D164756E2164756E21",
|
|
88
88
|
"names": []
|
|
89
89
|
}
|
package/dist/src/arc-host.d.ts
CHANGED
|
@@ -47,8 +47,14 @@ export declare class ArcHost {
|
|
|
47
47
|
private setupServer;
|
|
48
48
|
/**
|
|
49
49
|
* Handle HTTP command request
|
|
50
|
+
* Supports both JSON and FormData (for file uploads)
|
|
50
51
|
*/
|
|
51
52
|
private handleHttpCommand;
|
|
53
|
+
/**
|
|
54
|
+
* Parse command parameters from request body
|
|
55
|
+
* Handles both JSON and FormData (multipart/form-data for file uploads)
|
|
56
|
+
*/
|
|
57
|
+
private parseCommandParams;
|
|
52
58
|
/**
|
|
53
59
|
* Handle HTTP query request
|
|
54
60
|
* Uses view.queryContext() to apply protections consistently with liveQuery
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arc-host.d.ts","sourceRoot":"","sources":["../../src/arc-host.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,aAAa,EAId,MAAM,SAAS,CAAC;AAiBjB;;GAEG;AACH,qBAAa,OAAO;IASN,OAAO,CAAC,MAAM;IAR1B,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,iBAAiB,CAA2B;IACpD,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,iBAAiB,CAAuC;IAChE,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,eAAe,CAAK;gBAER,MAAM,EAAE,aAAa;IAQzC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B;;;OAGG;IACH,OAAO,CAAC,WAAW;IAuCnB;;OAEG;YACW,aAAa;IA4B3B;;OAEG;YACW,gBAAgB;IAgD9B;;OAEG;YACW,iBAAiB;IAkC/B;;OAEG;YACW,oBAAoB;IA0BlC;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;OAEG;IACH,OAAO,CAAC,WAAW;IA6JnB
|
|
1
|
+
{"version":3,"file":"arc-host.d.ts","sourceRoot":"","sources":["../../src/arc-host.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,aAAa,EAId,MAAM,SAAS,CAAC;AAiBjB;;GAEG;AACH,qBAAa,OAAO;IASN,OAAO,CAAC,MAAM;IAR1B,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,iBAAiB,CAA2B;IACpD,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,iBAAiB,CAAuC;IAChE,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,eAAe,CAAK;gBAER,MAAM,EAAE,aAAa;IAQzC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B;;;OAGG;IACH,OAAO,CAAC,WAAW;IAuCnB;;OAEG;YACW,aAAa;IA4B3B;;OAEG;YACW,gBAAgB;IAgD9B;;OAEG;YACW,iBAAiB;IAkC/B;;OAEG;YACW,oBAAoB;IA0BlC;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;OAEG;IACH,OAAO,CAAC,WAAW;IA6JnB;;;OAGG;YACW,iBAAiB;IAqC/B;;;OAGG;YACW,kBAAkB;IAmChC;;;OAGG;YACW,eAAe;IAoD7B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA+GxB;;OAEG;YACW,mBAAmB;IA4CjC;;;OAGG;YACW,eAAe;IA6H7B;;OAEG;IACH,IAAI,IAAI,IAAI;CASb"}
|
package/package.json
CHANGED
package/src/arc-host.ts
CHANGED
|
@@ -419,6 +419,7 @@ export class ArcHost {
|
|
|
419
419
|
|
|
420
420
|
/**
|
|
421
421
|
* Handle HTTP command request
|
|
422
|
+
* Supports both JSON and FormData (for file uploads)
|
|
422
423
|
*/
|
|
423
424
|
private async handleHttpCommand(
|
|
424
425
|
req: Request,
|
|
@@ -435,7 +436,7 @@ export class ArcHost {
|
|
|
435
436
|
}
|
|
436
437
|
|
|
437
438
|
try {
|
|
438
|
-
const params = await
|
|
439
|
+
const params = await this.parseCommandParams(req);
|
|
439
440
|
const result = await this.contextHandler.executeCommand(
|
|
440
441
|
commandName,
|
|
441
442
|
params,
|
|
@@ -457,6 +458,45 @@ export class ArcHost {
|
|
|
457
458
|
}
|
|
458
459
|
}
|
|
459
460
|
|
|
461
|
+
/**
|
|
462
|
+
* Parse command parameters from request body
|
|
463
|
+
* Handles both JSON and FormData (multipart/form-data for file uploads)
|
|
464
|
+
*/
|
|
465
|
+
private async parseCommandParams(req: Request): Promise<any> {
|
|
466
|
+
const contentType = req.headers.get("Content-Type") || "";
|
|
467
|
+
|
|
468
|
+
if (contentType.includes("multipart/form-data")) {
|
|
469
|
+
// Parse FormData - files stay as File objects, other values are JSON-parsed
|
|
470
|
+
const formData = await req.formData();
|
|
471
|
+
const params: Record<string, any> = {};
|
|
472
|
+
|
|
473
|
+
for (const [key, value] of formData.entries()) {
|
|
474
|
+
if (
|
|
475
|
+
typeof value === "object" &&
|
|
476
|
+
value !== null &&
|
|
477
|
+
"name" in value &&
|
|
478
|
+
"size" in value
|
|
479
|
+
) {
|
|
480
|
+
// Keep File objects as-is
|
|
481
|
+
params[key] = value;
|
|
482
|
+
} else {
|
|
483
|
+
// Try to parse as JSON (non-file values are JSON-stringified by client)
|
|
484
|
+
try {
|
|
485
|
+
params[key] = JSON.parse(value as string);
|
|
486
|
+
} catch {
|
|
487
|
+
// If not valid JSON, use as plain string
|
|
488
|
+
params[key] = value;
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
return params;
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
// Default: parse as JSON
|
|
497
|
+
return await req.json();
|
|
498
|
+
}
|
|
499
|
+
|
|
460
500
|
/**
|
|
461
501
|
* Handle HTTP query request
|
|
462
502
|
* Uses view.queryContext() to apply protections consistently with liveQuery
|