@based/server 4.0.0 → 4.0.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 (178) hide show
  1. package/dist/auth/defaultConfig.d.ts +3 -0
  2. package/dist/auth/defaultConfig.js +12 -0
  3. package/dist/auth/defaultConfig.js.map +1 -0
  4. package/dist/auth/index.d.ts +12 -6
  5. package/dist/auth/index.js +32 -20
  6. package/dist/auth/index.js.map +1 -1
  7. package/dist/auth/parseAuthState.d.ts +2 -1
  8. package/dist/auth/parseAuthState.js +28 -6
  9. package/dist/auth/parseAuthState.js.map +1 -1
  10. package/dist/authorize.d.ts +9 -0
  11. package/dist/authorize.js +59 -0
  12. package/dist/authorize.js.map +1 -0
  13. package/dist/compress.js +3 -0
  14. package/dist/compress.js.map +1 -1
  15. package/dist/createSimpleServer.d.ts +32 -0
  16. package/dist/createSimpleServer.js +131 -0
  17. package/dist/createSimpleServer.js.map +1 -0
  18. package/dist/error/errorTypeHandlers.js +31 -12
  19. package/dist/error/errorTypeHandlers.js.map +1 -1
  20. package/dist/error/index.d.ts +11 -1
  21. package/dist/error/index.js +9 -10
  22. package/dist/error/index.js.map +1 -1
  23. package/dist/error/types.d.ts +41 -45
  24. package/dist/error/types.js +3 -1
  25. package/dist/error/types.js.map +1 -1
  26. package/dist/functionApi/callFunction.d.ts +3 -0
  27. package/dist/functionApi/callFunction.js +29 -0
  28. package/dist/functionApi/callFunction.js.map +1 -0
  29. package/dist/functionApi/client/index.d.ts +16 -0
  30. package/dist/functionApi/client/index.js +44 -0
  31. package/dist/functionApi/client/index.js.map +1 -0
  32. package/dist/functionApi/client/query.d.ts +11 -0
  33. package/dist/functionApi/client/query.js +32 -0
  34. package/dist/functionApi/client/query.js.map +1 -0
  35. package/dist/functionApi/get.d.ts +3 -0
  36. package/dist/functionApi/get.js +71 -0
  37. package/dist/functionApi/get.js.map +1 -0
  38. package/dist/functionApi/index.d.ts +5 -0
  39. package/dist/functionApi/index.js +25 -0
  40. package/dist/functionApi/index.js.map +1 -0
  41. package/dist/functionApi/observe.d.ts +4 -0
  42. package/dist/functionApi/observe.js +44 -0
  43. package/dist/functionApi/observe.js.map +1 -0
  44. package/dist/functionApi/stream.d.ts +3 -0
  45. package/dist/functionApi/stream.js +30 -0
  46. package/dist/functionApi/stream.js.map +1 -0
  47. package/dist/functions/index.d.ts +16 -8
  48. package/dist/functions/index.js +39 -10
  49. package/dist/functions/index.js.map +1 -1
  50. package/dist/functions/timeout.d.ts +3 -3
  51. package/dist/functions/timeout.js.map +1 -1
  52. package/dist/functions/types.d.ts +44 -32
  53. package/dist/functions/types.js +40 -12
  54. package/dist/functions/types.js.map +1 -1
  55. package/dist/incoming/http/authorize.d.ts +2 -2
  56. package/dist/incoming/http/authorize.js +4 -4
  57. package/dist/incoming/http/authorize.js.map +1 -1
  58. package/dist/incoming/http/function.d.ts +3 -4
  59. package/dist/incoming/http/function.js +30 -35
  60. package/dist/incoming/http/function.js.map +1 -1
  61. package/dist/incoming/http/get.d.ts +3 -3
  62. package/dist/incoming/http/get.js +23 -33
  63. package/dist/incoming/http/get.js.map +1 -1
  64. package/dist/incoming/http/index.js +49 -30
  65. package/dist/incoming/http/index.js.map +1 -1
  66. package/dist/incoming/http/parseQuery.d.ts +1 -1
  67. package/dist/incoming/http/parseQuery.js +3 -1
  68. package/dist/incoming/http/parseQuery.js.map +1 -1
  69. package/dist/incoming/http/readBody.d.ts +4 -3
  70. package/dist/incoming/http/readBody.js +32 -8
  71. package/dist/incoming/http/readBody.js.map +1 -1
  72. package/dist/incoming/http/streamFunction/DataStream.d.ts +8 -0
  73. package/dist/incoming/http/streamFunction/DataStream.js +42 -3
  74. package/dist/incoming/http/streamFunction/DataStream.js.map +1 -1
  75. package/dist/incoming/http/streamFunction/getExtension.d.ts +1 -1
  76. package/dist/incoming/http/streamFunction/index.d.ts +3 -3
  77. package/dist/incoming/http/streamFunction/index.js +6 -87
  78. package/dist/incoming/http/streamFunction/index.js.map +1 -1
  79. package/dist/incoming/http/streamFunction/multiPart/index.d.ts +4 -0
  80. package/dist/incoming/http/streamFunction/multiPart/index.js +66 -0
  81. package/dist/incoming/http/streamFunction/multiPart/index.js.map +1 -0
  82. package/dist/incoming/http/streamFunction/multiPart/readFormData.d.ts +12 -0
  83. package/dist/incoming/http/streamFunction/multiPart/readFormData.js +202 -0
  84. package/dist/incoming/http/streamFunction/multiPart/readFormData.js.map +1 -0
  85. package/dist/incoming/http/streamFunction/multipartStream.d.ts +3 -4
  86. package/dist/incoming/http/streamFunction/multipartStream.js +68 -66
  87. package/dist/incoming/http/streamFunction/multipartStream.js.map +1 -1
  88. package/dist/incoming/http/streamFunction/stream/createStream.d.ts +6 -0
  89. package/dist/incoming/http/streamFunction/stream/createStream.js +75 -0
  90. package/dist/incoming/http/streamFunction/stream/createStream.js.map +1 -0
  91. package/dist/incoming/http/streamFunction/stream/index.d.ts +4 -0
  92. package/dist/incoming/http/streamFunction/stream/index.js +70 -0
  93. package/dist/incoming/http/streamFunction/stream/index.js.map +1 -0
  94. package/dist/incoming/http/streamFunction/stream.d.ts +1 -1
  95. package/dist/incoming/index.d.ts +1 -1
  96. package/dist/incoming/index.js +13 -11
  97. package/dist/incoming/index.js.map +1 -1
  98. package/dist/incoming/upgrade.js +18 -9
  99. package/dist/incoming/upgrade.js.map +1 -1
  100. package/dist/incoming/ws/auth.d.ts +4 -4
  101. package/dist/incoming/ws/auth.js +37 -19
  102. package/dist/incoming/ws/auth.js.map +1 -1
  103. package/dist/incoming/ws/function.d.ts +2 -3
  104. package/dist/incoming/ws/function.js +21 -73
  105. package/dist/incoming/ws/function.js.map +1 -1
  106. package/dist/incoming/ws/get.d.ts +2 -3
  107. package/dist/incoming/ws/get.js +33 -54
  108. package/dist/incoming/ws/get.js.map +1 -1
  109. package/dist/incoming/ws/index.d.ts +1 -1
  110. package/dist/incoming/ws/index.js +2 -1
  111. package/dist/incoming/ws/index.js.map +1 -1
  112. package/dist/incoming/ws/observable.d.ts +7 -6
  113. package/dist/incoming/ws/observable.js +25 -49
  114. package/dist/incoming/ws/observable.js.map +1 -1
  115. package/dist/incoming/ws/types.d.ts +3 -0
  116. package/dist/{auth → incoming/ws}/types.js +0 -0
  117. package/dist/{auth → incoming/ws}/types.js.map +1 -1
  118. package/dist/index.d.ts +3 -2
  119. package/dist/index.js +5 -3
  120. package/dist/index.js.map +1 -1
  121. package/dist/installFn.d.ts +4 -0
  122. package/dist/installFn.js +94 -0
  123. package/dist/installFn.js.map +1 -0
  124. package/dist/observable/create.d.ts +1 -1
  125. package/dist/observable/create.js +5 -1
  126. package/dist/observable/create.js.map +1 -1
  127. package/dist/observable/destroy.js +1 -1
  128. package/dist/observable/destroy.js.map +1 -1
  129. package/dist/observable/error.d.ts +1 -1
  130. package/dist/observable/index.d.ts +0 -1
  131. package/dist/observable/index.js +0 -1
  132. package/dist/observable/index.js.map +1 -1
  133. package/dist/observable/send.d.ts +3 -3
  134. package/dist/observable/send.js +2 -8
  135. package/dist/observable/send.js.map +1 -1
  136. package/dist/observable/start/error.d.ts +2 -1
  137. package/dist/observable/start/error.js +13 -11
  138. package/dist/observable/start/error.js.map +1 -1
  139. package/dist/observable/start/index.js +17 -8
  140. package/dist/observable/start/index.js.map +1 -1
  141. package/dist/observable/subscribe.d.ts +3 -3
  142. package/dist/observable/subscribe.js +6 -12
  143. package/dist/observable/subscribe.js.map +1 -1
  144. package/dist/observable/types.d.ts +6 -5
  145. package/dist/observable/unsub.d.ts +1 -1
  146. package/dist/observable/unsub.js.map +1 -1
  147. package/dist/observable/verify.d.ts +1 -1
  148. package/dist/observable/verify.js +1 -1
  149. package/dist/observable/verify.js.map +1 -1
  150. package/dist/protocol.d.ts +1 -0
  151. package/dist/protocol.js +11 -1
  152. package/dist/protocol.js.map +1 -1
  153. package/dist/security.d.ts +1 -1
  154. package/dist/security.js +1 -1
  155. package/dist/security.js.map +1 -1
  156. package/dist/sendError.d.ts +3 -2
  157. package/dist/sendError.js +30 -16
  158. package/dist/sendError.js.map +1 -1
  159. package/dist/sendHttpResponse.d.ts +1 -1
  160. package/dist/sendHttpResponse.js +29 -4
  161. package/dist/sendHttpResponse.js.map +1 -1
  162. package/dist/server.d.ts +10 -3
  163. package/dist/server.js +16 -4
  164. package/dist/server.js.map +1 -1
  165. package/dist/verifyRoute.d.ts +14 -0
  166. package/dist/verifyRoute.js +99 -0
  167. package/dist/verifyRoute.js.map +1 -0
  168. package/package.json +4 -2
  169. package/dist/api/index.d.ts +0 -7
  170. package/dist/api/index.js +0 -173
  171. package/dist/api/index.js.map +0 -1
  172. package/dist/auth/dummyAuth.d.ts +0 -2
  173. package/dist/auth/dummyAuth.js +0 -8
  174. package/dist/auth/dummyAuth.js.map +0 -1
  175. package/dist/auth/types.d.ts +0 -10
  176. package/dist/context.d.ts +0 -54
  177. package/dist/context.js +0 -18
  178. package/dist/context.js.map +0 -1
