@azure/web-pubsub-client-protobuf 1.0.0-alpha.20240827.1 → 1.0.0-alpha.20240911.2

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.
Files changed (57) hide show
  1. package/dist/{index.js → commonjs/generated/clientProto.js} +147 -3080
  2. package/dist/commonjs/index.d.ts +10 -0
  3. package/dist/commonjs/index.d.ts.map +1 -0
  4. package/dist/commonjs/index.js +22 -0
  5. package/dist/commonjs/index.js.map +1 -0
  6. package/dist/commonjs/logger.d.ts +5 -0
  7. package/dist/commonjs/logger.d.ts.map +1 -0
  8. package/dist/commonjs/logger.js +11 -0
  9. package/dist/commonjs/logger.js.map +1 -0
  10. package/dist/commonjs/package.json +3 -0
  11. package/dist/commonjs/tsdoc-metadata.json +11 -0
  12. package/dist/commonjs/webPubSubProtobufProtocol.d.ts +25 -0
  13. package/dist/commonjs/webPubSubProtobufProtocol.d.ts.map +1 -0
  14. package/dist/commonjs/webPubSubProtobufProtocol.js +37 -0
  15. package/dist/commonjs/webPubSubProtobufProtocol.js.map +1 -0
  16. package/dist/commonjs/webPubSubProtobufProtocolBase.d.ts +20 -0
  17. package/dist/commonjs/webPubSubProtobufProtocolBase.d.ts.map +1 -0
  18. package/dist/commonjs/webPubSubProtobufProtocolBase.js +191 -0
  19. package/dist/commonjs/webPubSubProtobufProtocolBase.js.map +1 -0
  20. package/dist/commonjs/webPubSubProtobufReliableProtocol.d.ts +25 -0
  21. package/dist/commonjs/webPubSubProtobufReliableProtocol.d.ts.map +1 -0
  22. package/dist/commonjs/webPubSubProtobufReliableProtocol.js +37 -0
  23. package/dist/commonjs/webPubSubProtobufReliableProtocol.js.map +1 -0
  24. package/dist/esm/generated/clientProto.d.ts +1644 -0
  25. package/dist/esm/index.d.ts +10 -0
  26. package/dist/esm/index.d.ts.map +1 -0
  27. package/{dist-esm/src → dist/esm}/index.js +2 -2
  28. package/dist/esm/index.js.map +1 -0
  29. package/dist/esm/logger.d.ts +5 -0
  30. package/dist/esm/logger.d.ts.map +1 -0
  31. package/dist/esm/package.json +3 -0
  32. package/dist/esm/webPubSubProtobufProtocol.d.ts +25 -0
  33. package/dist/esm/webPubSubProtobufProtocol.d.ts.map +1 -0
  34. package/{dist-esm/src → dist/esm}/webPubSubProtobufProtocol.js +1 -1
  35. package/dist/esm/webPubSubProtobufProtocol.js.map +1 -0
  36. package/dist/esm/webPubSubProtobufProtocolBase.d.ts +20 -0
  37. package/dist/esm/webPubSubProtobufProtocolBase.d.ts.map +1 -0
  38. package/{dist-esm/src → dist/esm}/webPubSubProtobufProtocolBase.js +1 -1
  39. package/dist/esm/webPubSubProtobufProtocolBase.js.map +1 -0
  40. package/dist/esm/webPubSubProtobufReliableProtocol.d.ts +25 -0
  41. package/dist/esm/webPubSubProtobufReliableProtocol.d.ts.map +1 -0
  42. package/{dist-esm/src → dist/esm}/webPubSubProtobufReliableProtocol.js +1 -1
  43. package/dist/esm/webPubSubProtobufReliableProtocol.js.map +1 -0
  44. package/package.json +54 -54
  45. package/dist/index.js.map +0 -1
  46. package/dist-esm/samples-dev/basicusage.js +0 -63
  47. package/dist-esm/samples-dev/basicusage.js.map +0 -1
  48. package/dist-esm/src/index.js.map +0 -1
  49. package/dist-esm/src/webPubSubProtobufProtocol.js.map +0 -1
  50. package/dist-esm/src/webPubSubProtobufProtocolBase.js.map +0 -1
  51. package/dist-esm/src/webPubSubProtobufReliableProtocol.js.map +0 -1
  52. package/dist-esm/test/client.spec.js +0 -294
  53. package/dist-esm/test/client.spec.js.map +0 -1
  54. /package/{dist-esm/src → dist/esm}/generated/clientProto.js +0 -0
  55. /package/{dist-esm/src → dist/esm}/logger.js +0 -0
  56. /package/{dist-esm/src → dist/esm}/logger.js.map +0 -0
  57. /package/{types → dist}/web-pubsub-client-protobuf.d.ts +0 -0
