@based/server 0.0.1

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 (131) hide show
  1. package/dist/BasedServerClient.d.ts +48 -0
  2. package/dist/BasedServerClient.js +313 -0
  3. package/dist/BasedServerClient.js.map +1 -0
  4. package/dist/Client.d.ts +69 -0
  5. package/dist/Client.js +253 -0
  6. package/dist/Client.js.map +1 -0
  7. package/dist/Params.d.ts +19 -0
  8. package/dist/Params.js +45 -0
  9. package/dist/Params.js.map +1 -0
  10. package/dist/closeListener.d.ts +4 -0
  11. package/dist/closeListener.js +13 -0
  12. package/dist/closeListener.js.map +1 -0
  13. package/dist/findPrefix.d.ts +3 -0
  14. package/dist/findPrefix.js +20 -0
  15. package/dist/findPrefix.js.map +1 -0
  16. package/dist/getFromConfig.d.ts +3 -0
  17. package/dist/getFromConfig.js +49 -0
  18. package/dist/getFromConfig.js.map +1 -0
  19. package/dist/handlers/authorize.d.ts +5 -0
  20. package/dist/handlers/authorize.js +173 -0
  21. package/dist/handlers/authorize.js.map +1 -0
  22. package/dist/handlers/configure/index.d.ts +5 -0
  23. package/dist/handlers/configure/index.js +44 -0
  24. package/dist/handlers/configure/index.js.map +1 -0
  25. package/dist/handlers/copy/index.d.ts +8 -0
  26. package/dist/handlers/copy/index.js +135 -0
  27. package/dist/handlers/copy/index.js.map +1 -0
  28. package/dist/handlers/delete/index.d.ts +5 -0
  29. package/dist/handlers/delete/index.js +34 -0
  30. package/dist/handlers/delete/index.js.map +1 -0
  31. package/dist/handlers/digest/index.d.ts +5 -0
  32. package/dist/handlers/digest/index.js +23 -0
  33. package/dist/handlers/digest/index.js.map +1 -0
  34. package/dist/handlers/functions/call.d.ts +6 -0
  35. package/dist/handlers/functions/call.js +47 -0
  36. package/dist/handlers/functions/call.js.map +1 -0
  37. package/dist/handlers/functions/observable/Observable.d.ts +49 -0
  38. package/dist/handlers/functions/observable/Observable.js +290 -0
  39. package/dist/handlers/functions/observable/Observable.js.map +1 -0
  40. package/dist/handlers/functions/observable/SharedObservable.d.ts +43 -0
  41. package/dist/handlers/functions/observable/SharedObservable.js +312 -0
  42. package/dist/handlers/functions/observable/SharedObservable.js.map +1 -0
  43. package/dist/handlers/functions/observable/index.d.ts +13 -0
  44. package/dist/handlers/functions/observable/index.js +130 -0
  45. package/dist/handlers/functions/observable/index.js.map +1 -0
  46. package/dist/handlers/get/index.d.ts +5 -0
  47. package/dist/handlers/get/index.js +23 -0
  48. package/dist/handlers/get/index.js.map +1 -0
  49. package/dist/handlers/getConfig/index.d.ts +5 -0
  50. package/dist/handlers/getConfig/index.js +37 -0
  51. package/dist/handlers/getConfig/index.js.map +1 -0
  52. package/dist/handlers/handleRequests.d.ts +5 -0
  53. package/dist/handlers/handleRequests.js +62 -0
  54. package/dist/handlers/handleRequests.js.map +1 -0
  55. package/dist/handlers/index.d.ts +4 -0
  56. package/dist/handlers/index.js +49 -0
  57. package/dist/handlers/index.js.map +1 -0
  58. package/dist/handlers/messageParser.d.ts +5 -0
  59. package/dist/handlers/messageParser.js +76 -0
  60. package/dist/handlers/messageParser.js.map +1 -0
  61. package/dist/handlers/rest/file/DataStream.d.ts +7 -0
  62. package/dist/handlers/rest/file/DataStream.js +17 -0
  63. package/dist/handlers/rest/file/DataStream.js.map +1 -0
  64. package/dist/handlers/rest/file/formStream.d.ts +4 -0
  65. package/dist/handlers/rest/file/formStream.js +184 -0
  66. package/dist/handlers/rest/file/formStream.js.map +1 -0
  67. package/dist/handlers/rest/file/getExtenstion.d.ts +2 -0
  68. package/dist/handlers/rest/file/getExtenstion.js +22 -0
  69. package/dist/handlers/rest/file/getExtenstion.js.map +1 -0
  70. package/dist/handlers/rest/file/index.d.ts +4 -0
  71. package/dist/handlers/rest/file/index.js +53 -0
  72. package/dist/handlers/rest/file/index.js.map +1 -0
  73. package/dist/handlers/rest/file/storeFile.d.ts +5 -0
  74. package/dist/handlers/rest/file/storeFile.js +24 -0
  75. package/dist/handlers/rest/file/storeFile.js.map +1 -0
  76. package/dist/handlers/rest/file/stream.d.ts +5 -0
  77. package/dist/handlers/rest/file/stream.js +98 -0
  78. package/dist/handlers/rest/file/stream.js.map +1 -0
  79. package/dist/handlers/rest/file/types.d.ts +9 -0
  80. package/dist/handlers/rest/file/types.js +3 -0
  81. package/dist/handlers/rest/file/types.js.map +1 -0
  82. package/dist/handlers/rest/getReqMessage.d.ts +3 -0
  83. package/dist/handlers/rest/getReqMessage.js +88 -0
  84. package/dist/handlers/rest/getReqMessage.js.map +1 -0
  85. package/dist/handlers/rest/index.d.ts +4 -0
  86. package/dist/handlers/rest/index.js +111 -0
  87. package/dist/handlers/rest/index.js.map +1 -0
  88. package/dist/handlers/rest/invalidReq.d.ts +4 -0
  89. package/dist/handlers/rest/invalidReq.js +20 -0
  90. package/dist/handlers/rest/invalidReq.js.map +1 -0
  91. package/dist/handlers/rest/parseResponse.d.ts +4 -0
  92. package/dist/handlers/rest/parseResponse.js +176 -0
  93. package/dist/handlers/rest/parseResponse.js.map +1 -0
  94. package/dist/handlers/rest/readBody.d.ts +3 -0
  95. package/dist/handlers/rest/readBody.js +44 -0
  96. package/dist/handlers/rest/readBody.js.map +1 -0
  97. package/dist/handlers/set/index.d.ts +5 -0
  98. package/dist/handlers/set/index.js +20 -0
  99. package/dist/handlers/set/index.js.map +1 -0
  100. package/dist/handlers/subscription/index.d.ts +34 -0
  101. package/dist/handlers/subscription/index.js +206 -0
  102. package/dist/handlers/subscription/index.js.map +1 -0
  103. package/dist/handlers/token.d.ts +5 -0
  104. package/dist/handlers/token.js +64 -0
  105. package/dist/handlers/token.js.map +1 -0
  106. package/dist/handlers/track/index.d.ts +7 -0
  107. package/dist/handlers/track/index.js +102 -0
  108. package/dist/handlers/track/index.js.map +1 -0
  109. package/dist/index.d.ts +35 -0
  110. package/dist/index.js +211 -0
  111. package/dist/index.js.map +1 -0
  112. package/dist/openListener.d.ts +4 -0
  113. package/dist/openListener.js +13 -0
  114. package/dist/openListener.js.map +1 -0
  115. package/dist/secrets.d.ts +6 -0
  116. package/dist/secrets.js +103 -0
  117. package/dist/secrets.js.map +1 -0
  118. package/dist/types.d.ts +97 -0
  119. package/dist/types.js +9 -0
  120. package/dist/types.js.map +1 -0
  121. package/dist/upgradeListener.d.ts +4 -0
  122. package/dist/upgradeListener.js +47 -0
  123. package/dist/upgradeListener.js.map +1 -0
  124. package/dist/workers/index.d.ts +0 -0
  125. package/dist/workers/index.js +20 -0
  126. package/dist/workers/index.js.map +1 -0
  127. package/dist/workers/workerCode.d.ts +12 -0
  128. package/dist/workers/workerCode.js +46 -0
  129. package/dist/workers/workerCode.js.map +1 -0
  130. package/package.json +29 -0
  131. package/readme.md +1 -0
