@based/server 3.4.3 → 3.4.5

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 (138) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/dist/auth/authorize.d.ts +2 -0
  3. package/dist/auth/authorize.js +8 -0
  4. package/dist/auth/authorize.js.map +1 -0
  5. package/dist/auth/dummyAuth.d.ts +2 -0
  6. package/dist/auth/dummyAuth.js +7 -0
  7. package/dist/auth/dummyAuth.js.map +1 -0
  8. package/dist/auth/index.d.ts +11 -0
  9. package/dist/auth/index.js +44 -0
  10. package/dist/auth/index.js.map +1 -0
  11. package/dist/clientContext.d.ts +0 -0
  12. package/dist/clientContext.js +83 -0
  13. package/dist/clientContext.js.map +1 -0
  14. package/dist/error.d.ts +66 -0
  15. package/dist/error.js +149 -0
  16. package/dist/error.js.map +1 -0
  17. package/dist/functions/index.d.ts +48 -0
  18. package/dist/functions/index.js +399 -0
  19. package/dist/functions/index.js.map +1 -0
  20. package/dist/functions/timeout.d.ts +3 -0
  21. package/dist/functions/timeout.js +23 -0
  22. package/dist/functions/timeout.js.map +1 -0
  23. package/dist/functions/workerPool.d.ts +0 -0
  24. package/dist/functions/workerPool.js +5 -0
  25. package/dist/functions/workerPool.js.map +1 -0
  26. package/dist/handlers/rest/file/formStream.js +5 -1
  27. package/dist/handlers/rest/file/formStream.js.map +1 -1
  28. package/dist/handlers/rest/file/storeFile.d.ts +2 -1
  29. package/dist/handlers/rest/file/storeFile.js +34 -24
  30. package/dist/handlers/rest/file/storeFile.js.map +1 -1
  31. package/dist/handlers/rest/file/stream.js +5 -1
  32. package/dist/handlers/rest/file/stream.js.map +1 -1
  33. package/dist/index.js +2 -2
  34. package/dist/index.js.map +1 -1
  35. package/dist/network/http/authorize.d.ts +3 -0
  36. package/dist/network/http/authorize.js +28 -0
  37. package/dist/network/http/authorize.js.map +1 -0
  38. package/dist/network/http/compress.d.ts +6 -0
  39. package/dist/network/http/compress.js +56 -0
  40. package/dist/network/http/compress.js.map +1 -0
  41. package/dist/network/http/end.d.ts +4 -0
  42. package/dist/network/http/end.js +19 -0
  43. package/dist/network/http/end.js.map +1 -0
  44. package/dist/network/http/function.d.ts +3 -0
  45. package/dist/network/http/function.js +47 -0
  46. package/dist/network/http/function.js.map +1 -0
  47. package/dist/network/http/get.d.ts +3 -0
  48. package/dist/network/http/get.js +129 -0
  49. package/dist/network/http/get.js.map +1 -0
  50. package/dist/network/http/index.d.ts +3 -0
  51. package/dist/network/http/index.js +122 -0
  52. package/dist/network/http/index.js.map +1 -0
  53. package/dist/network/http/readBody.d.ts +3 -0
  54. package/dist/network/http/readBody.js +112 -0
  55. package/dist/network/http/readBody.js.map +1 -0
  56. package/dist/network/http/send.d.ts +5 -0
  57. package/dist/network/http/send.js +60 -0
  58. package/dist/network/http/send.js.map +1 -0
  59. package/dist/network/http/streamFunction/DataStream.d.ts +7 -0
  60. package/dist/network/http/streamFunction/DataStream.js +19 -0
  61. package/dist/network/http/streamFunction/DataStream.js.map +1 -0
  62. package/dist/network/http/streamFunction/getExtension.d.ts +2 -0
  63. package/dist/network/http/streamFunction/getExtension.js +29 -0
  64. package/dist/network/http/streamFunction/getExtension.js.map +1 -0
  65. package/dist/network/http/streamFunction/index.d.ts +3 -0
  66. package/dist/network/http/streamFunction/index.js +81 -0
  67. package/dist/network/http/streamFunction/index.js.map +1 -0
  68. package/dist/network/http/streamFunction/multipartStream.d.ts +12 -0
  69. package/dist/network/http/streamFunction/multipartStream.js +208 -0
  70. package/dist/network/http/streamFunction/multipartStream.js.map +1 -0
  71. package/dist/network/http/streamFunction/stream.d.ts +5 -0
  72. package/dist/network/http/streamFunction/stream.js +103 -0
  73. package/dist/network/http/streamFunction/stream.js.map +1 -0
  74. package/dist/network/index.d.ts +4 -0
  75. package/dist/network/index.js +84 -0
  76. package/dist/network/index.js.map +1 -0
  77. package/dist/network/message/auth.d.ts +4 -0
  78. package/dist/network/message/auth.js +32 -0
  79. package/dist/network/message/auth.js.map +1 -0
  80. package/dist/network/message/function.d.ts +3 -0
  81. package/dist/network/message/function.js +67 -0
  82. package/dist/network/message/function.js.map +1 -0
  83. package/dist/network/message/get.d.ts +3 -0
  84. package/dist/network/message/get.js +109 -0
  85. package/dist/network/message/get.js.map +1 -0
  86. package/dist/network/message/index.d.ts +3 -0
  87. package/dist/network/message/index.js +62 -0
  88. package/dist/network/message/index.js.map +1 -0
  89. package/dist/network/message/observable.d.ts +5 -0
  90. package/dist/network/message/observable.js +103 -0
  91. package/dist/network/message/observable.js.map +1 -0
  92. package/dist/network/message/send.d.ts +4 -0
  93. package/dist/network/message/send.js +11 -0
  94. package/dist/network/message/send.js.map +1 -0
  95. package/dist/network/upgrade.d.ts +4 -0
  96. package/dist/network/upgrade.js +49 -0
  97. package/dist/network/upgrade.js.map +1 -0
  98. package/dist/network/worker/get.d.ts +0 -0
  99. package/dist/network/worker/get.js +122 -0
  100. package/dist/network/worker/get.js.map +1 -0
  101. package/dist/network/worker/observable.d.ts +0 -0
  102. package/dist/network/worker/observable.js +120 -0
  103. package/dist/network/worker/observable.js.map +1 -0
  104. package/dist/observable/index.d.ts +8 -0
  105. package/dist/observable/index.js +154 -0
  106. package/dist/observable/index.js.map +1 -0
  107. package/dist/protocol.d.ts +19 -0
  108. package/dist/protocol.js +212 -0
  109. package/dist/protocol.js.map +1 -0
  110. package/dist/security/index.d.ts +2 -0
  111. package/dist/security/index.js +57 -0
  112. package/dist/security/index.js.map +1 -0
  113. package/dist/server.d.ts +35 -0
  114. package/dist/server.js +99 -0
  115. package/dist/server.js.map +1 -0
  116. package/dist/types.d.ts +1 -0
  117. package/dist/worker/authorize.d.ts +5 -0
  118. package/dist/worker/authorize.js +15 -0
  119. package/dist/worker/authorize.js.map +1 -0
  120. package/dist/worker/fnMap.d.ts +2 -0
  121. package/dist/worker/fnMap.js +5 -0
  122. package/dist/worker/fnMap.js.map +1 -0
  123. package/dist/worker/functions.d.ts +3 -0
  124. package/dist/worker/functions.js +8 -0
  125. package/dist/worker/functions.js.map +1 -0
  126. package/dist/worker/http/function.d.ts +4 -0
  127. package/dist/worker/http/function.js +75 -0
  128. package/dist/worker/http/function.js.map +1 -0
  129. package/dist/worker/index.d.ts +1 -0
  130. package/dist/worker/index.js +101 -0
  131. package/dist/worker/index.js.map +1 -0
  132. package/dist/worker/observable.d.ts +15 -0
  133. package/dist/worker/observable.js +110 -0
  134. package/dist/worker/observable.js.map +1 -0
  135. package/dist/worker/ws/function.d.ts +3 -0
  136. package/dist/worker/ws/function.js +42 -0
  137. package/dist/worker/ws/function.js.map +1 -0
  138. package/package.json +1 -1