@@ -0,0 +1,12 @@
1
+ import { HttpSession, Context, StreamPayload } from '@based/functions';
2
+ import { BasedServer } from '../../../../server';
3
+ import { BasedFunctionRoute } from '../../../../functions';
4
+ export declare type FileOptions = {
5
+ name?: string;
6
+ size?: number;
7
+ type: string;
8
+ extension: string;
9
+ payload: any;
10
+ };
11
+ declare const _default: (ctx: Context<HttpSession>, server: BasedServer, route: BasedFunctionRoute, onFile: (payload: StreamPayload) => void, isReady: () => void) => void;
12
+ export default _default;
@@ -0,0 +1,202 @@
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
+ const DataStream_1 = require("../DataStream");
7
+ const error_1 = require("../../../../error");
8
+ const sendError_1 = require("../../../../sendError");
9
+ const getExtension_1 = __importDefault(require("../getExtension"));
10
+ const MAX_CHUNK_SIZE = 1024 * 1024 * 5;
11
+ // only use this if you have an individual file else its just all
12
+ const setHeader = (file) => {
13
+ file.headersSet++;
14
+ if (file.headersSet === 2) {
15
+ return true;
16
+ }
17
+ return false;
18
+ };
19
+ const toBuffer = (str, firstWritten) => {
20
+ return Buffer.from(firstWritten ? str + '\r\n' : str, 'binary');
21
+ };
22
+ const handleMeta = (file, line, meta, isWriting, fileCallback) => {
23
+ const opts = file.opts;
24
+ opts.name = line.match(/filename="(.*?)"/)?.[1] || 'untitled';
25
+ const firstCommaIndex = meta.indexOf(',');
26
+ if (firstCommaIndex !== -1 && meta.startsWith('size=')) {
27
+ const size = meta.slice(5, firstCommaIndex);
28
+ if (size) {
29
+ const sizeNr = Number(size);
30
+ file.opts.size = sizeNr;
31
+ file.stream.size = sizeNr;
32
+ }
33
+ const payloadRaw = decodeURI(meta.slice(firstCommaIndex + 1));
34
+ if (payloadRaw !== undefined && payloadRaw !== '') {
35
+ try {
36
+ file.opts.payload = JSON.parse(payloadRaw);
37
+ }
38
+ catch (err) {
39
+ file.opts.payload = payloadRaw;
40
+ }
41
+ }
42
+ }
43
+ isWriting = setHeader(file);
44
+ if (isWriting) {
45
+ fileCallback({
46
+ payload: file.opts.payload || {},
47
+ fileName: file.opts.name,
48
+ mimeType: file.opts.type,
49
+ extension: file.opts.extension,
50
+ size: file.opts.size || 0,
51
+ stream: file.stream,
52
+ });
53
+ }
54
+ return isWriting;
55
+ };
56
+ exports.default = (ctx, server, route, onFile, isReady) => {
57
+ const files = [];
58
+ const contentLength = ctx.session.headers['content-length'];
59
+ let setInProgress = false;
60
+ let boundary = null;
61
+ let prevLine;
62
+ let isWriting = false;
63
+ let collectMeta;
64
+ let total = 0;
65
+ let progress = 0;
66
+ ctx.session.res.onData((chunk, isLast) => {
67
+ // see if this goes ok... (clearing mem etc)
68
+ if (chunk.byteLength > MAX_CHUNK_SIZE) {
69
+ (0, sendError_1.sendError)(server, ctx, error_1.BasedErrorCode.ChunkTooLarge, route);
70
+ for (const file of files) {
71
+ file.stream.destroy();
72
+ }
73
+ return;
74
+ }
75
+ let firstWritten = false;
76
+ const blocks = Buffer.from(chunk).toString('binary').split('\r\n');
77
+ total += chunk.byteLength;
78
+ progress = total / contentLength;
79
+ for (const file of files) {
80
+ if (file.headersSet > 1 && !file.isDone && !file.opts.size) {
81
+ if (contentLength > 200000) {
82
+ if (!setInProgress) {
83
+ setInProgress = true;
84
+ setTimeout(() => {
85
+ for (const file of files) {
86
+ if (file.headersSet > 1 && !file.isDone && !file.opts.size) {
87
+ if (progress === 1) {
88
+ file.isDone = true;
89
+ }
90
+ }
91
+ }
92
+ setInProgress = false;
93
+ }, 250);
94
+ }
95
+ break;
96
+ }
97
+ }
98
+ }
99
+ if (!boundary) {
100
+ boundary = blocks[0];
101
+ }
102
+ for (let i = 0; i < blocks.length; i++) {
103
+ const line = blocks[i];
104
+ if (!boundary) {
105
+ continue;
106
+ }
107
+ if (isWriting && (line === boundary || line === boundary + '--')) {
108
+ isWriting = false;
109
+ const file = files[files.length - 1];
110
+ if (prevLine) {
111
+ file.stream.end(toBuffer(prevLine, firstWritten));
112
+ }
113
+ else {
114
+ file.stream.end();
115
+ }
116
+ file.isDone = true;
117
+ prevLine = null;
118
+ if (line === boundary + '--') {
119
+ continue;
120
+ }
121
+ }
122
+ if (line === boundary && !isWriting) {
123
+ const file = {
124
+ stream: new DataStream_1.DataStream(0),
125
+ headersSet: 0,
126
+ opts: {},
127
+ isDone: false,
128
+ };
129
+ files.push(file);
130
+ continue;
131
+ }
132
+ const file = files[files.length - 1];
133
+ if (!file) {
134
+ // TODO: invalid file error
135
+ return (0, sendError_1.sendError)(server, ctx, error_1.BasedErrorCode.InvalidPayload, { route });
136
+ }
137
+ if (!isWriting && collectMeta) {
138
+ const fullMeta = collectMeta + line;
139
+ const meta = fullMeta.match(/name="(.*?)"/)?.[1];
140
+ if (!meta) {
141
+ collectMeta = fullMeta;
142
+ continue;
143
+ }
144
+ collectMeta = '';
145
+ isWriting = handleMeta(file, line, meta, isWriting, onFile);
146
+ continue;
147
+ }
148
+ if (!collectMeta && !isWriting && line.includes('Content-Disposition')) {
149
+ const meta = line.match(/name="(.*?)"/)?.[1];
150
+ if (!meta) {
151
+ if (/name="(.*?)/.test(line)) {
152
+ collectMeta = line;
153
+ continue;
154
+ }
155
+ // TODO: invalid file error
156
+ return (0, sendError_1.sendError)(server, ctx, error_1.BasedErrorCode.InvalidPayload, {
157
+ route,
158
+ });
159
+ }
160
+ isWriting = handleMeta(file, line, meta, isWriting, onFile);
161
+ continue;
162
+ }
163
+ if (!isWriting && line.includes('Content-Type')) {
164
+ const mimeType = line.match(/Content-Type: ([a-zA-Z0-9].+\/[a-zA-Z0-9].+)/)?.[1];
165
+ if (!mimeType) {
166
+ // TODO: invalid file (can speficy in route potentialy...)
167
+ return (0, sendError_1.sendError)(server, ctx, error_1.BasedErrorCode.InvalidPayload, {
168
+ route,
169
+ });
170
+ }
171
+ file.opts.type = mimeType;
172
+ const extension = (0, getExtension_1.default)(mimeType);
173
+ if (extension) {
174
+ file.opts.extension = extension;
175
+ }
176
+ isWriting = setHeader(file);
177
+ if (isWriting) {
178
+ onFile({
179
+ payload: file.opts.payload,
180
+ fileName: file.opts.name,
181
+ mimeType: file.opts.type,
182
+ extension: file.opts.extension,
183
+ size: file.opts.size,
184
+ stream: file.stream,
185
+ });
186
+ }
187
+ continue;
188
+ }
189
+ if (isWriting) {
190
+ if (prevLine) {
191
+ file.stream.write(toBuffer(prevLine, firstWritten));
192
+ }
193
+ prevLine = line;
194
+ firstWritten = true;
195
+ }
196
+ }
197
+ if (isLast) {
198
+ isReady();
199
+ }
200
+ });
201
+ };
202
+ //# sourceMappingURL=readFormData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readFormData.js","sourceRoot":"","sources":["../../../../../src/incoming/http/streamFunction/multiPart/readFormData.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { HttpSession, Context } from '../../../context';
1
+ import { HttpSession, Context, StreamPayload } from '@based/functions';
2
2
  import { BasedServer } from '../../../server';
