@nexus_js/server 0.7.2 → 0.7.5

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 (75) hide show
  1. package/dist/actions.d.ts +14 -2
  2. package/dist/actions.d.ts.map +1 -1
  3. package/dist/actions.js +235 -25
  4. package/dist/actions.js.map +1 -1
  5. package/dist/constants.d.ts +6 -0
  6. package/dist/constants.d.ts.map +1 -0
  7. package/dist/constants.js +6 -0
  8. package/dist/constants.js.map +1 -0
  9. package/dist/context.d.ts +13 -2
  10. package/dist/context.d.ts.map +1 -1
  11. package/dist/context.js +7 -3
  12. package/dist/context.js.map +1 -1
  13. package/dist/csrf.d.ts.map +1 -1
  14. package/dist/csrf.js +20 -18
  15. package/dist/csrf.js.map +1 -1
  16. package/dist/dev-assets.d.ts +1 -1
  17. package/dist/dev-assets.d.ts.map +1 -1
  18. package/dist/dev-assets.js +7 -3
  19. package/dist/dev-assets.js.map +1 -1
  20. package/dist/dev-error-html.d.ts +19 -0
  21. package/dist/dev-error-html.d.ts.map +1 -0
  22. package/dist/dev-error-html.js +101 -0
  23. package/dist/dev-error-html.js.map +1 -0
  24. package/dist/dev-hot.d.ts +8 -0
  25. package/dist/dev-hot.d.ts.map +1 -0
  26. package/dist/dev-hot.js +30 -0
  27. package/dist/dev-hot.js.map +1 -0
  28. package/dist/dev-vault.d.ts +7 -0
  29. package/dist/dev-vault.d.ts.map +1 -0
  30. package/dist/dev-vault.js +66 -0
  31. package/dist/dev-vault.js.map +1 -0
  32. package/dist/devradar.d.ts +96 -0
  33. package/dist/devradar.d.ts.map +1 -0
  34. package/dist/devradar.js +69 -0
  35. package/dist/devradar.js.map +1 -0
  36. package/dist/handler.d.ts +7 -0
  37. package/dist/handler.d.ts.map +1 -0
  38. package/dist/handler.js +7 -0
  39. package/dist/handler.js.map +1 -0
  40. package/dist/index.d.ts +21 -1
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +187 -27
  43. package/dist/index.js.map +1 -1
  44. package/dist/inspector.d.ts +9 -0
  45. package/dist/inspector.d.ts.map +1 -0
  46. package/dist/inspector.js +8 -0
  47. package/dist/inspector.js.map +1 -0
  48. package/dist/load-module.d.ts +4 -3
  49. package/dist/load-module.d.ts.map +1 -1
  50. package/dist/load-module.js +66 -51
  51. package/dist/load-module.js.map +1 -1
  52. package/dist/logger.d.ts +0 -11
  53. package/dist/logger.d.ts.map +1 -1
  54. package/dist/logger.js +2 -1
  55. package/dist/logger.js.map +1 -1
  56. package/dist/navigate.d.ts.map +1 -1
  57. package/dist/navigate.js +73 -12
  58. package/dist/navigate.js.map +1 -1
  59. package/dist/renderer.d.ts +32 -1
  60. package/dist/renderer.d.ts.map +1 -1
  61. package/dist/renderer.js +268 -46
  62. package/dist/renderer.js.map +1 -1
  63. package/dist/shield-runtime.d.ts +7 -0
  64. package/dist/shield-runtime.d.ts.map +1 -0
  65. package/dist/shield-runtime.js +34 -0
  66. package/dist/shield-runtime.js.map +1 -0
  67. package/dist/streaming.d.ts +14 -3
  68. package/dist/streaming.d.ts.map +1 -1
  69. package/dist/streaming.js +26 -9
  70. package/dist/streaming.js.map +1 -1
  71. package/dist/streaming.test.d.ts +2 -0
  72. package/dist/streaming.test.d.ts.map +1 -0
  73. package/dist/streaming.test.js +63 -0
  74. package/dist/streaming.test.js.map +1 -0
  75. package/package.json +32 -7
