@nymphjs/server 1.0.0-beta.133 → 1.0.0-beta.134

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/CHANGELOG.md CHANGED
@@ -3,6 +3,12 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [1.0.0-beta.134](https://forge.sciactive.com/sciactive/nymphjs/compare/v1.0.0-beta.133...v1.0.0-beta.134) (2026-10-29)
7
+
8
+ ### Features
9
+
10
+ - add weak cache of current queries on the client ([951b019](https://forge.sciactive.com/sciactive/nymphjs/commits/951b0191f7bc21a3c542122816084cb8ee49a129))
11
+
6
12
  # [1.0.0-beta.133](https://forge.sciactive.com/sciactive/nymphjs/compare/v1.0.0-beta.132...v1.0.0-beta.133) (2026-10-28)
7
13
 
8
14
  ### Features
@@ -15,6 +15,7 @@ const server = app.listen(5081);
15
15
  const nymph = new Nymph({
16
16
  restUrl: 'http://localhost:5081/test/',
17
17
  weakCache: true,
18
+ weakCacheKeepDirtyData: true,
18
19
  });
19
20
  const Employee = nymph.addEntityClass(EmployeeClass);
20
21
  describe('Nymph REST Server and Client with Client Weak Ref Cache', () => {
@@ -53,6 +54,29 @@ describe('Nymph REST Server and Client with Client Weak Ref Cache', () => {
53
54
  expect(checkA.current).toEqual(false);
54
55
  expect(checkB.current).toEqual(false);
55
56
  });
57
+ it('make two identical queries and check whether the same result is returned', async () => {
58
+ // @ts-ignore TS doesn't know about WeakRef.
59
+ if (typeof WeakRef === 'undefined') {
60
+ throw new Error('You must run this test in an environment that includes WeakRef.');
61
+ }
62
+ const employee = await createJane();
63
+ if (employee.guid == null) {
64
+ throw new Error('Entity is null.');
65
+ }
66
+ const checkAPromise = nymph.getEntity({ class: Employee }, { type: '&', guid: employee.guid });
67
+ const checkBPromise = nymph.getEntity({ class: Employee }, { type: '&', guid: employee.guid });
68
+ const checkA = await checkAPromise;
69
+ if (!checkA) {
70
+ throw new Error("Couldn't fetch entity.");
71
+ }
72
+ checkA.name = 'Success!';
73
+ const checkB = await checkBPromise;
74
+ if (!checkB) {
75
+ throw new Error("Couldn't fetch entity.");
76
+ }
77
+ expect(checkA.name).toEqual('Success!');
78
+ expect(checkB.name).toEqual('Success!');
79
+ });
56
80
  afterAll(() => {
57
81
  server.close(); // avoid jest open handle error
58
82
  });
@@ -1 +1 @@
1
- {"version":3,"file":"cache.test.js","sourceRoot":"","sources":["../src/cache.test.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,aAAa,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,OAAO,YAAY,MAAM,YAAY,CAAC;AACtC,OAAO,EACL,aAAa,IAAI,kBAAkB,EACnC,QAAQ,IAAI,aAAa,GAC1B,MAAM,oBAAoB,CAAC;AAE5B,MAAM,YAAY,GAAG;IACnB,QAAQ,EAAE,UAAU;CACrB,CAAC;AAEF,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,EAAE,EAAE,IAAI,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC;AACzE,MAAM,aAAa,GAAG,WAAW,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;AAErE,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;AACtB,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;AAC5C,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAEhC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;IACtB,OAAO,EAAE,6BAA6B;IACtC,SAAS,EAAE,IAAI;CAChB,CAAC,CAAC;AACH,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;AAErD,QAAQ,CAAC,yDAAyD,EAAE,GAAG,EAAE;IACvE,KAAK,UAAU,UAAU;QACvB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,iBAAiB,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;YAC5C,MAAM,CAAC,CAAC;QACV,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,4CAA4C;QAC5C,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,UAAU,EAAE,CAAC;QAEpC,IAAI,QAAQ,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,SAAS,CAClC,EAAE,KAAK,EAAE,QAAQ,EAAE,EACnB,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CACnC,CAAC;QAEF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QAED,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;QAEzB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,GAAG,EAAE;QACZ,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,+BAA+B;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"cache.test.js","sourceRoot":"","sources":["../src/cache.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nymphjs/server",
3
- "version": "1.0.0-beta.133",
3
+ "version": "1.0.0-beta.134",
4
4
  "description": "Nymph.js - REST Server",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -38,13 +38,13 @@
38
38
  },
39
39
  "license": "Apache-2.0",
40
40
  "dependencies": {
41
- "@nymphjs/nymph": "^1.0.0-beta.133",
41
+ "@nymphjs/nymph": "^1.0.0-beta.134",
42
42
  "cookie-parser": "^1.4.7",
43
43
  "express": "^5.2.1"
44
44
  },
45
45
  "devDependencies": {
46
- "@nymphjs/client": "^1.0.0-beta.133",
47
- "@nymphjs/driver-sqlite3": "^1.0.0-beta.133",
46
+ "@nymphjs/client": "^1.0.0-beta.134",
47
+ "@nymphjs/driver-sqlite3": "^1.0.0-beta.134",
48
48
  "@swc/core": "^1.16.1",
49
49
  "@swc/jest": "^0.2.39",
50
50
  "@tsconfig/recommended": "^1.0.13",
@@ -57,5 +57,5 @@
57
57
  "ts-node": "^10.9.2",
58
58
  "typescript": "^7.0.2"
59
59
  },
60
- "gitHead": "4edb32e721ba78f0be8d43d675578168f166b8b5"
60
+ "gitHead": "31b045084100c2267c2eac7ad457d52983b0b895"
61
61
  }
package/src/cache.test.ts CHANGED
@@ -23,6 +23,7 @@ const server = app.listen(5081);
23
23
  const nymph = new Nymph({
24
24
  restUrl: 'http://localhost:5081/test/',
25
25
  weakCache: true,
26
+ weakCacheKeepDirtyData: true,
26
27
  });
27
28
  const Employee = nymph.addEntityClass(EmployeeClass);
28
29
 
@@ -74,6 +75,47 @@ describe('Nymph REST Server and Client with Client Weak Ref Cache', () => {
74
75
  expect(checkB.current).toEqual(false);
75
76
  });
76
77
 
78
+ it('make two identical queries and check whether the same result is returned', async () => {
79
+ // @ts-ignore TS doesn't know about WeakRef.
80
+ if (typeof WeakRef === 'undefined') {
81
+ throw new Error(
82
+ 'You must run this test in an environment that includes WeakRef.',
83
+ );
84
+ }
85
+
86
+ const employee = await createJane();
87
+
88
+ if (employee.guid == null) {
89
+ throw new Error('Entity is null.');
90
+ }
91
+
92
+ const checkAPromise = nymph.getEntity(
93
+ { class: Employee },
94
+ { type: '&', guid: employee.guid },
95
+ );
96
+ const checkBPromise = nymph.getEntity(
97
+ { class: Employee },
98
+ { type: '&', guid: employee.guid },
99
+ );
100
+
101
+ const checkA = await checkAPromise;
102
+
103
+ if (!checkA) {
104
+ throw new Error("Couldn't fetch entity.");
105
+ }
106
+
107
+ checkA.name = 'Success!';
108
+
109
+ const checkB = await checkBPromise;
110
+
111
+ if (!checkB) {
112
+ throw new Error("Couldn't fetch entity.");
113
+ }
114
+
115
+ expect(checkA.name).toEqual('Success!');
116
+ expect(checkB.name).toEqual('Success!');
117
+ });
118
+
77
119
  afterAll(() => {
78
120
  server.close(); // avoid jest open handle error
79
121
  });