@based/server 4.0.3 → 4.0.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 (193) hide show
  1. package/dist/auth/defaultConfig.js +1 -1
  2. package/dist/auth/defaultConfig.js.map +1 -1
  3. package/dist/auth/index.d.ts +14 -2
  4. package/dist/auth/index.js +12 -5
  5. package/dist/auth/index.js.map +1 -1
  6. package/dist/auth/parseJSONAuthState.d.ts +3 -0
  7. package/dist/auth/parseJSONAuthState.js +10 -0
  8. package/dist/auth/parseJSONAuthState.js.map +1 -0
  9. package/dist/authorize copy.d.ts +9 -0
  10. package/dist/authorize copy.js +69 -0
  11. package/dist/authorize copy.js.map +1 -0
  12. package/dist/authorize.d.ts +5 -5
  13. package/dist/authorize.js +33 -17
  14. package/dist/authorize.js.map +1 -1
  15. package/dist/authorizeAndInstall.d.ts +9 -0
  16. package/dist/authorizeAndInstall.js +69 -0
  17. package/dist/authorizeAndInstall.js.map +1 -0
  18. package/dist/channel/cleanup.d.ts +2 -0
  19. package/dist/channel/cleanup.js +53 -0
  20. package/dist/channel/cleanup.js.map +1 -0
  21. package/dist/channel/create.d.ts +3 -0
  22. package/dist/channel/create.js +33 -0
  23. package/dist/channel/create.js.map +1 -0
  24. package/dist/channel/destroy.d.ts +4 -0
  25. package/dist/channel/destroy.js +48 -0
  26. package/dist/channel/destroy.js.map +1 -0
  27. package/dist/channel/extend.d.ts +4 -0
  28. package/dist/channel/extend.js +16 -0
  29. package/dist/channel/extend.js.map +1 -0
  30. package/dist/channel/get.d.ts +4 -0
  31. package/dist/channel/get.js +15 -0
  32. package/dist/channel/get.js.map +1 -0
  33. package/dist/channel/index.d.ts +8 -0
  34. package/dist/channel/index.js +25 -0
  35. package/dist/channel/index.js.map +1 -0
  36. package/dist/channel/start.d.ts +2 -0
  37. package/dist/channel/start.js +76 -0
  38. package/dist/channel/start.js.map +1 -0
  39. package/dist/channel/subscribe.d.ts +4 -0
  40. package/dist/channel/subscribe.js +28 -0
  41. package/dist/channel/subscribe.js.map +1 -0
  42. package/dist/channel/types.d.ts +14 -0
  43. package/dist/channel/types.js +4 -0
  44. package/dist/channel/types.js.map +1 -0
  45. package/dist/channel/unsub.d.ts +5 -0
  46. package/dist/channel/unsub.js +49 -0
  47. package/dist/channel/unsub.js.map +1 -0
  48. package/dist/createSimpleServer.d.ts +18 -16
  49. package/dist/createSimpleServer.js +92 -26
  50. package/dist/createSimpleServer.js.map +1 -1
  51. package/dist/error/errorTypeHandlers.d.ts +1 -1
  52. package/dist/error/errorTypeHandlers.js +16 -46
  53. package/dist/error/errorTypeHandlers.js.map +1 -1
  54. package/dist/error/index.js +3 -0
  55. package/dist/error/index.js.map +1 -1
  56. package/dist/error/types.d.ts +22 -27
  57. package/dist/error/types.js +2 -6
  58. package/dist/error/types.js.map +1 -1
  59. package/dist/functionApi/channelSubscribe.d.ts +3 -0
  60. package/dist/functionApi/channelSubscribe.js +43 -0
  61. package/dist/functionApi/channelSubscribe.js.map +1 -0
  62. package/dist/functionApi/client/channel.d.ts +10 -0
  63. package/dist/functionApi/client/channel.js +33 -0
  64. package/dist/functionApi/client/channel.js.map +1 -0
  65. package/dist/functionApi/client/index.d.ts +5 -3
  66. package/dist/functionApi/client/index.js +10 -5
  67. package/dist/functionApi/client/index.js.map +1 -1
  68. package/dist/functionApi/get.js +2 -2
  69. package/dist/functionApi/get.js.map +1 -1
  70. package/dist/functionApi/index.d.ts +3 -0
  71. package/dist/functionApi/index.js +3 -1
  72. package/dist/functionApi/index.js.map +1 -1
  73. package/dist/functionApi/observe.js +2 -2
  74. package/dist/functionApi/observe.js.map +1 -1
  75. package/dist/functionApi/publish.d.ts +3 -0
  76. package/dist/functionApi/publish.js +29 -0
  77. package/dist/functionApi/publish.js.map +1 -0
  78. package/dist/functionApi/stream.d.ts +2 -2
  79. package/dist/functionApi/stream.js +44 -6
  80. package/dist/functionApi/stream.js.map +1 -1
  81. package/dist/functions/index.d.ts +3 -2
  82. package/dist/functions/index.js +55 -34
  83. package/dist/functions/index.js.map +1 -1
  84. package/dist/functions/timeout.js +4 -2
  85. package/dist/functions/timeout.js.map +1 -1
  86. package/dist/functions/types.d.ts +100 -56
  87. package/dist/functions/types.js +16 -5
  88. package/dist/functions/types.js.map +1 -1
  89. package/dist/incoming/http/function.js +26 -28
  90. package/dist/incoming/http/function.js.map +1 -1
  91. package/dist/incoming/http/index.js +33 -7
  92. package/dist/incoming/http/index.js.map +1 -1
  93. package/dist/incoming/http/publish.d.ts +3 -0
  94. package/dist/incoming/http/publish.js +82 -0
  95. package/dist/incoming/http/publish.js.map +1 -0
  96. package/dist/incoming/http/query.js +13 -23
  97. package/dist/incoming/http/query.js.map +1 -1
  98. package/dist/incoming/http/streamFunction/multiPart/index.js +9 -9
  99. package/dist/incoming/http/streamFunction/multiPart/index.js.map +1 -1
  100. package/dist/incoming/http/streamFunction/multiPart/readFormData.d.ts +1 -1
  101. package/dist/incoming/http/streamFunction/multiPart/readFormData.js +2 -2
  102. package/dist/incoming/http/streamFunction/multiPart/readFormData.js.map +1 -1
  103. package/dist/incoming/http/streamFunction/stream/createStream.d.ts +2 -3
  104. package/dist/incoming/http/streamFunction/stream/createStream.js +2 -2
  105. package/dist/incoming/http/streamFunction/stream/createStream.js.map +1 -1
  106. package/dist/incoming/http/streamFunction/stream/index.js +4 -3
  107. package/dist/incoming/http/streamFunction/stream/index.js.map +1 -1
  108. package/dist/incoming/index.d.ts +1 -1
  109. package/dist/incoming/index.js +66 -54
  110. package/dist/incoming/index.js.map +1 -1
  111. package/dist/incoming/upgrade.js +19 -12
  112. package/dist/incoming/upgrade.js.map +1 -1
  113. package/dist/incoming/ws/auth.d.ts +1 -1
  114. package/dist/incoming/ws/auth.js +70 -22
  115. package/dist/incoming/ws/auth.js.map +1 -1
  116. package/dist/incoming/ws/channelPublish.d.ts +2 -0
  117. package/dist/incoming/ws/channelPublish.js +60 -0
  118. package/dist/incoming/ws/channelPublish.js.map +1 -0
  119. package/dist/incoming/ws/channelSubscribe.d.ts +7 -0
  120. package/dist/incoming/ws/channelSubscribe.js +128 -0
  121. package/dist/incoming/ws/channelSubscribe.js.map +1 -0
  122. package/dist/incoming/ws/function.js +14 -7
  123. package/dist/incoming/ws/function.js.map +1 -1
  124. package/dist/incoming/ws/get.js +33 -29
  125. package/dist/incoming/ws/get.js.map +1 -1
  126. package/dist/incoming/ws/index.js +22 -2
  127. package/dist/incoming/ws/index.js.map +1 -1
  128. package/dist/incoming/ws/observable.js +24 -21
  129. package/dist/incoming/ws/observable.js.map +1 -1
  130. package/dist/incoming/ws/types.d.ts +1 -1
  131. package/dist/index.d.ts +2 -1
  132. package/dist/index.js +3 -3
  133. package/dist/index.js.map +1 -1
  134. package/dist/installFn.js +32 -34
  135. package/dist/installFn.js.map +1 -1
  136. package/dist/observable/cleanup.d.ts +2 -0
  137. package/dist/observable/cleanup.js +66 -0
  138. package/dist/observable/cleanup.js.map +1 -0
  139. package/dist/observable/create.js +1 -0
  140. package/dist/observable/create.js.map +1 -1
  141. package/dist/observable/destroy.d.ts +2 -0
  142. package/dist/observable/destroy.js +26 -30
  143. package/dist/observable/destroy.js.map +1 -1
  144. package/dist/observable/extendCache.js +2 -3
  145. package/dist/observable/extendCache.js.map +1 -1
  146. package/dist/observable/genObservableId.js +3 -0
  147. package/dist/observable/genObservableId.js.map +1 -1
  148. package/dist/observable/get.d.ts +1 -1
  149. package/dist/observable/get.js +3 -3
  150. package/dist/observable/get.js.map +1 -1
  151. package/dist/observable/send.d.ts +1 -1
  152. package/dist/observable/send.js +2 -2
  153. package/dist/observable/send.js.map +1 -1
  154. package/dist/observable/start/error.d.ts +1 -1
  155. package/dist/observable/start/error.js +7 -2
  156. package/dist/observable/start/error.js.map +1 -1
  157. package/dist/observable/start/index.js +3 -1
  158. package/dist/observable/start/index.js.map +1 -1
  159. package/dist/observable/start/update.d.ts +1 -4
  160. package/dist/observable/start/update.js +0 -1
  161. package/dist/observable/start/update.js.map +1 -1
  162. package/dist/observable/subscribe.d.ts +1 -1
  163. package/dist/observable/subscribe.js +7 -8
  164. package/dist/observable/subscribe.js.map +1 -1
  165. package/dist/observable/types.d.ts +9 -9
  166. package/dist/observable/unsub.d.ts +1 -1
  167. package/dist/observable/unsub.js +9 -6
  168. package/dist/observable/unsub.js.map +1 -1
  169. package/dist/protocol.d.ts +1 -0
  170. package/dist/protocol.js +60 -48
  171. package/dist/protocol.js.map +1 -1
  172. package/dist/security.js +1 -0
  173. package/dist/security.js.map +1 -1
  174. package/dist/sendError.js +2 -4
  175. package/dist/sendError.js.map +1 -1
  176. package/dist/sendHttpResponse.js +16 -3
  177. package/dist/sendHttpResponse.js.map +1 -1
  178. package/dist/server.d.ts +24 -12
  179. package/dist/server.js +14 -8
  180. package/dist/server.js.map +1 -1
  181. package/dist/verifyRoute.d.ts +4 -3
  182. package/dist/verifyRoute.js +31 -20
  183. package/dist/verifyRoute.js.map +1 -1
  184. package/package.json +7 -7
  185. package/dist/functionApi/callFunction copy.d.ts +0 -3
  186. package/dist/functionApi/callFunction copy.js +0 -29
  187. package/dist/functionApi/callFunction copy.js.map +0 -1
  188. package/dist/incoming/http/get.d.ts +0 -4
  189. package/dist/incoming/http/get.js +0 -156
  190. package/dist/incoming/http/get.js.map +0 -1
  191. package/dist/incoming/http/streamFunction/DataStream.d.ts +0 -15
  192. package/dist/incoming/http/streamFunction/DataStream.js +0 -58
  193. package/dist/incoming/http/streamFunction/DataStream.js.map +0 -1
