@nmtjs/json-format 0.15.0-beta.5 → 0.15.0-beta.51
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/README.md +31 -1
- package/dist/client.js +2 -2
- package/dist/client.js.map +1 -1
- package/dist/common.d.ts +1 -1
- package/dist/common.js.map +1 -1
- package/dist/server.js +4 -2
- package/dist/server.js.map +1 -1
- package/package.json +17 -11
- package/src/client.ts +1 -1
- package/src/server.ts +3 -1
package/README.md
CHANGED
|
@@ -6,4 +6,34 @@
|
|
|
6
6
|
- binary data streaming and event subscriptions
|
|
7
7
|
- contract-based API
|
|
8
8
|
- end-to-end type safety
|
|
9
|
-
- CPU-intensive task execution on separate workers
|
|
9
|
+
- CPU-intensive task execution on separate workers
|
|
10
|
+
|
|
11
|
+
## Jobs E2E (Local Docker)
|
|
12
|
+
|
|
13
|
+
Prerequisites:
|
|
14
|
+
- Docker Desktop (or Docker Engine) with `docker compose` available
|
|
15
|
+
|
|
16
|
+
No host ports are exposed in this setup. Tests run fully inside Docker containers.
|
|
17
|
+
The test image is optimized for Docker layer caching with `pnpm fetch` + offline install.
|
|
18
|
+
|
|
19
|
+
Run both backends with one command:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
pnpm run test:e2e:jobs:docker
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
This command rebuilds the test image on each run and executes Redis + Valkey suites in one pass.
|
|
26
|
+
|
|
27
|
+
Run Jobs E2E directly in Docker:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
docker compose -f docker-compose.jobs-e2e.yml run --rm --build test-jobs
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Manual Docker control:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
docker compose -f docker-compose.jobs-e2e.yml up -d --wait redis valkey
|
|
37
|
+
docker compose -f docker-compose.jobs-e2e.yml run --rm --build test-jobs
|
|
38
|
+
docker compose -f docker-compose.jobs-e2e.yml down -v --remove-orphans
|
|
39
|
+
```
|
package/dist/client.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// ./ <reference lib="dom" />
|
|
2
2
|
import { concat, decodeNumber, decodeText, encodeNumber, encodeText, ProtocolBlob, } from '@nmtjs/protocol';
|
|
3
3
|
import { BaseClientFormat } from '@nmtjs/protocol/client';
|
|
4
|
-
import { deserializeStreamId, isStreamId, serializeStreamId } from
|
|
4
|
+
import { deserializeStreamId, isStreamId, serializeStreamId } from './common.js';
|
|
5
5
|
/**
|
|
6
6
|
* Custom JSON encoding format with support for Neemata streams.
|
|
7
7
|
*/
|
|
@@ -60,7 +60,7 @@ export class JsonFormat extends BaseClientFormat {
|
|
|
60
60
|
}
|
|
61
61
|
return value;
|
|
62
62
|
};
|
|
63
|
-
if (
|
|
63
|
+
if (!hasPayload)
|
|
64
64
|
return undefined;
|
|
65
65
|
else if (hasStreams)
|
|
66
66
|
return this.decode(payloadBuffer, replacer);
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAQ7B,OAAO,EACL,MAAM,EACN,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,UAAU,EACV,YAAY,GACb,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAEzD,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEhF;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,gBAAgB;IAC9C,WAAW,GAAG,kBAAkB,CAAA;IAEhC,MAAM,CACJ,IAAS,EACT,SAA4C;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/common.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ProtocolBlobMetadata } from '@nmtjs/protocol';
|
|
2
2
|
export declare const serializeStreamId: (id: number) => string;
|
|
3
3
|
export declare const deserializeStreamId: (value: string) => number;
|
|
4
|
-
export declare const isStreamId: (value: any) =>
|
|
4
|
+
export declare const isStreamId: (value: any) => 0 | boolean;
|
|
5
5
|
export type StreamsMetadata = Record<number, ProtocolBlobMetadata>;
|
|
6
6
|
export type ClientEncodedRPC = [streams: StreamsMetadata, payload?: any];
|
|
7
7
|
export type ServerEncodedRPC = [streams: StreamsMetadata, payload?: any];
|
package/dist/common.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AAEA,6DAA6D;AAC7D,MAAM,oBAAoB,GAAG,qBAAqB,CAAA;AAElD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAAU,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AAEA,6DAA6D;AAC7D,MAAM,oBAAoB,GAAG,qBAAqB,CAAA;AAElD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC;IAC/C,OAAO,GAAG,oBAAoB,GAAG,EAAE,EAAE,CAAA;AAAA,CACtC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC;IACpD,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;IACzD,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;AAAA,CACjC,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAU,EAAE,EAAE,CAAC;IACxC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,CAAC,MAAM;QACZ,KAAK,CAAC,UAAU,CAAC,oBAAoB,CAAC,CACvC,CAAA;AAAA,CACF,CAAA"}
|
package/dist/server.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { concat, decodeNumber, encodeNumber } from '@nmtjs/protocol';
|
|
2
2
|
import { BaseServerFormat } from '@nmtjs/protocol/server';
|
|
3
|
-
import { deserializeStreamId, isStreamId, serializeStreamId } from
|
|
3
|
+
import { deserializeStreamId, isStreamId, serializeStreamId } from './common.js';
|
|
4
4
|
export class JsonFormat extends BaseServerFormat {
|
|
5
5
|
contentType = 'application/json';
|
|
6
6
|
accept = ['application/json'];
|
|
7
7
|
encode(data) {
|
|
8
|
-
return data
|
|
8
|
+
return typeof data !== 'undefined'
|
|
9
|
+
? Buffer.from(JSON.stringify(data), 'utf-8')
|
|
10
|
+
: Buffer.alloc(0);
|
|
9
11
|
}
|
|
10
12
|
encodeBlob(streamId) {
|
|
11
13
|
return serializeStreamId(streamId);
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAEzD,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEhF,MAAM,OAAO,UAAW,SAAQ,gBAAgB;IAC9C,WAAW,GAAG,kBAAkB,CAAA;IAChC,MAAM,GAAG,CAAC,kBAAkB,CAAC,CAAA;IAE7B,MAAM,CAAC,IAAS;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,17 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nmtjs/json-format",
|
|
3
|
+
"description": "JSON serialization format for the Neemata protocol.",
|
|
3
4
|
"type": "module",
|
|
4
5
|
"exports": {
|
|
5
|
-
"./client":
|
|
6
|
-
|
|
6
|
+
"./client": {
|
|
7
|
+
"types": "./dist/client.d.ts",
|
|
8
|
+
"import": "./dist/client.js",
|
|
9
|
+
"module-sync": "./dist/client.js"
|
|
10
|
+
},
|
|
11
|
+
"./server": {
|
|
12
|
+
"types": "./dist/server.d.ts",
|
|
13
|
+
"import": "./dist/server.js",
|
|
14
|
+
"module-sync": "./dist/server.js"
|
|
15
|
+
}
|
|
7
16
|
},
|
|
8
17
|
"dependencies": {
|
|
9
|
-
"@nmtjs/common": "0.15.0-beta.
|
|
10
|
-
"@nmtjs/protocol": "0.15.0-beta.
|
|
18
|
+
"@nmtjs/common": "0.15.0-beta.51",
|
|
19
|
+
"@nmtjs/protocol": "0.15.0-beta.51"
|
|
11
20
|
},
|
|
12
21
|
"peerDependencies": {
|
|
13
|
-
"@nmtjs/common": "0.15.0-beta.
|
|
14
|
-
"@nmtjs/protocol": "0.15.0-beta.
|
|
22
|
+
"@nmtjs/common": "0.15.0-beta.51",
|
|
23
|
+
"@nmtjs/protocol": "0.15.0-beta.51"
|
|
15
24
|
},
|
|
16
25
|
"files": [
|
|
17
26
|
"dist",
|
|
@@ -19,11 +28,8 @@
|
|
|
19
28
|
"LICENSE.md",
|
|
20
29
|
"README.md"
|
|
21
30
|
],
|
|
22
|
-
"version": "0.15.0-beta.
|
|
31
|
+
"version": "0.15.0-beta.51",
|
|
23
32
|
"scripts": {
|
|
24
|
-
"clean-build": "rm -rf ./dist"
|
|
25
|
-
"build": "tsc --declaration --sourcemap",
|
|
26
|
-
"dev": "tsc --watch",
|
|
27
|
-
"type-check": "tsc --noEmit"
|
|
33
|
+
"clean-build": "rm -rf ./dist"
|
|
28
34
|
}
|
|
29
35
|
}
|
package/src/client.ts
CHANGED
|
@@ -116,7 +116,7 @@ export class JsonFormat extends BaseClientFormat {
|
|
|
116
116
|
return value
|
|
117
117
|
}
|
|
118
118
|
|
|
119
|
-
if (
|
|
119
|
+
if (!hasPayload) return undefined
|
|
120
120
|
else if (hasStreams) return this.decode(payloadBuffer, replacer)
|
|
121
121
|
else return this.decode(payloadBuffer)
|
|
122
122
|
}
|
package/src/server.ts
CHANGED
|
@@ -10,7 +10,9 @@ export class JsonFormat extends BaseServerFormat {
|
|
|
10
10
|
accept = ['application/json']
|
|
11
11
|
|
|
12
12
|
encode(data: any) {
|
|
13
|
-
return data
|
|
13
|
+
return typeof data !== 'undefined'
|
|
14
|
+
? Buffer.from(JSON.stringify(data), 'utf-8')
|
|
15
|
+
: Buffer.alloc(0)
|
|
14
16
|
}
|
|
15
17
|
|
|
16
18
|
encodeBlob(streamId: number) {
|