@bleedingdev/modern-js-bff-effect 3.9.0-ultramodern.2 → 3.9.0-ultramodern.21

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 (142) hide show
  1. package/README.md +20 -4
  2. package/dist/cjs/assembly.js +50 -0
  3. package/dist/cjs/{effect-client/guards.js → data-platform/batch/options.js} +13 -9
  4. package/dist/cjs/data-platform/batch/queue.js +48 -83
  5. package/dist/cjs/data-platform/trace.js +2 -2
  6. package/dist/cjs/effect/context.js +28 -4
  7. package/dist/cjs/effect/edge-dispatcher.js +12 -12
  8. package/dist/cjs/effect/edge.js +36 -3
  9. package/dist/cjs/effect/endpoint-contracts.js +3 -4
  10. package/dist/cjs/effect/entry-shape.js +40 -12
  11. package/dist/cjs/effect/generated-entry.js +57 -0
  12. package/dist/cjs/effect/handler/batch-handler.js +7 -7
  13. package/dist/cjs/effect/handler/batch.js +8 -10
  14. package/dist/cjs/effect/handler/definition.js +1 -21
  15. package/dist/cjs/effect/index.js +8 -8
  16. package/dist/cjs/effect/module.js +8 -4
  17. package/dist/cjs/effect/operation-context.js +10 -14
  18. package/dist/cjs/effect/rpcSerialization.js +0 -2
  19. package/dist/cjs/effect-client/cross-project.js +89 -0
  20. package/dist/cjs/effect-client/index.js +5 -3
  21. package/dist/cjs/microvertical-api.js +120 -0
  22. package/dist/esm/assembly.mjs +12 -0
  23. package/dist/esm/data-platform/batch/options.mjs +10 -0
  24. package/dist/esm/data-platform/batch/queue.mjs +48 -83
  25. package/dist/esm/data-platform/trace.mjs +1 -1
  26. package/dist/esm/effect/context.mjs +21 -6
  27. package/dist/esm/effect/edge-dispatcher.mjs +6 -6
  28. package/dist/esm/effect/edge.mjs +3 -0
  29. package/dist/esm/effect/endpoint-contracts.mjs +2 -3
  30. package/dist/esm/effect/entry-shape-registry.mjs +2 -2
  31. package/dist/esm/effect/entry-shape.mjs +29 -6
  32. package/dist/esm/effect/generated-entry.mjs +19 -0
  33. package/dist/esm/effect/handler/batch-handler.mjs +8 -8
  34. package/dist/esm/effect/handler/batch.mjs +9 -8
  35. package/dist/esm/effect/handler/definition.mjs +1 -21
  36. package/dist/esm/effect/index.mjs +1 -1
  37. package/dist/esm/effect/module.mjs +8 -4
  38. package/dist/esm/effect/operation-context.mjs +3 -4
  39. package/dist/esm/effect/rpcSerialization.mjs +0 -2
  40. package/dist/esm/effect-client/cross-project.mjs +51 -0
  41. package/dist/esm/effect-client/index.mjs +4 -2
  42. package/dist/esm/microvertical-api.mjs +67 -0
  43. package/dist/esm-node/assembly.mjs +13 -0
  44. package/dist/esm-node/data-platform/batch/options.mjs +11 -0
  45. package/dist/esm-node/data-platform/batch/queue.mjs +48 -83
  46. package/dist/esm-node/data-platform/trace.mjs +1 -1
  47. package/dist/esm-node/effect/context.mjs +21 -6
  48. package/dist/esm-node/effect/edge-dispatcher.mjs +6 -6
  49. package/dist/esm-node/effect/edge.mjs +3 -0
  50. package/dist/esm-node/effect/endpoint-contracts.mjs +2 -3
  51. package/dist/esm-node/effect/entry-shape.mjs +29 -6
  52. package/dist/esm-node/effect/generated-entry.mjs +20 -0
  53. package/dist/esm-node/effect/handler/batch-handler.mjs +8 -8
  54. package/dist/esm-node/effect/handler/batch.mjs +9 -8
  55. package/dist/esm-node/effect/handler/definition.mjs +1 -21
  56. package/dist/esm-node/effect/index.mjs +1 -1
  57. package/dist/esm-node/effect/module.mjs +8 -4
  58. package/dist/esm-node/effect/operation-context.mjs +3 -4
  59. package/dist/esm-node/effect/rpcSerialization.mjs +0 -2
  60. package/dist/esm-node/effect-client/cross-project.mjs +52 -0
  61. package/dist/esm-node/effect-client/index.mjs +4 -2
  62. package/dist/esm-node/microvertical-api.mjs +68 -0
  63. package/dist/types/assembly.d.ts +10 -0
  64. package/dist/types/data-platform/batch/options.d.ts +7 -0
  65. package/dist/types/data-platform/batch/queue.d.ts +0 -1
  66. package/dist/types/effect/context.d.ts +15 -2
  67. package/dist/types/effect/edge-dispatcher.d.ts +3 -3
  68. package/dist/types/effect/edge.d.ts +3 -0
  69. package/dist/types/effect/endpoint-contracts.d.ts +2 -20
  70. package/dist/types/effect/entry-shape.d.ts +16 -2
  71. package/dist/types/effect/generated-entry.d.ts +7 -0
  72. package/dist/types/effect/handler/batch.d.ts +7 -2
  73. package/dist/types/effect/handler/types.d.ts +2 -17
  74. package/dist/types/effect/handler.d.ts +1 -1
  75. package/dist/types/effect/module.d.ts +2 -1
  76. package/dist/types/effect/operation-context.d.ts +1 -2
  77. package/dist/types/effect-client/cross-project.d.ts +10 -0
  78. package/dist/types/effect-client/index.d.ts +7 -4
  79. package/dist/types/microvertical-api.d.ts +65 -0
  80. package/package.json +47 -42
  81. package/src/assembly.ts +43 -0
  82. package/src/data-platform/batch/options.ts +20 -0
  83. package/src/data-platform/batch/queue.ts +63 -92
  84. package/src/data-platform/trace.ts +1 -1
  85. package/src/effect/context.ts +64 -12
  86. package/src/effect/edge-dispatcher.ts +14 -11
  87. package/src/effect/edge.ts +6 -0
  88. package/src/effect/endpoint-contracts.ts +3 -24
  89. package/src/effect/entry-shape.ts +105 -10
  90. package/src/effect/generated-entry.ts +36 -0
  91. package/src/effect/handler/batch-handler.ts +27 -28
  92. package/src/effect/handler/batch.ts +9 -13
  93. package/src/effect/handler/definition.ts +0 -45
  94. package/src/effect/handler/http.ts +2 -2
  95. package/src/effect/handler/types.ts +3 -32
  96. package/src/effect/handler.ts +0 -1
  97. package/src/effect/index.ts +1 -1
  98. package/src/effect/module.ts +11 -4
  99. package/src/effect/operation-context.ts +2 -6
  100. package/src/effect/rpcSerialization.ts +0 -2
  101. package/src/effect-client/cross-project.ts +104 -0
  102. package/src/effect-client/index.ts +17 -7
  103. package/src/microvertical-api.ts +102 -0
  104. package/dist/cjs/effect/edge-context.js +0 -61
  105. package/dist/cjs/effect-client/batch.js +0 -73
  106. package/dist/cjs/effect-client/envelope.js +0 -145
  107. package/dist/cjs/effect-client/request-context.js +0 -64
  108. package/dist/cjs/effect-client/request.js +0 -66
  109. package/dist/cjs/effect-client/runtime.js +0 -100
  110. package/dist/cjs/effect-client/types.js +0 -18
  111. package/dist/esm/effect/edge-context.mjs +0 -14
  112. package/dist/esm/effect-client/batch.mjs +0 -35
  113. package/dist/esm/effect-client/envelope.mjs +0 -104
  114. package/dist/esm/effect-client/guards.mjs +0 -3
  115. package/dist/esm/effect-client/request-context.mjs +0 -23
  116. package/dist/esm/effect-client/request.mjs +0 -28
  117. package/dist/esm/effect-client/runtime.mjs +0 -62
  118. package/dist/esm/effect-client/types.mjs +0 -0
  119. package/dist/esm-node/effect/edge-context.mjs +0 -15
  120. package/dist/esm-node/effect-client/batch.mjs +0 -36
  121. package/dist/esm-node/effect-client/envelope.mjs +0 -105
  122. package/dist/esm-node/effect-client/guards.mjs +0 -4
  123. package/dist/esm-node/effect-client/request-context.mjs +0 -24
  124. package/dist/esm-node/effect-client/request.mjs +0 -29
  125. package/dist/esm-node/effect-client/runtime.mjs +0 -63
  126. package/dist/esm-node/effect-client/types.mjs +0 -1
  127. package/dist/types/effect/edge-context.d.ts +0 -5
  128. package/dist/types/effect-client/batch.d.ts +0 -2
  129. package/dist/types/effect-client/envelope.d.ts +0 -15
  130. package/dist/types/effect-client/guards.d.ts +0 -2
  131. package/dist/types/effect-client/request-context.d.ts +0 -3
  132. package/dist/types/effect-client/request.d.ts +0 -1
  133. package/dist/types/effect-client/runtime.d.ts +0 -5
  134. package/dist/types/effect-client/types.d.ts +0 -68
  135. package/src/effect/edge-context.ts +0 -51
  136. package/src/effect-client/batch.ts +0 -50
  137. package/src/effect-client/envelope.ts +0 -238
  138. package/src/effect-client/guards.ts +0 -6
  139. package/src/effect-client/request-context.ts +0 -54
  140. package/src/effect-client/request.ts +0 -51
  141. package/src/effect-client/runtime.ts +0 -122
  142. package/src/effect-client/types.ts +0 -84
