rdesign/frontend/node_modules/@ag-ui/encoder/dist/index.mjs.map

1 line
12 KiB
Plaintext

{"version":3,"file":"index.mjs","names":[],"sources":["../src/media-type.ts","../src/encoder.ts"],"sourcesContent":["/**\n * negotiator\n * Copyright(c) 2012 Isaac Z. Schlueter\n * Copyright(c) 2014 Federico Romero\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n// modified from https://github.com/jshttp/negotiator/blob/master/lib/mediaType.js\n\n/**\n * Module exports.\n * @public\n */\n\nexport function preferredMediaTypes(accept?: string, provided?: string[]): string[] {\n // RFC 2616 sec 14.2: no header = */*\n const accepts = parseAccept(accept === undefined ? \"*/*\" : accept || \"\");\n\n if (!provided) {\n // sorted list of all types\n return accepts\n .filter((spec): spec is MediaType => spec.q > 0)\n .sort((a, b) => {\n return b.q - a.q || b.i - a.i || 0;\n })\n .map(getFullType);\n }\n\n const priorities = provided.map(function getPriority(type: string, index: number) {\n return getMediaTypePriority(type, accepts, index);\n });\n\n // sorted list of accepted types\n return priorities\n .filter((spec): spec is Priority => spec.q > 0)\n .sort(compareSpecs)\n .map(function getType(priority: Priority) {\n return provided[priorities.indexOf(priority)];\n });\n}\n\n/**\n * Module variables.\n * @private\n */\n\nconst simpleMediaTypeRegExp = /^\\s*([^\\s\\/;]+)\\/([^;\\s]+)\\s*(?:;(.*))?$/;\n\n/**\n * Media type interface\n * @private\n */\ninterface MediaType {\n type: string;\n subtype: string;\n params: Record<string, string>;\n q: number;\n i: number;\n}\n\n/**\n * Priority interface\n * @private\n */\ninterface Priority {\n o: number;\n q: number;\n s: number;\n i?: number;\n}\n\n/**\n * Parse the Accept header.\n * @private\n */\nfunction parseAccept(accept: string): MediaType[] {\n const accepts = splitMediaTypes(accept);\n const result: MediaType[] = [];\n\n for (let i = 0, j = 0; i < accepts.length; i++) {\n const mediaType = parseMediaType(accepts[i].trim(), i);\n\n if (mediaType) {\n result[j++] = mediaType;\n }\n }\n\n return result;\n}\n\n/**\n * Parse a media type from the Accept header.\n * @private\n */\nfunction parseMediaType(str: string, i: number): MediaType | null {\n const match = simpleMediaTypeRegExp.exec(str);\n if (!match) return null;\n\n const params: Record<string, string> = Object.create(null);\n let q = 1;\n const subtype = match[2];\n const type = match[1];\n\n if (match[3]) {\n const kvps = splitParameters(match[3]).map(splitKeyValuePair);\n\n for (let j = 0; j < kvps.length; j++) {\n const pair = kvps[j];\n const key = pair[0].toLowerCase();\n const val = pair[1];\n\n // get the value, unwrapping quotes\n const value = val && val[0] === '\"' && val[val.length - 1] === '\"' ? val.slice(1, -1) : val;\n\n if (key === \"q\") {\n q = parseFloat(value);\n break;\n }\n\n // store parameter\n params[key] = value;\n }\n }\n\n return {\n type: type,\n subtype: subtype,\n params: params,\n q: q,\n i: i,\n };\n}\n\n/**\n * Get the priority of a media type.\n * @private\n */\nfunction getMediaTypePriority(type: string, accepted: MediaType[], index: number): Priority {\n const priority: Priority = { o: -1, q: 0, s: 0 };\n\n for (let i = 0; i < accepted.length; i++) {\n const spec = specify(type, accepted[i], index);\n\n if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {\n priority.o = spec.o;\n priority.q = spec.q;\n priority.s = spec.s;\n priority.i = spec.i;\n }\n }\n\n return priority;\n}\n\n/**\n * Get the specificity of the media type.\n * @private\n */\nfunction specify(type: string, spec: MediaType, index: number): Priority | null {\n const p = parseMediaType(type, 0);\n let s = 0;\n\n if (!p) {\n return null;\n }\n\n if (spec.type.toLowerCase() == p.type.toLowerCase()) {\n s |= 4;\n } else if (spec.type != \"*\") {\n return null;\n }\n\n if (spec.subtype.toLowerCase() == p.subtype.toLowerCase()) {\n s |= 2;\n } else if (spec.subtype != \"*\") {\n return null;\n }\n\n const keys = Object.keys(spec.params);\n if (keys.length > 0) {\n if (\n keys.every(function (k) {\n return (\n spec.params[k] == \"*\" ||\n (spec.params[k] || \"\").toLowerCase() == (p.params[k] || \"\").toLowerCase()\n );\n })\n ) {\n s |= 1;\n } else {\n return null;\n }\n }\n\n return {\n i: index,\n o: spec.i,\n q: spec.q,\n s: s,\n };\n}\n\n/**\n * Compare two specs.\n * @private\n */\nfunction compareSpecs(a: Priority, b: Priority): number {\n return b.q - a.q || b.s - a.s || (a.o || 0) - (b.o || 0) || (a.i || 0) - (b.i || 0) || 0;\n}\n\n/**\n * Get full type string.\n * @private\n */\nfunction getFullType(spec: MediaType): string {\n return spec.type + \"/\" + spec.subtype;\n}\n\n/**\n * Check if a spec has any quality.\n * @private\n */\nfunction isQuality(spec: Priority | MediaType): boolean {\n return spec.q > 0;\n}\n\n/**\n * Count the number of quotes in a string.\n * @private\n */\nfunction quoteCount(string: string): number {\n let count = 0;\n let index = 0;\n\n while ((index = string.indexOf('\"', index)) !== -1) {\n count++;\n index++;\n }\n\n return count;\n}\n\n/**\n * Split a key value pair.\n * @private\n */\nfunction splitKeyValuePair(str: string): [string, string] {\n const index = str.indexOf(\"=\");\n let key: string;\n let val: string = \"\";\n\n if (index === -1) {\n key = str;\n } else {\n key = str.slice(0, index);\n val = str.slice(index + 1);\n }\n\n return [key, val];\n}\n\n/**\n * Split an Accept header into media types.\n * @private\n */\nfunction splitMediaTypes(accept: string): string[] {\n const accepts = accept.split(\",\");\n const result: string[] = [accepts[0]];\n\n for (let i = 1, j = 0; i < accepts.length; i++) {\n if (quoteCount(result[j]) % 2 == 0) {\n result[++j] = accepts[i];\n } else {\n result[j] += \",\" + accepts[i];\n }\n }\n\n // trim result\n return result;\n}\n\n/**\n * Split a string of parameters.\n * @private\n */\nfunction splitParameters(str: string): string[] {\n const parameters = str.split(\";\");\n const result: string[] = [parameters[0]];\n\n for (let i = 1, j = 0; i < parameters.length; i++) {\n if (quoteCount(result[j]) % 2 == 0) {\n result[++j] = parameters[i];\n } else {\n result[j] += \";\" + parameters[i];\n }\n }\n\n // trim parameters\n for (let i = 0; i < result.length; i++) {\n result[i] = result[i].trim();\n }\n\n return result;\n}\n","import { BaseEvent } from \"@ag-ui/core\";\nimport * as proto from \"@ag-ui/proto\";\nimport { preferredMediaTypes } from \"./media-type\";\n\nexport interface EventEncoderParams {\n accept?: string;\n}\n\nexport class EventEncoder {\n private acceptsProtobuf: boolean;\n\n constructor(params?: EventEncoderParams) {\n this.acceptsProtobuf = params?.accept ? this.isProtobufAccepted(params.accept) : false;\n }\n\n getContentType(): string {\n if (this.acceptsProtobuf) {\n return proto.AGUI_MEDIA_TYPE;\n } else {\n return \"text/event-stream\";\n }\n }\n\n encode(event: BaseEvent): string {\n return this.encodeSSE(event);\n }\n\n encodeSSE(event: BaseEvent): string {\n return `data: ${JSON.stringify(event)}\\n\\n`;\n }\n\n encodeBinary(event: BaseEvent): Uint8Array {\n if (this.acceptsProtobuf) {\n return this.encodeProtobuf(event);\n } else {\n const sseString = this.encodeSSE(event);\n // Convert string to Uint8Array using TextEncoder\n const encoder = new TextEncoder();\n return encoder.encode(sseString);\n }\n }\n\n encodeProtobuf(event: BaseEvent): Uint8Array {\n const messageBytes = proto.encode(event);\n const length = messageBytes.length;\n\n // Create a buffer for 4 bytes (for the uint32 length) plus the message bytes\n const buffer = new ArrayBuffer(4 + length);\n const dataView = new DataView(buffer);\n\n // Write the length as a uint32\n // Set the third parameter to `false` for big-endian or `true` for little-endian\n dataView.setUint32(0, length, false);\n\n // Create a Uint8Array view and copy in the message bytes after the 4-byte header\n const result = new Uint8Array(buffer);\n result.set(messageBytes, 4);\n\n return result;\n }\n\n private isProtobufAccepted(acceptHeader: string): boolean {\n // Pass the Accept header and an array with your media type\n const preferred = preferredMediaTypes(acceptHeader, [proto.AGUI_MEDIA_TYPE]);\n\n // If the returned array includes your media type, it's acceptable\n return preferred.includes(proto.AGUI_MEDIA_TYPE);\n }\n}\n"],"mappings":"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"}