dreaction-client-core 1.3.0 → 1.4.0
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.
- package/lib/index.d.ts +2 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -1
- package/lib/plugins/api-response.d.ts +15 -4
- package/lib/plugins/api-response.d.ts.map +1 -1
- package/lib/plugins/api-response.js +16 -4
- package/lib/plugins/index.d.ts +2 -3
- package/lib/plugins/index.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +2 -0
- package/src/plugins/api-response.ts +38 -5
package/lib/index.d.ts
CHANGED
|
@@ -8,6 +8,8 @@ export { assertHasStateResponsePlugin, hasStateResponsePlugin, } from './plugins
|
|
|
8
8
|
export type { StateResponsePlugin, StateResponseFeatures, } from './plugins/state-responses';
|
|
9
9
|
export { assertHasIssuePlugin, hasIssuePlugin } from './plugins/issue';
|
|
10
10
|
export type { IssuePlugin, IssueFeatures } from './plugins/issue';
|
|
11
|
+
export { generateRequestId } from './plugins/api-response';
|
|
12
|
+
export type { ApiResponsePlugin, ApiResponseFeatures } from './plugins/api-response';
|
|
11
13
|
export { runFPSMeter } from './utils/fps';
|
|
12
14
|
export { createPluginGuard } from './utils/plugin-guard';
|
|
13
15
|
import type { InferFeatures } from './types';
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,aAAa,EACb,wBAAwB,EACxB,gBAAgB,EAChB,MAAM,EACN,aAAa,GACd,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGrD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC1E,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACvE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,aAAa,EACb,wBAAwB,EACxB,gBAAgB,EAChB,MAAM,EACN,aAAa,GACd,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGrD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC1E,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACvE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAGrF,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAC,OAAO,WAAW,CAAC,CAAC;AAEnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,MAAM,WAAW,SAAU,SAAQ,aAAa,EAAE,kBAAkB;CAAI"}
|
package/lib/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createPluginGuard = exports.runFPSMeter = exports.hasIssuePlugin = exports.assertHasIssuePlugin = exports.hasStateResponsePlugin = exports.assertHasStateResponsePlugin = exports.hasLoggerPlugin = exports.assertHasLoggerPlugin = exports.corePlugins = exports.createClient = exports.DReactionImpl = void 0;
|
|
3
|
+
exports.createPluginGuard = exports.runFPSMeter = exports.generateRequestId = exports.hasIssuePlugin = exports.assertHasIssuePlugin = exports.hasStateResponsePlugin = exports.assertHasStateResponsePlugin = exports.hasLoggerPlugin = exports.assertHasLoggerPlugin = exports.corePlugins = exports.createClient = exports.DReactionImpl = void 0;
|
|
4
4
|
// Core
|
|
5
5
|
var core_1 = require("./core");
|
|
6
6
|
Object.defineProperty(exports, "DReactionImpl", { enumerable: true, get: function () { return core_1.DReactionImpl; } });
|
|
@@ -17,6 +17,8 @@ Object.defineProperty(exports, "hasStateResponsePlugin", { enumerable: true, get
|
|
|
17
17
|
var issue_1 = require("./plugins/issue");
|
|
18
18
|
Object.defineProperty(exports, "assertHasIssuePlugin", { enumerable: true, get: function () { return issue_1.assertHasIssuePlugin; } });
|
|
19
19
|
Object.defineProperty(exports, "hasIssuePlugin", { enumerable: true, get: function () { return issue_1.hasIssuePlugin; } });
|
|
20
|
+
var api_response_1 = require("./plugins/api-response");
|
|
21
|
+
Object.defineProperty(exports, "generateRequestId", { enumerable: true, get: function () { return api_response_1.generateRequestId; } });
|
|
20
22
|
// Utils
|
|
21
23
|
var fps_1 = require("./utils/fps");
|
|
22
24
|
Object.defineProperty(exports, "runFPSMeter", { enumerable: true, get: function () { return fps_1.runFPSMeter; } });
|
|
@@ -1,12 +1,23 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { NetworkRequest, NetworkResponse } from 'dreaction-protocol';
|
|
2
|
+
import type { DReactionCore, Plugin } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Generates a unique request ID for pairing api.request and api.response events.
|
|
5
|
+
*/
|
|
6
|
+
export declare function generateRequestId(): string;
|
|
7
|
+
export interface ApiResponseFeatures {
|
|
8
|
+
apiRequest: (requestId: string, request: NetworkRequest) => void;
|
|
9
|
+
apiResponse: (requestId: string, request: NetworkRequest, response: NetworkResponse, duration: number) => void;
|
|
10
|
+
}
|
|
11
|
+
export type ApiResponsePlugin = Plugin<DReactionCore> & {
|
|
12
|
+
features: ApiResponseFeatures;
|
|
13
|
+
};
|
|
2
14
|
/**
|
|
3
15
|
* Sends API request/response information.
|
|
4
16
|
*/
|
|
5
17
|
declare const apiResponse: () => (dreaction: DReactionCore) => {
|
|
6
18
|
features: {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}, response: any, duration: number) => void;
|
|
19
|
+
apiRequest: (requestId: string, request: NetworkRequest) => void;
|
|
20
|
+
apiResponse: (requestId: string, request: NetworkRequest, response: NetworkResponse, duration: number) => void;
|
|
10
21
|
};
|
|
11
22
|
};
|
|
12
23
|
export default apiResponse;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-response.d.ts","sourceRoot":"","sources":["../../src/plugins/api-response.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"api-response.d.ts","sourceRoot":"","sources":["../../src/plugins/api-response.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAItD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAK1C;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IACjE,WAAW,EAAE,CACX,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,MAAM,KACb,IAAI,CAAC;CACX;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG;IACtD,QAAQ,EAAE,mBAAmB,CAAC;CAC/B,CAAC;AAEF;;GAEG;AACH,QAAA,MAAM,WAAW,oBAAqB,aAAa;;gCAGrB,MAAM,WAAW,cAAc;iCAI1C,MAAM,WACR,cAAc,YACb,eAAe,YACf,MAAM;;CAiBvB,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -1,21 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateRequestId = generateRequestId;
|
|
4
|
+
let requestCounter = 0;
|
|
5
|
+
/**
|
|
6
|
+
* Generates a unique request ID for pairing api.request and api.response events.
|
|
7
|
+
*/
|
|
8
|
+
function generateRequestId() {
|
|
9
|
+
requestCounter++;
|
|
10
|
+
const timestamp = Date.now();
|
|
11
|
+
const random = Math.random().toString(36).substring(2, 9);
|
|
12
|
+
return `${timestamp}-${requestCounter}-${random}`;
|
|
13
|
+
}
|
|
3
14
|
/**
|
|
4
15
|
* Sends API request/response information.
|
|
5
16
|
*/
|
|
6
17
|
const apiResponse = () => (dreaction) => {
|
|
7
18
|
return {
|
|
8
19
|
features: {
|
|
9
|
-
|
|
20
|
+
apiRequest: (requestId, request) => {
|
|
21
|
+
dreaction.send('api.request', { requestId, request });
|
|
22
|
+
},
|
|
23
|
+
apiResponse: (requestId, request, response, duration) => {
|
|
10
24
|
const ok = response &&
|
|
11
25
|
response.status &&
|
|
12
26
|
typeof response.status === 'number' &&
|
|
13
27
|
response.status >= 200 &&
|
|
14
28
|
response.status <= 299;
|
|
15
29
|
const important = !ok;
|
|
16
|
-
dreaction.send('api.response',
|
|
17
|
-
// @ts-ignore
|
|
18
|
-
{ request, response, duration }, important);
|
|
30
|
+
dreaction.send('api.response', { requestId, request, response, duration }, important);
|
|
19
31
|
},
|
|
20
32
|
},
|
|
21
33
|
};
|
package/lib/plugins/index.d.ts
CHANGED
|
@@ -37,9 +37,8 @@ export declare const corePlugins: (((dreaction: DReactionCore) => {
|
|
|
37
37
|
};
|
|
38
38
|
}) | ((dreaction: DReactionCore) => {
|
|
39
39
|
features: {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}, response: any, duration: number) => void;
|
|
40
|
+
apiRequest: (requestId: string, request: import("dreaction-protocol").NetworkRequest) => void;
|
|
41
|
+
apiResponse: (requestId: string, request: import("dreaction-protocol").NetworkRequest, response: import("dreaction-protocol").NetworkResponse, duration: number) => void;
|
|
43
42
|
};
|
|
44
43
|
}) | ((dreaction: DReactionCore) => {
|
|
45
44
|
features: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,UAAU,CAAC;AAS7D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAE3C,eAAO,MAAM,WAAW
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,UAAU,CAAC;AAS7D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAE3C,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAQkB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dreaction-client-core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"@types/ws": "^8.5.13",
|
|
18
18
|
"eventemitter-strict": "^1.0.1",
|
|
19
19
|
"ws": "^8.18.0",
|
|
20
|
-
"dreaction-protocol": "1.0.
|
|
20
|
+
"dreaction-protocol": "1.0.11"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
23
|
"typescript": "^5.4.5"
|
package/src/index.ts
CHANGED
|
@@ -29,6 +29,8 @@ export type {
|
|
|
29
29
|
} from './plugins/state-responses';
|
|
30
30
|
export { assertHasIssuePlugin, hasIssuePlugin } from './plugins/issue';
|
|
31
31
|
export type { IssuePlugin, IssueFeatures } from './plugins/issue';
|
|
32
|
+
export { generateRequestId } from './plugins/api-response';
|
|
33
|
+
export type { ApiResponsePlugin, ApiResponseFeatures } from './plugins/api-response';
|
|
32
34
|
|
|
33
35
|
// Utils
|
|
34
36
|
export { runFPSMeter } from './utils/fps';
|
|
@@ -1,14 +1,48 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
NetworkRequest,
|
|
3
|
+
NetworkResponse,
|
|
4
|
+
} from 'dreaction-protocol';
|
|
1
5
|
import type { DReactionCore, Plugin } from '../types';
|
|
2
6
|
|
|
7
|
+
let requestCounter = 0;
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Generates a unique request ID for pairing api.request and api.response events.
|
|
11
|
+
*/
|
|
12
|
+
export function generateRequestId(): string {
|
|
13
|
+
requestCounter++;
|
|
14
|
+
const timestamp = Date.now();
|
|
15
|
+
const random = Math.random().toString(36).substring(2, 9);
|
|
16
|
+
return `${timestamp}-${requestCounter}-${random}`;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface ApiResponseFeatures {
|
|
20
|
+
apiRequest: (requestId: string, request: NetworkRequest) => void;
|
|
21
|
+
apiResponse: (
|
|
22
|
+
requestId: string,
|
|
23
|
+
request: NetworkRequest,
|
|
24
|
+
response: NetworkResponse,
|
|
25
|
+
duration: number
|
|
26
|
+
) => void;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export type ApiResponsePlugin = Plugin<DReactionCore> & {
|
|
30
|
+
features: ApiResponseFeatures;
|
|
31
|
+
};
|
|
32
|
+
|
|
3
33
|
/**
|
|
4
34
|
* Sends API request/response information.
|
|
5
35
|
*/
|
|
6
36
|
const apiResponse = () => (dreaction: DReactionCore) => {
|
|
7
37
|
return {
|
|
8
38
|
features: {
|
|
39
|
+
apiRequest: (requestId: string, request: NetworkRequest) => {
|
|
40
|
+
dreaction.send('api.request', { requestId, request });
|
|
41
|
+
},
|
|
9
42
|
apiResponse: (
|
|
10
|
-
|
|
11
|
-
|
|
43
|
+
requestId: string,
|
|
44
|
+
request: NetworkRequest,
|
|
45
|
+
response: NetworkResponse,
|
|
12
46
|
duration: number
|
|
13
47
|
) => {
|
|
14
48
|
const ok =
|
|
@@ -20,13 +54,12 @@ const apiResponse = () => (dreaction: DReactionCore) => {
|
|
|
20
54
|
const important = !ok;
|
|
21
55
|
dreaction.send(
|
|
22
56
|
'api.response',
|
|
23
|
-
|
|
24
|
-
{ request, response, duration },
|
|
57
|
+
{ requestId, request, response, duration },
|
|
25
58
|
important
|
|
26
59
|
);
|
|
27
60
|
},
|
|
28
61
|
},
|
|
29
|
-
} satisfies
|
|
62
|
+
} satisfies ApiResponsePlugin;
|
|
30
63
|
};
|
|
31
64
|
|
|
32
65
|
export default apiResponse;
|