@@ -1,122 +0,0 @@
1
- // @effect-diagnostics processEnv:off strictBooleanExpressions:off
2
- import { configureGeneratedEffectClientRuntime } from './batch';
3
- import { prepareEffectRequest } from './envelope';
4
- import { createEffectRequestContext as createEffectRequestContextWithHeaders } from './request-context';
5
- import type {
6
- EffectClient,
7
- EffectClientOperation,
8
- EffectOperationDescriptor,
9
- EffectOperationManifest,
10
- EffectRequestContext,
11
- EffectRequestContextInput,
12
- EffectRequestRuntime,
13
- GeneratedEffectClientConfig,
14
- GeneratedEffectClientModule,
15
- GeneratedEffectEndpoint,
16
- } from './types';
17
-
18
- export type {
19
- EffectClient,
20
- EffectClientGroup,
21
- EffectClientOperation,
22
- EffectOperationDescriptor,
23
- EffectOperationManifest,
24
- EffectRequestContext,
25
- EffectRequestContextInput,
26
- EffectRequestRuntime,
27
- GeneratedEffectBatchConfig,
28
- GeneratedEffectClientConfig,
29
- GeneratedEffectClientModule,
30
- GeneratedEffectEndpoint,
31
- } from './types';
32
-
33
- export const createGeneratedEffectClient = (
34
- manifest: { endpoints: GeneratedEffectEndpoint[] },
35
- config: GeneratedEffectClientConfig,
36
- requestRuntime: EffectRequestRuntime,
37
- ): GeneratedEffectClientModule => {
38
- const createRequest = requestRuntime.createRequest;
39
- const configureRequest =
40
- typeof requestRuntime.configure === 'function'
41
- ? requestRuntime.configure
42
- : undefined;
43
- const createRequestContextHeaders =
44
- typeof requestRuntime.createRequestContextHeaders === 'function'
45
- ? requestRuntime.createRequestContextHeaders
46
- : undefined;
47
-
48
- const httpMethodDecider = config.httpMethodDecider || 'functionName';
49
- const port =
50
- config.useEnvPort &&
51
- typeof process !== 'undefined' &&
52
- process.env &&
53
- process.env.PORT
54
- ? process.env.PORT
55
- : config.port;
56
-
57
- configureGeneratedEffectClientRuntime(config, configureRequest);
58
-
59
- const createEffectRequestContext = (
60
- requestContext: EffectRequestContextInput,
61
- ): EffectRequestContext =>
62
- createEffectRequestContextWithHeaders(
63
- createRequestContextHeaders,
64
- requestContext,
65
- );
66
-
67
- const client: EffectClient = {};
68
- const operationManifest: EffectOperationManifest = {};
69
-
70
- for (const endpoint of manifest.endpoints) {
71
- const operationId = `${endpoint.method}:${endpoint.routePath}`;
72
- const operation: EffectOperationDescriptor = {
73
- appNamespace: config.appNamespace,
74
- apiId: endpoint.apiId,
75
- group: endpoint.group,
76
- endpoint: endpoint.endpoint,
77
- operationId,
78
- routePath: endpoint.routePath,
79
- method: endpoint.method,
80
- operationVersion: endpoint.operationVersion,
81
- schemaHash: endpoint.schemaHash,
82
- version: endpoint.operationVersion,
83
- };
84
-
85
- const sender = createRequest({
86
- path: endpoint.routePath,
87
- method: endpoint.method,
88
- port,
89
- operationContext: {
90
- operationId,
91
- routePath: endpoint.routePath,
92
- method: endpoint.method,
93
- schemaHash: endpoint.schemaHash,
94
- operationVersion: endpoint.operationVersion,
95
- },
96
- httpMethodDecider,
97
- ...(config.requestId ? { requestId: config.requestId } : {}),
98
- });
99
-
100
- const call: EffectClientOperation = (request: unknown = {}) =>
101
- sender(
102
- prepareEffectRequest({
103
- endpoint,
104
- operation,
105
- request,
106
- config,
107
- createEffectRequestContext,
108
- }),
109
- );
110
-
111
- client[endpoint.group] ??= {};
112
- client[endpoint.group]![endpoint.endpoint] = call;
113
- operationManifest[endpoint.group] ??= {};
114
- operationManifest[endpoint.group]![endpoint.endpoint] = operation;
115
- }
116
-
117
- return {
118
- client,
119
- operationManifest,
120
- createEffectRequestContext,
121
- };
122
- };
@@ -1,84 +0,0 @@
1
- // @effect-diagnostics processEnv:off strictBooleanExpressions:off
2
- export type GeneratedEffectEndpoint = {
3
- apiId: string;
4
- group: string;
5
- endpoint: string;
6
- method: string;
7
- routePath: string;
8
- /** Per-endpoint operation contract hash (bff-core hash). */
9
- schemaHash: string;
10
- operationVersion: number;
11
- };
12
-
13
- export type GeneratedEffectBatchConfig = {
14
- enabled: boolean;
15
- endpoint: string;
16
- flushIntervalMs: number;
17
- maxBatchSize: number;
18
- maxBatchBytes: number;
19
- requestTimeoutMs: number;
20
- allowedMethods: string[];
21
- };
22
-
23
- export type GeneratedEffectClientConfig = {
24
- appNamespace: string;
25
- /** Cross-project producer id; absent for same-project clients. */
26
- requestId?: string;
27
- port: number;
28
- /** Resolve the port from process.env.PORT first (server bundles). */
29
- useEnvPort?: boolean;
30
- defaultOrigin: string;
31
- httpMethodDecider?: string;
32
- batch: GeneratedEffectBatchConfig;
33
- };
34
-
35
- export type EffectOperationDescriptor = {
36
- appNamespace: string;
37
- apiId: string;
38
- group: string;
39
- endpoint: string;
40
- operationId: string;
41
- routePath: string;
42
- method: string;
43
- operationVersion: number;
44
- schemaHash: string;
45
- version: number;
46
- };
47
-
48
- export type EffectClientOperation = (request?: unknown) => Promise<unknown>;
49
- export type EffectClientGroup = Record<string, EffectClientOperation>;
50
- export type EffectClient = Record<string, EffectClientGroup>;
51
- export type EffectOperationManifest = Record<
52
- string,
53
- Record<string, EffectOperationDescriptor>
54
- >;
55
-
56
- export type EffectRequestContextInput = Record<string, unknown>;
57
-
58
- export type EffectRequestContext = {
59
- headers: Record<string, string>;
60
- } & Record<string, unknown>;
61
-
62
- /** Structural slice of `@modern-js/create-request` the runtime relies on. */
63
- export type EffectRequestRuntime = {
64
- createRequest: (options: {
65
- path: string;
66
- method: string;
67
- port: number | string;
68
- operationContext: Record<string, unknown>;
69
- httpMethodDecider: string;
70
- requestId?: string;
71
- }) => (...args: unknown[]) => Promise<unknown>;
72
- configure?: (options: Record<string, unknown>) => void;
73
- createRequestContextHeaders?: (
74
- input: EffectRequestContextInput,
75
- ) => Record<string, string>;
76
- };
77
-
78
- export type GeneratedEffectClientModule = {
79
- client: EffectClient;
80
- operationManifest: EffectOperationManifest;
81
- createEffectRequestContext: (
82
- requestContext: EffectRequestContextInput,
83
- ) => EffectRequestContext;
84
- };