3
3
  import { BasedFunctionRoute } from '../../../functions';
4
4
  export declare type FileOptions = {
@@ -6,8 +6,7 @@ export declare type FileOptions = {
6
6
  size?: number;
7
7
  type: string;
8
8
  extension: string;
9
- } & {
10
- [key: string]: string;
9
+ payload: any;
11
10
  };
12
- declare const _default: (ctx: Context<HttpSession>, server: BasedServer, payload: any, route: BasedFunctionRoute, fn: (payload: any) => Promise<any>) => void;
11
+ declare const _default: (ctx: Context<HttpSession>, server: BasedServer, route: BasedFunctionRoute, fn: (payload: StreamPayload) => Promise<any>) => void;
13
12
  export default _default;
@@ -9,38 +9,7 @@ const sendError_1 = require("../../../sendError");
9
9
  const sendHttpResponse_1 = require("../../../sendHttpResponse");
10
10
  const getExtension_1 = __importDefault(require("./getExtension"));
11
11
  const MAX_CHUNK_SIZE = 1024 * 1024 * 5;
12
- const streamProgress = (stream, size) => {
13
- stream.emit('progress', 0);
14
- if (size < 200000) {
15
- stream.on('end', () => {
16
- stream.emit('progress', 1);
17
- });
18
- }
19
- else {
20
- let progress = 0;
21
- let total = 0;
22
- let setInProgress = false;
23
- const updateProgress = () => {
24
- if (!setInProgress) {
25
- setInProgress = true;
26
- setTimeout(() => {
27
- stream.emit('progress', progress);
28
- setInProgress = false;
29
- }, 250);
30
- }
31
- };
32
- stream.on('end', () => {
33
- progress = 1;
34
- updateProgress();
35
- });
36
- stream.on('data', (chunk) => {
37
- total += chunk.byteLength;
38
- progress = total / size;
39
- updateProgress();
40
- });
41
- }
42
- };
43
- // only use this if you have individual file else its just all
12
+ // only use this if you have an individual file else its just all
44
13
  const setHeader = (file) => {
45
14
  file.headersSet++;
46
15
  if (file.headersSet === 2) {
@@ -51,10 +20,41 @@ const setHeader = (file) => {
51
20
  const toBuffer = (str, firstWritten) => {
52
21
  return Buffer.from(firstWritten ? str + '\r\n' : str, 'binary');
53
22
  };
54
- exports.default = (ctx, server, payload, route, fn) => {
55
- if (!payload || (!payload && typeof payload !== 'object')) {
56
- payload = {};
23
+ const handleMeta = (file, line, meta, isWriting, promiseQ, fn) => {
24
+ const opts = file.opts;
25
+ opts.name = line.match(/filename="(.*?)"/)?.[1] || 'untitled';
26
+ const firstCommaIndex = meta.indexOf(',');
27
+ if (firstCommaIndex !== -1 && meta.startsWith('size=')) {
28
+ const size = meta.slice(5, firstCommaIndex);
29
+ if (size) {
30
+ const sizeNr = Number(size);
31
+ file.opts.size = sizeNr;
32
+ file.stream.size = sizeNr;
33
+ }
34
+ const payloadRaw = decodeURI(meta.slice(firstCommaIndex + 1));
35
+ if (payloadRaw !== undefined && payloadRaw !== '') {
36
+ try {
37
+ file.opts.payload = JSON.parse(payloadRaw);
38
+ }
39
+ catch (err) {
40
+ file.opts.payload = payloadRaw;
41
+ }
42
+ }
43
+ }
44
+ isWriting = setHeader(file);
45
+ if (isWriting) {
46
+ promiseQ.push(fn({
47
+ payload: file.opts.payload || {},
48
+ fileName: file.opts.name,
49
+ mimeType: file.opts.type,
50
+ extension: file.opts.extension,
51
+ size: file.opts.size || 0,
52
+ stream: file.stream,
53
+ }));
57
54
  }
55
+ return isWriting;
56
+ };
57
+ exports.default = (ctx, server, route, fn) => {
58
58
  const files = [];
59
59
  const contentLength = ctx.session.headers['content-length'];
60
60
  const promiseQ = [];
@@ -62,6 +62,7 @@ exports.default = (ctx, server, payload, route, fn) => {
62
62
  let boundary = null;
63
63
  let prevLine;
64
64
  let isWriting = false;
65
+ let collectMeta;
65
66
  let total = 0;
66
67
  let progress = 0;
67
68
  ctx.session.res.onData((chunk, isLast) => {
@@ -88,7 +89,6 @@ exports.default = (ctx, server, payload, route, fn) => {
88
89
  if (progress === 1) {
89
90
  file.isDone = true;
90
91
  }
91
- file.stream.emit('progress', progress);
92
92
  }
93
93
  }
94
94
  setInProgress = false;
@@ -115,9 +115,6 @@ exports.default = (ctx, server, payload, route, fn) => {
115
115
  else {
116
116
  file.stream.end();
117
117
  }
118
- if (!file.opts.size && !file.isDone) {
119
- file.stream.emit('progress', 1);
120
- }
121
118
  file.isDone = true;
122
119
  prevLine = null;
123
120
  if (line === boundary + '--') {
@@ -136,36 +133,31 @@ exports.default = (ctx, server, payload, route, fn) => {
136
133
  }
137
134
  const file = files[files.length - 1];
138
135
  if (!file) {
139
- // TODO: invalid file
136
+ // TODO: invalid file error
140
137
  return (0, sendError_1.sendError)(server, ctx, error_1.BasedErrorCode.InvalidPayload, route);
141
138
  }
142
- if (!isWriting && line.includes('Content-Disposition')) {
143
- const meta = line.match(/name="(.*?)"/)?.[1];
139
+ if (!isWriting && collectMeta) {
140
+ const fullMeta = collectMeta + line;
141
+ const meta = fullMeta.match(/name="(.*?)"/)?.[1];
144
142
  if (!meta) {
145
- // TODO: invalid file
146
- return (0, sendError_1.sendError)(server, ctx, error_1.BasedErrorCode.InvalidPayload, route);
143
+ collectMeta = fullMeta;
144
+ continue;
147
145
  }
148
- const opts = file.opts;
149
- opts.name = line.match(/filename="(.*?)"/)?.[1] || 'untitled';
150
- const disposition = meta.split('|');
151
- for (const seg of disposition) {
152
- if (/=/.test(seg)) {
153
- const [k, v] = seg.split('=');
154
- if (k === 'size') {
155
- opts[k] = Number(v);
156
- }
157
- else {
158
- opts[k] = v;
159
- }
146
+ collectMeta = '';
147
+ isWriting = handleMeta(file, line, meta, isWriting, promiseQ, fn);
148
+ continue;
149
+ }
150
+ if (!collectMeta && !isWriting && line.includes('Content-Disposition')) {
151
+ const meta = line.match(/name="(.*?)"/)?.[1];
152
+ if (!meta) {
153
+ if (/name="(.*?)/.test(line)) {
154
+ collectMeta = line;
155
+ continue;
160
156
  }
157
+ // TODO: invalid file error
158
+ return (0, sendError_1.sendError)(server, ctx, error_1.BasedErrorCode.InvalidPayload, route);
161
159
  }
162
- if (opts.size) {
163
- streamProgress(file.stream, opts.size);
164
- }
165
- isWriting = setHeader(file);
166
- if (isWriting) {
167
- promiseQ.push(fn({ payload: { ...payload, ...file.opts }, stream: file.stream }));
168
- }
160
+ isWriting = handleMeta(file, line, meta, isWriting, promiseQ, fn);
169
161
  continue;
170
162
  }
171
163
  if (!isWriting && line.includes('Content-Type')) {
@@ -175,10 +167,20 @@ exports.default = (ctx, server, payload, route, fn) => {
175
167
  return (0, sendError_1.sendError)(server, ctx, error_1.BasedErrorCode.InvalidPayload, route);
176
168
  }
177
169
  file.opts.type = mimeType;
178
- file.opts.extension = (0, getExtension_1.default)(mimeType);
170
+ const extension = (0, getExtension_1.default)(mimeType);
171
+ if (extension) {
172
+ file.opts.extension = extension;
173
+ }
179
174
  isWriting = setHeader(file);
180
175
  if (isWriting) {
181
- promiseQ.push(fn({ payload: { ...payload, ...file.opts }, stream: file.stream }));
176
+ promiseQ.push(fn({
177
+ payload: file.opts.payload,
178
+ fileName: file.opts.name,
179
+ mimeType: file.opts.type,
180
+ extension: file.opts.extension,
181
+ size: file.opts.size,
182
+ stream: file.stream,
183
+ }));
182
184
  }
183
185
  continue;
184
186
  }
@@ -194,7 +196,7 @@ exports.default = (ctx, server, payload, route, fn) => {
194
196
  Promise.allSettled(promiseQ).then((results) => {
195
197
  const r = results.map((v) => {
196
198
  if (v.status === 'rejected') {
197
- return { err: v.reason };
199
+ return v.reason;
198
200
  }
199
201
  else {
200
202
  return v.value;
@@ -1 +1 @@
1
- {"version":3,"file":"multipartStream.js","sourceRoot":"","sources":["../../../../src/incoming/http/streamFunction/multipartStream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"multipartStream.js","sourceRoot":"","sources":["../../../../src/incoming/http/streamFunction/multipartStream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { DataStream } from '../DataStream';
2
+ import { HttpSession, Context } from '@based/functions';
3
+ import { BasedFunctionRoute } from '../../../../functions';
4
+ import { BasedServer } from '../../../../server';
5
+ declare const _default: (server: BasedServer, route: BasedFunctionRoute, ctx: Context<HttpSession>, size: number) => DataStream;
6
+ export default _default;
@@ -0,0 +1,75 @@
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
+ const DataStream_1 = require("../DataStream");
7
+ const sendError_1 = require("../../../../sendError");
8
+ const node_zlib_1 = __importDefault(require("node:zlib"));
9
+ const error_1 = require("../../../../error");
10
+ const MAX_CHUNK_SIZE = 1024 * 1024 * 5;
11
+ const UNCOMPRESS_OPTS = {
12
+ chunkSize: 1024 * 1024 * 5,
13
+ };
14
+ exports.default = (server, route, ctx, size) => {
15
+ const stream = new DataStream_1.DataStream(size);
16
+ const contentEncoding = ctx.session.headers['content-encoding'];
17
+ if (contentEncoding) {
18
+ let uncompressStream;
19
+ if (contentEncoding === 'deflate') {
20
+ uncompressStream = node_zlib_1.default.createInflate(UNCOMPRESS_OPTS);
21
+ }
22
+ else if (contentEncoding === 'gzip') {
23
+ uncompressStream = node_zlib_1.default.createGunzip(UNCOMPRESS_OPTS);
24
+ }
25
+ else if (contentEncoding === 'br') {
26
+ uncompressStream = node_zlib_1.default.createBrotliDecompress(UNCOMPRESS_OPTS);
27
+ }
28
+ if (uncompressStream) {
29
+ ctx.session.res.onData((c, isLast) => {
30
+ if (c.byteLength > MAX_CHUNK_SIZE) {
31
+ (0, sendError_1.sendError)(server, ctx, error_1.BasedErrorCode.ChunkTooLarge, route);
32
+ uncompressStream.destroy();
33
+ stream.destroy();
34
+ return;
35
+ }
36
+ const buf = Buffer.alloc(c.byteLength, Buffer.from(c));
37
+ if (isLast) {
38
+ uncompressStream.end(buf);
39
+ }
40
+ else {
41
+ if (!uncompressStream.write(buf)) {
42
+ // console.info('BACKPRESSURE')
43
+ }
44
+ }
45
+ });
46
+ uncompressStream.on('error', (err) => {
47
+ console.warn('Uncompress error', route, contentEncoding, err);
48
+ (0, sendError_1.sendError)(server, ctx, error_1.BasedErrorCode.ChunkTooLarge, route);
49
+ uncompressStream.destroy();
50
+ stream.destroy();
51
+ });
52
+ uncompressStream.pipe(stream);
53
+ }
54
+ else {
55
+ (0, sendError_1.sendError)(server, ctx, error_1.BasedErrorCode.UnsupportedContentEncoding, route);
56
+ }
57
+ }
58
+ else {
59
+ ctx.session.res.onData((c, isLast) => {
60
+ if (c.byteLength > MAX_CHUNK_SIZE) {
61
+ (0, sendError_1.sendError)(server, ctx, error_1.BasedErrorCode.ChunkTooLarge, route);
62
+ stream.destroy();
63
+ return;
64
+ }
65
+ if (isLast) {
66
+ stream.end(Buffer.from(c));
67
+ }
68
+ else {
69
+ stream.write(Buffer.from(c));
70
+ }
71
+ });
72
+ }
73
+ return stream;
74
+ };
75
+ //# sourceMappingURL=createStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createStream.js","sourceRoot":"","sources":["../../../../../src/incoming/http/streamFunction/stream/createStream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { BasedServer } from '../../../../server';
2
+ import { BasedStreamFunctionRoute } from '../../../../functions';
3
+ import { HttpSession, Context } from '@based/functions';
4
+ export declare const singleStream: (server: BasedServer, ctx: Context<HttpSession>, route: BasedStreamFunctionRoute, type: string, size: number) => void;
@@ -0,0 +1,70 @@
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.singleStream = void 0;
7
+ const createStream_1 = __importDefault(require("./createStream"));
8
+ const sendError_1 = require("../../../../sendError");
9
+ const getExtension_1 = __importDefault(require("../getExtension"));
10
+ const error_1 = require("../../../../error");
11
+ const sendHttpResponse_1 = require("../../../../sendHttpResponse");
12
+ const mime_types_1 = __importDefault(require("mime-types"));
13
+ const utils_1 = require("@saulx/utils");
14
+ const installFn_1 = require("../../../../installFn");
15
+ const authorize_1 = require("../../../../authorize");
16
+ const singleStream = (server, ctx, route, type, size) => {
17
+ const extension = ctx.session.req.getHeader('content-extension');
18
+ if (extension) {
19
+ const mime = mime_types_1.default.lookup(extension);
20
+ if (mime) {
21
+ type = ctx.session.headers['content-type'] = mime;
22
+ }
23
+ }
24
+ const stream = (0, createStream_1.default)(server, route, ctx, size);
25
+ let payload;
26
+ if ('query' in ctx.session) {
27
+ try {
28
+ payload = (0, utils_1.parseQuery)(decodeURIComponent(ctx.session.query));
29
+ }
30
+ catch (err) { }
31
+ }
32
+ const streamPayload = {
33
+ payload,
34
+ stream,
35
+ size,
36
+ mimeType: type,
37
+ extension: (0, getExtension_1.default)(type) || '',
38
+ };
39
+ (0, authorize_1.authorize)(route, server, ctx, payload, () => {
40
+ (0, installFn_1.installFn)(server, ctx, route).then((spec) => {
41
+ if (spec === null) {
42
+ stream.destroy();
43
+ return;
44
+ }
45
+ const fn = spec.function;
46
+ fn(server.client, streamPayload, ctx)
47
+ .catch((err) => {
48
+ // stream.destroy()
49
+ (0, sendError_1.sendError)(server, ctx, error_1.BasedErrorCode.FunctionError, {
50
+ err,
51
+ route,
52
+ });
53
+ })
54
+ .then((r) => {
55
+ if (stream.readableEnded || stream.listenerCount('data') === 0) {
56
+ (0, sendHttpResponse_1.sendHttpResponse)(ctx, r);
57
+ }
58
+ else {
59
+ stream.on('end', () => {
60
+ (0, sendHttpResponse_1.sendHttpResponse)(ctx, r);
61
+ });
62
+ }
63
+ });
64
+ });
65
+ }, undefined, undefined, () => {
66
+ stream.destroy();
67
+ });
68
+ };
69
+ exports.singleStream = singleStream;
70
+ //# sourceMappingURL=index.js.map