@@ -19,6 +19,7 @@ const types_1 = require("./types");
19
19
  const utils_1 = require("@saulx/utils");
20
20
  const timeout_1 = require("./timeout");
21
21
  const observable_1 = require("../observable");
22
+ const channel_1 = require("../channel");
22
23
  __exportStar(require("./types"), exports);
23
24
  class BasedFunctions {
24
25
  constructor(server, config) {
@@ -28,6 +29,7 @@ class BasedFunctions {
28
29
  stream: 5e6,
29
30
  query: 2500,
30
31
  function: 20e3,
32
+ channel: 500,
31
33
  };
32
34
  this.paths = {};
33
35
  this.specs = {};
@@ -45,6 +47,10 @@ class BasedFunctions {
45
47
  if ((0, types_1.isQueryFunctionSpec)(spec) && this.server.activeObservables[name]) {
46
48
  (0, timeout_1.updateTimeoutCounter)(spec);
47
49
  }
50
+ else if ((0, types_1.isChannelFunctionSpec)(spec) &&
51
+ this.server.activeChannels[name]) {
52
+ (0, timeout_1.updateTimeoutCounter)(spec);
53
+ }
48
54
  else if ((0, timeout_1.fnIsTimedOut)(spec)) {
49
55
  q.push(this.uninstall(name, spec));
50
56
  }
@@ -60,44 +66,36 @@ class BasedFunctions {
60
66
  else {
61
67
  this.config = config;
62
68
  }
63
- if (this.config.idleTimeout === undefined) {
64
- this.config.idleTimeout = 60e3; // 1 min
65
- }
66
- if (this.config.memCacheTimeout === undefined) {
67
- this.config.memCacheTimeout = 3e3;
69
+ if (this.config.uninstallAfterIdleTime === undefined) {
70
+ this.config.uninstallAfterIdleTime = 60e3; // 1 min
68
71
  }
69
- if (this.config.maxWorkers === undefined) {
70
- this.config.maxWorkers = 1;
72
+ if (this.config.closeAfterIdleTime === undefined) {
73
+ this.config.closeAfterIdleTime = {
74
+ query: 3e3,
75
+ channel: 60e3, // 3 1 Min
76
+ };
71
77
  }
72
78
  if (this.unregisterTimeout) {
73
79
  clearTimeout(this.unregisterTimeout);
74
80
  }
75
81
  this.uninstallLoop();
76
82
  }
77
- async updateFunction(spec) {
78
- const { name } = spec;
83
+ async update(name, checksum) {
79
84
  const prevSpec = this.specs[name];
80
- if (prevSpec) {
81
- if (prevSpec.function !== spec.function) {
82
- if (this.beingUninstalled[name]) {
83
- delete this.beingUninstalled[name];
84
- }
85
- (0, timeout_1.updateTimeoutCounter)(spec);
86
- await this.installGaurdedFromConfig(name);
87
- await this.config.uninstall({
88
- server: this.server,
89
- function: prevSpec,
90
- name,
91
- });
92
- this.update(spec);
85
+ if (prevSpec && prevSpec.checksum !== checksum) {
86
+ if (this.beingUninstalled[name]) {
87
+ delete this.beingUninstalled[name];
93
88
  }
94
- else {
95
- this.update(spec);
89
+ const spec = await this.installGaurdedFromConfig(name);
90
+ await this.config.uninstall({
91
+ server: this.server,
92
+ function: prevSpec,
93
+ name,
94
+ });
95
+ if (spec) {
96
+ this.updateInternal(spec);
96
97
  }
97
98
  }
98
- else {
99
- this.update(spec);
100
- }
101
99
  }
102
100
  async installGaurdedFromConfig(name) {
103
101
  if (this.installsInProgress[name]) {
@@ -118,7 +116,7 @@ class BasedFunctions {
118
116
  }
119
117
  spec = await this.installGaurdedFromConfig(name);
120
118
  if (spec) {
121
- this.update(spec);
119
+ this.updateInternal(spec);
122
120
  return this.getFromStore(name);
123
121
  }
124
122
  return null;
@@ -140,7 +138,7 @@ class BasedFunctions {
140
138
  }
141
139
  return null;
142
140
  }
143
- update(spec) {
141
+ updateInternal(spec) {
144
142
  if (!spec) {
145
143
  return false;
146
144
  }
@@ -148,18 +146,23 @@ class BasedFunctions {
148
146
  if ((0, utils_1.deepEqual)(spec, this.specs[spec.name])) {
149
147
  return false;
150
148
  }
151
- if (!spec.idleTimeout) {
152
- spec.idleTimeout = this.config.idleTimeout;
149
+ if (!spec.uninstallAfterIdleTime) {
150
+ spec.uninstallAfterIdleTime = this.config.uninstallAfterIdleTime;
153
151
  }
154
152
  if (spec.timeoutCounter === undefined) {
155
153
  spec.timeoutCounter =
156
- spec.idleTimeout === 0 ? -1 : Math.ceil(spec.idleTimeout / 1e3);
154
+ spec.uninstallAfterIdleTime === 0
155
+ ? -1
156
+ : Math.ceil(spec.uninstallAfterIdleTime / 1e3);
157
157
  }
158
158
  if (spec.path) {
159
159
  this.paths[spec.path] = spec.name;
160
160
  }
161
161
  if (!spec.maxPayloadSize) {
162
- if ((0, types_1.isQueryFunctionSpec)(spec)) {
162
+ if ((0, types_1.isChannelFunctionSpec)(spec)) {
163
+ spec.maxPayloadSize = this.maxPayLoadSizeDefaults.channel;
164
+ }
165
+ else if ((0, types_1.isQueryFunctionSpec)(spec)) {
163
166
  spec.maxPayloadSize = this.maxPayLoadSizeDefaults.query;
164
167
  }
165
168
  else if ((0, types_1.isStreamFunctionSpec)(spec)) {
@@ -175,7 +178,22 @@ class BasedFunctions {
175
178
  const previousChecksum = this.specs[spec.name]?.checksum ?? -1;
176
179
  // @ts-ignore maxpayload and rlimit tokens added on line 184...
177
180
  this.specs[spec.name] = spec;
178
- if (this.specs[spec.name] && this.server.activeObservables[spec.name]) {
181
+ if (this.specs[spec.name] && this.server.activeChannels[spec.name]) {
182
+ if (!(0, types_1.isChannelFunctionSpec)(spec)) {
183
+ for (const [id] of this.server.activeChannels[spec.name]) {
184
+ (0, channel_1.destroyChannel)(this.server, id);
185
+ }
186
+ }
187
+ else {
188
+ if (previousChecksum !== spec.checksum) {
189
+ for (const [id] of this.server.activeChannels[spec.name]) {
190
+ (0, channel_1.startChannel)(this.server, id, true);
191
+ }
192
+ }
193
+ }
194
+ }
195
+ else if (this.specs[spec.name] &&
196
+ this.server.activeObservables[spec.name]) {
179
197
  if (!(0, types_1.isQueryFunctionSpec)(spec)) {
180
198
  for (const [id] of this.server.activeObservables[spec.name]) {
181
199
  (0, observable_1.destroyObs)(this.server, id);
@@ -219,6 +237,9 @@ class BasedFunctions {
219
237
  return false;
220
238
  }
221
239
  this.beingUninstalled[name] = true;
240
+ if (spec.uninstall) {
241
+ await spec.uninstall();
242
+ }
222
243
  if (await this.config.uninstall({
223
244
  server: this.server,
224
245
  function: spec,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/functions/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/functions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,mCAQgB;AAChB,wCAAmD;AACnD,uCAA8D;AAC9D,8CAAiD;AACjD,wCAAyD;AACzD,0CAAuB;AAEvB,MAAa,cAAc;IAuCzB,YAAY,MAAmB,EAAE,MAAuB;QApCxD,UAAK,GAAW,CAAC,CAAA;QAMjB,uBAAkB,GAAqC,EAAE,CAAA;QAEzD,2BAAsB,GAKlB;YACF,MAAM,EAAE,GAAG;YACX,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,GAAG;SACb,CAAA;QAED,UAAK,GAED,EAAE,CAAA;QAEN,UAAK,GAMD,EAAE,CAAA;QAEN,qBAAgB,GAEZ,EAAE,CAAA;QAGJ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;SAC1B;IACH,CAAC;IAED,aAAa;QACX,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE;YAC7C,MAAM,CAAC,GAAG,EAAE,CAAA;YACZ,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;gBAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBAC7B,IAAI,IAAA,2BAAmB,EAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;oBACpE,IAAA,8BAAoB,EAAC,IAAI,CAAC,CAAA;iBAC3B;qBAAM,IACL,IAAA,6BAAqB,EAAC,IAAI,CAAC;oBAC3B,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,EAChC;oBACA,IAAA,8BAAoB,EAAC,IAAI,CAAC,CAAA;iBAC3B;qBAAM,IAAI,IAAA,sBAAY,EAAC,IAAI,CAAC,EAAE;oBAC7B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;iBACnC;aACF;YACD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YACpB,IAAI,CAAC,aAAa,EAAE,CAAA;QACtB,CAAC,EAAE,GAAG,CAAC,CAAA;IACT,CAAC;IAED,YAAY,CAAC,MAAsB;QACjC,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAA,iBAAS,EAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;SAC/B;aAAM;YACL,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;SACrB;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,sBAAsB,KAAK,SAAS,EAAE;YACpD,IAAI,CAAC,MAAM,CAAC,sBAAsB,GAAG,IAAI,CAAA,CAAC,QAAQ;SACnD;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,KAAK,SAAS,EAAE;YAChD,IAAI,CAAC,MAAM,CAAC,kBAAkB,GAAG;gBAC/B,KAAK,EAAE,GAAG;gBACV,OAAO,EAAE,IAAI,EAAE,UAAU;aAC1B,CAAA;SACF;QAED,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;SACrC;QAED,IAAI,CAAC,aAAa,EAAE,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,QAAgB;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACjC,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,EAAE;YAC9C,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;gBAC/B,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;aACnC;YACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAA;YACtD,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;gBAC1B,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ,EAAE,QAAQ;gBAClB,IAAI;aACL,CAAC,CAAA;YACF,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;aAC1B;SACF;IACH,CAAC;IAEO,KAAK,CAAC,wBAAwB,CACpC,IAAY;QAEZ,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE;YACjC,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;SACrC;QACD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAClD,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI;SACL,CAAC,CAAA;QACF,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;QAC7C,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;QACpC,OAAO,CAAC,CAAA;IACV,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAY;QACxB,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QAElC,IAAI,IAAI,EAAE;YACR,OAAO,IAAI,CAAA;SACZ;QAED,IAAI,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAA;QAEhD,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;YACzB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;SAC/B;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,eAAe,CAAC,IAAY;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAED,KAAK,CAAC,IAAa,EAAE,IAAa;QAChC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;IAC/D,CAAC;IAED,YAAY,CAAC,IAAY;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC7B,IAAI,IAAI,EAAE;YACR,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;gBAC/B,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;aACnC;YACD,IAAA,8BAAoB,EAAC,IAAI,CAAC,CAAA;YAC1B,OAAO,IAAI,CAAA;SACZ;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,cAAc,CAAC,IAAe;QAC5B,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,KAAK,CAAA;SACb;QAED,6DAA6D;QAC7D,IAAI,IAAA,iBAAS,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;YAC1C,OAAO,KAAK,CAAA;SACb;QAED,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAChC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAA;SACjE;QAED,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE;YACrC,IAAI,CAAC,cAAc;gBACjB,IAAI,CAAC,sBAAsB,KAAK,CAAC;oBAC/B,CAAC,CAAC,CAAC,CAAC;oBACJ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,GAAG,GAAG,CAAC,CAAA;SACnD;QAED,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAA;SAClC;QAED,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,IAAI,IAAA,6BAAqB,EAAC,IAAI,CAAC,EAAE;gBAC/B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAA;aAC1D;iBAAM,IAAI,IAAA,2BAAmB,EAAC,IAAI,CAAC,EAAE;gBACpC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAA;aACxD;iBAAM,IAAI,IAAA,4BAAoB,EAAC,IAAI,CAAC,EAAE;gBACrC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAA;aACzD;iBAAM;gBACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAA;aAC3D;SACF;QAED,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAA;SACzB;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,IAAI,CAAC,CAAC,CAAA;QAE9D,+DAA+D;QAC/D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;QAE5B,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAClE,IAAI,CAAC,IAAA,6BAAqB,EAAC,IAAI,CAAC,EAAE;gBAChC,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACxD,IAAA,wBAAc,EAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;iBAChC;aACF;iBAAM;gBACL,IAAI,gBAAgB,KAAK,IAAI,CAAC,QAAQ,EAAE;oBACtC,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;wBACxD,IAAA,sBAAY,EAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,CAAA;qBACpC;iBACF;aACF;SACF;aAAM,IACL,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EACxC;YACA,IAAI,CAAC,IAAA,2BAAmB,EAAC,IAAI,CAAC,EAAE;gBAC9B,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAC3D,IAAA,uBAAU,EAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;iBAC5B;aACF;iBAAM;gBACL,IAAI,gBAAgB,KAAK,IAAI,CAAC,QAAQ,EAAE;oBACtC,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;wBAC3D,IAAA,kBAAK,EAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;qBACvB;iBACF;aACF;SACF;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC7B,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,KAAK,CAAA;SACb;QACD,IAAI,IAAA,4BAAoB,EAAC,IAAI,CAAC,EAAE;YAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;YACrD,IAAI,SAAS,EAAE;gBACb,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI,SAAS,EAAE;oBAC5B,IAAA,uBAAU,EAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;iBAC5B;gBACD,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;aAC3C;SACF;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACvB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,IAAwB;QACpD,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;YAC/B,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,IAAI,CAAC,CAAA;SACtD;QACD,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE;YAC3B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;SACxB;QACD,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,KAAK,CAAA;SACb;QAED,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;QAElC,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,MAAM,IAAI,CAAC,SAAS,EAAE,CAAA;SACvB;QAED,IACE,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YAC1B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI;YACd,IAAI;SACL,CAAC,EACF;YACA,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;gBAC/B,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;gBAClC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;aACzB;iBAAM;gBACL,OAAO,CAAC,IAAI,CAAC,wCAAwC,EAAE,IAAI,CAAC,CAAA;aAC7D;SACF;QAED,OAAO,KAAK,CAAA;IACd,CAAC;CACF;AAlSD,wCAkSC"}
@@ -6,7 +6,7 @@ const fnIsTimedOut = (spec) => {
6
6
  if (spec.timeoutCounter === 0) {
7
7
  return true;
8
8
  }
9
- if (spec.idleTimeout > 0 && spec.timeoutCounter > 0) {
9
+ if (spec.uninstallAfterIdleTime > 0 && spec.timeoutCounter > 0) {
10
10
  spec.timeoutCounter--;
11
11
  }
12
12
  }
@@ -16,7 +16,9 @@ exports.fnIsTimedOut = fnIsTimedOut;
16
16
  const updateTimeoutCounter = (spec) => {
17
17
  if (spec.timeoutCounter !== -1) {
18
18
  spec.timeoutCounter =
19
- spec.idleTimeout === -1 ? -1 : Math.ceil(spec.idleTimeout / 1e3 / 3);
19
+ spec.uninstallAfterIdleTime === -1
20
+ ? -1
21
+ : Math.ceil(spec.uninstallAfterIdleTime / 1e3 / 3);
20
22
  }
21
23
  };
22
24
  exports.updateTimeoutCounter = updateTimeoutCounter;
@@ -1 +1 @@
1
- {"version":3,"file":"timeout.js","sourceRoot":"","sources":["../../src/functions/timeout.ts"],"names":[],"mappings":";;;AAEO,MAAM,YAAY,GAAG,CAAC,IAAe,EAAW,EAAE;IACvD,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC,CAAC,EAAE;QAC9B,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC,EAAE;YAC7B,OAAO,IAAI,CAAA;SACZ;QACD,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE;YACnD,IAAI,CAAC,cAAc,EAAE,CAAA;SACtB;KACF;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAVY,QAAA,YAAY,gBAUxB;AAEM,MAAM,oBAAoB,GAAG,CAAC,IAAe,EAAE,EAAE;IACtD,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC,CAAC,EAAE;QAC9B,IAAI,CAAC,cAAc;YACjB,IAAI,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,GAAG,CAAC,CAAC,CAAA;KACvE;AACH,CAAC,CAAA;AALY,QAAA,oBAAoB,wBAKhC"}
1
+ {"version":3,"file":"timeout.js","sourceRoot":"","sources":["../../src/functions/timeout.ts"],"names":[],"mappings":";;;AAEO,MAAM,YAAY,GAAG,CAAC,IAAe,EAAW,EAAE;IACvD,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC,CAAC,EAAE;QAC9B,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC,EAAE;YAC7B,OAAO,IAAI,CAAA;SACZ;QACD,IAAI,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE;YAC9D,IAAI,CAAC,cAAc,EAAE,CAAA;SACtB;KACF;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAVY,QAAA,YAAY,gBAUxB;AAEM,MAAM,oBAAoB,GAAG,CAAC,IAAe,EAAE,EAAE;IACtD,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC,CAAC,EAAE;QAC9B,IAAI,CAAC,cAAc;YACjB,IAAI,CAAC,sBAAsB,KAAK,CAAC,CAAC;gBAChC,CAAC,CAAC,CAAC,CAAC;gBACJ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,GAAG,GAAG,GAAG,CAAC,CAAC,CAAA;KACvD;AACH,CAAC,CAAA;AAPY,QAAA,oBAAoB,wBAOhC"}
@@ -1,55 +1,19 @@
1
- import { BasedQueryFunction, BasedFunction, HttpResponse, BasedStreamFunction } from '@based/functions';
1
+ import { BasedQueryFunction, BasedFunction, BasedChannelFunction, HttpResponse, UninstallFunction, BasedStreamFunction, BasedChannelPublishFunction, Authorize } from '@based/functions';
2
2
  import { BasedServer } from '../server';
3
- declare type Route = {
4
- name: string;
5
- path?: string;
6
- maxPayloadSize?: number;
7
- rateLimitTokens?: number;
8
- public?: boolean;
9
- headers?: string[];
10
- internalOnly?: boolean;
11
- };
12
- export declare type BasedFunctionRoute = Route;
13
- export declare type BasedQueryFunctionRoute = Route & {
14
- query: true;
15
- };
16
- export declare type BasedStreamFunctionRoute = Route & {
17
- stream: true;
18
- };
19
- export declare type BasedQueryFunctionSpec = {
20
- checksum: number;
21
- function: BasedQueryFunction;
22
- memCacheTimeout?: number;
23
- idleTimeout?: number;
24
- timeoutCounter?: number;
25
- httpResponse?: HttpResponse;
26
- } & BasedQueryFunctionRoute;
27
- export declare type BasedStreamFunctionSpec = {
28
- checksum: number;
29
- function: BasedStreamFunction;
30
- maxExecTime?: number;
31
- idleTimeout?: number;
32
- timeoutCounter?: number;
33
- } & BasedStreamFunctionRoute;
34
- export declare type BasedFunctionSpec = {
35
- checksum: number;
36
- function: BasedFunction;
37
- httpResponse?: HttpResponse;
38
- maxExecTime?: number;
39
- idleTimeout?: number;
40
- timeoutCounter?: number;
41
- } & BasedFunctionRoute;
42
- export declare type BasedRoute = BasedFunctionRoute | BasedQueryFunctionRoute | BasedStreamFunctionRoute;
43
- export declare type BasedSpec<R extends BasedRoute = BasedRoute> = R extends BasedQueryFunctionRoute ? BasedQueryFunctionSpec : R extends BasedStreamFunctionRoute ? BasedStreamFunctionSpec : BasedFunctionSpec;
44
- export declare type FunctionConfig = {
45
- memCacheTimeout?: number;
46
- idleTimeout?: number;
47
- maxWorkers?: number;
48
- importWrapperPath?: string;
3
+ export type FunctionConfig = {
4
+ /** Default number to close channels & queries when no subscribers are active in ms */
5
+ closeAfterIdleTime?: {
6
+ query: number;
7
+ channel: number;
8
+ };
9
+ /** Default time to uinstall function after it has been idle in ms */
10
+ uninstallAfterIdleTime?: number;
11
+ /** Default max payload sizes in bytes */
49
12
  maxPayLoadSizeDefaults?: {
50
13
  stream: number;
51
14
  query: number;
52
15
  function: number;
16
+ channel: number;
53
17
  };
54
18
  route: (opts: {
55
19
  server: BasedServer;
@@ -62,20 +26,100 @@ export declare type FunctionConfig = {
62
26
  install: (opts: {
63
27
  server: BasedServer;
64
28
  name: string;
65
- function?: BasedFunctionSpec | BasedQueryFunctionSpec;
66
- }) => Promise<null | BasedQueryFunctionSpec | BasedStreamFunctionSpec | BasedFunctionSpec>;
29
+ function?: BasedSpec;
30
+ }) => Promise<null | BasedSpec>;
67
31
  uninstall: (opts: {
68
32
  server: BasedServer;
69
33
  name: string;
70
- function: BasedQueryFunctionSpec | BasedStreamFunctionSpec | BasedFunctionSpec;
34
+ function: BasedSpec;
71
35
  }) => Promise<boolean>;
72
36
  };
73
- export declare function isQueryFunctionSpec(fn: BasedQueryFunctionSpec | BasedStreamFunctionSpec | BasedFunctionSpec): fn is BasedQueryFunctionSpec;
74
- export declare function isStreamFunctionSpec(fn: BasedQueryFunctionSpec | BasedFunctionSpec | BasedStreamFunctionSpec): fn is BasedQueryFunctionSpec;
75
- export declare function isFunctionSpec(fn: BasedQueryFunctionSpec | BasedFunctionSpec | BasedStreamFunctionSpec): fn is BasedSpec;
37
+ type Route = {
38
+ /** Function name */
39
+ name: string;
40
+ /** In addition to the name, a function can have a custom path for HTTP requests.
41
+ * For example: `path: 'my/custom/path'` will result in the function being
42
+ * available with a request to `edgeurl.based.io/my/custom/path`
43
+ */
44
+ path?: string;
45
+ /** In bytes. `-1` indicates no size limit */
46
+ maxPayloadSize?: number;
47
+ /** Cost in tokens for this function call. */
48
+ rateLimitTokens?: number;
49
+ /** A function marked as `public` will skip the call to authorize. */
50
+ public?: boolean;
51
+ /** Array of headers that this function expects to receive. */
52
+ headers?: string[];
53
+ /** A function marked as `internalOnly` will only be accessible from other server side functions,
54
+ * and not through the public internet.
55
+ */
56
+ internalOnly?: boolean;
57
+ /** Can hold extra information about a spec */
58
+ data?: any;
59
+ };
60
+ export type BasedFunctionRoute = Route;
61
+ export type BasedQueryFunctionRoute = Route & {
62
+ query: true;
63
+ };
64
+ export type BasedStreamFunctionRoute = Route & {
65
+ stream: true;
66
+ };
67
+ export type BasedChannelFunctionRoute = Route & {
68
+ channel: true;
69
+ publisher?: {
70
+ public?: true;
71
+ };
72
+ };
73
+ export type BasedInstallableFunctionSpec = {
74
+ /** Version hash of the BasedFunction */
75
+ checksum: number;
76
+ /** Uinstall function after it has been idle, in ms */
77
+ uninstallAfterIdleTime?: number;
78
+ /** In ms */
79
+ timeoutCounter?: number;
80
+ /** Hook that fires on uninstall of the function e.g. to clean up database connections */
81
+ uninstall?: UninstallFunction;
82
+ /** Specific authorize for this function */
83
+ authorize?: Authorize;
84
+ };
85
+ export type BasedQueryFunctionSpec = {
86
+ function: BasedQueryFunction;
87
+ /** How long should the query function remain active after all subscribers are gone, in ms */
88
+ closeAfterIdleTime?: number;
89
+ /** When in an HTTP context, this function is called to wrap the return value of the BasedFunction, and inject headers and a status code */
90
+ httpResponse?: HttpResponse;
91
+ } & BasedQueryFunctionRoute & BasedInstallableFunctionSpec;
92
+ export type BasedStreamFunctionSpec = {
93
+ function: BasedStreamFunction;
94
+ /** Maximum allowed execution time, in ms */
95
+ maxExecTime?: number;
96
+ } & BasedStreamFunctionRoute & BasedInstallableFunctionSpec;
97
+ export type BasedFunctionSpec = {
98
+ function: BasedFunction;
99
+ /** When in an HTTP context, this function is called to wrap the return value of the BasedFunction, and inject headers and a status code */
100
+ httpResponse?: HttpResponse;
101
+ /** Maximum allowed execution time, in ms */
102
+ maxExecTime?: number;
103
+ } & BasedFunctionRoute & BasedInstallableFunctionSpec;
104
+ export type BasedChannelFunctionSpec = {
105
+ function: BasedChannelFunction;
106
+ /** Publish allows publishing to channels */
107
+ publish: BasedChannelPublishFunction;
108
+ /** How long should the channel remain active after all subscribers ae gone, in ms */
109
+ closeAfterIdleTime?: number;
110
+ /** When in an HTTP context, this function is called to wrap the return value of the publish endpoint, and inject headers and a status code */
111
+ httpResponse?: HttpResponse;
112
+ } & BasedChannelFunctionRoute & BasedInstallableFunctionSpec;
113
+ export type BasedRoute = BasedFunctionRoute | BasedQueryFunctionRoute | BasedStreamFunctionRoute | BasedChannelFunctionRoute;
114
+ export type BasedSpec<R extends BasedRoute = BasedRoute> = R extends BasedChannelFunctionRoute ? BasedChannelFunctionSpec : R extends BasedQueryFunctionRoute ? BasedQueryFunctionSpec : R extends BasedStreamFunctionRoute ? BasedStreamFunctionSpec : BasedFunctionSpec;
115
+ export declare function isChannelFunctionSpec(fn: BasedSpec): fn is BasedChannelFunctionSpec;
116
+ export declare function isQueryFunctionSpec(fn: BasedSpec): fn is BasedQueryFunctionSpec;
117
+ export declare function isStreamFunctionSpec(fn: BasedSpec): fn is BasedQueryFunctionSpec;
118
+ export declare function isFunctionSpec(fn: BasedSpec): fn is BasedSpec;
76
119
  export declare function isSpec(fn: any): fn is BasedSpec;
77
- export declare function isQueryFunctionRoute(fn: BasedFunctionRoute | BasedQueryFunctionRoute | BasedStreamFunctionRoute): fn is BasedQueryFunctionRoute;
78
- export declare function isStreamFunctionRoute(fn: BasedFunctionRoute | BasedQueryFunctionRoute | BasedStreamFunctionRoute): fn is BasedStreamFunctionRoute;
79
- export declare function isFunctionRoute(fn: BasedFunctionRoute | BasedQueryFunctionRoute | BasedStreamFunctionRoute): fn is BasedFunctionRoute;
120
+ export declare function isQueryFunctionRoute(fn: BasedRoute): fn is BasedQueryFunctionRoute;
121
+ export declare function isStreamFunctionRoute(fn: BasedRoute): fn is BasedStreamFunctionRoute;
122
+ export declare function isChannelFunctionRoute(fn: BasedRoute): fn is BasedChannelFunctionRoute;
123
+ export declare function isFunctionRoute(fn: BasedRoute): fn is BasedFunctionRoute;
80
124
  export declare function isRoute(route: any): route is BasedRoute;
81
125
  export {};
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isRoute = exports.isFunctionRoute = exports.isStreamFunctionRoute = exports.isQueryFunctionRoute = exports.isSpec = exports.isFunctionSpec = exports.isStreamFunctionSpec = exports.isQueryFunctionSpec = void 0;
4
- // specs
3
+ exports.isRoute = exports.isFunctionRoute = exports.isChannelFunctionRoute = exports.isStreamFunctionRoute = exports.isQueryFunctionRoute = exports.isSpec = exports.isFunctionSpec = exports.isStreamFunctionSpec = exports.isQueryFunctionSpec = exports.isChannelFunctionSpec = void 0;
4
+ // ---------- specs -------------
5
+ function isChannelFunctionSpec(fn) {
6
+ return fn.channel === true;
7
+ }
8
+ exports.isChannelFunctionSpec = isChannelFunctionSpec;
5
9
  function isQueryFunctionSpec(fn) {
6
10
  return fn.query === true;
7
11
  }
@@ -17,10 +21,13 @@ exports.isFunctionSpec = isFunctionSpec;
17
21
  function isSpec(fn) {
18
22
  return (fn &&
19
23
  typeof fn === 'object' &&
20
- (isFunctionSpec(fn) || isStreamFunctionSpec(fn) || isQueryFunctionSpec(fn)));
24
+ (isFunctionSpec(fn) ||
25
+ isStreamFunctionSpec(fn) ||
26
+ isQueryFunctionSpec(fn) ||
27
+ isChannelFunctionSpec(fn)));
21
28
  }
22
29
  exports.isSpec = isSpec;
23
- // routes
30
+ // ---------- routes -------------
24
31
  function isQueryFunctionRoute(fn) {
25
32
  return fn.query === true;
26
33
  }
@@ -29,8 +36,12 @@ function isStreamFunctionRoute(fn) {
29
36
  return fn.stream === true;
30
37
  }
31
38
  exports.isStreamFunctionRoute = isStreamFunctionRoute;
39
+ function isChannelFunctionRoute(fn) {
40
+ return fn.channel === true;
41
+ }
42
+ exports.isChannelFunctionRoute = isChannelFunctionRoute;
32
43
  function isFunctionRoute(fn) {
33
- return !('stream' in fn) && !('query' in fn);
44
+ return !('stream' in fn) && !('query' in fn) && !('channel' in fn);
34
45
  }
35
46
  exports.isFunctionRoute = isFunctionRoute;
36
47
  function isRoute(route) {
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/functions/types.ts"],"names":[],"mappings":";;;AAoGA,QAAQ;AAER,SAAgB,mBAAmB,CACjC,EAAwE;IAExE,OAAQ,EAA6B,CAAC,KAAK,KAAK,IAAI,CAAA;AACtD,CAAC;AAJD,kDAIC;AAED,SAAgB,oBAAoB,CAClC,EAAwE;IAExE,OAAQ,EAA8B,CAAC,MAAM,KAAK,IAAI,CAAA;AACxD,CAAC;AAJD,oDAIC;AAED,SAAgB,cAAc,CAC5B,EAAwE;IAExE,OAAO,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;AAC9C,CAAC;AAJD,wCAIC;AAED,SAAgB,MAAM,CAAC,EAAO;IAC5B,OAAO,CACL,EAAE;QACF,OAAO,EAAE,KAAK,QAAQ;QACtB,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,oBAAoB,CAAC,EAAE,CAAC,IAAI,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAC5E,CAAA;AACH,CAAC;AAND,wBAMC;AAED,SAAS;AAET,SAAgB,oBAAoB,CAClC,EAA2E;IAE3E,OAAQ,EAA8B,CAAC,KAAK,KAAK,IAAI,CAAA;AACvD,CAAC;AAJD,oDAIC;AAED,SAAgB,qBAAqB,CACnC,EAA2E;IAE3E,OAAQ,EAA+B,CAAC,MAAM,KAAK,IAAI,CAAA;AACzD,CAAC;AAJD,sDAIC;AAED,SAAgB,eAAe,CAC7B,EAA2E;IAE3E,OAAO,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;AAC9C,CAAC;AAJD,0CAIC;AAED,SAAgB,OAAO,CAAC,KAAU;IAChC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,EAAE;QACzD,OAAO,IAAI,CAAA;KACZ;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AALD,0BAKC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/functions/types.ts"],"names":[],"mappings":";;;AAwJA,iCAAiC;AACjC,SAAgB,qBAAqB,CACnC,EAAa;IAEb,OAAQ,EAA+B,CAAC,OAAO,KAAK,IAAI,CAAA;AAC1D,CAAC;AAJD,sDAIC;AAED,SAAgB,mBAAmB,CACjC,EAAa;IAEb,OAAQ,EAA6B,CAAC,KAAK,KAAK,IAAI,CAAA;AACtD,CAAC;AAJD,kDAIC;AAED,SAAgB,oBAAoB,CAClC,EAAa;IAEb,OAAQ,EAA8B,CAAC,MAAM,KAAK,IAAI,CAAA;AACxD,CAAC;AAJD,oDAIC;AAED,SAAgB,cAAc,CAAC,EAAa;IAC1C,OAAO,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;AAC9C,CAAC;AAFD,wCAEC;AAED,SAAgB,MAAM,CAAC,EAAO;IAC5B,OAAO,CACL,EAAE;QACF,OAAO,EAAE,KAAK,QAAQ;QACtB,CAAC,cAAc,CAAC,EAAE,CAAC;YACjB,oBAAoB,CAAC,EAAE,CAAC;YACxB,mBAAmB,CAAC,EAAE,CAAC;YACvB,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAC7B,CAAA;AACH,CAAC;AATD,wBASC;AAED,kCAAkC;AAClC,SAAgB,oBAAoB,CAClC,EAAc;IAEd,OAAQ,EAA8B,CAAC,KAAK,KAAK,IAAI,CAAA;AACvD,CAAC;AAJD,oDAIC;AAED,SAAgB,qBAAqB,CACnC,EAAc;IAEd,OAAQ,EAA+B,CAAC,MAAM,KAAK,IAAI,CAAA;AACzD,CAAC;AAJD,sDAIC;AAED,SAAgB,sBAAsB,CACpC,EAAc;IAEd,OAAQ,EAAgC,CAAC,OAAO,KAAK,IAAI,CAAA;AAC3D,CAAC;AAJD,wDAIC;AAED,SAAgB,eAAe,CAAC,EAAc;IAC5C,OAAO,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAA;AACpE,CAAC;AAFD,0CAEC;AAED,SAAgB,OAAO,CAAC,KAAU;IAChC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,EAAE;QACzD,OAAO,IAAI,CAAA;KACZ;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AALD,0BAKC"}
@@ -4,36 +4,34 @@ exports.httpFunction = void 0;
4
4
  const sendHttpResponse_1 = require("../../sendHttpResponse");
5
5
  const error_1 = require("../../error");
6
6
  const sendError_1 = require("../../sendError");
7
- const installFn_1 = require("../../installFn");
8
- const httpFunction = async (route, server, ctx, payload) => {
9
- (0, installFn_1.installFn)(server, ctx, route).then((spec) => {
10
- if (spec === null) {
7
+ const httpFunction = async (route, spec, server, ctx, payload) => {
8
+ spec
9
+ .function(server.client, payload, ctx)
10
+ .then(async (result) => {
11
+ if (!ctx.session) {
11
12
  return;
12
13
  }
13
- spec
14
- .function(server.client, payload, ctx)
15
- .then(async (result) => {
16
- if (!ctx.session) {
17
- return;
18
- }
19
- if (spec.httpResponse) {
20
- const send = (responseData, headers, status) => {
21
- (0, sendHttpResponse_1.sendHttpResponse)(ctx, responseData, headers, status !== undefined
22
- ? typeof status === 'string'
23
- ? status
24
- : String(status)
25
- : undefined);
26
- };
27
- await spec.httpResponse(server.client, payload, result, send, ctx);
28
- return;
29
- }
30
- (0, sendHttpResponse_1.sendHttpResponse)(ctx, result);
31
- })
32
- .catch((err) => {
33
- (0, sendError_1.sendError)(server, ctx, error_1.BasedErrorCode.FunctionError, {
34
- err,
35
- route,
36
- });
14
+ if (spec.httpResponse) {
15
+ const send = (responseData, headers, status) => {
16
+ if (!ctx.session) {
17
+ return;
18
+ }
19
+ if (!status) {
20
+ (0, sendHttpResponse_1.sendHttpResponse)(ctx, responseData, headers);
21
+ }
22
+ else {
23
+ (0, sendHttpResponse_1.sendHttpResponse)(ctx, responseData, headers, typeof status === 'string' ? status : String(status));
24
+ }
25
+ };
26
+ await spec.httpResponse(server.client, payload, result, send, ctx);
27
+ return;
28
+ }
29
+ (0, sendHttpResponse_1.sendHttpResponse)(ctx, result);
30
+ })
31
+ .catch((err) => {
32
+ (0, sendError_1.sendError)(server, ctx, error_1.BasedErrorCode.FunctionError, {
33
+ err,
34
+ route,
37
35
  });
38
36
  });
39
37
  };
@@ -1 +1 @@
1
- {"version":3,"file":"function.js","sourceRoot":"","sources":["../../../src/incoming/http/function.ts"],"names":[],"mappings":";;;AAEA,6DAAyD;AACzD,uCAA4C;AAC5C,+CAA2C;AAC3C,+CAA2C;AAGpC,MAAM,YAAY,GAAqC,KAAK,EACjE,KAAyB,EACzB,MAAM,EACN,GAAG,EACH,OAAO,EACP,EAAE;IACF,IAAA,qBAAS,EAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QAC1C,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,OAAM;SACP;QACD,IAAI;aACD,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC;aACrC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACrB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;gBAChB,OAAM;aACP;YAED,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,MAAM,IAAI,GAAqB,CAAC,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;oBAC/D,IAAA,mCAAgB,EACd,GAAG,EACH,YAAY,EACZ,OAAO,EACP,MAAM,KAAK,SAAS;wBAClB,CAAC,CAAC,OAAO,MAAM,KAAK,QAAQ;4BAC1B,CAAC,CAAC,MAAM;4BACR,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;wBAClB,CAAC,CAAC,SAAS,CACd,CAAA;gBACH,CAAC,CAAA;gBACD,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;gBAClE,OAAM;aACP;YAED,IAAA,mCAAgB,EAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QAC/B,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,IAAA,qBAAS,EAAC,MAAM,EAAE,GAAG,EAAE,sBAAc,CAAC,aAAa,EAAE;gBACnD,GAAG;gBACH,KAAK;aACN,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AA3CY,QAAA,YAAY,gBA2CxB"}
1
+ {"version":3,"file":"function.js","sourceRoot":"","sources":["../../../src/incoming/http/function.ts"],"names":[],"mappings":";;;AAEA,6DAAyD;AACzD,uCAA4C;AAC5C,+CAA2C;AAGpC,MAAM,YAAY,GAAqC,KAAK,EACjE,KAAyB,EACzB,IAAuB,EACvB,MAAM,EACN,GAAG,EACH,OAAO,EACP,EAAE;IACF,IAAI;SACD,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC;SACrC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QACrB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;YAChB,OAAM;SACP;QACD,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,MAAM,IAAI,GAAqB,CAAC,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC/D,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;oBAChB,OAAM;iBACP;gBACD,IAAI,CAAC,MAAM,EAAE;oBACX,IAAA,mCAAgB,EAAC,GAAG,EAAE,YAAY,EAAE,OAAO,CAAC,CAAA;iBAC7C;qBAAM;oBACL,IAAA,mCAAgB,EACd,GAAG,EACH,YAAY,EACZ,OAAO,EACP,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CACrD,CAAA;iBACF;YACH,CAAC,CAAA;YACD,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;YAClE,OAAM;SACP;QAED,IAAA,mCAAgB,EAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAC/B,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACb,IAAA,qBAAS,EAAC,MAAM,EAAE,GAAG,EAAE,sBAAc,CAAC,aAAa,EAAE;YACnD,GAAG;YACH,KAAK;SACN,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACN,CAAC,CAAA;AAzCY,QAAA,YAAY,gBAyCxB"}
@@ -17,6 +17,7 @@ const ip_1 = require("../../ip");
17
17
  const auth_1 = require("../../auth");
18
18
  const authorize_1 = require("../../authorize");
19
19
  const sendHttpResponse_1 = require("../../sendHttpResponse");
20
+ const publish_1 = require("./publish");
20
21
  let clientId = 0;
21
22
  const handleRequest = (server, method, ctx, route, ready) => {
22
23
  if (method === 'post') {
@@ -57,7 +58,20 @@ const httpHandler = (server, req, res) => {
57
58
  : { route: { name: '', path: url } });
58
59
  return;
59
60
  }
60
- const authorization = req.getHeader('authorization');
61
+ let authState = {};
62
+ if (route.public !== true) {
63
+ const authorization = req.getHeader('authorization');
64
+ if (authorization) {
65
+ authState = (0, auth_1.parseAuthState)(authorization);
66
+ }
67
+ else {
68
+ // TODO: remove this when c++ client can encode
69
+ const authorization = req.getHeader('json-authorization');
70
+ if (authorization) {
71
+ authState = (0, auth_1.parseJSONAuthState)(authorization);
72
+ }
73
+ }
74
+ }
61
75
  const ctx = {
62
76
  session: {
63
77
  res,
@@ -66,7 +80,7 @@ const httpHandler = (server, req, res) => {
66
80
  ua: req.getHeader('user-agent'),
67
81
  ip,
68
82
  id: ++clientId,
69
- authState: authorization ? (0, auth_1.parseAuthState)(authorization) : {},
83
+ authState,
70
84
  headers: {
71
85
  'content-type': req.getHeader('content-type'),
72
86
  'content-encoding': req.getHeader('content-encoding'),
@@ -78,12 +92,15 @@ const httpHandler = (server, req, res) => {
78
92
  for (const header of route.headers) {
79
93
  ctx.session.headers[header] = req.getHeader(header);
80
94
  }
95
+ ctx.session.res.writeHeader('Access-Control-Allow-Headers', route.headers.join(','));
96
+ ctx.session.res.writeHeader('Access-Control-Expose-Headers', '*');
97
+ ctx.session.res.writeHeader('Access-Control-Allow-Origin', '*');
98
+ ctx.session.corsSend = true;
81
99
  }
82
100
  if ((0, security_1.rateLimitRequest)(server, ctx, route.rateLimitTokens, server.rateLimit.http)) {
83
101
  (0, security_1.endRateLimitHttp)(res);
84
102
  return;
85
103
  }
86
- // double check impact
87
104
  const query = req.getQuery();
88
105
  if (query) {
89
106
  ctx.session.query = query;
@@ -95,7 +112,7 @@ const httpHandler = (server, req, res) => {
95
112
  }
96
113
  if (method === 'post' &&
97
114
  ctx.session.headers['content-length'] === undefined) {
98
- // zero allowed, but not for streams
115
+ // Zero allowed, but not for streams
99
116
  (0, sendError_1.sendError)(server, ctx, error_1.BasedErrorCode.LengthRequired, route);
100
117
  return;
101
118
  }
@@ -108,7 +125,7 @@ const httpHandler = (server, req, res) => {
108
125
  }
109
126
  }
110
127
  if ((0, functions_1.isQueryFunctionRoute)(route)) {
111
- // handle HEAD
128
+ // Handle HEAD
112
129
  if (method !== 'post' && method !== 'get') {
113
130
  (0, sendError_1.sendError)(server, ctx, error_1.BasedErrorCode.MethodNotAllowed, route);
114
131
  return;
@@ -131,15 +148,24 @@ const httpHandler = (server, req, res) => {
131
148
  return;
132
149
  }
133
150
  if (ctx.session.headers['content-length'] === 0) {
134
- // zero is also not allowed for streams
151
+ // Zero is also not allowed for streams
135
152
  (0, sendError_1.sendError)(server, ctx, error_1.BasedErrorCode.LengthRequired, route);
136
153
  return;
137
154
  }
138
155
  (0, streamFunction_1.httpStreamFunction)(server, ctx, route);
139
156
  return;
140
157
  }
158
+ if ((0, functions_1.isChannelFunctionRoute)(route)) {
159
+ if (method !== 'post' && method !== 'get') {
160
+ (0, sendError_1.sendError)(server, ctx, error_1.BasedErrorCode.MethodNotAllowed, route);
161
+ return;
162
+ }
163
+ handleRequest(server, method, ctx, route, (payload) => {
164
+ (0, authorize_1.authorize)(route, server, ctx, payload, publish_1.httpPublish, undefined, undefined, route.publisher?.public || route.public);
165
+ });
166
+ return;
167
+ }
141
168
  if ((0, functions_1.isFunctionRoute)(route)) {
142
- // handle HEAD
143
169
  if (method !== 'post' && method !== 'get') {
144
170
  (0, sendError_1.sendError)(server, ctx, error_1.BasedErrorCode.MethodNotAllowed, route);
145
171
  return;