@ag-ui/encoder 0.0.58-canary.beta.0 → 0.0.58

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 CHANGED
@@ -56,7 +56,7 @@ function preferredMediaTypes(accept, provided) {
56
56
  * Module variables.
57
57
  * @private
58
58
  */
59
- const simpleMediaTypeRegExp = /^\s*([^\s\/;]+)\/([^;\s]+)\s*(?:;(.*))?$/;
59
+ const simpleMediaTypeRegExp = /^\s*([^\s/;]+)\/([^;\s]+)\s*(?:;(.*))?$/;
60
60
  /**
61
61
  * Parse the Accept header.
62
62
  * @private
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["proto"],"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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"}
1
+ {"version":3,"file":"index.js","names":["proto"],"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 * 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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"}
package/dist/index.mjs CHANGED
@@ -29,7 +29,7 @@ function preferredMediaTypes(accept, provided) {
29
29
  * Module variables.
30
30
  * @private
31
31
  */
32
- const simpleMediaTypeRegExp = /^\s*([^\s\/;]+)\/([^;\s]+)\s*(?:;(.*))?$/;
32
+ const simpleMediaTypeRegExp = /^\s*([^\s/;]+)\/([^;\s]+)\s*(?:;(.*))?$/;
33
33
  /**
34
34
  * Parse the Accept header.
35
35
  * @private
@@ -1 +1 @@
1
- {"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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"}
1
+ {"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 * 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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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ag-ui/encoder",
3
3
  "author": "Markus Ecker <markus.ecker@gmail.com>",
4
- "version": "0.0.58-canary.beta.0",
4
+ "version": "0.0.58",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
@@ -15,11 +15,12 @@
15
15
  "module": "./dist/index.mjs",
16
16
  "types": "./dist/index.d.ts",
17
17
  "dependencies": {
18
- "@ag-ui/core": "0.0.58-canary.beta.0",
19
- "@ag-ui/proto": "0.0.58-canary.beta.0"
18
+ "@ag-ui/proto": "0.0.58",
19
+ "@ag-ui/core": "0.0.58"
20
20
  },
21
21
  "devDependencies": {
22
22
  "@vitest/coverage-istanbul": "^4.0.18",
23
+ "eslint": "^9.37.0",
23
24
  "publint": "^0.3.12",
24
25
  "@arethetypeswrong/cli": "^0.17.4",
25
26
  "vitest": "^4.0.18",