@hyperfrontend/features 0.1.0 → 0.2.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.
Files changed (159) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/_dependencies/@hyperfrontend/builder/bundle/dependencies/index.cjs.js +1 -0
  3. package/_dependencies/@hyperfrontend/builder/bundle/dependencies/index.esm.js +1 -0
  4. package/_dependencies/@hyperfrontend/builder/bundle/dependencies/worker/index.cjs.js +1 -0
  5. package/_dependencies/@hyperfrontend/builder/bundle/dependencies/worker/index.esm.js +1 -0
  6. package/_dependencies/@hyperfrontend/builder/bundle/index.cjs.js +12 -10
  7. package/_dependencies/@hyperfrontend/builder/bundle/index.esm.js +14 -12
  8. package/_dependencies/@hyperfrontend/builder/bundle/rollup/index.cjs.js +2 -0
  9. package/_dependencies/@hyperfrontend/builder/bundle/rollup/index.esm.js +2 -0
  10. package/_dependencies/@hyperfrontend/builder/bundle/rollup/worker/index.cjs.js +2 -0
  11. package/_dependencies/@hyperfrontend/builder/bundle/rollup/worker/index.esm.js +2 -0
  12. package/_dependencies/@hyperfrontend/builder/index.cjs.js +87 -53
  13. package/_dependencies/@hyperfrontend/builder/index.esm.js +89 -55
  14. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/promise/index.cjs.js +4 -0
  15. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/promise/index.esm.js +3 -1
  16. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/reflect/index.cjs.js +10 -0
  17. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/reflect/index.esm.js +6 -0
  18. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/timers/index.cjs.js +5 -0
  19. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/timers/index.esm.js +5 -1
  20. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/typed-arrays/index.cjs.js +2 -2
  21. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/typed-arrays/index.esm.js +2 -2
  22. package/_dependencies/@hyperfrontend/network-protocol/browser/channel/index.cjs.js +5 -19
  23. package/_dependencies/@hyperfrontend/network-protocol/browser/channel/index.esm.js +1 -15
  24. package/_dependencies/@hyperfrontend/network-protocol/browser/data/index.cjs.js +15 -23
  25. package/_dependencies/@hyperfrontend/network-protocol/browser/data/index.esm.js +7 -15
  26. package/_dependencies/@hyperfrontend/network-protocol/browser/packet/index.cjs.js +6 -14
  27. package/_dependencies/@hyperfrontend/network-protocol/browser/packet/index.esm.js +7 -15
  28. package/_dependencies/@hyperfrontend/network-protocol/browser/receiver/index.cjs.js +4 -18
  29. package/_dependencies/@hyperfrontend/network-protocol/browser/receiver/index.esm.js +1 -15
  30. package/_dependencies/@hyperfrontend/network-protocol/browser/sender/index.cjs.js +5 -19
  31. package/_dependencies/@hyperfrontend/network-protocol/browser/sender/index.esm.js +2 -16
  32. package/_dependencies/@hyperfrontend/network-protocol/browser/v1/index.cjs.js +16 -24
  33. package/_dependencies/@hyperfrontend/network-protocol/browser/v1/index.esm.js +7 -15
  34. package/_dependencies/@hyperfrontend/network-protocol/browser/v2/index.cjs.js +16 -24
  35. package/_dependencies/@hyperfrontend/network-protocol/browser/v2/index.esm.js +7 -15
  36. package/_dependencies/@hyperfrontend/network-protocol/node/channel/index.cjs.js +3 -17
  37. package/_dependencies/@hyperfrontend/network-protocol/node/channel/index.esm.js +1 -15
  38. package/_dependencies/@hyperfrontend/network-protocol/node/data/index.cjs.js +6 -14
  39. package/_dependencies/@hyperfrontend/network-protocol/node/data/index.esm.js +7 -15
  40. package/_dependencies/@hyperfrontend/network-protocol/node/packet/index.cjs.js +6 -14
  41. package/_dependencies/@hyperfrontend/network-protocol/node/packet/index.esm.js +7 -15
  42. package/_dependencies/@hyperfrontend/network-protocol/node/receiver/index.cjs.js +3 -17
  43. package/_dependencies/@hyperfrontend/network-protocol/node/receiver/index.esm.js +1 -15
  44. package/_dependencies/@hyperfrontend/network-protocol/node/sender/index.cjs.js +2 -16
  45. package/_dependencies/@hyperfrontend/network-protocol/node/sender/index.esm.js +2 -16
  46. package/_dependencies/@hyperfrontend/network-protocol/node/v1/index.cjs.js +6 -14
  47. package/_dependencies/@hyperfrontend/network-protocol/node/v1/index.esm.js +7 -15
  48. package/_dependencies/@hyperfrontend/network-protocol/node/v2/index.cjs.js +6 -14
  49. package/_dependencies/@hyperfrontend/network-protocol/node/v2/index.esm.js +7 -15
  50. package/_dependencies/@hyperfrontend/nexus/index.cjs.js +49 -19
  51. package/_dependencies/@hyperfrontend/nexus/index.esm.js +49 -19
  52. package/_dependencies/@hyperfrontend/project-scope/core/fs/index.cjs.js +62 -0
  53. package/_dependencies/@hyperfrontend/project-scope/core/fs/index.esm.js +60 -2
  54. package/_shared/generators/feature/generate-feature-module/index.esm.js +11 -6
  55. package/_shared/generators/metadata/generate-metadata/index.esm.js +1 -0
  56. package/_shared/shared/control/index.cjs.js +12 -2
  57. package/_shared/shared/control/index.esm.js +12 -2
  58. package/_shared/shared/request/index.cjs.js +91 -0
  59. package/_shared/shared/request/index.esm.js +88 -0
  60. package/_shared/shared/shutdown/index.esm.js +12 -0
  61. package/bin/hf.js +643 -70
  62. package/bundle/host/index.iife.js +290 -4041
  63. package/bundle/host/index.iife.min.js +1 -1
  64. package/bundle/host/index.umd.js +290 -4041
  65. package/bundle/host/index.umd.min.js +1 -1
  66. package/bundle/hostee/index.iife.js +215 -2893
  67. package/bundle/hostee/index.iife.min.js +1 -1
  68. package/bundle/hostee/index.umd.js +215 -2893
  69. package/bundle/hostee/index.umd.min.js +1 -1
  70. package/cli/args.d.ts +2 -0
  71. package/cli/args.d.ts.map +1 -1
  72. package/cli/commands/build.d.ts +8 -5
  73. package/cli/commands/build.d.ts.map +1 -1
  74. package/cli/commands/dev.d.ts +7 -2
  75. package/cli/commands/dev.d.ts.map +1 -1
  76. package/cli/config/resolve.d.ts +3 -1
  77. package/cli/config/resolve.d.ts.map +1 -1
  78. package/cli/index.cjs.js +643 -70
  79. package/cli/index.d.ts +21 -10
  80. package/cli/index.esm.js +591 -60
  81. package/cli/usage.d.ts +1 -1
  82. package/cli/usage.d.ts.map +1 -1
  83. package/generators/feature/generate-feature-module.d.ts.map +1 -1
  84. package/generators/index.cjs.js +435 -42
  85. package/generators/index.d.ts +9 -8
  86. package/generators/index.esm.js +404 -30
  87. package/generators/metadata/generate-metadata.d.ts +4 -4
  88. package/generators/metadata/generate-metadata.d.ts.map +1 -1
  89. package/generators/shell/connector-types.d.ts +19 -0
  90. package/generators/shell/connector-types.d.ts.map +1 -0
  91. package/generators/shell/generate-shell.d.ts +5 -4
  92. package/generators/shell/generate-shell.d.ts.map +1 -1
  93. package/generators/shell/schema-type.d.ts +20 -0
  94. package/generators/shell/schema-type.d.ts.map +1 -0
  95. package/generators/shell/source-literal.d.ts +28 -0
  96. package/generators/shell/source-literal.d.ts.map +1 -1
  97. package/host/create-shell.d.ts +4 -1
  98. package/host/create-shell.d.ts.map +1 -1
  99. package/host/display-modes/dialog.d.ts +1 -1
  100. package/host/display-modes/dialog.d.ts.map +1 -1
  101. package/host/display-modes/embedded.d.ts +1 -1
  102. package/host/display-modes/embedded.d.ts.map +1 -1
  103. package/host/index.cjs.js +150 -30
  104. package/host/index.d.ts +53 -38
  105. package/host/index.d.ts.map +1 -1
  106. package/host/index.esm.js +129 -9
  107. package/host/lifecycle.d.ts.map +1 -1
  108. package/host/plugins.d.ts +1 -34
  109. package/host/plugins.d.ts.map +1 -1
  110. package/host/types.d.ts +49 -0
  111. package/host/types.d.ts.map +1 -1
  112. package/hostee/index.cjs.js +54 -9
  113. package/hostee/index.d.ts +41 -1
  114. package/hostee/index.d.ts.map +1 -1
  115. package/hostee/index.esm.js +51 -6
  116. package/hostee/lifecycle.d.ts.map +1 -1
  117. package/hostee/types.d.ts +40 -0
  118. package/hostee/types.d.ts.map +1 -1
  119. package/index.cjs.js +32 -1
  120. package/index.d.ts +89 -3
  121. package/index.d.ts.map +1 -1
  122. package/index.esm.js +32 -1
  123. package/nx/executors/build/index.cjs.js +14975 -137
  124. package/nx/executors/build/index.esm.js +14935 -115
  125. package/nx/executors/serve/executor.d.ts.map +1 -1
  126. package/nx/executors/serve/index.cjs.js +6594 -80
  127. package/nx/executors/serve/index.esm.js +6529 -44
  128. package/nx/generators/feature/index.cjs.js +8751 -108
  129. package/nx/generators/feature/index.esm.js +8711 -81
  130. package/package.json +15 -5
  131. package/server/debug-ui/index.d.ts +2 -0
  132. package/server/debug-ui/index.d.ts.map +1 -0
  133. package/server/debug-ui/index.html +15 -0
  134. package/server/debug-ui/index.iife.js +427 -0
  135. package/server/debug-ui/index.iife.min.js +1 -0
  136. package/server/dev-server.d.ts.map +1 -1
  137. package/server/index.cjs.js +78 -10
  138. package/server/index.esm.js +78 -11
  139. package/server/module-dir.d.ts +17 -0
  140. package/server/module-dir.d.ts.map +1 -0
  141. package/server/module-dir.stub.d.ts +15 -0
  142. package/server/module-dir.stub.d.ts.map +1 -0
  143. package/shared/contract.d.ts +1 -1
  144. package/shared/contract.d.ts.map +1 -1
  145. package/shared/control.d.ts +4 -0
  146. package/shared/control.d.ts.map +1 -1
  147. package/shared/invert-contract.d.ts +20 -0
  148. package/shared/invert-contract.d.ts.map +1 -0
  149. package/shared/request.d.ts +68 -0
  150. package/shared/request.d.ts.map +1 -0
  151. package/{nx/shared → shared}/shutdown.d.ts +3 -2
  152. package/shared/shutdown.d.ts.map +1 -0
  153. package/shared/types.d.ts +72 -1
  154. package/shared/types.d.ts.map +1 -1
  155. package/_shared/nx/shared/context/index.cjs.js +0 -18
  156. package/_shared/nx/shared/context/index.esm.js +0 -16
  157. package/nx/shared/shutdown.d.ts.map +0 -1
  158. package/server/debug-ui/bootstrap.d.ts +0 -2
  159. package/server/debug-ui/bootstrap.d.ts.map +0 -1