@@ -0,0 +1,122 @@
1
+ // import { isObservableFunctionSpec } from '../../functions'
2
+ // import {
3
+ // decodePayload,
4
+ // decodeName,
5
+ // readUint8,
6
+ // encodeGetResponse,
7
+ // } from '../../protocol'
8
+ // import { BasedServer } from '../../server'
9
+ // import { create, destroy } from '../../observable'
10
+ // import { ActiveObservable, WebsocketClient } from '../../types'
11
+ // import { BasedErrorCode } from '../../error'
12
+ // // import { sendError } from './send'
13
+ // const sendGetData = (
14
+ // server: BasedServer,
15
+ // id: number,
16
+ // obs: ActiveObservable,
17
+ // checksum: number,
18
+ // client: WebsocketClient
19
+ // ) => {
20
+ // if (!client.ws) {
21
+ // return
22
+ // }
23
+ // if (checksum === 0) {
24
+ // client.ws.send(obs.cache, true, false)
25
+ // } else if (checksum === obs.checksum) {
26
+ // client.ws.send(encodeGetResponse(id), true, false)
27
+ // } else if (obs.diffCache && obs.previousChecksum === checksum) {
28
+ // client.ws.send(obs.diffCache, true, false)
29
+ // } else {
30
+ // client.ws.send(obs.cache, true, false)
31
+ // }
32
+ // if (obs.clients.size === 0) {
33
+ // destroy(server, id)
34
+ // }
35
+ // }
36
+ // export const getMessage = (
37
+ // arr: Uint8Array,
38
+ // start: number,
39
+ // len: number,
40
+ // isDeflate: boolean,
41
+ // client: WebsocketClient,
42
+ // server: BasedServer
43
+ // ) => {
44
+ // // | 4 header | 8 id | 8 checksum | 1 name length | * name | * payload |
45
+ // const nameLen = arr[start + 20]
46
+ // const id = readUint8(arr, start + 4, 8)
47
+ // const checksum = readUint8(arr, start + 12, 8)
48
+ // const name = decodeName(arr, start + 21, start + 21 + nameLen)
49
+ // if (!name || !id) {
50
+ // return false
51
+ // }
52
+ // const route = server.functions.route(name)
53
+ // if (!route || !route.observable) {
54
+ // return false
55
+ // }
56
+ // if (route.maxPayloadSize !== -1 && len > route.maxPayloadSize) {
57
+ // sendError(server, client, BasedErrorCode.PayloadTooLarge, route)
58
+ // return false
59
+ // }
60
+ // const payload = decodePayload(
61
+ // new Uint8Array(arr.slice(start + 21 + nameLen, start + len)),
62
+ // isDeflate
63
+ // )
64
+ // server.auth.config
65
+ // .authorize(server, client, name, payload)
66
+ // .then((ok) => {
67
+ // if (!client.ws) {
68
+ // return false
69
+ // }
70
+ // if (!ok) {
71
+ // sendError(server, client, BasedErrorCode.AuthorizeRejectedError, route)
72
+ // return false
73
+ // }
74
+ // if (server.activeObservablesById.has(id)) {
75
+ // const obs = server.activeObservablesById.get(id)
76
+ // if (obs.beingDestroyed) {
77
+ // clearTimeout(obs.beingDestroyed)
78
+ // obs.beingDestroyed = null
79
+ // }
80
+ // if (obs.cache) {
81
+ // sendGetData(server, id, obs, checksum, client)
82
+ // } else {
83
+ // if (!obs.onNextData) {
84
+ // obs.onNextData = new Set()
85
+ // }
86
+ // obs.onNextData.add(() => {
87
+ // sendGetData(server, id, obs, checksum, client)
88
+ // })
89
+ // }
90
+ // } else {
91
+ // server.functions
92
+ // .install(name)
93
+ // .then((spec) => {
94
+ // if (spec && isObservableFunctionSpec(spec)) {
95
+ // const obs = create(server, name, id, payload)
96
+ // if (!client.ws?.obs.has(id)) {
97
+ // if (!obs.onNextData) {
98
+ // obs.onNextData = new Set()
99
+ // }
100
+ // obs.onNextData.add(() => {
101
+ // sendGetData(server, id, obs, checksum, client)
102
+ // })
103
+ // }
104
+ // } else {
105
+ // sendError(server, client, BasedErrorCode.FunctionNotFound, route)
106
+ // }
107
+ // })
108
+ // .catch(() => {
109
+ // sendError(server, client, BasedErrorCode.FunctionNotFound, route)
110
+ // })
111
+ // }
112
+ // })
113
+ // .catch((err) => {
114
+ // sendError(server, client, BasedErrorCode.AuthorizeFunctionError, {
115
+ // route,
116
+ // observableId: id,
117
+ // err,
118
+ // })
119
+ // })
120
+ // return true
121
+ // }
122
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/network/worker/get.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,WAAW;AACX,mBAAmB;AACnB,gBAAgB;AAChB,eAAe;AACf,uBAAuB;AACvB,0BAA0B;AAC1B,6CAA6C;AAC7C,qDAAqD;AACrD,kEAAkE;AAClE,+CAA+C;AAC/C,wCAAwC;AAExC,wBAAwB;AACxB,yBAAyB;AACzB,gBAAgB;AAChB,2BAA2B;AAC3B,sBAAsB;AACtB,4BAA4B;AAC5B,SAAS;AACT,sBAAsB;AACtB,aAAa;AACb,MAAM;AAEN,0BAA0B;AAC1B,6CAA6C;AAC7C,4CAA4C;AAC5C,yDAAyD;AACzD,qEAAqE;AACrE,iDAAiD;AACjD,aAAa;AACb,6CAA6C;AAC7C,MAAM;AAEN,kCAAkC;AAClC,0BAA0B;AAC1B,MAAM;AACN,IAAI;AAEJ,8BAA8B;AAC9B,qBAAqB;AACrB,mBAAmB;AACnB,iBAAiB;AACjB,wBAAwB;AACxB,6BAA6B;AAC7B,wBAAwB;AACxB,SAAS;AACT,6EAA6E;AAE7E,oCAAoC;AAEpC,4CAA4C;AAC5C,mDAAmD;AACnD,mEAAmE;AAEnE,wBAAwB;AACxB,mBAAmB;AACnB,MAAM;AAEN,+CAA+C;AAE/C,uCAAuC;AACvC,mBAAmB;AACnB,MAAM;AAEN,qEAAqE;AACrE,uEAAuE;AACvE,mBAAmB;AACnB,MAAM;AAEN,mCAAmC;AACnC,oEAAoE;AACpE,gBAAgB;AAChB,MAAM;AAEN,uBAAuB;AACvB,gDAAgD;AAChD,sBAAsB;AACtB,0BAA0B;AAC1B,uBAAuB;AACvB,UAAU;AAEV,mBAAmB;AACnB,kFAAkF;AAClF,uBAAuB;AACvB,UAAU;AAEV,oDAAoD;AACpD,2DAA2D;AAC3D,oCAAoC;AACpC,6CAA6C;AAC7C,sCAAsC;AACtC,YAAY;AACZ,2BAA2B;AAC3B,2DAA2D;AAC3D,mBAAmB;AACnB,mCAAmC;AACnC,yCAAyC;AACzC,cAAc;AACd,uCAAuC;AACvC,6DAA6D;AAC7D,eAAe;AACf,YAAY;AACZ,iBAAiB;AACjB,2BAA2B;AAC3B,2BAA2B;AAC3B,8BAA8B;AAC9B,4DAA4D;AAC5D,8DAA8D;AAC9D,+CAA+C;AAC/C,yCAAyC;AACzC,+CAA+C;AAC/C,oBAAoB;AACpB,6CAA6C;AAC7C,mEAAmE;AACnE,qBAAqB;AACrB,kBAAkB;AAClB,uBAAuB;AACvB,kFAAkF;AAClF,gBAAgB;AAChB,eAAe;AACf,2BAA2B;AAC3B,gFAAgF;AAChF,eAAe;AACf,UAAU;AACV,SAAS;AACT,wBAAwB;AACxB,2EAA2E;AAC3E,iBAAiB;AACjB,4BAA4B;AAC5B,eAAe;AACf,WAAW;AACX,SAAS;AAET,gBAAgB;AAChB,IAAI"}
File without changes
@@ -0,0 +1,120 @@
1
+ // import { isObservableFunctionSpec } from '../../functions'
2
+ // import { decodePayload, decodeName, readUint8 } from '../../protocol'
3
+ // import { BasedServer } from '../../server'
4
+ // import { create, unsubscribe, destroy, subscribe } from '../../observable'
5
+ // import { BasedErrorCode } from '../../error'
6
+ // import { sendError } from '../message/send'
7
+ // import { WebsocketClient, BasedFunctionRoute } from '../../types'
8
+ // gets worker (and client context)
9
+ // export const enableSubscribe = (
10
+ // server: BasedServer,
11
+ // client: WebsocketClient,
12
+ // id: number,
13
+ // checksum: number,
14
+ // name: string,
15
+ // payload: any,
16
+ // route: BasedFunctionRoute
17
+ // ) => {
18
+ // client.ws.subscribe(String(id))
19
+ // client.ws.obs.add(id)
20
+ // if (server.activeObservablesById.has(id)) {
21
+ // subscribe(server, id, checksum, client)
22
+ // } else {
23
+ // server.functions
24
+ // .install(name)
25
+ // .then((spec) => {
26
+ // if (spec && isObservableFunctionSpec(spec)) {
27
+ // const obs = create(server, name, id, payload)
28
+ // if (!client.ws?.obs.has(id)) {
29
+ // if (obs.clients.size === 0) {
30
+ // destroy(server, id)
31
+ // }
32
+ // } else {
33
+ // subscribe(server, id, checksum, client)
34
+ // }
35
+ // } else {
36
+ // sendError(server, client, BasedErrorCode.FunctionNotFound, route)
37
+ // }
38
+ // })
39
+ // .catch(() => {
40
+ // sendError(server, client, BasedErrorCode.FunctionNotFound, route)
41
+ // })
42
+ // }
43
+ // }
44
+ // export const subscribeMessage = (
45
+ // arr: Uint8Array,
46
+ // start: number,
47
+ // len: number,
48
+ // isDeflate: boolean,
49
+ // client: WebsocketClient,
50
+ // server: BasedServer
51
+ // ) => {
52
+ // // | 4 header | 8 id | 8 checksum | 1 name length | * name | * payload |
53
+ // const nameLen = arr[start + 20]
54
+ // const id = readUint8(arr, start + 4, 8)
55
+ // const checksum = readUint8(arr, start + 12, 8)
56
+ // const name = decodeName(arr, start + 21, start + 21 + nameLen)
57
+ // if (!name || !id) {
58
+ // return false
59
+ // }
60
+ // const route = server.functions.route(name)
61
+ // if (!route || !route.observable) {
62
+ // return false
63
+ // }
64
+ // if (route.maxPayloadSize !== -1 && len > route.maxPayloadSize) {
65
+ // sendError(server, client, BasedErrorCode.PayloadTooLarge, route)
66
+ // return false
67
+ // }
68
+ // if (client.ws?.obs.has(id)) {
69
+ // // allready subscribed to this id
70
+ // return true
71
+ // }
72
+ // const payload = decodePayload(
73
+ // new Uint8Array(arr.slice(start + 21 + nameLen, start + len)),
74
+ // isDeflate
75
+ // )
76
+ // server.auth.config
77
+ // .authorize(server, client, name, payload)
78
+ // .then((ok) => {
79
+ // if (!client.ws) {
80
+ // return
81
+ // }
82
+ // if (!ok) {
83
+ // client.ws.unauthorizedObs.add({ id, checksum, name, payload })
84
+ // sendError(server, client, BasedErrorCode.AuthorizeRejectedError, route)
85
+ // return false
86
+ // }
87
+ // enableSubscribe(server, client, id, checksum, name, payload, route)
88
+ // })
89
+ // .catch((err) => {
90
+ // sendError(server, client, BasedErrorCode.AuthorizeFunctionError, {
91
+ // route,
92
+ // observableId: id,
93
+ // err,
94
+ // })
95
+ // destroy(server, id)
96
+ // })
97
+ // return true
98
+ // }
99
+ // export const unsubscribeMessage = (
100
+ // arr: Uint8Array,
101
+ // start: number,
102
+ // client: WebsocketClient,
103
+ // server: BasedServer
104
+ // ) => {
105
+ // // | 4 header | 8 id |
106
+ // const id = readUint8(arr, start + 4, 8)
107
+ // if (!id) {
108
+ // return false
109
+ // }
110
+ // if (!client.ws) {
111
+ // return
112
+ // }
113
+ // if (!client.ws.obs.has(id)) {
114
+ // return true
115
+ // }
116
+ // client.ws.unsubscribe(String(id))
117
+ // unsubscribe(server, id, client)
118
+ // return true
119
+ // }
120
+ //# sourceMappingURL=observable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observable.js","sourceRoot":"","sources":["../../../src/network/worker/observable.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,wEAAwE;AACxE,6CAA6C;AAC7C,6EAA6E;AAC7E,+CAA+C;AAC/C,8CAA8C;AAC9C,oEAAoE;AAEpE,mCAAmC;AAEnC,mCAAmC;AACnC,yBAAyB;AACzB,6BAA6B;AAC7B,gBAAgB;AAChB,sBAAsB;AACtB,kBAAkB;AAClB,kBAAkB;AAClB,8BAA8B;AAC9B,SAAS;AACT,oCAAoC;AACpC,0BAA0B;AAE1B,gDAAgD;AAChD,8CAA8C;AAC9C,aAAa;AACb,uBAAuB;AACvB,uBAAuB;AACvB,0BAA0B;AAC1B,wDAAwD;AACxD,0DAA0D;AAC1D,2CAA2C;AAC3C,4CAA4C;AAC5C,oCAAoC;AACpC,gBAAgB;AAChB,qBAAqB;AACrB,sDAAsD;AACtD,cAAc;AACd,mBAAmB;AACnB,8EAA8E;AAC9E,YAAY;AACZ,WAAW;AACX,uBAAuB;AACvB,4EAA4E;AAC5E,WAAW;AACX,MAAM;AACN,IAAI;AAEJ,oCAAoC;AACpC,qBAAqB;AACrB,mBAAmB;AACnB,iBAAiB;AACjB,wBAAwB;AACxB,6BAA6B;AAC7B,wBAAwB;AACxB,SAAS;AACT,6EAA6E;AAE7E,oCAAoC;AAEpC,4CAA4C;AAC5C,mDAAmD;AACnD,mEAAmE;AAEnE,wBAAwB;AACxB,mBAAmB;AACnB,MAAM;AAEN,+CAA+C;AAE/C,uCAAuC;AACvC,mBAAmB;AACnB,MAAM;AAEN,qEAAqE;AACrE,uEAAuE;AACvE,mBAAmB;AACnB,MAAM;AAEN,kCAAkC;AAClC,wCAAwC;AACxC,kBAAkB;AAClB,MAAM;AAEN,mCAAmC;AACnC,oEAAoE;AACpE,gBAAgB;AAChB,MAAM;AAEN,uBAAuB;AACvB,gDAAgD;AAChD,sBAAsB;AACtB,0BAA0B;AAC1B,iBAAiB;AACjB,UAAU;AAEV,mBAAmB;AACnB,yEAAyE;AACzE,kFAAkF;AAClF,uBAAuB;AACvB,UAAU;AAEV,4EAA4E;AAC5E,SAAS;AACT,wBAAwB;AACxB,2EAA2E;AAC3E,iBAAiB;AACjB,4BAA4B;AAC5B,eAAe;AACf,WAAW;AACX,4BAA4B;AAC5B,SAAS;AAET,gBAAgB;AAChB,IAAI;AAEJ,sCAAsC;AACtC,qBAAqB;AACrB,mBAAmB;AACnB,6BAA6B;AAC7B,wBAAwB;AACxB,SAAS;AACT,2BAA2B;AAE3B,4CAA4C;AAE5C,eAAe;AACf,mBAAmB;AACnB,MAAM;AAEN,sBAAsB;AACtB,aAAa;AACb,MAAM;AAEN,kCAAkC;AAClC,kBAAkB;AAClB,MAAM;AAEN,sCAAsC;AAEtC,oCAAoC;AAEpC,gBAAgB;AAChB,IAAI"}
@@ -0,0 +1,8 @@
1
+ import { BasedServer } from '../server';
2
+ import { ActiveObservable, WebsocketClient } from '../types';
3
+ export declare const destroy: (server: BasedServer, id: number) => void;
4
+ export declare const subscribe: (server: BasedServer, id: number, checksum: number, client: WebsocketClient) => void;
5
+ export declare const unsubscribe: (server: BasedServer, id: number, client: WebsocketClient) => void;
6
+ export declare const unsubscribeIgnoreClient: (server: BasedServer, id: number, client: WebsocketClient) => void;
7
+ export declare const initFunction: (server: BasedServer, id: number) => Promise<void>;
8
+ export declare const create: (server: BasedServer, name: string, id: number, payload: any) => ActiveObservable;
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.create = exports.initFunction = exports.unsubscribeIgnoreClient = exports.unsubscribe = exports.subscribe = exports.destroy = void 0;
4
+ const destroy = (server, id) => {
5
+ const obs = server.activeObservablesById.get(id);
6
+ if (!obs) {
7
+ console.error('Observable', id, 'does not exists');
8
+ return;
9
+ }
10
+ if (obs.isDestroyed) {
11
+ return;
12
+ }
13
+ const spec = server.functions.observables[obs.name];
14
+ if (!spec) {
15
+ console.warn('Cannot find observable function spec!', obs.name);
16
+ return;
17
+ }
18
+ const memCacheTimeout = spec.memCacheTimeout ?? server.functions.config.memCacheTimeout;
19
+ if (!obs.beingDestroyed) {
20
+ obs.beingDestroyed = setTimeout(() => {
21
+ if (!server.activeObservables[obs.name]) {
22
+ console.info('Trying to destroy a removed observable function');
23
+ return;
24
+ }
25
+ obs.beingDestroyed = null;
26
+ server.activeObservables[obs.name].delete(id);
27
+ if (server.activeObservables[obs.name].size === 0) {
28
+ delete server.activeObservables[obs.name];
29
+ }
30
+ server.activeObservablesById.delete(id);
31
+ obs.isDestroyed = true;
32
+ obs.closeFunction();
33
+ }, memCacheTimeout);
34
+ }
35
+ };
36
+ exports.destroy = destroy;
37
+ const subscribe = (server, id, checksum, client) => {
38
+ if (!client.ws) {
39
+ return;
40
+ }
41
+ const obs = server.activeObservablesById.get(id);
42
+ client.ws.obs.add(id);
43
+ if (obs.beingDestroyed) {
44
+ clearTimeout(obs.beingDestroyed);
45
+ obs.beingDestroyed = null;
46
+ }
47
+ obs.clients.add(client.ws.id);
48
+ if (obs.cache && obs.checksum !== checksum) {
49
+ if (obs.diffCache && obs.previousChecksum === checksum) {
50
+ client.ws.send(obs.diffCache, true, false);
51
+ }
52
+ else {
53
+ client.ws.send(obs.cache, true, false);
54
+ }
55
+ }
56
+ };
57
+ exports.subscribe = subscribe;
58
+ const unsubscribe = (server, id, client) => {
59
+ if (!client.ws) {
60
+ return;
61
+ }
62
+ if (!client.ws.obs.has(id)) {
63
+ return;
64
+ }
65
+ const obs = server.activeObservablesById.get(id);
66
+ client.ws.obs.delete(id);
67
+ if (!obs) {
68
+ return;
69
+ }
70
+ obs.clients.delete(client.ws.id);
71
+ if (obs.clients.size === 0) {
72
+ (0, exports.destroy)(server, id);
73
+ }
74
+ };
75
+ exports.unsubscribe = unsubscribe;
76
+ const unsubscribeIgnoreClient = (server, id, client) => {
77
+ if (!client.ws) {
78
+ return;
79
+ }
80
+ const obs = server.activeObservablesById.get(id);
81
+ if (!obs) {
82
+ return;
83
+ }
84
+ obs.clients.delete(client.ws.id);
85
+ if (obs.clients.size === 0) {
86
+ (0, exports.destroy)(server, id);
87
+ }
88
+ };
89
+ exports.unsubscribeIgnoreClient = unsubscribeIgnoreClient;
90
+ const initFunction = async (server, id) => {
91
+ const obs = server.activeObservablesById.get(id);
92
+ if (obs.closeFunction) {
93
+ obs.closeFunction();
94
+ delete obs.closeFunction;
95
+ }
96
+ const spec = server.functions.observables[obs.name];
97
+ if (!spec) {
98
+ console.warn('Cannot find observable function spec!', obs.name);
99
+ return;
100
+ }
101
+ const payload = obs.payload;
102
+ const close = server.functions.runObservableFunction(spec, id,
103
+ // add isDeflate for http
104
+ (err) => {
105
+ if (err) {
106
+ console.error('ERROR TIMES /w obserbable', err);
107
+ }
108
+ }, (encodedDiffData, encodedData, checksum, isDeflate) => {
109
+ obs.previousChecksum = obs.checksum;
110
+ obs.checksum = checksum;
111
+ obs.cache = encodedData;
112
+ obs.isDeflate = isDeflate;
113
+ if (encodedDiffData) {
114
+ obs.diffCache = encodedDiffData;
115
+ server.uwsApp.publish(String(id), encodedDiffData, true, false);
116
+ }
117
+ else {
118
+ server.uwsApp.publish(String(id), encodedData, true, false);
119
+ }
120
+ if (obs.onNextData) {
121
+ const setObs = obs.onNextData;
122
+ delete obs.onNextData;
123
+ setObs.forEach((fn) => fn());
124
+ }
125
+ }, payload);
126
+ if (obs.isDestroyed) {
127
+ close();
128
+ }
129
+ else {
130
+ obs.closeFunction = close;
131
+ }
132
+ };
133
+ exports.initFunction = initFunction;
134
+ const create = (server, name, id, payload) => {
135
+ if (server.activeObservablesById.has(id)) {
136
+ return server.activeObservablesById.get(id);
137
+ }
138
+ const obs = {
139
+ payload,
140
+ clients: new Set(),
141
+ id,
142
+ name,
143
+ isDestroyed: false,
144
+ };
145
+ if (!server.activeObservables[name]) {
146
+ server.activeObservables[name] = new Map();
147
+ }
148
+ server.activeObservables[name].set(id, obs);
149
+ server.activeObservablesById.set(id, obs);
150
+ (0, exports.initFunction)(server, id);
151
+ return obs;
152
+ };
153
+ exports.create = create;
154
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/observable/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /// <reference types="node" />
2
+ export declare const COMPRESS_FROM_BYTES = 150;
3
+ export declare const decodeHeader: (nr: number) => {
4
+ type: number;
5
+ isDeflate: boolean;
6
+ len: number;
7
+ };
8
+ export declare const storeUint8: (buff: Uint8Array, n: number, start: number, len: number) => void;
9
+ export declare const readUint8: (buff: Uint8Array, start: number, len: number) => number;
10
+ export declare const encodeHeader: (type: number, isDeflate: boolean, len: number) => number;
11
+ export declare const valueToBuffer: (payload: any) => Buffer;
12
+ export declare const decodePayload: (payload: Uint8Array, isDeflate: boolean) => any;
13
+ export declare const decodeName: (arr: Uint8Array, start: number, end: number) => string;
14
+ export declare const encodeFunctionResponse: (id: number, buffer: Buffer) => Uint8Array;
15
+ export declare const encodeGetResponse: (id: number) => Uint8Array;
16
+ export declare const encodeObservableResponse: (id: number, checksum: number, buffer: Buffer) => [Uint8Array, boolean];
17
+ export declare const encodeObservableDiffResponse: (id: number, checksum: number, previousChecksum: number, buffer: Buffer) => Uint8Array;
18
+ export declare const encodeAuthResponse: (buffer: Buffer) => Uint8Array;
19
+ export declare const encodeErrorResponse: (buffer: Buffer) => Uint8Array;
@@ -0,0 +1,212 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.encodeErrorResponse = exports.encodeAuthResponse = exports.encodeObservableDiffResponse = exports.encodeObservableResponse = exports.encodeGetResponse = exports.encodeFunctionResponse = exports.decodeName = exports.decodePayload = exports.valueToBuffer = exports.encodeHeader = exports.readUint8 = exports.storeUint8 = exports.decodeHeader = exports.COMPRESS_FROM_BYTES = void 0;
7
+ const node_zlib_1 = __importDefault(require("node:zlib"));
8
+ const textDecoder = new TextDecoder();
9
+ exports.COMPRESS_FROM_BYTES = 150;
10
+ const decodeHeader = (nr) => {
11
+ // 4 bytes
12
+ // type (3 bits)
13
+ // 0 = function
14
+ // 1 = subscribe
15
+ // 2 = unsubscribe
16
+ // 3 = get from observable
17
+ // 4 = auth
18
+ // 5 = error
19
+ // isDeflate (1 bit)
20
+ // len (28 bits)
21
+ const len = nr >> 4;
22
+ const meta = nr & 15;
23
+ const type = meta >> 1;
24
+ const isDeflate = meta & 1;
25
+ return {
26
+ type,
27
+ isDeflate: isDeflate === 1,
28
+ len,
29
+ };
30
+ };
31
+ exports.decodeHeader = decodeHeader;
32
+ const storeUint8 = (buff, n, start, len) => {
33
+ for (let index = start; index < start + len; index++) {
34
+ const byte = n & 0xff;
35
+ buff[index] = byte;
36
+ n = (n - byte) / 256;
37
+ }
38
+ };
39
+ exports.storeUint8 = storeUint8;
40
+ const readUint8 = (buff, start, len) => {
41
+ let n = 0;
42
+ const s = len - 1 + start;
43
+ for (let i = s; i >= start; i--) {
44
+ n = n * 256 + buff[i];
45
+ }
46
+ return n;
47
+ };
48
+ exports.readUint8 = readUint8;
49
+ const encodeHeader = (type, isDeflate, len) => {
50
+ // 4 bytes
51
+ // type (3 bits)
52
+ // 0 = functionData
53
+ // 1 = subscriptionData
54
+ // 2 = subscriptionDiffData
55
+ // isDeflate (1 bit)
56
+ // len (28 bits)
57
+ // @ts-ignore
58
+ const encodedMeta = (type << 1) + (isDeflate | 0);
59
+ const nr = (len << 4) + encodedMeta;
60
+ return nr;
61
+ };
62
+ exports.encodeHeader = encodeHeader;
63
+ const valueToBuffer = (payload) => {
64
+ // can use a more elloborate typed response e.g. number etc in there
65
+ if (payload === undefined) {
66
+ return Buffer.from([]);
67
+ }
68
+ // only stringify if not string...
69
+ return Buffer.from(JSON.stringify(payload));
70
+ };
71
+ exports.valueToBuffer = valueToBuffer;
72
+ const decodePayload = (payload, isDeflate) => {
73
+ if (!isDeflate) {
74
+ return textDecoder.decode(payload);
75
+ }
76
+ const buffer = node_zlib_1.default.inflateRawSync(payload);
77
+ return textDecoder.decode(buffer);
78
+ };
79
+ exports.decodePayload = decodePayload;
80
+ const decodeName = (arr, start, end) => {
81
+ const name = new Uint8Array(arr.slice(start, end));
82
+ return textDecoder.decode(name);
83
+ };
84
+ exports.decodeName = decodeName;
85
+ const encodeFunctionResponse = (id, buffer) => {
86
+ // Type 0
87
+ // | 4 header | 3 id | * payload |
88
+ let isDeflate = false;
89
+ // implement later
90
+ const chunks = 1;
91
+ if (buffer.length > exports.COMPRESS_FROM_BYTES) {
92
+ isDeflate = true;
93
+ buffer = node_zlib_1.default.deflateRawSync(buffer, {});
94
+ }
95
+ if (chunks === 1) {
96
+ const headerSize = 4;
97
+ const idSize = 3;
98
+ const msgSize = idSize + buffer.length;
99
+ const header = (0, exports.encodeHeader)(0, isDeflate, msgSize);
100
+ // not very nessecary but ok
101
+ const buf = new SharedArrayBuffer(headerSize + msgSize);
102
+ const array = new Uint8Array(buf);
103
+ (0, exports.storeUint8)(array, header, 0, 4);
104
+ (0, exports.storeUint8)(array, id, 4, 3);
105
+ if (buffer.length) {
106
+ array.set(buffer, 7);
107
+ }
108
+ return array;
109
+ }
110
+ else {
111
+ console.warn('chunk not implemented yet');
112
+ return new Uint8Array(0);
113
+ }
114
+ };
115
+ exports.encodeFunctionResponse = encodeFunctionResponse;
116
+ const encodeGetResponse = (id) => {
117
+ // Type 4
118
+ // | 4 header | 8 id |
119
+ const header = (0, exports.encodeHeader)(3, false, 8);
120
+ const array = new Uint8Array(12);
121
+ (0, exports.storeUint8)(array, header, 0, 4);
122
+ (0, exports.storeUint8)(array, id, 4, 8);
123
+ return array;
124
+ };
125
+ exports.encodeGetResponse = encodeGetResponse;
126
+ const encodeObservableResponse = (id, checksum, buffer) => {
127
+ // Type 1 (full data)
128
+ // | 4 header | 8 id | 8 checksum | * payload |
129
+ let isDeflate = false;
130
+ // implement later
131
+ const chunks = 1;
132
+ if (buffer.length > exports.COMPRESS_FROM_BYTES) {
133
+ isDeflate = true;
134
+ buffer = node_zlib_1.default.deflateRawSync(buffer, {});
135
+ }
136
+ if (chunks === 1) {
137
+ const msgSize = 16 + buffer.length;
138
+ const header = (0, exports.encodeHeader)(1, isDeflate, msgSize);
139
+ const sBuff = new SharedArrayBuffer(4 + msgSize);
140
+ const array = new Uint8Array(sBuff);
141
+ (0, exports.storeUint8)(array, header, 0, 4);
142
+ (0, exports.storeUint8)(array, id, 4, 8);
143
+ (0, exports.storeUint8)(array, checksum, 12, 8);
144
+ if (buffer.length) {
145
+ array.set(buffer, 20);
146
+ }
147
+ return [array, isDeflate];
148
+ }
149
+ else {
150
+ console.warn('chunk not implemented yet');
151
+ return [new Uint8Array(0), false];
152
+ }
153
+ };
154
+ exports.encodeObservableResponse = encodeObservableResponse;
155
+ const encodeObservableDiffResponse = (id, checksum, previousChecksum, buffer) => {
156
+ // Type 2 (diff data)
157
+ // | 4 header | 8 id | 8 checksum | 8 previousChecksum | * diff |
158
+ let isDeflate = false;
159
+ // implement later
160
+ const chunks = 1;
161
+ if (buffer.length > exports.COMPRESS_FROM_BYTES) {
162
+ isDeflate = true;
163
+ buffer = node_zlib_1.default.deflateRawSync(buffer, {});
164
+ }
165
+ if (chunks === 1) {
166
+ const msgSize = 24 + buffer.length;
167
+ const header = (0, exports.encodeHeader)(2, isDeflate, msgSize);
168
+ const sBuff = new SharedArrayBuffer(4 + msgSize);
169
+ const array = new Uint8Array(sBuff);
170
+ (0, exports.storeUint8)(array, header, 0, 4);
171
+ (0, exports.storeUint8)(array, id, 4, 8);
172
+ (0, exports.storeUint8)(array, checksum, 12, 8);
173
+ (0, exports.storeUint8)(array, previousChecksum, 20, 8);
174
+ if (buffer.length) {
175
+ array.set(buffer, 28);
176
+ }
177
+ return array;
178
+ }
179
+ else {
180
+ console.warn('chunk not implemented yet');
181
+ return new Uint8Array(0);
182
+ }
183
+ };
184
+ exports.encodeObservableDiffResponse = encodeObservableDiffResponse;
185
+ const encodeSimpleResponse = (type, buffer) => {
186
+ // | 4 header | * payload |
187
+ let isDeflate = false;
188
+ if (buffer.length > exports.COMPRESS_FROM_BYTES) {
189
+ isDeflate = true;
190
+ buffer = node_zlib_1.default.deflateRawSync(buffer, {});
191
+ }
192
+ const headerSize = 4;
193
+ const msgSize = buffer.length;
194
+ const header = (0, exports.encodeHeader)(type, isDeflate, msgSize);
195
+ const array = new Uint8Array(headerSize + msgSize);
196
+ (0, exports.storeUint8)(array, header, 0, 4);
197
+ if (buffer.length) {
198
+ array.set(buffer, 4);
199
+ }
200
+ return array;
201
+ };
202
+ const encodeAuthResponse = (buffer) => {
203
+ // Type 4
204
+ return encodeSimpleResponse(4, buffer);
205
+ };
206
+ exports.encodeAuthResponse = encodeAuthResponse;
207
+ const encodeErrorResponse = (buffer) => {
208
+ // Type 5
209
+ return encodeSimpleResponse(5, buffer);
210
+ };
211
+ exports.encodeErrorResponse = encodeErrorResponse;
212
+ //# sourceMappingURL=protocol.js.map