@@ -0,0 +1,63 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { createStreamingResponse, createSuspenseBoundary } from './streaming.js';
3
+ async function responseText(res) {
4
+ return new Response(res.body).text();
5
+ }
6
+ describe('createStreamingResponse', () => {
7
+ it('injects stream bootstrap in head and streams deferred fill + complete', async () => {
8
+ const res = createStreamingResponse(async (ctrl) => {
9
+ ctrl.writeShell('<!DOCTYPE html><html><head><title>t</title></head><body><div id="nx-hole-abc">wait</div></body></html>');
10
+ ctrl.defer({
11
+ id: 'abc',
12
+ promise: Promise.resolve('<main>ready</main>'),
13
+ });
14
+ });
15
+ const text = await responseText(res);
16
+ expect(text).toContain('__nx_stream_boot__');
17
+ expect(text).toContain('__nx_fill');
18
+ expect(text).toContain('nx-fill-abc');
19
+ expect(text).toContain('<main>ready</main>');
20
+ expect(text).toContain('nexus:stream-chunk');
21
+ expect(text).toContain('__nx_stream_complete');
22
+ expect(res.headers.get('content-type')).toContain('text/html');
23
+ expect(res.headers.get('cache-control')).toBe('no-store');
24
+ });
25
+ it('emits pretext update script before fill when payload has pretextWire', async () => {
26
+ const wire = '{"__t":"Undef"}';
27
+ const res = createStreamingResponse(async (ctrl) => {
28
+ ctrl.writeShell('<html><head><script type="application/json" id="__NEXUS_PRETEXT__">{}</script></head><body><div id="nx-hole-z"></div></body></html>');
29
+ ctrl.defer({
30
+ id: 'z',
31
+ promise: Promise.resolve({ html: '<p>x</p>', pretextWire: wire }),
32
+ });
33
+ });
34
+ const text = await responseText(res);
35
+ expect(text).toContain('__NEXUS_PRETEXT__');
36
+ expect(text).toContain('el.textContent=');
37
+ expect(text).toContain('nx-fill-z');
38
+ });
39
+ it('writes error fill when deferred promise rejects', async () => {
40
+ const res = createStreamingResponse(async (ctrl) => {
41
+ ctrl.writeShell('<html><head></head><body><div id="nx-hole-e"></div></body></html>');
42
+ ctrl.defer({
43
+ id: 'e',
44
+ promise: Promise.reject(new Error('boundary failed')),
45
+ });
46
+ });
47
+ const text = await responseText(res);
48
+ expect(text).toContain('boundary failed');
49
+ expect(text).toContain('__nx_fill("e")');
50
+ });
51
+ });
52
+ describe('createSuspenseBoundary', () => {
53
+ it('returns placeholder template and resolves render output', async () => {
54
+ const { placeholder, boundary } = createSuspenseBoundary(Promise.resolve({ n: 42 }), {
55
+ render: (v) => `<span>${v.n}</span>`,
56
+ });
57
+ expect(placeholder).toContain('nx-hole-');
58
+ expect(placeholder).toContain('<template id="nx-hole-');
59
+ const html = await boundary.promise;
60
+ expect(html).toBe('<span>42</span>');
61
+ });
62
+ });
63
+ //# sourceMappingURL=streaming.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming.test.js","sourceRoot":"","sources":["../src/streaming.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAEjF,KAAK,UAAU,YAAY,CAAC,GAAa;IACvC,OAAO,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AACvC,CAAC;AAED,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;QACrF,MAAM,GAAG,GAAG,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACjD,IAAI,CAAC,UAAU,CACb,wGAAwG,CACzG,CAAC;YACF,IAAI,CAAC,KAAK,CAAC;gBACT,EAAE,EAAE,KAAK;gBACT,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC;aAC/C,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QAC/C,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC/D,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;QACpF,MAAM,IAAI,GAAG,iBAAiB,CAAC;QAC/B,MAAM,GAAG,GAAG,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACjD,IAAI,CAAC,UAAU,CACb,qIAAqI,CACtI,CAAC;YACF,IAAI,CAAC,KAAK,CAAC;gBACT,EAAE,EAAE,GAAG;gBACP,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;aAClE,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,GAAG,GAAG,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACjD,IAAI,CAAC,UAAU,CAAC,mEAAmE,CAAC,CAAC;YACrF,IAAI,CAAC,KAAK,CAAC;gBACT,EAAE,EAAE,GAAG;gBACP,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;aACtD,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,sBAAsB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE;YACnF,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;SACrC,CAAC,CAAC;QACH,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC1C,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@nexus_js/server",
3
- "version": "0.7.2",
4
- "description": "Nexus HTTP server — SSR, Server Actions, Edge-ready",
3
+ "version": "0.7.5",
4
+ "description": "Nexus Node HTTP server — SSR, server actions, islands & assets (middleware lives in @nexus_js/middleware for edge runtimes)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
@@ -17,14 +17,35 @@
17
17
  "./context": {
18
18
  "import": "./dist/context.js",
19
19
  "types": "./dist/context.d.ts"
20
+ },
21
+ "./constants": {
22
+ "import": "./dist/constants.js",
23
+ "types": "./dist/constants.d.ts"
24
+ },
25
+ "./inspector": {
26
+ "import": "./dist/inspector.js",
27
+ "types": "./dist/inspector.d.ts"
28
+ },
29
+ "./devradar": {
30
+ "import": "./dist/devradar.js",
31
+ "types": "./dist/devradar.d.ts"
32
+ },
33
+ "./handler": {
34
+ "import": "./dist/handler.js",
35
+ "types": "./dist/handler.d.ts"
36
+ },
37
+ "./streaming": {
38
+ "import": "./dist/streaming.js",
39
+ "types": "./dist/streaming.d.ts"
20
40
  }
21
41
  },
22
42
  "dependencies": {
23
- "@nexus_js/serialize": "0.7.2",
24
- "@nexus_js/router": "0.7.2",
25
- "@nexus_js/assets": "0.7.2",
26
- "@nexus_js/compiler": "0.7.2",
27
- "@nexus_js/connect": "0.7.2"
43
+ "@nexus_js/assets": "0.7.5",
44
+ "@nexus_js/security": "0.7.5",
45
+ "@nexus_js/compiler": "0.7.5",
46
+ "@nexus_js/serialize": "0.7.5",
47
+ "@nexus_js/router": "0.7.5",
48
+ "@nexus_js/connect": "0.7.5"
28
49
  },
29
50
  "devDependencies": {
30
51
  "@types/node": "^22.0.0",
@@ -41,6 +62,10 @@
41
62
  "bugs": {
42
63
  "url": "https://github.com/bierfor/nexus/issues"
43
64
  },
65
+ "funding": {
66
+ "type": "individual",
67
+ "url": "https://buymeacoffee.com/bierfor084"
68
+ },
44
69
  "keywords": [
45
70
  "nexus",
46
71
  "framework",