@@ -0,0 +1,91 @@
1
+ 'use strict';
2
+
3
+ const { ControlType } = require('../control/index.cjs.js');
4
+ const index_cjs_js$5 = require('../../../_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/timers/index.cjs.js');
5
+ const index_cjs_js$7 = require('../../../_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/promise/index.cjs.js');
6
+ const index_cjs_js$3 = require('../../../_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/error/index.cjs.js');
7
+ const index_cjs_js = require('../../../_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/object/index.cjs.js');
8
+
9
+ const DEFAULT_TIMEOUT_MS = 30000;
10
+ function createRequestPeer(origin, send) {
11
+ let pending = {};
12
+ const handlers = {};
13
+ let nextCorrelation = 0;
14
+ const take = (correlationId) => {
15
+ const entry = pending[correlationId];
16
+ if (entry) {
17
+ index_cjs_js$5.clearTimeout(entry.timer);
18
+ delete pending[correlationId];
19
+ }
20
+ return entry;
21
+ };
22
+ const respond = (request, outcome) => send(ControlType.Response, { correlationId: request.correlationId, from: origin, innerType: request.innerType, ...outcome });
23
+ const answer = (request) => {
24
+ const handler = handlers[request.innerType];
25
+ if (!handler) {
26
+ respond(request, { ok: false, error: `No handler is registered for '${request.innerType}'.` });
27
+ return;
28
+ }
29
+ index_cjs_js$7.promiseResolve()
30
+ .then(() => handler(request.payload))
31
+ .then((payload) => respond(request, { ok: true, payload }), (error) => respond(request, { ok: false, error: error instanceof Error ? error.message : `${error}` }));
32
+ };
33
+ const settle = (response) => {
34
+ const entry = take(response.correlationId);
35
+ if (!entry) {
36
+ return;
37
+ }
38
+ if (response.ok) {
39
+ entry.resolve(response.payload);
40
+ return;
41
+ }
42
+ entry.reject(index_cjs_js$3.createError(response.error ?? `Request '${response.innerType}' failed.`));
43
+ };
44
+ const dispatch = (type, data) => {
45
+ const envelope = (typeof data === 'object' ? data : null);
46
+ // why: The channel echoes each side's outbound messages back to its own subscribers, so a peer must discard envelopes stamped with its own origin or it would answer its own requests.
47
+ if (!envelope || envelope.from === origin) {
48
+ return;
49
+ }
50
+ if (type === ControlType.Request) {
51
+ answer(envelope);
52
+ return;
53
+ }
54
+ if (type === ControlType.Response) {
55
+ settle(envelope);
56
+ }
57
+ };
58
+ const request = (type, data, options) => index_cjs_js$7.createPromise((resolve, reject) => {
59
+ const timeoutMs = options?.timeoutMs ?? DEFAULT_TIMEOUT_MS;
60
+ const correlationId = `${origin}-${(nextCorrelation += 1)}`;
61
+ const timer = index_cjs_js$5.setTimeout(() => {
62
+ delete pending[correlationId];
63
+ reject(index_cjs_js$3.createError(`Request '${type}' timed out after ${timeoutMs}ms.`));
64
+ }, timeoutMs);
65
+ pending[correlationId] = { resolve, reject, timer };
66
+ send(ControlType.Request, { correlationId, from: origin, innerType: type, payload: data });
67
+ });
68
+ const handle = (type, handler) => {
69
+ if (handlers[type]) {
70
+ throw index_cjs_js$3.createError(`A handler for '${type}' is already registered.`);
71
+ }
72
+ handlers[type] = handler;
73
+ return () => {
74
+ if (handlers[type] === handler) {
75
+ delete handlers[type];
76
+ }
77
+ };
78
+ };
79
+ const rejectAll = (reason) => {
80
+ const failed = index_cjs_js.values(pending);
81
+ pending = {};
82
+ for (const entry of failed) {
83
+ index_cjs_js$5.clearTimeout(entry.timer);
84
+ entry.reject(index_cjs_js$3.createError(reason));
85
+ }
86
+ };
87
+ return index_cjs_js.freeze({ request, handle, dispatch, rejectAll });
88
+ }
89
+
90
+ exports.DEFAULT_TIMEOUT_MS = DEFAULT_TIMEOUT_MS;
91
+ exports.createRequestPeer = createRequestPeer;
@@ -0,0 +1,88 @@
1
+ import { ControlType } from '../control/index.esm.js';
2
+ import { createError } from '../../../_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/error/index.esm.js';
3
+ import { values, freeze } from '../../../_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/object/index.esm.js';
4
+ import { promiseResolve, createPromise } from '../../../_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/promise/index.esm.js';
5
+ import { clearTimeout, setTimeout } from '../../../_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/timers/index.esm.js';
6
+
7
+ const DEFAULT_TIMEOUT_MS = 30000;
8
+ function createRequestPeer(origin, send) {
9
+ let pending = {};
10
+ const handlers = {};
11
+ let nextCorrelation = 0;
12
+ const take = (correlationId) => {
13
+ const entry = pending[correlationId];
14
+ if (entry) {
15
+ clearTimeout(entry.timer);
16
+ delete pending[correlationId];
17
+ }
18
+ return entry;
19
+ };
20
+ const respond = (request, outcome) => send(ControlType.Response, { correlationId: request.correlationId, from: origin, innerType: request.innerType, ...outcome });
21
+ const answer = (request) => {
22
+ const handler = handlers[request.innerType];
23
+ if (!handler) {
24
+ respond(request, { ok: false, error: `No handler is registered for '${request.innerType}'.` });
25
+ return;
26
+ }
27
+ promiseResolve()
28
+ .then(() => handler(request.payload))
29
+ .then((payload) => respond(request, { ok: true, payload }), (error) => respond(request, { ok: false, error: error instanceof Error ? error.message : `${error}` }));
30
+ };
31
+ const settle = (response) => {
32
+ const entry = take(response.correlationId);
33
+ if (!entry) {
34
+ return;
35
+ }
36
+ if (response.ok) {
37
+ entry.resolve(response.payload);
38
+ return;
39
+ }
40
+ entry.reject(createError(response.error ?? `Request '${response.innerType}' failed.`));
41
+ };
42
+ const dispatch = (type, data) => {
43
+ const envelope = (typeof data === 'object' ? data : null);
44
+ // why: The channel echoes each side's outbound messages back to its own subscribers, so a peer must discard envelopes stamped with its own origin or it would answer its own requests.
45
+ if (!envelope || envelope.from === origin) {
46
+ return;
47
+ }
48
+ if (type === ControlType.Request) {
49
+ answer(envelope);
50
+ return;
51
+ }
52
+ if (type === ControlType.Response) {
53
+ settle(envelope);
54
+ }
55
+ };
56
+ const request = (type, data, options) => createPromise((resolve, reject) => {
57
+ const timeoutMs = options?.timeoutMs ?? DEFAULT_TIMEOUT_MS;
58
+ const correlationId = `${origin}-${(nextCorrelation += 1)}`;
59
+ const timer = setTimeout(() => {
60
+ delete pending[correlationId];
61
+ reject(createError(`Request '${type}' timed out after ${timeoutMs}ms.`));
62
+ }, timeoutMs);
63
+ pending[correlationId] = { resolve, reject, timer };
64
+ send(ControlType.Request, { correlationId, from: origin, innerType: type, payload: data });
65
+ });
66
+ const handle = (type, handler) => {
67
+ if (handlers[type]) {
68
+ throw createError(`A handler for '${type}' is already registered.`);
69
+ }
70
+ handlers[type] = handler;
71
+ return () => {
72
+ if (handlers[type] === handler) {
73
+ delete handlers[type];
74
+ }
75
+ };
76
+ };
77
+ const rejectAll = (reason) => {
78
+ const failed = values(pending);
79
+ pending = {};
80
+ for (const entry of failed) {
81
+ clearTimeout(entry.timer);
82
+ entry.reject(createError(reason));
83
+ }
84
+ };
85
+ return freeze({ request, handle, dispatch, rejectAll });
86
+ }
87
+
88
+ export { DEFAULT_TIMEOUT_MS, createRequestPeer };
@@ -0,0 +1,12 @@
1
+ import { createPromise } from '../../../_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/promise/index.esm.js';
2
+ import { resolve } from 'node:path';
3
+
4
+ function waitForShutdown() {
5
+ return createPromise((resolve) => {
6
+ for (const signal of ['SIGINT', 'SIGTERM']) {
7
+ process.once(signal, () => resolve());
8
+ }
9
+ });
10
+ }
11
+
12
+ export { waitForShutdown };