@@ -1,63 +0,0 @@
1
- // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT License.
3
- /**
4
- * @summary Basic usage of web-pubsub-client
5
- */
6
- import { WebPubSubClient, } from "@azure/web-pubsub-client";
7
- import { WebPubSubProtobufReliableProtocol } from "@azure/web-pubsub-client-protobuf";
8
- import { WebPubSubServiceClient } from "@azure/web-pubsub";
9
- require("dotenv").config();
10
- const hubName = "sample_chat";
11
- const groupName = "testGroup";
12
- const serviceClient = new WebPubSubServiceClient(process.env.WPS_CONNECTION_STRING, hubName);
13
- const fetchClientAccessUrl = async (_) => {
14
- return (await serviceClient.getClientAccessToken({
15
- roles: [`webpubsub.joinLeaveGroup.${groupName}`, `webpubsub.sendToGroup.${groupName}`],
16
- })).url;
17
- };
18
- async function main() {
19
- let client = new WebPubSubClient({
20
- getClientAccessUrl: fetchClientAccessUrl,
21
- }, { protocol: WebPubSubProtobufReliableProtocol() });
22
- client.on("connected", (e) => {
23
- console.log(`Connection ${e.connectionId} is connected.`);
24
- });
25
- client.on("disconnected", (e) => {
26
- console.log(`Connection disconnected: ${e.message}`);
27
- });
28
- client.on("server-message", (e) => {
29
- if (e.message.data instanceof ArrayBuffer) {
30
- console.log(`Received message ${Buffer.from(e.message.data).toString("base64")}`);
31
- }
32
- else {
33
- console.log(`Received message ${e.message.data}`);
34
- }
35
- });
36
- client.on("group-message", (e) => {
37
- if (e.message.data instanceof ArrayBuffer) {
38
- console.log(`Received message from ${e.message.group} ${Buffer.from(e.message.data).toString("base64")}`);
39
- }
40
- else {
41
- console.log(`Received message from ${e.message.group} ${e.message.data}`);
42
- }
43
- });
44
- await client.start();
45
- await client.joinGroup(groupName);
46
- await client.sendToGroup(groupName, "hello world", "text", {
47
- fireAndForget: true,
48
- });
49
- await client.sendToGroup(groupName, { a: 12, b: "hello" }, "json");
50
- await client.sendToGroup(groupName, "hello json", "json");
51
- var buf = Buffer.from("aGVsbG9w", "base64");
52
- await client.sendToGroup(groupName, buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength), "binary");
53
- await delay(1000);
54
- await client.stop();
55
- }
56
- main().catch((e) => {
57
- console.error("Sample encountered an error", e);
58
- process.exit(1);
59
- });
60
- function delay(ms) {
61
- return new Promise((resolve) => setTimeout(resolve, ms));
62
- }
63
- //# sourceMappingURL=basicusage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"basicusage.js","sourceRoot":"","sources":["../../samples-dev/basicusage.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * @summary Basic usage of web-pubsub-client\n */\n\nimport {\n WebPubSubClient,\n WebPubSubClientCredential,\n SendToGroupOptions,\n GetClientAccessUrlOptions,\n WebPubSubClientOptions,\n} from \"@azure/web-pubsub-client\";\nimport { WebPubSubProtobufReliableProtocol } from \"@azure/web-pubsub-client-protobuf\";\nimport { WebPubSubServiceClient } from \"@azure/web-pubsub\";\n\nrequire(\"dotenv\").config();\n\nconst hubName = \"sample_chat\";\nconst groupName = \"testGroup\";\nconst serviceClient = new WebPubSubServiceClient(process.env.WPS_CONNECTION_STRING!, hubName);\n\nconst fetchClientAccessUrl = async (_: GetClientAccessUrlOptions) => {\n return (\n await serviceClient.getClientAccessToken({\n roles: [`webpubsub.joinLeaveGroup.${groupName}`, `webpubsub.sendToGroup.${groupName}`],\n })\n ).url;\n};\n\nasync function main() {\n let client = new WebPubSubClient(\n {\n getClientAccessUrl: fetchClientAccessUrl,\n } as WebPubSubClientCredential,\n { protocol: WebPubSubProtobufReliableProtocol() } as WebPubSubClientOptions,\n );\n\n client.on(\"connected\", (e) => {\n console.log(`Connection ${e.connectionId} is connected.`);\n });\n\n client.on(\"disconnected\", (e) => {\n console.log(`Connection disconnected: ${e.message}`);\n });\n\n client.on(\"server-message\", (e) => {\n if (e.message.data instanceof ArrayBuffer) {\n console.log(`Received message ${Buffer.from(e.message.data).toString(\"base64\")}`);\n } else {\n console.log(`Received message ${e.message.data}`);\n }\n });\n\n client.on(\"group-message\", (e) => {\n if (e.message.data instanceof ArrayBuffer) {\n console.log(\n `Received message from ${e.message.group} ${Buffer.from(e.message.data).toString(\n \"base64\",\n )}`,\n );\n } else {\n console.log(`Received message from ${e.message.group} ${e.message.data}`);\n }\n });\n\n await client.start();\n\n await client.joinGroup(groupName);\n await client.sendToGroup(groupName, \"hello world\", \"text\", {\n fireAndForget: true,\n } as SendToGroupOptions);\n await client.sendToGroup(groupName, { a: 12, b: \"hello\" }, \"json\");\n await client.sendToGroup(groupName, \"hello json\", \"json\");\n var buf = Buffer.from(\"aGVsbG9w\", \"base64\");\n await client.sendToGroup(\n groupName,\n buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength),\n \"binary\",\n );\n await delay(1000);\n await client.stop();\n}\n\nmain().catch((e) => {\n console.error(\"Sample encountered an error\", e);\n process.exit(1);\n});\n\nfunction delay(ms: number) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,qCAAqC,EAAE,MAAM,qCAAqC,CAAC;AAE5F;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAA4B,EAAE;IACrE,OAAO,IAAI,6BAA6B,EAAE,CAAC;AAC7C,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,GAA4B,EAAE;IAC7E,OAAO,IAAI,qCAAqC,EAAE,CAAC;AACrD,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { WebPubSubClientProtocol } from \"@azure/web-pubsub-client\";\nimport { WebPubSubProtobufProtocolImpl } from \"./webPubSubProtobufProtocol\";\nimport { WebPubSubProtobufReliableProtocolImpl } from \"./webPubSubProtobufReliableProtocol\";\n\n/**\n * Return the \"protobuf.webpubsub.azure.v1\" protocol\n */\nexport const WebPubSubProtobufProtocol = (): WebPubSubClientProtocol => {\n return new WebPubSubProtobufProtocolImpl();\n};\n\n/**\n * Return the \"protobuf.reliable.webpubsub.azure.v1\" protocol\n */\nexport const WebPubSubProtobufReliableProtocol = (): WebPubSubClientProtocol => {\n return new WebPubSubProtobufReliableProtocolImpl();\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"webPubSubProtobufProtocol.js","sourceRoot":"","sources":["../../src/webPubSubProtobufProtocol.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAEhF;;GAEG;AACH,MAAM,OAAO,6BAA6B;IAA1C;QACE;;WAEG;QACa,0BAAqB,GAAG,KAAK,CAAC;QAE9C;;WAEG;QACa,SAAI,GAAG,6BAA6B,CAAC;IAiBvD,CAAC;IAfC;;;OAGG;IACI,aAAa,CAAC,KAAkB;QACrC,OAAO,6BAA6B,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC;IAED;;;OAGG;IACI,YAAY,CAAC,OAAyB;QAC3C,OAAO,6BAA6B,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC7D,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { WebPubSubMessage, WebPubSubClientProtocol } from \"@azure/web-pubsub-client\";\n\nimport { WebPubSubProtobufProtocolBase } from \"./webPubSubProtobufProtocolBase\";\n\n/**\n * The \"protobuf.reliable.webpubsub.azure.v1\" protocol\n */\nexport class WebPubSubProtobufProtocolImpl implements WebPubSubClientProtocol {\n /**\n * True if the protocol supports reliable features\n */\n public readonly isReliableSubProtocol = false;\n\n /**\n * The name of subprotocol. Name will be used in websocket subprotocol\n */\n public readonly name = \"protobuf.webpubsub.azure.v1\";\n\n /**\n * Creates WebPubSubMessage objects from the specified serialized representation.\n * @param input - The serialized representation\n */\n public parseMessages(input: ArrayBuffer): WebPubSubMessage | null {\n return WebPubSubProtobufProtocolBase.parseMessages(input);\n }\n\n /**\n * Write WebPubSubMessage to string\n * @param message - The message to be written\n */\n public writeMessage(message: WebPubSubMessage): ArrayBuffer {\n return WebPubSubProtobufProtocolBase.writeMessage(message);\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"webPubSubProtobufProtocolBase.js","sourceRoot":"","sources":["../../src/webPubSubProtobufProtocolBase.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n AckMessage,\n AckMessageError,\n ConnectedMessage,\n DisconnectedMessage,\n GroupDataMessage,\n ServerDataMessage,\n WebPubSubDataType,\n WebPubSubMessage,\n JSONTypes,\n} from \"@azure/web-pubsub-client\";\nimport {\n DownstreamMessage,\n IMessageData,\n IUpstreamMessage,\n MessageData,\n UpstreamMessage,\n google,\n} from \"./generated/clientProto\";\n\nimport Long from \"long\";\n\n/**\n * The \"protobuf.reliable.webpubsub.azure.v1\" protocol\n */\nexport class WebPubSubProtobufProtocolBase {\n /**\n * Creates WebPubSubMessage objects from the specified serialized representation.\n * @param input - The serialized representation\n */\n public static parseMessages(input: ArrayBuffer): WebPubSubMessage | null {\n const downstream = DownstreamMessage.decode(new Uint8Array(input));\n if (downstream.ackMessage) {\n const ack = {\n kind: \"ack\",\n ackId: this._getNumber(downstream.ackMessage.ackId),\n success: downstream.ackMessage.success,\n } as AckMessage;\n if (downstream.ackMessage.error) {\n ack.error = {\n name: downstream.ackMessage.error.name,\n message: downstream.ackMessage.error.message,\n } as AckMessageError;\n }\n return ack;\n } else if (downstream.systemMessage) {\n if (downstream.systemMessage.connectedMessage) {\n const msg = downstream.systemMessage.connectedMessage;\n return {\n kind: \"connected\",\n connectionId: msg.connectionId,\n userId: msg.userId,\n reconnectionToken: msg.reconnectionToken,\n } as ConnectedMessage;\n } else if (downstream.systemMessage.disconnectedMessage) {\n const msg = downstream.systemMessage.disconnectedMessage;\n return { kind: \"disconnected\", message: msg.reason } as DisconnectedMessage;\n } else {\n return null;\n }\n } else if (downstream.dataMessage) {\n const sequenceId = this._getNumber(downstream.dataMessage.sequenceId);\n const messageData = downstream.dataMessage.data!;\n let dataType: WebPubSubDataType;\n let data: string | ArrayBuffer | object;\n if (messageData.textData) {\n dataType = \"text\";\n data = messageData.textData;\n } else if (messageData.jsonData) {\n dataType = \"json\";\n data = JSON.parse(messageData.jsonData);\n } else if (messageData.binaryData) {\n dataType = \"binary\";\n data = messageData.binaryData.buffer.slice(\n messageData.binaryData.byteOffset,\n messageData.binaryData.byteLength + messageData.binaryData.byteOffset,\n );\n } else if (messageData.protobufData) {\n dataType = \"protobuf\";\n data = messageData.protobufData;\n } else {\n return null;\n }\n\n if (downstream.dataMessage.from === \"group\") {\n return {\n kind: \"groupData\",\n dataType: dataType,\n data: data,\n sequenceId: sequenceId,\n group: downstream.dataMessage.group,\n } as GroupDataMessage;\n } else if (downstream.dataMessage.from === \"server\") {\n return {\n kind: \"serverData\",\n dataType: dataType,\n data: data,\n sequenceId: sequenceId,\n } as ServerDataMessage;\n } else {\n return null;\n }\n } else {\n return null;\n }\n }\n\n /**\n * Write WebPubSubMessage to string\n * @param message - The message to be written\n */\n public static writeMessage(message: WebPubSubMessage): ArrayBuffer {\n let upstream: UpstreamMessage;\n switch (message.kind) {\n case \"joinGroup\": {\n const joinGroup = UpstreamMessage.JoinGroupMessage.create({\n group: message.group,\n ackId: message.ackId,\n } as UpstreamMessage.IJoinGroupMessage);\n upstream = UpstreamMessage.create({ joinGroupMessage: joinGroup } as IUpstreamMessage);\n break;\n }\n case \"leaveGroup\": {\n const leaveGroup = UpstreamMessage.LeaveGroupMessage.create({\n group: message.group,\n ackId: message.ackId,\n } as UpstreamMessage.ILeaveGroupMessage);\n upstream = UpstreamMessage.create({ leaveGroupMessage: leaveGroup } as IUpstreamMessage);\n break;\n }\n case \"sendToGroup\": {\n const sendToGroup = UpstreamMessage.SendToGroupMessage.create({\n group: message.group,\n ackId: message.ackId,\n data: this._getIMessageData(message.data, message.dataType),\n noEcho: message.noEcho,\n } as UpstreamMessage.ISendToGroupMessage);\n upstream = UpstreamMessage.create({ sendToGroupMessage: sendToGroup } as IUpstreamMessage);\n break;\n }\n case \"sendEvent\": {\n const sendEvent = UpstreamMessage.EventMessage.create({\n event: message.event,\n ackId: message.ackId,\n data: this._getIMessageData(message.data, message.dataType),\n } as UpstreamMessage.IEventMessage);\n upstream = UpstreamMessage.create({ eventMessage: sendEvent } as IUpstreamMessage);\n break;\n }\n case \"sequenceAck\": {\n const sequenceAck = UpstreamMessage.SequenceAckMessage.create({\n sequenceId: message.sequenceId,\n } as UpstreamMessage.ISequenceAckMessage);\n upstream = UpstreamMessage.create({ sequenceAckMessage: sequenceAck } as IUpstreamMessage);\n break;\n }\n default:\n throw new TypeError(`kind is not supported: ${message.kind}`);\n }\n\n return UpstreamMessage.encode(upstream).finish();\n }\n\n private static _getIMessageData(\n data: JSONTypes | ArrayBuffer,\n dataType: WebPubSubDataType,\n ): IMessageData {\n switch (dataType) {\n case \"binary\":\n if (!(data instanceof ArrayBuffer)) {\n throw new TypeError(\"Message must be a ArrayBuffer.\");\n }\n return MessageData.create({ binaryData: new Uint8Array(data) } as IMessageData);\n case \"protobuf\":\n if (WebPubSubProtobufProtocolBase._isIAny(data)) {\n return MessageData.create({\n protobufData: google.protobuf.Any.create({\n type_url: data.type_url!,\n value: new Uint8Array(data.value!),\n } as google.protobuf.IAny),\n } as IMessageData);\n }\n throw new TypeError(\"Message must be a google.protobuf.Any.\");\n case \"text\":\n if (typeof data !== \"string\") {\n throw new TypeError(\"Message must be a string.\");\n }\n return MessageData.create({ textData: data } as IMessageData);\n case \"json\":\n return MessageData.create({ jsonData: JSON.stringify(data) } as IMessageData);\n default:\n throw new TypeError(`dataType is not supported: ${dataType}`);\n }\n }\n\n private static _getNumber(value: number | Long | null | undefined): number | null | undefined {\n if (value === null || value === undefined || typeof value === \"number\") {\n return value;\n }\n return value.toNumber();\n }\n\n private static _isIAny(obj: any): obj is google.protobuf.IAny {\n return \"type_url\" in obj && \"value\" in obj;\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"webPubSubProtobufReliableProtocol.js","sourceRoot":"","sources":["../../src/webPubSubProtobufReliableProtocol.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAEhF;;GAEG;AACH,MAAM,OAAO,qCAAqC;IAAlD;QACE;;WAEG;QACa,0BAAqB,GAAG,IAAI,CAAC;QAE7C;;WAEG;QACa,SAAI,GAAG,sCAAsC,CAAC;IAiBhE,CAAC;IAfC;;;OAGG;IACI,aAAa,CAAC,KAAkB;QACrC,OAAO,6BAA6B,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC;IAED;;;OAGG;IACI,YAAY,CAAC,OAAyB;QAC3C,OAAO,6BAA6B,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC7D,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { WebPubSubMessage, WebPubSubClientProtocol } from \"@azure/web-pubsub-client\";\n\nimport { WebPubSubProtobufProtocolBase } from \"./webPubSubProtobufProtocolBase\";\n\n/**\n * The \"protobuf.reliable.webpubsub.azure.v1\" protocol\n */\nexport class WebPubSubProtobufReliableProtocolImpl implements WebPubSubClientProtocol {\n /**\n * True if the protocol supports reliable features\n */\n public readonly isReliableSubProtocol = true;\n\n /**\n * The name of subprotocol. Name will be used in websocket subprotocol\n */\n public readonly name = \"protobuf.reliable.webpubsub.azure.v1\";\n\n /**\n * Creates WebPubSubMessage objects from the specified serialized representation.\n * @param input - The serialized representation\n */\n public parseMessages(input: ArrayBuffer): WebPubSubMessage | null {\n return WebPubSubProtobufProtocolBase.parseMessages(input);\n }\n\n /**\n * Write WebPubSubMessage to string\n * @param message - The message to be written\n */\n public writeMessage(message: WebPubSubMessage): ArrayBuffer {\n return WebPubSubProtobufProtocolBase.writeMessage(message);\n }\n}\n"]}
@@ -1,294 +0,0 @@
1
- // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT License.
3
- import { WebPubSubProtobufProtocol } from "../src/index";
4
- import { assert } from "chai";
5
- describe("WebPubSubClient", function () {
6
- const protocol = WebPubSubProtobufProtocol();
7
- describe("WriteMessage upstream messages", () => {
8
- const tests = [
9
- {
10
- testName: "JoinGroup1",
11
- message: { kind: "joinGroup", group: "group" },
12
- payload: "MgcKBWdyb3Vw",
13
- },
14
- {
15
- testName: "JoinGroup2",
16
- message: { kind: "joinGroup", group: "group", ackId: 44133 },
17
- payload: "MgsKBWdyb3VwEOXYAg==",
18
- },
19
- {
20
- testName: "leaveGroup1",
21
- message: { kind: "leaveGroup", group: "group" },
22
- payload: "OgcKBWdyb3Vw",
23
- },
24
- {
25
- testName: "leaveGroup2",
26
- message: { kind: "leaveGroup", group: "group", ackId: 12345 },
27
- payload: "OgoKBWdyb3VwELlg",
28
- },
29
- {
30
- testName: "sendToGroup1",
31
- message: {
32
- kind: "sendToGroup",
33
- group: "group",
34
- data: "xzy",
35
- dataType: "text",
36
- },
37
- payload: "Cg4KBWdyb3VwGgUKA3h6eQ==",
38
- },
39
- {
40
- testName: "sendToGroup2",
41
- message: {
42
- kind: "sendToGroup",
43
- group: "group",
44
- data: { value: "xzy" },
45
- dataType: "json",
46
- ackId: 12345,
47
- noEcho: true,
48
- },
49
- payload: "Ch8KBWdyb3VwELlgGhEiD3sidmFsdWUiOiJ4enkifSAB",
50
- },
51
- {
52
- testName: "sendToGroup3",
53
- message: {
54
- kind: "sendToGroup",
55
- group: "group",
56
- data: new TextEncoder().encode("xyz").buffer,
57
- dataType: "binary",
58
- ackId: 12345,
59
- noEcho: true,
60
- },
61
- payload: "ChMKBWdyb3VwELlgGgUSA3h5eiAB",
62
- },
63
- {
64
- testName: "sendToGroup4",
65
- message: {
66
- kind: "sendToGroup",
67
- group: "group",
68
- data: { type_url: "example", value: new TextEncoder().encode("xyz").buffer },
69
- dataType: "protobuf",
70
- ackId: 12345,
71
- noEcho: true,
72
- },
73
- payload: "Ch4KBWdyb3VwELlgGhAaDgoHZXhhbXBsZRIDeHl6IAE=",
74
- },
75
- {
76
- testName: "sendEvent1",
77
- message: {
78
- kind: "sendEvent",
79
- event: "event",
80
- data: "xzy",
81
- dataType: "text",
82
- },
83
- payload: "Kg4KBWV2ZW50EgUKA3h6eQ==",
84
- },
85
- {
86
- testName: "sendEvent2",
87
- message: {
88
- kind: "sendEvent",
89
- event: "event",
90
- data: { value: "xzy" },
91
- dataType: "json",
92
- ackId: 12345,
93
- },
94
- payload: "Kh0KBWV2ZW50EhEiD3sidmFsdWUiOiJ4enkifRi5YA==",
95
- },
96
- {
97
- testName: "sendEvent3",
98
- message: {
99
- kind: "sendEvent",
100
- event: "event",
101
- data: new TextEncoder().encode("xyz").buffer,
102
- dataType: "binary",
103
- ackId: 12345,
104
- },
105
- payload: "KhEKBWV2ZW50EgUSA3h5ehi5YA==",
106
- },
107
- {
108
- testName: "sendEvent4",
109
- message: {
110
- kind: "sendEvent",
111
- event: "event",
112
- data: { type_url: "example", value: new TextEncoder().encode("xyz").buffer },
113
- dataType: "protobuf",
114
- ackId: 12345,
115
- },
116
- payload: "KhwKBWV2ZW50EhAaDgoHZXhhbXBsZRIDeHl6GLlg",
117
- },
118
- {
119
- testName: "seqAck1",
120
- message: { kind: "sequenceAck", sequenceId: 123456 },
121
- payload: "QgQIwMQH",
122
- },
123
- ];
124
- tests.forEach(({ testName, message, payload }) => {
125
- it(`write message test ${testName}`, () => {
126
- const writeMessage = protocol.writeMessage(message);
127
- assert.equal(arrayBufferToBase64(writeMessage), payload);
128
- });
129
- });
130
- function arrayBufferToBase64(buffer) {
131
- return Buffer.from(buffer).toString("base64");
132
- }
133
- });
134
- describe("Parse downstream messages", () => {
135
- const tests = [
136
- {
137
- testName: "ack1",
138
- message: "CgQIexAB",
139
- assertFunc: (msg) => {
140
- assert.equal(msg.kind, "ack");
141
- msg = msg;
142
- assert.equal(msg.ackId, 123);
143
- assert.equal(msg.success, true);
144
- assert.isUndefined(msg.error);
145
- },
146
- },
147
- {
148
- testName: "ack2",
149
- message: "ChoIexAAGhQKCUZvcmJpZGRlbhIHbWVzc2FnZQ==",
150
- assertFunc: (msg) => {
151
- assert.equal(msg.kind, "ack");
152
- msg = msg;
153
- assert.equal(msg.ackId, 123);
154
- assert.equal(msg.success, false);
155
- assert.equal(msg.error.name, "Forbidden");
156
- assert.equal(msg.error.message, "message");
157
- },
158
- },
159
- {
160
- testName: "group1",
161
- message: "EhwKBWdyb3VwEglncm91cE5hbWUaBQoDeHl6ILlg",
162
- assertFunc: (msg) => {
163
- assert.equal(msg.kind, "groupData");
164
- msg = msg;
165
- assert.equal(msg.group, "groupName");
166
- assert.equal(msg.sequenceId, 12345);
167
- assert.equal(msg.dataType, "text");
168
- assert.equal(msg.data, "xyz");
169
- },
170
- },
171
- {
172
- testName: "group2",
173
- message: "EiUKBWdyb3VwEglncm91cE5hbWUaESIPeyJ2YWx1ZSI6Inh5eiJ9",
174
- assertFunc: (msg) => {
175
- assert.equal(msg.kind, "groupData");
176
- msg = msg;
177
- assert.equal(msg.group, "groupName");
178
- assert.isNull(msg.sequenceId);
179
- assert.equal(msg.dataType, "json");
180
- assert.deepEqual(msg.data, { value: "xyz" });
181
- },
182
- },
183
- {
184
- testName: "group3",
185
- message: "EhkKBWdyb3VwEglncm91cE5hbWUaBRIDeHl6",
186
- assertFunc: (msg) => {
187
- assert.equal(msg.kind, "groupData");
188
- msg = msg;
189
- assert.equal(msg.group, "groupName");
190
- assert.isNull(msg.sequenceId);
191
- assert.equal(msg.dataType, "binary");
192
- assert.equal(new TextDecoder().decode(msg.data), "xyz");
193
- },
194
- },
195
- {
196
- testName: "group4",
197
- message: "EiQKBWdyb3VwEglncm91cE5hbWUaEBoOCgdleGFtcGxlEgN4eXo=",
198
- assertFunc: (msg) => {
199
- assert.equal(msg.kind, "groupData");
200
- msg = msg;
201
- assert.equal(msg.group, "groupName");
202
- assert.isNull(msg.sequenceId);
203
- assert.equal(msg.dataType, "protobuf");
204
- assert.equal(msg.data.type_url, "example");
205
- assert.equal(new TextDecoder().decode(msg.data.value), "xyz");
206
- },
207
- },
208
- {
209
- testName: "event1",
210
- message: "EhIKBnNlcnZlchoFCgN4eXoguWA=",
211
- assertFunc: (msg) => {
212
- assert.equal(msg.kind, "serverData");
213
- msg = msg;
214
- assert.equal(msg.sequenceId, 12345);
215
- assert.equal(msg.dataType, "text");
216
- assert.equal(msg.data, "xyz");
217
- },
218
- },
219
- {
220
- testName: "event2",
221
- message: "EhsKBnNlcnZlchoRIg97InZhbHVlIjoieHl6In0=",
222
- assertFunc: (msg) => {
223
- assert.equal(msg.kind, "serverData");
224
- msg = msg;
225
- assert.isNull(msg.sequenceId);
226
- assert.equal(msg.dataType, "json");
227
- assert.deepEqual(msg.data, { value: "xyz" });
228
- },
229
- },
230
- {
231
- testName: "event3",
232
- message: "Eg8KBnNlcnZlchoFEgN4eXo=",
233
- assertFunc: (msg) => {
234
- assert.equal(msg.kind, "serverData");
235
- msg = msg;
236
- assert.isNull(msg.sequenceId);
237
- assert.equal(msg.dataType, "binary");
238
- assert.equal(new TextDecoder().decode(msg.data), "xyz");
239
- },
240
- },
241
- {
242
- testName: "event4",
243
- message: "EhoKBnNlcnZlchoQGg4KB2V4YW1wbGUSA3h5eg==",
244
- assertFunc: (msg) => {
245
- assert.equal(msg.kind, "serverData");
246
- msg = msg;
247
- assert.isNull(msg.sequenceId);
248
- assert.equal(msg.dataType, "protobuf");
249
- assert.equal(msg.data.type_url, "example");
250
- assert.equal(new TextDecoder().decode(msg.data.value), "xyz");
251
- },
252
- },
253
- {
254
- testName: "system1",
255
- message: "GhQKEgoKY29ubmVjdGlvbhIEdXNlcg==",
256
- assertFunc: (msg) => {
257
- assert.equal(msg.kind, "connected");
258
- msg = msg;
259
- assert.equal(msg.userId, "user");
260
- assert.equal(msg.connectionId, "connection");
261
- assert.isEmpty(msg.reconnectionToken);
262
- },
263
- },
264
- {
265
- testName: "system2",
266
- message: "GhkKFwoKY29ubmVjdGlvbhIEdXNlchoDcmVj",
267
- assertFunc: (msg) => {
268
- assert.equal(msg.kind, "connected");
269
- msg = msg;
270
- assert.equal(msg.userId, "user");
271
- assert.equal(msg.connectionId, "connection");
272
- assert.equal(msg.reconnectionToken, "rec");
273
- },
274
- },
275
- {
276
- testName: "system3",
277
- message: "GgcSBRIDbXNn",
278
- assertFunc: (msg) => {
279
- assert.equal(msg.kind, "disconnected");
280
- msg = msg;
281
- assert.equal(msg.message, "msg");
282
- },
283
- },
284
- ];
285
- tests.forEach(({ testName, message, assertFunc }) => {
286
- it(`parse message test ${testName}`, () => {
287
- const buffer = Buffer.from(message, "base64");
288
- const parsedMsg = protocol.parseMessages(buffer);
289
- assertFunc(parsedMsg);
290
- });
291
- });
292
- });
293
- });
294
- //# sourceMappingURL=client.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.spec.js","sourceRoot":"","sources":["../../test/client.spec.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n AckMessage,\n ConnectedMessage,\n DisconnectedMessage,\n GroupDataMessage,\n JoinGroupMessage,\n LeaveGroupMessage,\n SendEventMessage,\n SendToGroupMessage,\n SequenceAckMessage,\n ServerDataMessage,\n WebPubSubMessage,\n} from \"@azure/web-pubsub-client\";\nimport { WebPubSubProtobufProtocol } from \"../src/index\";\nimport { assert } from \"chai\";\n\ndescribe(\"WebPubSubClient\", function () {\n const protocol = WebPubSubProtobufProtocol();\n\n describe(\"WriteMessage upstream messages\", () => {\n const tests = [\n {\n testName: \"JoinGroup1\",\n message: { kind: \"joinGroup\", group: \"group\" } as JoinGroupMessage,\n payload: \"MgcKBWdyb3Vw\",\n },\n {\n testName: \"JoinGroup2\",\n message: { kind: \"joinGroup\", group: \"group\", ackId: 44133 } as JoinGroupMessage,\n payload: \"MgsKBWdyb3VwEOXYAg==\",\n },\n {\n testName: \"leaveGroup1\",\n message: { kind: \"leaveGroup\", group: \"group\" } as LeaveGroupMessage,\n payload: \"OgcKBWdyb3Vw\",\n },\n {\n testName: \"leaveGroup2\",\n message: { kind: \"leaveGroup\", group: \"group\", ackId: 12345 } as LeaveGroupMessage,\n payload: \"OgoKBWdyb3VwELlg\",\n },\n {\n testName: \"sendToGroup1\",\n message: {\n kind: \"sendToGroup\",\n group: \"group\",\n data: \"xzy\",\n dataType: \"text\",\n } as SendToGroupMessage,\n payload: \"Cg4KBWdyb3VwGgUKA3h6eQ==\",\n },\n {\n testName: \"sendToGroup2\",\n message: {\n kind: \"sendToGroup\",\n group: \"group\",\n data: { value: \"xzy\" },\n dataType: \"json\",\n ackId: 12345,\n noEcho: true,\n } as SendToGroupMessage,\n payload: \"Ch8KBWdyb3VwELlgGhEiD3sidmFsdWUiOiJ4enkifSAB\",\n },\n {\n testName: \"sendToGroup3\",\n message: {\n kind: \"sendToGroup\",\n group: \"group\",\n data: new TextEncoder().encode(\"xyz\").buffer,\n dataType: \"binary\",\n ackId: 12345,\n noEcho: true,\n } as SendToGroupMessage,\n payload: \"ChMKBWdyb3VwELlgGgUSA3h5eiAB\",\n },\n {\n testName: \"sendToGroup4\",\n message: {\n kind: \"sendToGroup\",\n group: \"group\",\n data: { type_url: \"example\", value: new TextEncoder().encode(\"xyz\").buffer },\n dataType: \"protobuf\",\n ackId: 12345,\n noEcho: true,\n } as SendToGroupMessage,\n payload: \"Ch4KBWdyb3VwELlgGhAaDgoHZXhhbXBsZRIDeHl6IAE=\",\n },\n {\n testName: \"sendEvent1\",\n message: {\n kind: \"sendEvent\",\n event: \"event\",\n data: \"xzy\",\n dataType: \"text\",\n } as SendEventMessage,\n payload: \"Kg4KBWV2ZW50EgUKA3h6eQ==\",\n },\n {\n testName: \"sendEvent2\",\n message: {\n kind: \"sendEvent\",\n event: \"event\",\n data: { value: \"xzy\" },\n dataType: \"json\",\n ackId: 12345,\n } as SendEventMessage,\n payload: \"Kh0KBWV2ZW50EhEiD3sidmFsdWUiOiJ4enkifRi5YA==\",\n },\n {\n testName: \"sendEvent3\",\n message: {\n kind: \"sendEvent\",\n event: \"event\",\n data: new TextEncoder().encode(\"xyz\").buffer,\n dataType: \"binary\",\n ackId: 12345,\n } as SendEventMessage,\n payload: \"KhEKBWV2ZW50EgUSA3h5ehi5YA==\",\n },\n {\n testName: \"sendEvent4\",\n message: {\n kind: \"sendEvent\",\n event: \"event\",\n data: { type_url: \"example\", value: new TextEncoder().encode(\"xyz\").buffer },\n dataType: \"protobuf\",\n ackId: 12345,\n } as SendEventMessage,\n payload: \"KhwKBWV2ZW50EhAaDgoHZXhhbXBsZRIDeHl6GLlg\",\n },\n {\n testName: \"seqAck1\",\n message: { kind: \"sequenceAck\", sequenceId: 123456 } as SequenceAckMessage,\n payload: \"QgQIwMQH\",\n },\n ];\n\n tests.forEach(({ testName, message, payload }) => {\n it(`write message test ${testName}`, () => {\n const writeMessage = protocol.writeMessage(message) as ArrayBuffer;\n assert.equal(arrayBufferToBase64(writeMessage), payload);\n });\n });\n\n function arrayBufferToBase64(buffer: ArrayBuffer): string {\n return Buffer.from(buffer).toString(\"base64\");\n }\n });\n\n describe(\"Parse downstream messages\", () => {\n const tests = [\n {\n testName: \"ack1\",\n message: \"CgQIexAB\",\n assertFunc: (msg: WebPubSubMessage) => {\n assert.equal(msg.kind, \"ack\");\n msg = msg as AckMessage;\n assert.equal(msg.ackId, 123);\n assert.equal(msg.success, true);\n assert.isUndefined(msg.error);\n },\n },\n {\n testName: \"ack2\",\n message: \"ChoIexAAGhQKCUZvcmJpZGRlbhIHbWVzc2FnZQ==\",\n assertFunc: (msg: WebPubSubMessage) => {\n assert.equal(msg.kind, \"ack\");\n msg = msg as AckMessage;\n assert.equal(msg.ackId, 123);\n assert.equal(msg.success, false);\n assert.equal(msg.error!.name, \"Forbidden\");\n assert.equal(msg.error!.message, \"message\");\n },\n },\n {\n testName: \"group1\",\n message: \"EhwKBWdyb3VwEglncm91cE5hbWUaBQoDeHl6ILlg\",\n assertFunc: (msg: WebPubSubMessage) => {\n assert.equal(msg.kind, \"groupData\");\n msg = msg as GroupDataMessage;\n assert.equal(msg.group, \"groupName\");\n assert.equal(msg.sequenceId, 12345);\n assert.equal(msg.dataType, \"text\");\n assert.equal(msg.data, \"xyz\");\n },\n },\n {\n testName: \"group2\",\n message: \"EiUKBWdyb3VwEglncm91cE5hbWUaESIPeyJ2YWx1ZSI6Inh5eiJ9\",\n assertFunc: (msg: WebPubSubMessage) => {\n assert.equal(msg.kind, \"groupData\");\n msg = msg as GroupDataMessage;\n assert.equal(msg.group, \"groupName\");\n assert.isNull(msg.sequenceId);\n assert.equal(msg.dataType, \"json\");\n assert.deepEqual(msg.data, { value: \"xyz\" });\n },\n },\n {\n testName: \"group3\",\n message: \"EhkKBWdyb3VwEglncm91cE5hbWUaBRIDeHl6\",\n assertFunc: (msg: WebPubSubMessage) => {\n assert.equal(msg.kind, \"groupData\");\n msg = msg as GroupDataMessage;\n assert.equal(msg.group, \"groupName\");\n assert.isNull(msg.sequenceId);\n assert.equal(msg.dataType, \"binary\");\n assert.equal(new TextDecoder().decode(msg.data as ArrayBuffer), \"xyz\");\n },\n },\n {\n testName: \"group4\",\n message: \"EiQKBWdyb3VwEglncm91cE5hbWUaEBoOCgdleGFtcGxlEgN4eXo=\",\n assertFunc: (msg: WebPubSubMessage) => {\n assert.equal(msg.kind, \"groupData\");\n msg = msg as GroupDataMessage;\n assert.equal(msg.group, \"groupName\");\n assert.isNull(msg.sequenceId);\n assert.equal(msg.dataType, \"protobuf\");\n assert.equal((msg.data as any).type_url, \"example\");\n assert.equal(new TextDecoder().decode((msg.data as any).value as ArrayBuffer), \"xyz\");\n },\n },\n {\n testName: \"event1\",\n message: \"EhIKBnNlcnZlchoFCgN4eXoguWA=\",\n assertFunc: (msg: WebPubSubMessage) => {\n assert.equal(msg.kind, \"serverData\");\n msg = msg as ServerDataMessage;\n assert.equal(msg.sequenceId, 12345);\n assert.equal(msg.dataType, \"text\");\n assert.equal(msg.data, \"xyz\");\n },\n },\n {\n testName: \"event2\",\n message: \"EhsKBnNlcnZlchoRIg97InZhbHVlIjoieHl6In0=\",\n assertFunc: (msg: WebPubSubMessage) => {\n assert.equal(msg.kind, \"serverData\");\n msg = msg as ServerDataMessage;\n assert.isNull(msg.sequenceId);\n assert.equal(msg.dataType, \"json\");\n assert.deepEqual(msg.data, { value: \"xyz\" });\n },\n },\n {\n testName: \"event3\",\n message: \"Eg8KBnNlcnZlchoFEgN4eXo=\",\n assertFunc: (msg: WebPubSubMessage) => {\n assert.equal(msg.kind, \"serverData\");\n msg = msg as ServerDataMessage;\n assert.isNull(msg.sequenceId);\n assert.equal(msg.dataType, \"binary\");\n assert.equal(new TextDecoder().decode(msg.data as ArrayBuffer), \"xyz\");\n },\n },\n {\n testName: \"event4\",\n message: \"EhoKBnNlcnZlchoQGg4KB2V4YW1wbGUSA3h5eg==\",\n assertFunc: (msg: WebPubSubMessage) => {\n assert.equal(msg.kind, \"serverData\");\n msg = msg as ServerDataMessage;\n assert.isNull(msg.sequenceId);\n assert.equal(msg.dataType, \"protobuf\");\n assert.equal((msg.data as any).type_url, \"example\");\n assert.equal(new TextDecoder().decode((msg.data as any).value as ArrayBuffer), \"xyz\");\n },\n },\n {\n testName: \"system1\",\n message: \"GhQKEgoKY29ubmVjdGlvbhIEdXNlcg==\",\n assertFunc: (msg: WebPubSubMessage) => {\n assert.equal(msg.kind, \"connected\");\n msg = msg as ConnectedMessage;\n assert.equal(msg.userId, \"user\");\n assert.equal(msg.connectionId, \"connection\");\n assert.isEmpty(msg.reconnectionToken);\n },\n },\n {\n testName: \"system2\",\n message: \"GhkKFwoKY29ubmVjdGlvbhIEdXNlchoDcmVj\",\n assertFunc: (msg: WebPubSubMessage) => {\n assert.equal(msg.kind, \"connected\");\n msg = msg as ConnectedMessage;\n assert.equal(msg.userId, \"user\");\n assert.equal(msg.connectionId, \"connection\");\n assert.equal(msg.reconnectionToken, \"rec\");\n },\n },\n {\n testName: \"system3\",\n message: \"GgcSBRIDbXNn\",\n assertFunc: (msg: WebPubSubMessage) => {\n assert.equal(msg.kind, \"disconnected\");\n msg = msg as DisconnectedMessage;\n assert.equal(msg.message, \"msg\");\n },\n },\n ];\n\n tests.forEach(({ testName, message, assertFunc }) => {\n it(`parse message test ${testName}`, () => {\n const buffer = Buffer.from(message, \"base64\");\n const parsedMsg = protocol.parseMessages(buffer);\n assertFunc(parsedMsg!);\n });\n });\n });\n});\n"]}
File without changes
File without changes
File without changes