@@ -0,0 +1,97 @@
1
+ /// <reference types="node" />
2
+ import Client from './Client';
3
+ import uws from '@based/uws';
4
+ import { ConnectOptions } from '@saulx/selva';
5
+ import Based from './BasedServerClient';
6
+ import { Params } from './Params';
7
+ import { BasedServer } from '.';
8
+ import { ErrorObject, GenericObject } from '@based/client';
9
+ import { Readable } from 'stream';
10
+ export { Client };
11
+ export declare type CallParams = Omit<Params, 'update'>;
12
+ export declare type DataListener = (data: GenericObject, checksum: number, error?: ErrorObject) => void;
13
+ export declare type ObservableFunction = {
14
+ function: (params: Params) => Promise<() => void>;
15
+ authorize?: (params: CallParams) => Promise<boolean>;
16
+ observable: true;
17
+ shared: boolean;
18
+ cnt?: number;
19
+ worker?: boolean;
20
+ };
21
+ export declare type CallFunction = {
22
+ observable: false;
23
+ authorize?: (params: CallParams) => Promise<boolean>;
24
+ function: (params: CallParams) => Promise<any>;
25
+ cnt?: number;
26
+ worker?: boolean;
27
+ };
28
+ export declare type AuthorizeFn = (params: Params) => Promise<boolean>;
29
+ export declare type FileOpts = {
30
+ based: Based;
31
+ stream: Readable;
32
+ mimeType: string;
33
+ id: string;
34
+ extension: string;
35
+ size: number;
36
+ };
37
+ export declare type GetInitial = (server: BasedServer, name: string) => Promise<ObservableFunction | CallFunction | null>;
38
+ export declare type Geo = {
39
+ iso: string;
40
+ long: number;
41
+ lat: number;
42
+ regions: string[];
43
+ };
44
+ export declare type Config = {
45
+ noAuth?: boolean;
46
+ getBasedKey?: () => Promise<string>;
47
+ getApiKeysPublicKey?: () => Promise<string>;
48
+ getGeo?: (ip: string) => Geo;
49
+ storeFile?: (opts: FileOpts) => Promise<{
50
+ src: string;
51
+ origin: string;
52
+ version?: string;
53
+ }>;
54
+ deleteFile?: (opts: {
55
+ based: Based;
56
+ id: string;
57
+ db?: string;
58
+ }) => Promise<boolean>;
59
+ functionConfig?: {
60
+ idleTimeout: number;
61
+ getInitial: GetInitial;
62
+ clear: (server: BasedServer, name: string) => Promise<void>;
63
+ };
64
+ secretsConfig?: {
65
+ secretTimeouts?: {
66
+ [name: string]: number;
67
+ };
68
+ idleTimeout: number;
69
+ getInitial: (server: BasedServer, name: string) => Promise<string | null>;
70
+ clear: (server: BasedServer, name: string) => Promise<void>;
71
+ };
72
+ secrets?: {
73
+ [key: string]: any;
74
+ };
75
+ authorizeConnection?: Authorize;
76
+ authorize?: AuthorizeFn;
77
+ functions?: {
78
+ [key: string]: ObservableFunction | CallFunction;
79
+ };
80
+ onOpen?: (...args: any[]) => void;
81
+ onClose?: (...args: any[]) => void;
82
+ };
83
+ export declare type Authorize = (req: uws.HttpRequest, ctx: uws.us_socket_context_t) => Promise<boolean>;
84
+ export declare type ServerOptions = {
85
+ port?: number;
86
+ useLessMemory?: boolean;
87
+ key?: string;
88
+ cert?: string;
89
+ debug?: boolean;
90
+ db: ConnectOptions;
91
+ config?: Config;
92
+ state?: GenericObject;
93
+ };
94
+ export declare type SendTokenOptions = {
95
+ isBasedUser?: boolean;
96
+ isApiKey?: boolean;
97
+ };
package/dist/types.js ADDED
@@ -0,0 +1,9 @@
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.Client = void 0;
7
+ const Client_1 = __importDefault(require("./Client"));
8
+ exports.Client = Client_1.default;
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA6B;AASpB,iBATF,gBAAM,CASE"}
@@ -0,0 +1,4 @@
1
+ import uws from '@based/uws';
2
+ import { BasedServer } from '.';
3
+ declare const _default: (server: BasedServer, res: uws.HttpResponse, req: uws.HttpRequest, ctx: uws.us_socket_context_t) => void;
4
+ export default _default;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = (server, res, req,
4
+ // eslint-disable-next-line
5
+ ctx) => {
6
+ let aborted;
7
+ const onAborted = () => {
8
+ aborted = true;
9
+ };
10
+ // res.writeStatus('101 Switching Protocols')
11
+ const onAuth = (authorized) => {
12
+ if (aborted) {
13
+ return;
14
+ }
15
+ if (authorized) {
16
+ const query = req.getQuery();
17
+ const url = req.getUrl();
18
+ const ua = req.getHeader('user-agent');
19
+ const ip = req.getHeader('x-forwarded-for') ||
20
+ Buffer.from(res.getRemoteAddressAsText()).toString();
21
+ const origin = req.getHeader('origin');
22
+ const secWebSocketKey = req.getHeader('sec-websocket-key');
23
+ const secWebSocketProtocol = req.getHeader('sec-websocket-protocol');
24
+ const secWebSocketExtensions = req.getHeader('sec-websocket-extensions');
25
+ res.writeStatus('101 Switching Protocols');
26
+ res.upgrade({
27
+ query,
28
+ origin,
29
+ url,
30
+ ua,
31
+ ip,
32
+ }, secWebSocketKey, secWebSocketProtocol, secWebSocketExtensions, ctx);
33
+ }
34
+ else {
35
+ res.writeStatus('401 Unauthorized');
36
+ res.end();
37
+ }
38
+ };
39
+ res.onAborted(onAborted);
40
+ if (server.config && server.config.authorizeConnection) {
41
+ server.config.authorizeConnection(req, ctx).then(onAuth);
42
+ }
43
+ else {
44
+ onAuth(true);
45
+ }
46
+ };
47
+ //# sourceMappingURL=upgradeListener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgradeListener.js","sourceRoot":"","sources":["../src/upgradeListener.ts"],"names":[],"mappings":";;AAGA,kBAAe,CACb,MAAmB,EACnB,GAAqB,EACrB,GAAoB;AACpB,2BAA2B;AAC3B,GAA4B,EAC5B,EAAE;IACF,IAAI,OAAO,CAAA;IACX,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,OAAO,GAAG,IAAI,CAAA;IAChB,CAAC,CAAA;IACD,6CAA6C;IAE7C,MAAM,MAAM,GAAG,CAAC,UAAU,EAAE,EAAE;QAC5B,IAAI,OAAO,EAAE;YACX,OAAM;SACP;QACD,IAAI,UAAU,EAAE;YACd,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAA;YAC5B,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAA;YACxB,MAAM,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;YACtC,MAAM,EAAE,GACN,GAAG,CAAC,SAAS,CAAC,iBAAiB,CAAC;gBAChC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAA;YACtD,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;YACtC,MAAM,eAAe,GAAG,GAAG,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAA;YAC1D,MAAM,oBAAoB,GAAG,GAAG,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAA;YACpE,MAAM,sBAAsB,GAAG,GAAG,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAA;YAExE,GAAG,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAA;YAE1C,GAAG,CAAC,OAAO,CACT;gBACE,KAAK;gBACL,MAAM;gBACN,GAAG;gBACH,EAAE;gBACF,EAAE;aACH,EACD,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,GAAG,CACJ,CAAA;SACF;aAAM;YACL,GAAG,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAA;YACnC,GAAG,CAAC,GAAG,EAAE,CAAA;SACV;IACH,CAAC,CAAA;IAED,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;IAExB,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE;QACtD,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;KACzD;SAAM;QACL,MAAM,CAAC,IAAI,CAAC,CAAA;KACb;AACH,CAAC,CAAA"}
File without changes
@@ -0,0 +1,20 @@
1
+ // make a based server thing useFunctionWorker
2
+ // workerConfig = {
3
+ // concurrency: 5
4
+ // maxCrashRate: [5, 1000] // 20 per second
5
+ // logs in a special way
6
+ // }
7
+ // import workerify from './workerify'
8
+ /*
9
+ import { CallFunction, ObservableFunction } from '@based/server/src/types'
10
+
11
+ export default (
12
+ fn: ObservableFunction | CallFunction
13
+ ): ObservableFunction | CallFunction => {
14
+ console.info('GO GO GO', fn)
15
+
16
+ return fn
17
+ }
18
+
19
+ */
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workers/index.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,mBAAmB;AACnB,kBAAkB;AAClB,4CAA4C;AAC5C,wBAAwB;AACxB,IAAI;AACJ,sCAAsC;AAEtC;;;;;;;;;;;EAWE"}
@@ -0,0 +1,12 @@
1
+ declare class WorkerClient {
2
+ constructor(id: number);
3
+ }
4
+ declare class WorkerBasedClient {
5
+ }
6
+ declare class WorkerParams {
7
+ private _clientId;
8
+ payload: any;
9
+ callStack: any[];
10
+ get user(): WorkerClient;
11
+ get based(): WorkerBasedClient;
12
+ }
@@ -0,0 +1,46 @@
1
+ // import { Client } from '@based/server/src/types'
2
+ // import { BasedServerClient } from '@based/server'
3
+ // export type CallParams = {
4
+ // payload: any
5
+ // based: BasedServerClient
6
+ // user: Client
7
+ // callStack: string[]
8
+ // }
9
+ // export type ObservableParams = {
10
+ // payload: any
11
+ // based: BasedServerClient
12
+ // user?: Client
13
+ // callStack: string[]
14
+ // // error later...
15
+ // update: (value: any, checksum?: number) => void
16
+ // }
17
+ // workers
18
+ // in the worker we are going to run the code with getters
19
+ // e.g.
20
+ // fn({ user, payload, update, based }) // we add error later
21
+ // fn({ user, payload, based })
22
+ // WorkerParams object - mimic normal params object
23
+ // this all has to be part of based server
24
+ // mimic normal client
25
+ class WorkerClient {
26
+ constructor(id) {
27
+ // yes number
28
+ console.info(id);
29
+ }
30
+ }
31
+ // has to wrap every method
32
+ class WorkerBasedClient {
33
+ }
34
+ class WorkerParams {
35
+ constructor() {
36
+ this.callStack = [];
37
+ }
38
+ get user() {
39
+ // also pair it with other functions potentialy
40
+ return new WorkerClient(this._clientId);
41
+ }
42
+ get based() {
43
+ return new WorkerBasedClient();
44
+ }
45
+ }
46
+ //# sourceMappingURL=workerCode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workerCode.js","sourceRoot":"","sources":["../../src/workers/workerCode.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,oDAAoD;AAEpD,6BAA6B;AAC7B,iBAAiB;AACjB,6BAA6B;AAC7B,iBAAiB;AACjB,wBAAwB;AACxB,IAAI;AAEJ,mCAAmC;AACnC,iBAAiB;AACjB,6BAA6B;AAC7B,kBAAkB;AAClB,wBAAwB;AACxB,sBAAsB;AACtB,oDAAoD;AACpD,IAAI;AAEJ,UAAU;AAEV,0DAA0D;AAE1D,OAAO;AAEP,6DAA6D;AAE7D,+BAA+B;AAE/B,mDAAmD;AAEnD,0CAA0C;AAE1C,sBAAsB;AACtB,MAAM,YAAY;IAChB,YAAY,EAAU;QACpB,aAAa;QACb,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAClB,CAAC;CAEF;AAED,2BAA2B;AAC3B,MAAM,iBAAiB;CAEtB;AAED,MAAM,YAAY;IAAlB;QAKS,cAAS,GAAG,EAAE,CAAA;IAUvB,CAAC;IARC,IAAI,IAAI;QACN,+CAA+C;QAC/C,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACzC,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,iBAAiB,EAAE,CAAA;IAChC,CAAC;CACF"}
package/package.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "@based/server",
3
+ "version": "0.0.1",
4
+ "main": "dist/index.js",
5
+ "module": "src/index.ts",
6
+ "scripts": {
7
+ "build": "yarn tsconfig && tsc -b",
8
+ "watch": "yarn build -w"
9
+ },
10
+ "dependencies": {
11
+ "@based/client": "^0.9.6",
12
+ "@based/uws": "20.6.0",
13
+ "@saulx/diff": "^1.1.3",
14
+ "@saulx/hash": "^1.1.0",
15
+ "@saulx/selva": "10.2.1",
16
+ "@saulx/utils": "^2.1.1",
17
+ "chalk": "^4.1.1",
18
+ "jsonexport": "^3.2.0",
19
+ "jsonwebtoken": "^8.5.1",
20
+ "mime-types": "^2.1.31",
21
+ "ua-parser-js": "^0.7.28"
22
+ },
23
+ "devDependencies": {
24
+ "@based/tsconfig": "*",
25
+ "@types/node": "^16.3.1",
26
+ "ts-node": "^10.1.0",
27
+ "typescript": "^4.3.5"
28
+ }
29
+ }
package/readme.md ADDED
@@ -0,0 +1 @@
1
+ # based-server