@restatedev/restate-sdk-cloudflare-workers 1.9.0 → 1.10.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.
- package/LICENSE +21 -0
- package/dist/_virtual/rolldown_runtime.cjs +25 -0
- package/dist/common_api.cjs +25 -0
- package/dist/common_api.d.cts +30 -0
- package/dist/common_api.d.cts.map +1 -0
- package/dist/common_api.d.ts +30 -0
- package/dist/common_api.d.ts.map +1 -0
- package/dist/common_api.js +19 -0
- package/dist/common_api.js.map +1 -0
- package/dist/context.cjs +29 -0
- package/dist/context.d.cts +699 -0
- package/dist/context.d.cts.map +1 -0
- package/dist/context.d.ts +699 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +29 -0
- package/dist/context.js.map +1 -0
- package/dist/context_impl.cjs +441 -0
- package/dist/context_impl.js +440 -0
- package/dist/context_impl.js.map +1 -0
- package/dist/endpoint/components.cjs +257 -0
- package/dist/endpoint/components.js +253 -0
- package/dist/endpoint/components.js.map +1 -0
- package/dist/endpoint/endpoint.cjs +117 -0
- package/dist/endpoint/endpoint.js +118 -0
- package/dist/endpoint/endpoint.js.map +1 -0
- package/dist/endpoint/fetch_endpoint.cjs +41 -0
- package/dist/endpoint/fetch_endpoint.d.cts +39 -0
- package/dist/endpoint/fetch_endpoint.d.cts.map +1 -0
- package/dist/endpoint/fetch_endpoint.d.ts +39 -0
- package/dist/endpoint/fetch_endpoint.d.ts.map +1 -0
- package/dist/endpoint/fetch_endpoint.js +42 -0
- package/dist/endpoint/fetch_endpoint.js.map +1 -0
- package/dist/endpoint/handlers/fetch.cjs +21 -0
- package/dist/endpoint/handlers/fetch.js +21 -0
- package/dist/endpoint/handlers/fetch.js.map +1 -0
- package/dist/endpoint/handlers/generic.cjs +328 -0
- package/dist/endpoint/handlers/generic.js +324 -0
- package/dist/endpoint/handlers/generic.js.map +1 -0
- package/dist/endpoint/handlers/lambda.cjs +93 -0
- package/dist/endpoint/handlers/lambda.js +89 -0
- package/dist/endpoint/handlers/lambda.js.map +1 -0
- package/dist/endpoint/lambda_endpoint.cjs +36 -0
- package/dist/endpoint/lambda_endpoint.d.cts +26 -0
- package/dist/endpoint/lambda_endpoint.d.cts.map +1 -0
- package/dist/endpoint/lambda_endpoint.d.ts +26 -0
- package/dist/endpoint/lambda_endpoint.d.ts.map +1 -0
- package/dist/endpoint/lambda_endpoint.js +37 -0
- package/dist/endpoint/lambda_endpoint.js.map +1 -0
- package/dist/endpoint/node_endpoint.cjs +101 -0
- package/dist/endpoint/node_endpoint.js +99 -0
- package/dist/endpoint/node_endpoint.js.map +1 -0
- package/dist/endpoint/types.d.cts +61 -0
- package/dist/endpoint/types.d.cts.map +1 -0
- package/dist/endpoint/types.d.ts +61 -0
- package/dist/endpoint/types.d.ts.map +1 -0
- package/dist/endpoint/withOptions.cjs +15 -0
- package/dist/endpoint/withOptions.js +15 -0
- package/dist/endpoint/withOptions.js.map +1 -0
- package/dist/endpoint.d.cts +112 -0
- package/dist/endpoint.d.cts.map +1 -0
- package/dist/endpoint.d.ts +112 -0
- package/dist/endpoint.d.ts.map +1 -0
- package/dist/fetch.cjs +83 -0
- package/dist/fetch.d.cts +52 -0
- package/dist/fetch.d.cts.map +1 -0
- package/dist/fetch.d.ts +52 -0
- package/dist/fetch.d.ts.map +1 -0
- package/dist/{esm/src/fetch.js → fetch.js} +15 -18
- package/dist/fetch.js.map +1 -0
- package/dist/index.cjs +48 -0
- package/dist/index.d.cts +9 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +7 -0
- package/dist/io.cjs +48 -0
- package/dist/io.js +48 -0
- package/dist/io.js.map +1 -0
- package/dist/lambda.cjs +74 -0
- package/dist/lambda.d.cts +32 -0
- package/dist/lambda.d.cts.map +1 -0
- package/dist/lambda.d.ts +32 -0
- package/dist/lambda.d.ts.map +1 -0
- package/dist/lambda.js +35 -0
- package/dist/lambda.js.map +1 -0
- package/dist/logging/console_logger_transport.cjs +54 -0
- package/dist/logging/console_logger_transport.js +54 -0
- package/dist/logging/console_logger_transport.js.map +1 -0
- package/dist/logging/logger.cjs +43 -0
- package/dist/logging/logger.js +44 -0
- package/dist/logging/logger.js.map +1 -0
- package/dist/logging/logger_transport.cjs +42 -0
- package/dist/logging/logger_transport.d.cts +57 -0
- package/dist/logging/logger_transport.d.cts.map +1 -0
- package/dist/logging/logger_transport.d.ts +57 -0
- package/dist/logging/logger_transport.d.ts.map +1 -0
- package/dist/logging/logger_transport.js +40 -0
- package/dist/logging/logger_transport.js.map +1 -0
- package/dist/node.cjs +90 -0
- package/dist/node.d.cts +51 -0
- package/dist/node.d.cts.map +1 -0
- package/dist/node.d.ts +51 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +50 -0
- package/dist/node.js.map +1 -0
- package/dist/package.cjs +11 -0
- package/dist/package.js +6 -0
- package/dist/package.js.map +1 -0
- package/dist/promises.cjs +234 -0
- package/dist/promises.js +226 -0
- package/dist/promises.js.map +1 -0
- package/dist/types/errors.cjs +110 -0
- package/dist/types/errors.d.cts +71 -0
- package/dist/types/errors.d.cts.map +1 -0
- package/dist/types/errors.d.ts +71 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +102 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/rpc.cjs +425 -0
- package/dist/types/rpc.d.cts +580 -0
- package/dist/types/rpc.d.cts.map +1 -0
- package/dist/types/rpc.d.ts +580 -0
- package/dist/types/rpc.d.ts.map +1 -0
- package/dist/types/rpc.js +406 -0
- package/dist/types/rpc.js.map +1 -0
- package/dist/user_agent.cjs +7 -0
- package/dist/user_agent.js +8 -0
- package/dist/user_agent.js.map +1 -0
- package/dist/utils/completable_promise.cjs +22 -0
- package/dist/utils/completable_promise.js +22 -0
- package/dist/utils/completable_promise.js.map +1 -0
- package/dist/utils/rand.cjs +72 -0
- package/dist/utils/rand.js +71 -0
- package/dist/utils/rand.js.map +1 -0
- package/dist/utils/streams.cjs +14 -0
- package/dist/utils/streams.js +13 -0
- package/dist/utils/streams.js.map +1 -0
- package/package.json +30 -52
- package/dist/esm/src/common_api.d.ts +0 -37
- package/dist/esm/src/common_api.d.ts.map +0 -1
- package/dist/esm/src/common_api.js +0 -32
- package/dist/esm/src/common_api.js.map +0 -1
- package/dist/esm/src/context.d.ts +0 -695
- package/dist/esm/src/context.d.ts.map +0 -1
- package/dist/esm/src/context.js +0 -87
- package/dist/esm/src/context.js.map +0 -1
- package/dist/esm/src/context_impl.d.ts +0 -69
- package/dist/esm/src/context_impl.d.ts.map +0 -1
- package/dist/esm/src/context_impl.js +0 -592
- package/dist/esm/src/context_impl.js.map +0 -1
- package/dist/esm/src/endpoint/components.d.ts +0 -97
- package/dist/esm/src/endpoint/components.d.ts.map +0 -1
- package/dist/esm/src/endpoint/components.js +0 -343
- package/dist/esm/src/endpoint/components.js.map +0 -1
- package/dist/esm/src/endpoint/discovery.d.ts +0 -184
- package/dist/esm/src/endpoint/discovery.d.ts.map +0 -1
- package/dist/esm/src/endpoint/discovery.js +0 -8
- package/dist/esm/src/endpoint/discovery.js.map +0 -1
- package/dist/esm/src/endpoint/endpoint.d.ts +0 -39
- package/dist/esm/src/endpoint/endpoint.d.ts.map +0 -1
- package/dist/esm/src/endpoint/endpoint.js +0 -155
- package/dist/esm/src/endpoint/endpoint.js.map +0 -1
- package/dist/esm/src/endpoint/fetch_endpoint.d.ts +0 -49
- package/dist/esm/src/endpoint/fetch_endpoint.d.ts.map +0 -1
- package/dist/esm/src/endpoint/fetch_endpoint.js +0 -49
- package/dist/esm/src/endpoint/fetch_endpoint.js.map +0 -1
- package/dist/esm/src/endpoint/handlers/fetch.d.ts +0 -5
- package/dist/esm/src/endpoint/handlers/fetch.d.ts.map +0 -1
- package/dist/esm/src/endpoint/handlers/fetch.js +0 -31
- package/dist/esm/src/endpoint/handlers/fetch.js.map +0 -1
- package/dist/esm/src/endpoint/handlers/generic.d.ts +0 -56
- package/dist/esm/src/endpoint/handlers/generic.d.ts.map +0 -1
- package/dist/esm/src/endpoint/handlers/generic.js +0 -447
- package/dist/esm/src/endpoint/handlers/generic.js.map +0 -1
- package/dist/esm/src/endpoint/handlers/lambda.d.ts +0 -10
- package/dist/esm/src/endpoint/handlers/lambda.d.ts.map +0 -1
- package/dist/esm/src/endpoint/handlers/lambda.js +0 -142
- package/dist/esm/src/endpoint/handlers/lambda.js.map +0 -1
- package/dist/esm/src/endpoint/lambda_endpoint.d.ts +0 -30
- package/dist/esm/src/endpoint/lambda_endpoint.d.ts.map +0 -1
- package/dist/esm/src/endpoint/lambda_endpoint.js +0 -48
- package/dist/esm/src/endpoint/lambda_endpoint.js.map +0 -1
- package/dist/esm/src/endpoint/node_endpoint.d.ts +0 -16
- package/dist/esm/src/endpoint/node_endpoint.d.ts.map +0 -1
- package/dist/esm/src/endpoint/node_endpoint.js +0 -111
- package/dist/esm/src/endpoint/node_endpoint.js.map +0 -1
- package/dist/esm/src/endpoint/types.d.ts +0 -55
- package/dist/esm/src/endpoint/types.d.ts.map +0 -1
- package/dist/esm/src/endpoint/types.js +0 -2
- package/dist/esm/src/endpoint/types.js.map +0 -1
- package/dist/esm/src/endpoint/withOptions.d.ts +0 -4
- package/dist/esm/src/endpoint/withOptions.d.ts.map +0 -1
- package/dist/esm/src/endpoint/withOptions.js +0 -19
- package/dist/esm/src/endpoint/withOptions.js.map +0 -1
- package/dist/esm/src/endpoint.d.ts +0 -108
- package/dist/esm/src/endpoint.d.ts.map +0 -1
- package/dist/esm/src/endpoint.js +0 -12
- package/dist/esm/src/endpoint.js.map +0 -1
- package/dist/esm/src/fetch.d.ts +0 -43
- package/dist/esm/src/fetch.d.ts.map +0 -1
- package/dist/esm/src/fetch.js.map +0 -1
- package/dist/esm/src/generated/version.d.ts +0 -2
- package/dist/esm/src/generated/version.d.ts.map +0 -1
- package/dist/esm/src/generated/version.js +0 -2
- package/dist/esm/src/generated/version.js.map +0 -1
- package/dist/esm/src/io.d.ts +0 -24
- package/dist/esm/src/io.d.ts.map +0 -1
- package/dist/esm/src/io.js +0 -73
- package/dist/esm/src/io.js.map +0 -1
- package/dist/esm/src/lambda.d.ts +0 -23
- package/dist/esm/src/lambda.d.ts.map +0 -1
- package/dist/esm/src/lambda.js +0 -37
- package/dist/esm/src/lambda.js.map +0 -1
- package/dist/esm/src/logging/console_logger_transport.d.ts +0 -5
- package/dist/esm/src/logging/console_logger_transport.d.ts.map +0 -1
- package/dist/esm/src/logging/console_logger_transport.js +0 -94
- package/dist/esm/src/logging/console_logger_transport.js.map +0 -1
- package/dist/esm/src/logging/logger.d.ts +0 -10
- package/dist/esm/src/logging/logger.d.ts.map +0 -1
- package/dist/esm/src/logging/logger.js +0 -57
- package/dist/esm/src/logging/logger.js.map +0 -1
- package/dist/esm/src/logging/logger_transport.d.ts +0 -52
- package/dist/esm/src/logging/logger_transport.d.ts.map +0 -1
- package/dist/esm/src/logging/logger_transport.js +0 -55
- package/dist/esm/src/logging/logger_transport.js.map +0 -1
- package/dist/esm/src/node.d.ts +0 -39
- package/dist/esm/src/node.d.ts.map +0 -1
- package/dist/esm/src/node.js +0 -52
- package/dist/esm/src/node.js.map +0 -1
- package/dist/esm/src/promises.d.ts +0 -111
- package/dist/esm/src/promises.d.ts.map +0 -1
- package/dist/esm/src/promises.js +0 -314
- package/dist/esm/src/promises.js.map +0 -1
- package/dist/esm/src/public_api.d.ts +0 -2
- package/dist/esm/src/public_api.d.ts.map +0 -1
- package/dist/esm/src/public_api.js +0 -12
- package/dist/esm/src/public_api.js.map +0 -1
- package/dist/esm/src/types/errors.d.ts +0 -74
- package/dist/esm/src/types/errors.d.ts.map +0 -1
- package/dist/esm/src/types/errors.js +0 -128
- package/dist/esm/src/types/errors.js.map +0 -1
- package/dist/esm/src/types/rpc.d.ts +0 -620
- package/dist/esm/src/types/rpc.d.ts.map +0 -1
- package/dist/esm/src/types/rpc.js +0 -577
- package/dist/esm/src/types/rpc.js.map +0 -1
- package/dist/esm/src/user_agent.d.ts +0 -2
- package/dist/esm/src/user_agent.d.ts.map +0 -1
- package/dist/esm/src/user_agent.js +0 -13
- package/dist/esm/src/user_agent.js.map +0 -1
- package/dist/esm/src/utils/completable_promise.d.ts +0 -9
- package/dist/esm/src/utils/completable_promise.d.ts.map +0 -1
- package/dist/esm/src/utils/completable_promise.js +0 -30
- package/dist/esm/src/utils/completable_promise.js.map +0 -1
- package/dist/esm/src/utils/rand.d.ts +0 -13
- package/dist/esm/src/utils/rand.d.ts.map +0 -1
- package/dist/esm/src/utils/rand.js +0 -109
- package/dist/esm/src/utils/rand.js.map +0 -1
- package/dist/esm/src/utils/streams.d.ts +0 -3
- package/dist/esm/src/utils/streams.d.ts.map +0 -1
- package/dist/esm/src/utils/streams.js +0 -20
- package/dist/esm/src/utils/streams.js.map +0 -1
- package/dist/esm/tsconfig.tsbuildinfo +0 -1
- /package/dist/{esm/src/endpoint → endpoint}/handlers/vm/sdk_shared_core_wasm_bindings.d.ts +0 -0
- /package/dist/{esm/src/endpoint → endpoint}/handlers/vm/sdk_shared_core_wasm_bindings.js +0 -0
- /package/dist/{esm/src/endpoint → endpoint}/handlers/vm/sdk_shared_core_wasm_bindings_bg.js +0 -0
- /package/dist/{esm/src/endpoint → endpoint}/handlers/vm/sdk_shared_core_wasm_bindings_bg.wasm +0 -0
- /package/dist/{esm/src/endpoint → endpoint}/handlers/vm/sdk_shared_core_wasm_bindings_bg.wasm.d.ts +0 -0
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_rpc = require('../types/rpc.cjs');
|
|
3
|
+
let __restatedev_restate_sdk_core = require("@restatedev/restate-sdk-core");
|
|
4
|
+
__restatedev_restate_sdk_core = require_rolldown_runtime.__toESM(__restatedev_restate_sdk_core);
|
|
5
|
+
|
|
6
|
+
//#region src/endpoint/components.ts
|
|
7
|
+
function handlerInputDiscovery(handler, defaultSerde) {
|
|
8
|
+
const serde$1 = handler.inputSerde ?? defaultSerde;
|
|
9
|
+
let contentType = void 0;
|
|
10
|
+
let jsonSchema = void 0;
|
|
11
|
+
if (serde$1.jsonSchema) {
|
|
12
|
+
jsonSchema = serde$1.jsonSchema;
|
|
13
|
+
contentType = handler.accept ?? serde$1.contentType;
|
|
14
|
+
} else if (handler.accept) contentType = handler.accept;
|
|
15
|
+
else if (serde$1.contentType) contentType = serde$1.contentType;
|
|
16
|
+
else return {};
|
|
17
|
+
return {
|
|
18
|
+
required: false,
|
|
19
|
+
contentType,
|
|
20
|
+
jsonSchema
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function handlerOutputDiscovery(handler, defaultSerde) {
|
|
24
|
+
const serde$1 = handler.outputSerde ?? defaultSerde;
|
|
25
|
+
let contentType = void 0;
|
|
26
|
+
let jsonSchema = void 0;
|
|
27
|
+
if (serde$1.jsonSchema) {
|
|
28
|
+
jsonSchema = serde$1.jsonSchema;
|
|
29
|
+
contentType = serde$1.contentType ?? "application/json";
|
|
30
|
+
} else if (serde$1.contentType) contentType = serde$1.contentType;
|
|
31
|
+
else return { setContentTypeIfEmpty: false };
|
|
32
|
+
return {
|
|
33
|
+
setContentTypeIfEmpty: false,
|
|
34
|
+
jsonSchema,
|
|
35
|
+
contentType
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
var ServiceComponent = class {
|
|
39
|
+
handlers = /* @__PURE__ */ new Map();
|
|
40
|
+
constructor(componentName, description, metadata, options) {
|
|
41
|
+
this.componentName = componentName;
|
|
42
|
+
this.description = description;
|
|
43
|
+
this.metadata = metadata;
|
|
44
|
+
this.options = options;
|
|
45
|
+
}
|
|
46
|
+
name() {
|
|
47
|
+
return this.componentName;
|
|
48
|
+
}
|
|
49
|
+
add(name, handlerWrapper) {
|
|
50
|
+
this.handlers.set(name, new ServiceHandler(name, handlerWrapper, this));
|
|
51
|
+
}
|
|
52
|
+
discovery() {
|
|
53
|
+
const handlers = [...this.handlers.entries()].map(([name, handler]) => {
|
|
54
|
+
return {
|
|
55
|
+
name,
|
|
56
|
+
...commonHandlerOptions(handler.handlerWrapper, this.options?.serde ?? __restatedev_restate_sdk_core.serde.json)
|
|
57
|
+
};
|
|
58
|
+
});
|
|
59
|
+
return {
|
|
60
|
+
name: this.componentName,
|
|
61
|
+
ty: "SERVICE",
|
|
62
|
+
handlers,
|
|
63
|
+
documentation: this.description,
|
|
64
|
+
metadata: this.metadata,
|
|
65
|
+
...commonServiceOptions(this.options)
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
handlerMatching(url) {
|
|
69
|
+
return this.handlers.get(url.handlerName);
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
var ServiceHandler = class {
|
|
73
|
+
constructor(handlerName, handlerWrapper, parent) {
|
|
74
|
+
this.handlerName = handlerName;
|
|
75
|
+
this.handlerWrapper = handlerWrapper;
|
|
76
|
+
this.parent = parent;
|
|
77
|
+
}
|
|
78
|
+
name() {
|
|
79
|
+
return this.handlerName;
|
|
80
|
+
}
|
|
81
|
+
component() {
|
|
82
|
+
return this.parent;
|
|
83
|
+
}
|
|
84
|
+
kind() {
|
|
85
|
+
return this.handlerWrapper.kind;
|
|
86
|
+
}
|
|
87
|
+
invoke(context, input) {
|
|
88
|
+
return this.handlerWrapper.invoke(context, input);
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
var VirtualObjectComponent = class {
|
|
92
|
+
handlers = /* @__PURE__ */ new Map();
|
|
93
|
+
constructor(componentName, description, metadata, options) {
|
|
94
|
+
this.componentName = componentName;
|
|
95
|
+
this.description = description;
|
|
96
|
+
this.metadata = metadata;
|
|
97
|
+
this.options = options;
|
|
98
|
+
}
|
|
99
|
+
name() {
|
|
100
|
+
return this.componentName;
|
|
101
|
+
}
|
|
102
|
+
add(name, wrapper) {
|
|
103
|
+
this.handlers.set(name, new VirtualObjectHandler(name, wrapper, this));
|
|
104
|
+
}
|
|
105
|
+
discovery() {
|
|
106
|
+
const handlers = [...this.handlers.entries()].map(([name, handler]) => {
|
|
107
|
+
return {
|
|
108
|
+
name,
|
|
109
|
+
ty: handler.kind() === require_rpc.HandlerKind.EXCLUSIVE ? "EXCLUSIVE" : "SHARED",
|
|
110
|
+
...commonHandlerOptions(handler.handlerWrapper, this.options?.serde ?? __restatedev_restate_sdk_core.serde.json)
|
|
111
|
+
};
|
|
112
|
+
});
|
|
113
|
+
return {
|
|
114
|
+
name: this.componentName,
|
|
115
|
+
ty: "VIRTUAL_OBJECT",
|
|
116
|
+
handlers,
|
|
117
|
+
documentation: this.description,
|
|
118
|
+
metadata: this.metadata,
|
|
119
|
+
...commonServiceOptions(this.options)
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
handlerMatching(url) {
|
|
123
|
+
return this.handlers.get(url.handlerName);
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
var VirtualObjectHandler = class {
|
|
127
|
+
constructor(handlerName, handlerWrapper, parent) {
|
|
128
|
+
this.handlerName = handlerName;
|
|
129
|
+
this.handlerWrapper = handlerWrapper;
|
|
130
|
+
this.parent = parent;
|
|
131
|
+
}
|
|
132
|
+
name() {
|
|
133
|
+
return this.handlerName;
|
|
134
|
+
}
|
|
135
|
+
component() {
|
|
136
|
+
return this.parent;
|
|
137
|
+
}
|
|
138
|
+
kind() {
|
|
139
|
+
return this.handlerWrapper.kind;
|
|
140
|
+
}
|
|
141
|
+
invoke(context, input) {
|
|
142
|
+
return this.handlerWrapper.invoke(context, input);
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
var WorkflowComponent = class {
|
|
146
|
+
handlers = /* @__PURE__ */ new Map();
|
|
147
|
+
constructor(componentName, description, metadata, options) {
|
|
148
|
+
this.componentName = componentName;
|
|
149
|
+
this.description = description;
|
|
150
|
+
this.metadata = metadata;
|
|
151
|
+
this.options = options;
|
|
152
|
+
}
|
|
153
|
+
name() {
|
|
154
|
+
return this.componentName;
|
|
155
|
+
}
|
|
156
|
+
add(name, wrapper) {
|
|
157
|
+
this.handlers.set(name, new WorkflowHandler(name, wrapper, this));
|
|
158
|
+
}
|
|
159
|
+
discovery() {
|
|
160
|
+
const handlers = [...this.handlers.entries()].map(([name, handler]) => {
|
|
161
|
+
return {
|
|
162
|
+
name,
|
|
163
|
+
ty: handler.kind() === require_rpc.HandlerKind.WORKFLOW ? "WORKFLOW" : "SHARED",
|
|
164
|
+
workflowCompletionRetention: handler.kind() === require_rpc.HandlerKind.WORKFLOW && this.options?.workflowRetention !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(this.options?.workflowRetention) : void 0,
|
|
165
|
+
...commonHandlerOptions(handler.handlerWrapper, this.options?.serde ?? __restatedev_restate_sdk_core.serde.json)
|
|
166
|
+
};
|
|
167
|
+
});
|
|
168
|
+
return {
|
|
169
|
+
name: this.componentName,
|
|
170
|
+
ty: "WORKFLOW",
|
|
171
|
+
handlers,
|
|
172
|
+
documentation: this.description,
|
|
173
|
+
metadata: this.metadata,
|
|
174
|
+
...commonServiceOptions(this.options)
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
handlerMatching(url) {
|
|
178
|
+
return this.handlers.get(url.handlerName);
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
var WorkflowHandler = class {
|
|
182
|
+
constructor(handlerName, handlerWrapper, parent) {
|
|
183
|
+
this.handlerName = handlerName;
|
|
184
|
+
this.handlerWrapper = handlerWrapper;
|
|
185
|
+
this.parent = parent;
|
|
186
|
+
}
|
|
187
|
+
name() {
|
|
188
|
+
return this.handlerName;
|
|
189
|
+
}
|
|
190
|
+
component() {
|
|
191
|
+
return this.parent;
|
|
192
|
+
}
|
|
193
|
+
kind() {
|
|
194
|
+
return this.handlerWrapper.kind;
|
|
195
|
+
}
|
|
196
|
+
invoke(context, input) {
|
|
197
|
+
return this.handlerWrapper.invoke(context, input);
|
|
198
|
+
}
|
|
199
|
+
};
|
|
200
|
+
function parseUrlComponents(urlPath) {
|
|
201
|
+
if (!urlPath) return {
|
|
202
|
+
type: "unknown",
|
|
203
|
+
path: ""
|
|
204
|
+
};
|
|
205
|
+
const fragments = urlPath.split("/");
|
|
206
|
+
if (fragments.length >= 3 && fragments[fragments.length - 3] === "invoke") return {
|
|
207
|
+
type: "invoke",
|
|
208
|
+
componentName: fragments[fragments.length - 2],
|
|
209
|
+
handlerName: fragments[fragments.length - 1]
|
|
210
|
+
};
|
|
211
|
+
if (fragments.length > 0 && fragments[fragments.length - 1] === "discover") return { type: "discover" };
|
|
212
|
+
if (fragments.length > 0 && fragments[fragments.length - 1] === "health") return { type: "health" };
|
|
213
|
+
return {
|
|
214
|
+
type: "unknown",
|
|
215
|
+
path: urlPath
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
function commonServiceOptions(options) {
|
|
219
|
+
return {
|
|
220
|
+
journalRetention: options?.journalRetention !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(options.journalRetention) : void 0,
|
|
221
|
+
idempotencyRetention: options?.idempotencyRetention !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(options.idempotencyRetention) : void 0,
|
|
222
|
+
inactivityTimeout: options?.inactivityTimeout !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(options.inactivityTimeout) : void 0,
|
|
223
|
+
abortTimeout: options?.abortTimeout !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(options.abortTimeout) : void 0,
|
|
224
|
+
ingressPrivate: options?.ingressPrivate,
|
|
225
|
+
enableLazyState: options !== void 0 && "enableLazyState" in options ? options.enableLazyState : void 0,
|
|
226
|
+
retryPolicyExponentiationFactor: options?.retryPolicy?.exponentiationFactor,
|
|
227
|
+
retryPolicyInitialInterval: options?.retryPolicy?.initialInterval !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(options?.retryPolicy?.initialInterval) : void 0,
|
|
228
|
+
retryPolicyMaxInterval: options?.retryPolicy?.maxInterval !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(options?.retryPolicy?.maxInterval) : void 0,
|
|
229
|
+
retryPolicyMaxAttempts: options?.retryPolicy?.maxAttempts,
|
|
230
|
+
retryPolicyOnMaxAttempts: options?.retryPolicy?.onMaxAttempts === "kill" ? "KILL" : options?.retryPolicy?.onMaxAttempts === "pause" ? "PAUSE" : void 0
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
function commonHandlerOptions(wrapper, defaultSerde) {
|
|
234
|
+
return {
|
|
235
|
+
input: handlerInputDiscovery(wrapper, defaultSerde),
|
|
236
|
+
output: handlerOutputDiscovery(wrapper, defaultSerde),
|
|
237
|
+
journalRetention: wrapper.journalRetention !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(wrapper.journalRetention) : void 0,
|
|
238
|
+
idempotencyRetention: wrapper.idempotencyRetention !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(wrapper.idempotencyRetention) : void 0,
|
|
239
|
+
inactivityTimeout: wrapper.inactivityTimeout !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(wrapper.inactivityTimeout) : void 0,
|
|
240
|
+
abortTimeout: wrapper.abortTimeout !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(wrapper.abortTimeout) : void 0,
|
|
241
|
+
ingressPrivate: wrapper.ingressPrivate,
|
|
242
|
+
enableLazyState: wrapper.enableLazyState,
|
|
243
|
+
retryPolicyExponentiationFactor: wrapper.retryPolicy?.exponentiationFactor,
|
|
244
|
+
retryPolicyInitialInterval: wrapper.retryPolicy?.initialInterval !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(wrapper.retryPolicy?.initialInterval) : void 0,
|
|
245
|
+
retryPolicyMaxInterval: wrapper.retryPolicy?.maxInterval !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(wrapper.retryPolicy?.maxInterval) : void 0,
|
|
246
|
+
retryPolicyMaxAttempts: wrapper.retryPolicy?.maxAttempts,
|
|
247
|
+
retryPolicyOnMaxAttempts: wrapper.retryPolicy?.onMaxAttempts === "kill" ? "KILL" : wrapper.retryPolicy?.onMaxAttempts === "pause" ? "PAUSE" : void 0,
|
|
248
|
+
documentation: wrapper.description,
|
|
249
|
+
metadata: wrapper.metadata
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
//#endregion
|
|
254
|
+
exports.ServiceComponent = ServiceComponent;
|
|
255
|
+
exports.VirtualObjectComponent = VirtualObjectComponent;
|
|
256
|
+
exports.WorkflowComponent = WorkflowComponent;
|
|
257
|
+
exports.parseUrlComponents = parseUrlComponents;
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import { HandlerKind } from "../types/rpc.js";
|
|
2
|
+
import { millisOrDurationToMillis, serde } from "@restatedev/restate-sdk-core";
|
|
3
|
+
|
|
4
|
+
//#region src/endpoint/components.ts
|
|
5
|
+
function handlerInputDiscovery(handler, defaultSerde) {
|
|
6
|
+
const serde$1 = handler.inputSerde ?? defaultSerde;
|
|
7
|
+
let contentType = void 0;
|
|
8
|
+
let jsonSchema = void 0;
|
|
9
|
+
if (serde$1.jsonSchema) {
|
|
10
|
+
jsonSchema = serde$1.jsonSchema;
|
|
11
|
+
contentType = handler.accept ?? serde$1.contentType;
|
|
12
|
+
} else if (handler.accept) contentType = handler.accept;
|
|
13
|
+
else if (serde$1.contentType) contentType = serde$1.contentType;
|
|
14
|
+
else return {};
|
|
15
|
+
return {
|
|
16
|
+
required: false,
|
|
17
|
+
contentType,
|
|
18
|
+
jsonSchema
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
function handlerOutputDiscovery(handler, defaultSerde) {
|
|
22
|
+
const serde$1 = handler.outputSerde ?? defaultSerde;
|
|
23
|
+
let contentType = void 0;
|
|
24
|
+
let jsonSchema = void 0;
|
|
25
|
+
if (serde$1.jsonSchema) {
|
|
26
|
+
jsonSchema = serde$1.jsonSchema;
|
|
27
|
+
contentType = serde$1.contentType ?? "application/json";
|
|
28
|
+
} else if (serde$1.contentType) contentType = serde$1.contentType;
|
|
29
|
+
else return { setContentTypeIfEmpty: false };
|
|
30
|
+
return {
|
|
31
|
+
setContentTypeIfEmpty: false,
|
|
32
|
+
jsonSchema,
|
|
33
|
+
contentType
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
var ServiceComponent = class {
|
|
37
|
+
handlers = /* @__PURE__ */ new Map();
|
|
38
|
+
constructor(componentName, description, metadata, options) {
|
|
39
|
+
this.componentName = componentName;
|
|
40
|
+
this.description = description;
|
|
41
|
+
this.metadata = metadata;
|
|
42
|
+
this.options = options;
|
|
43
|
+
}
|
|
44
|
+
name() {
|
|
45
|
+
return this.componentName;
|
|
46
|
+
}
|
|
47
|
+
add(name, handlerWrapper) {
|
|
48
|
+
this.handlers.set(name, new ServiceHandler$1(name, handlerWrapper, this));
|
|
49
|
+
}
|
|
50
|
+
discovery() {
|
|
51
|
+
const handlers = [...this.handlers.entries()].map(([name, handler]) => {
|
|
52
|
+
return {
|
|
53
|
+
name,
|
|
54
|
+
...commonHandlerOptions(handler.handlerWrapper, this.options?.serde ?? serde.json)
|
|
55
|
+
};
|
|
56
|
+
});
|
|
57
|
+
return {
|
|
58
|
+
name: this.componentName,
|
|
59
|
+
ty: "SERVICE",
|
|
60
|
+
handlers,
|
|
61
|
+
documentation: this.description,
|
|
62
|
+
metadata: this.metadata,
|
|
63
|
+
...commonServiceOptions(this.options)
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
handlerMatching(url) {
|
|
67
|
+
return this.handlers.get(url.handlerName);
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
var ServiceHandler$1 = class {
|
|
71
|
+
constructor(handlerName, handlerWrapper, parent) {
|
|
72
|
+
this.handlerName = handlerName;
|
|
73
|
+
this.handlerWrapper = handlerWrapper;
|
|
74
|
+
this.parent = parent;
|
|
75
|
+
}
|
|
76
|
+
name() {
|
|
77
|
+
return this.handlerName;
|
|
78
|
+
}
|
|
79
|
+
component() {
|
|
80
|
+
return this.parent;
|
|
81
|
+
}
|
|
82
|
+
kind() {
|
|
83
|
+
return this.handlerWrapper.kind;
|
|
84
|
+
}
|
|
85
|
+
invoke(context, input) {
|
|
86
|
+
return this.handlerWrapper.invoke(context, input);
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
var VirtualObjectComponent = class {
|
|
90
|
+
handlers = /* @__PURE__ */ new Map();
|
|
91
|
+
constructor(componentName, description, metadata, options) {
|
|
92
|
+
this.componentName = componentName;
|
|
93
|
+
this.description = description;
|
|
94
|
+
this.metadata = metadata;
|
|
95
|
+
this.options = options;
|
|
96
|
+
}
|
|
97
|
+
name() {
|
|
98
|
+
return this.componentName;
|
|
99
|
+
}
|
|
100
|
+
add(name, wrapper) {
|
|
101
|
+
this.handlers.set(name, new VirtualObjectHandler(name, wrapper, this));
|
|
102
|
+
}
|
|
103
|
+
discovery() {
|
|
104
|
+
const handlers = [...this.handlers.entries()].map(([name, handler]) => {
|
|
105
|
+
return {
|
|
106
|
+
name,
|
|
107
|
+
ty: handler.kind() === HandlerKind.EXCLUSIVE ? "EXCLUSIVE" : "SHARED",
|
|
108
|
+
...commonHandlerOptions(handler.handlerWrapper, this.options?.serde ?? serde.json)
|
|
109
|
+
};
|
|
110
|
+
});
|
|
111
|
+
return {
|
|
112
|
+
name: this.componentName,
|
|
113
|
+
ty: "VIRTUAL_OBJECT",
|
|
114
|
+
handlers,
|
|
115
|
+
documentation: this.description,
|
|
116
|
+
metadata: this.metadata,
|
|
117
|
+
...commonServiceOptions(this.options)
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
handlerMatching(url) {
|
|
121
|
+
return this.handlers.get(url.handlerName);
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
var VirtualObjectHandler = class {
|
|
125
|
+
constructor(handlerName, handlerWrapper, parent) {
|
|
126
|
+
this.handlerName = handlerName;
|
|
127
|
+
this.handlerWrapper = handlerWrapper;
|
|
128
|
+
this.parent = parent;
|
|
129
|
+
}
|
|
130
|
+
name() {
|
|
131
|
+
return this.handlerName;
|
|
132
|
+
}
|
|
133
|
+
component() {
|
|
134
|
+
return this.parent;
|
|
135
|
+
}
|
|
136
|
+
kind() {
|
|
137
|
+
return this.handlerWrapper.kind;
|
|
138
|
+
}
|
|
139
|
+
invoke(context, input) {
|
|
140
|
+
return this.handlerWrapper.invoke(context, input);
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
var WorkflowComponent = class {
|
|
144
|
+
handlers = /* @__PURE__ */ new Map();
|
|
145
|
+
constructor(componentName, description, metadata, options) {
|
|
146
|
+
this.componentName = componentName;
|
|
147
|
+
this.description = description;
|
|
148
|
+
this.metadata = metadata;
|
|
149
|
+
this.options = options;
|
|
150
|
+
}
|
|
151
|
+
name() {
|
|
152
|
+
return this.componentName;
|
|
153
|
+
}
|
|
154
|
+
add(name, wrapper) {
|
|
155
|
+
this.handlers.set(name, new WorkflowHandler$1(name, wrapper, this));
|
|
156
|
+
}
|
|
157
|
+
discovery() {
|
|
158
|
+
const handlers = [...this.handlers.entries()].map(([name, handler]) => {
|
|
159
|
+
return {
|
|
160
|
+
name,
|
|
161
|
+
ty: handler.kind() === HandlerKind.WORKFLOW ? "WORKFLOW" : "SHARED",
|
|
162
|
+
workflowCompletionRetention: handler.kind() === HandlerKind.WORKFLOW && this.options?.workflowRetention !== void 0 ? millisOrDurationToMillis(this.options?.workflowRetention) : void 0,
|
|
163
|
+
...commonHandlerOptions(handler.handlerWrapper, this.options?.serde ?? serde.json)
|
|
164
|
+
};
|
|
165
|
+
});
|
|
166
|
+
return {
|
|
167
|
+
name: this.componentName,
|
|
168
|
+
ty: "WORKFLOW",
|
|
169
|
+
handlers,
|
|
170
|
+
documentation: this.description,
|
|
171
|
+
metadata: this.metadata,
|
|
172
|
+
...commonServiceOptions(this.options)
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
handlerMatching(url) {
|
|
176
|
+
return this.handlers.get(url.handlerName);
|
|
177
|
+
}
|
|
178
|
+
};
|
|
179
|
+
var WorkflowHandler$1 = class {
|
|
180
|
+
constructor(handlerName, handlerWrapper, parent) {
|
|
181
|
+
this.handlerName = handlerName;
|
|
182
|
+
this.handlerWrapper = handlerWrapper;
|
|
183
|
+
this.parent = parent;
|
|
184
|
+
}
|
|
185
|
+
name() {
|
|
186
|
+
return this.handlerName;
|
|
187
|
+
}
|
|
188
|
+
component() {
|
|
189
|
+
return this.parent;
|
|
190
|
+
}
|
|
191
|
+
kind() {
|
|
192
|
+
return this.handlerWrapper.kind;
|
|
193
|
+
}
|
|
194
|
+
invoke(context, input) {
|
|
195
|
+
return this.handlerWrapper.invoke(context, input);
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
function parseUrlComponents(urlPath) {
|
|
199
|
+
if (!urlPath) return {
|
|
200
|
+
type: "unknown",
|
|
201
|
+
path: ""
|
|
202
|
+
};
|
|
203
|
+
const fragments = urlPath.split("/");
|
|
204
|
+
if (fragments.length >= 3 && fragments[fragments.length - 3] === "invoke") return {
|
|
205
|
+
type: "invoke",
|
|
206
|
+
componentName: fragments[fragments.length - 2],
|
|
207
|
+
handlerName: fragments[fragments.length - 1]
|
|
208
|
+
};
|
|
209
|
+
if (fragments.length > 0 && fragments[fragments.length - 1] === "discover") return { type: "discover" };
|
|
210
|
+
if (fragments.length > 0 && fragments[fragments.length - 1] === "health") return { type: "health" };
|
|
211
|
+
return {
|
|
212
|
+
type: "unknown",
|
|
213
|
+
path: urlPath
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
function commonServiceOptions(options) {
|
|
217
|
+
return {
|
|
218
|
+
journalRetention: options?.journalRetention !== void 0 ? millisOrDurationToMillis(options.journalRetention) : void 0,
|
|
219
|
+
idempotencyRetention: options?.idempotencyRetention !== void 0 ? millisOrDurationToMillis(options.idempotencyRetention) : void 0,
|
|
220
|
+
inactivityTimeout: options?.inactivityTimeout !== void 0 ? millisOrDurationToMillis(options.inactivityTimeout) : void 0,
|
|
221
|
+
abortTimeout: options?.abortTimeout !== void 0 ? millisOrDurationToMillis(options.abortTimeout) : void 0,
|
|
222
|
+
ingressPrivate: options?.ingressPrivate,
|
|
223
|
+
enableLazyState: options !== void 0 && "enableLazyState" in options ? options.enableLazyState : void 0,
|
|
224
|
+
retryPolicyExponentiationFactor: options?.retryPolicy?.exponentiationFactor,
|
|
225
|
+
retryPolicyInitialInterval: options?.retryPolicy?.initialInterval !== void 0 ? millisOrDurationToMillis(options?.retryPolicy?.initialInterval) : void 0,
|
|
226
|
+
retryPolicyMaxInterval: options?.retryPolicy?.maxInterval !== void 0 ? millisOrDurationToMillis(options?.retryPolicy?.maxInterval) : void 0,
|
|
227
|
+
retryPolicyMaxAttempts: options?.retryPolicy?.maxAttempts,
|
|
228
|
+
retryPolicyOnMaxAttempts: options?.retryPolicy?.onMaxAttempts === "kill" ? "KILL" : options?.retryPolicy?.onMaxAttempts === "pause" ? "PAUSE" : void 0
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
function commonHandlerOptions(wrapper, defaultSerde) {
|
|
232
|
+
return {
|
|
233
|
+
input: handlerInputDiscovery(wrapper, defaultSerde),
|
|
234
|
+
output: handlerOutputDiscovery(wrapper, defaultSerde),
|
|
235
|
+
journalRetention: wrapper.journalRetention !== void 0 ? millisOrDurationToMillis(wrapper.journalRetention) : void 0,
|
|
236
|
+
idempotencyRetention: wrapper.idempotencyRetention !== void 0 ? millisOrDurationToMillis(wrapper.idempotencyRetention) : void 0,
|
|
237
|
+
inactivityTimeout: wrapper.inactivityTimeout !== void 0 ? millisOrDurationToMillis(wrapper.inactivityTimeout) : void 0,
|
|
238
|
+
abortTimeout: wrapper.abortTimeout !== void 0 ? millisOrDurationToMillis(wrapper.abortTimeout) : void 0,
|
|
239
|
+
ingressPrivate: wrapper.ingressPrivate,
|
|
240
|
+
enableLazyState: wrapper.enableLazyState,
|
|
241
|
+
retryPolicyExponentiationFactor: wrapper.retryPolicy?.exponentiationFactor,
|
|
242
|
+
retryPolicyInitialInterval: wrapper.retryPolicy?.initialInterval !== void 0 ? millisOrDurationToMillis(wrapper.retryPolicy?.initialInterval) : void 0,
|
|
243
|
+
retryPolicyMaxInterval: wrapper.retryPolicy?.maxInterval !== void 0 ? millisOrDurationToMillis(wrapper.retryPolicy?.maxInterval) : void 0,
|
|
244
|
+
retryPolicyMaxAttempts: wrapper.retryPolicy?.maxAttempts,
|
|
245
|
+
retryPolicyOnMaxAttempts: wrapper.retryPolicy?.onMaxAttempts === "kill" ? "KILL" : wrapper.retryPolicy?.onMaxAttempts === "pause" ? "PAUSE" : void 0,
|
|
246
|
+
documentation: wrapper.description,
|
|
247
|
+
metadata: wrapper.metadata
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
//#endregion
|
|
252
|
+
export { ServiceComponent, VirtualObjectComponent, WorkflowComponent, parseUrlComponents };
|
|
253
|
+
//# sourceMappingURL=components.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components.js","names":["serde","componentName: string","description?: string","metadata?: Record<string, string>","options?: ServiceOptions","ServiceHandler","handlers: d.Handler[]","handlerName: string","handlerWrapper: HandlerWrapper","parent: ServiceComponent","options?: ObjectOptions","parent: VirtualObjectComponent","options?: WorkflowOptions","WorkflowHandler","parent: WorkflowComponent"],"sources":["../../src/endpoint/components.ts"],"sourcesContent":["/*\n * Copyright (c) 2023-2024 - Restate Software, Inc., Restate GmbH\n *\n * This file is part of the Restate SDK for Node.js/TypeScript,\n * which is released under the MIT license.\n *\n * You can find a copy of the license in file LICENSE in the root\n * directory of this repository or package, or at\n * https://github.com/restatedev/sdk-typescript/blob/main/LICENSE\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type * as d from \"./discovery.js\";\nimport type { ContextImpl } from \"../context_impl.js\";\nimport type {\n HandlerWrapper,\n ObjectOptions,\n ServiceOptions,\n WorkflowOptions,\n} from \"../types/rpc.js\";\nimport { HandlerKind } from \"../types/rpc.js\";\nimport type { Serde } from \"@restatedev/restate-sdk-core\";\nimport { millisOrDurationToMillis, serde } from \"@restatedev/restate-sdk-core\";\n\n//\n// Interfaces\n//\nexport interface Component {\n name(): string;\n handlerMatching(url: InvokePathComponents): ComponentHandler | undefined;\n discovery(): d.Service;\n options?: ServiceOptions | ObjectOptions | WorkflowOptions;\n}\n\nexport interface ComponentHandler {\n name(): string;\n component(): Component;\n invoke(context: ContextImpl, input: Uint8Array): Promise<Uint8Array>;\n kind(): HandlerKind;\n}\n\n//\n// Service\n//\n\nfunction handlerInputDiscovery(\n handler: HandlerWrapper,\n defaultSerde: Serde<any>\n): d.InputPayload {\n const serde = handler.inputSerde ?? defaultSerde;\n\n let contentType = undefined;\n let jsonSchema = undefined;\n\n if (serde.jsonSchema) {\n jsonSchema = serde.jsonSchema;\n contentType = handler.accept ?? serde.contentType;\n } else if (handler.accept) {\n contentType = handler.accept;\n } else if (serde.contentType) {\n contentType = serde.contentType;\n } else {\n // no input information\n return {};\n }\n\n return {\n required: false,\n contentType,\n jsonSchema,\n };\n}\n\nfunction handlerOutputDiscovery(\n handler: HandlerWrapper,\n defaultSerde: Serde<any>\n): d.OutputPayload {\n const serde = handler.outputSerde ?? defaultSerde;\n\n let contentType = undefined;\n let jsonSchema = undefined;\n\n if (serde.jsonSchema) {\n jsonSchema = serde.jsonSchema;\n contentType = serde.contentType ?? \"application/json\";\n } else if (serde.contentType) {\n contentType = serde.contentType;\n } else {\n // no input information\n return { setContentTypeIfEmpty: false };\n }\n\n return {\n setContentTypeIfEmpty: false,\n jsonSchema,\n contentType,\n };\n}\n\nexport class ServiceComponent implements Component {\n private readonly handlers: Map<string, ServiceHandler> = new Map();\n\n constructor(\n private readonly componentName: string,\n public readonly description?: string,\n public readonly metadata?: Record<string, string>,\n public readonly options?: ServiceOptions\n ) {}\n\n name(): string {\n return this.componentName;\n }\n\n add(name: string, handlerWrapper: HandlerWrapper) {\n this.handlers.set(name, new ServiceHandler(name, handlerWrapper, this));\n }\n\n discovery(): d.Service {\n const handlers: d.Handler[] = [...this.handlers.entries()].map(\n ([name, handler]) => {\n return {\n name,\n ...commonHandlerOptions(\n handler.handlerWrapper,\n this.options?.serde ?? serde.json\n ),\n } satisfies d.Handler;\n }\n );\n\n return {\n name: this.componentName,\n ty: \"SERVICE\",\n handlers,\n documentation: this.description,\n metadata: this.metadata,\n ...commonServiceOptions(this.options),\n } satisfies d.Service;\n }\n\n handlerMatching(url: InvokePathComponents): ComponentHandler | undefined {\n return this.handlers.get(url.handlerName);\n }\n}\n\nexport class ServiceHandler implements ComponentHandler {\n constructor(\n private readonly handlerName: string,\n public readonly handlerWrapper: HandlerWrapper,\n private readonly parent: ServiceComponent\n ) {}\n\n name(): string {\n return this.handlerName;\n }\n\n component(): Component {\n return this.parent;\n }\n\n kind(): HandlerKind {\n return this.handlerWrapper.kind;\n }\n\n invoke(context: ContextImpl, input: Uint8Array): Promise<Uint8Array> {\n return this.handlerWrapper.invoke(context, input);\n }\n}\n\n//\n// Virtual Object\n//\n\nexport class VirtualObjectComponent implements Component {\n private readonly handlers: Map<string, VirtualObjectHandler> = new Map();\n\n constructor(\n public readonly componentName: string,\n public readonly description?: string,\n public readonly metadata?: Record<string, string>,\n public readonly options?: ObjectOptions\n ) {}\n\n name(): string {\n return this.componentName;\n }\n\n add(name: string, wrapper: HandlerWrapper) {\n this.handlers.set(name, new VirtualObjectHandler(name, wrapper, this));\n }\n\n discovery(): d.Service {\n const handlers: d.Handler[] = [...this.handlers.entries()].map(\n ([name, handler]) => {\n return {\n name,\n ty: handler.kind() === HandlerKind.EXCLUSIVE ? \"EXCLUSIVE\" : \"SHARED\",\n ...commonHandlerOptions(\n handler.handlerWrapper,\n this.options?.serde ?? serde.json\n ),\n } satisfies d.Handler;\n }\n );\n\n return {\n name: this.componentName,\n ty: \"VIRTUAL_OBJECT\",\n handlers,\n documentation: this.description,\n metadata: this.metadata,\n ...commonServiceOptions(this.options),\n } satisfies d.Service;\n }\n\n handlerMatching(url: InvokePathComponents): ComponentHandler | undefined {\n return this.handlers.get(url.handlerName);\n }\n}\n\nexport class VirtualObjectHandler implements ComponentHandler {\n constructor(\n private readonly handlerName: string,\n public readonly handlerWrapper: HandlerWrapper,\n private readonly parent: VirtualObjectComponent\n ) {}\n\n name(): string {\n return this.handlerName;\n }\n\n component(): Component {\n return this.parent;\n }\n\n kind(): HandlerKind {\n return this.handlerWrapper.kind;\n }\n\n invoke(context: ContextImpl, input: Uint8Array): Promise<Uint8Array> {\n return this.handlerWrapper.invoke(context, input);\n }\n}\n\n// Workflow\n\nexport class WorkflowComponent implements Component {\n private readonly handlers: Map<string, WorkflowHandler> = new Map();\n\n constructor(\n public readonly componentName: string,\n public readonly description?: string,\n public readonly metadata?: Record<string, string>,\n public readonly options?: WorkflowOptions\n ) {}\n\n name(): string {\n return this.componentName;\n }\n\n add(name: string, wrapper: HandlerWrapper) {\n this.handlers.set(name, new WorkflowHandler(name, wrapper, this));\n }\n\n discovery(): d.Service {\n const handlers: d.Handler[] = [...this.handlers.entries()].map(\n ([name, handler]) => {\n return {\n name,\n ty: handler.kind() === HandlerKind.WORKFLOW ? \"WORKFLOW\" : \"SHARED\",\n workflowCompletionRetention:\n handler.kind() === HandlerKind.WORKFLOW &&\n this.options?.workflowRetention !== undefined\n ? millisOrDurationToMillis(this.options?.workflowRetention)\n : undefined,\n ...commonHandlerOptions(\n handler.handlerWrapper,\n this.options?.serde ?? serde.json\n ),\n } satisfies d.Handler;\n }\n );\n\n return {\n name: this.componentName,\n ty: \"WORKFLOW\",\n handlers,\n documentation: this.description,\n metadata: this.metadata,\n ...commonServiceOptions(this.options),\n } satisfies d.Service;\n }\n\n handlerMatching(url: InvokePathComponents): ComponentHandler | undefined {\n return this.handlers.get(url.handlerName);\n }\n}\n\nexport class WorkflowHandler implements ComponentHandler {\n constructor(\n private readonly handlerName: string,\n public readonly handlerWrapper: HandlerWrapper,\n private readonly parent: WorkflowComponent\n ) {}\n\n name(): string {\n return this.handlerName;\n }\n component(): Component {\n return this.parent;\n }\n\n kind(): HandlerKind {\n return this.handlerWrapper.kind;\n }\n\n invoke(context: ContextImpl, input: Uint8Array): Promise<Uint8Array> {\n return this.handlerWrapper.invoke(context, input);\n }\n}\n\nexport type PathComponents =\n | InvokePathComponents\n | { type: \"discover\" }\n | { type: \"health\" }\n | { type: \"unknown\"; path: string };\n\nexport type InvokePathComponents = {\n type: \"invoke\";\n componentName: string;\n handlerName: string;\n};\n\nexport function parseUrlComponents(urlPath?: string): PathComponents {\n if (!urlPath) {\n return { type: \"unknown\", path: \"\" };\n }\n const fragments = urlPath.split(\"/\");\n if (fragments.length >= 3 && fragments[fragments.length - 3] === \"invoke\") {\n return {\n type: \"invoke\",\n componentName: fragments[fragments.length - 2]!,\n handlerName: fragments[fragments.length - 1]!,\n };\n }\n if (fragments.length > 0 && fragments[fragments.length - 1] === \"discover\") {\n return { type: \"discover\" };\n }\n if (fragments.length > 0 && fragments[fragments.length - 1] === \"health\") {\n return { type: \"health\" };\n }\n return { type: \"unknown\", path: urlPath };\n}\n\nfunction commonServiceOptions(\n options?: ServiceOptions | ObjectOptions | WorkflowOptions\n): Partial<d.Service> {\n return {\n journalRetention:\n options?.journalRetention !== undefined\n ? millisOrDurationToMillis(options.journalRetention)\n : undefined,\n idempotencyRetention:\n options?.idempotencyRetention !== undefined\n ? millisOrDurationToMillis(options.idempotencyRetention)\n : undefined,\n inactivityTimeout:\n options?.inactivityTimeout !== undefined\n ? millisOrDurationToMillis(options.inactivityTimeout)\n : undefined,\n abortTimeout:\n options?.abortTimeout !== undefined\n ? millisOrDurationToMillis(options.abortTimeout)\n : undefined,\n ingressPrivate: options?.ingressPrivate,\n enableLazyState:\n options !== undefined && \"enableLazyState\" in options\n ? options.enableLazyState\n : undefined,\n retryPolicyExponentiationFactor: options?.retryPolicy?.exponentiationFactor,\n retryPolicyInitialInterval:\n options?.retryPolicy?.initialInterval !== undefined\n ? millisOrDurationToMillis(options?.retryPolicy?.initialInterval)\n : undefined,\n retryPolicyMaxInterval:\n options?.retryPolicy?.maxInterval !== undefined\n ? millisOrDurationToMillis(options?.retryPolicy?.maxInterval)\n : undefined,\n retryPolicyMaxAttempts: options?.retryPolicy?.maxAttempts,\n retryPolicyOnMaxAttempts: (options?.retryPolicy?.onMaxAttempts === \"kill\"\n ? \"KILL\"\n : options?.retryPolicy?.onMaxAttempts === \"pause\"\n ? \"PAUSE\"\n : undefined) as d.RetryPolicyOnMaxAttempts,\n };\n}\n\nfunction commonHandlerOptions(\n wrapper: HandlerWrapper,\n defaultSerde: Serde<any>\n) {\n return {\n input: handlerInputDiscovery(wrapper, defaultSerde),\n output: handlerOutputDiscovery(wrapper, defaultSerde),\n journalRetention:\n wrapper.journalRetention !== undefined\n ? millisOrDurationToMillis(wrapper.journalRetention)\n : undefined,\n idempotencyRetention:\n wrapper.idempotencyRetention !== undefined\n ? millisOrDurationToMillis(wrapper.idempotencyRetention)\n : undefined,\n inactivityTimeout:\n wrapper.inactivityTimeout !== undefined\n ? millisOrDurationToMillis(wrapper.inactivityTimeout)\n : undefined,\n abortTimeout:\n wrapper.abortTimeout !== undefined\n ? millisOrDurationToMillis(wrapper.abortTimeout)\n : undefined,\n ingressPrivate: wrapper.ingressPrivate,\n enableLazyState: wrapper.enableLazyState,\n retryPolicyExponentiationFactor: wrapper.retryPolicy?.exponentiationFactor,\n retryPolicyInitialInterval:\n wrapper.retryPolicy?.initialInterval !== undefined\n ? millisOrDurationToMillis(wrapper.retryPolicy?.initialInterval)\n : undefined,\n retryPolicyMaxInterval:\n wrapper.retryPolicy?.maxInterval !== undefined\n ? millisOrDurationToMillis(wrapper.retryPolicy?.maxInterval)\n : undefined,\n retryPolicyMaxAttempts: wrapper.retryPolicy?.maxAttempts,\n retryPolicyOnMaxAttempts: (wrapper.retryPolicy?.onMaxAttempts === \"kill\"\n ? \"KILL\"\n : wrapper.retryPolicy?.onMaxAttempts === \"pause\"\n ? \"PAUSE\"\n : undefined) as d.RetryPolicyOnMaxAttempts1,\n\n documentation: wrapper.description,\n metadata: wrapper.metadata,\n };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
const require_rpc = require('../types/rpc.cjs');
|
|
2
|
+
const require_components = require('./components.cjs');
|
|
3
|
+
const require_logger_transport = require('../logging/logger_transport.cjs');
|
|
4
|
+
const require_logger = require('../logging/logger.cjs');
|
|
5
|
+
const require_console_logger_transport = require('../logging/console_logger_transport.cjs');
|
|
6
|
+
|
|
7
|
+
//#region src/endpoint/endpoint.ts
|
|
8
|
+
function isServiceDefinition(m) {
|
|
9
|
+
return m && m.service !== void 0;
|
|
10
|
+
}
|
|
11
|
+
function isObjectDefinition(m) {
|
|
12
|
+
return m && m.object !== void 0;
|
|
13
|
+
}
|
|
14
|
+
function isWorkflowDefinition(m) {
|
|
15
|
+
return m && m.workflow !== void 0;
|
|
16
|
+
}
|
|
17
|
+
var EndpointBuilder = class {
|
|
18
|
+
serviceDefinitions = /* @__PURE__ */ new Map();
|
|
19
|
+
loggerTransport = require_console_logger_transport.defaultLoggerTransport;
|
|
20
|
+
keySet = [];
|
|
21
|
+
defaultServiceOptions = {};
|
|
22
|
+
journalValueCodecProvider;
|
|
23
|
+
bind(definition) {
|
|
24
|
+
if (definition.name.indexOf("/") !== -1) throw new Error("service name must not contain any slash '/'");
|
|
25
|
+
this.serviceDefinitions.set(definition.name, definition);
|
|
26
|
+
}
|
|
27
|
+
addIdentityKeys(...keys) {
|
|
28
|
+
this.keySet.push(...keys);
|
|
29
|
+
}
|
|
30
|
+
setDefaultServiceOptions(options) {
|
|
31
|
+
this.defaultServiceOptions = options;
|
|
32
|
+
}
|
|
33
|
+
setLogger(newLogger) {
|
|
34
|
+
this.loggerTransport = newLogger;
|
|
35
|
+
}
|
|
36
|
+
setJournalValueCodecProvider(codecProvider) {
|
|
37
|
+
this.journalValueCodecProvider = codecProvider;
|
|
38
|
+
}
|
|
39
|
+
build() {
|
|
40
|
+
const rlog = require_logger.createLogger(this.loggerTransport, require_logger_transport.LogSource.SYSTEM);
|
|
41
|
+
const components = /* @__PURE__ */ new Map();
|
|
42
|
+
for (const [name, definition] of this.serviceDefinitions) if (isServiceDefinition(definition)) {
|
|
43
|
+
const { name: name$1, service } = definition;
|
|
44
|
+
if (!service) throw new TypeError(`no service implementation found.`);
|
|
45
|
+
components.set(name$1, buildServiceComponent(name$1, service, definition, this.defaultServiceOptions));
|
|
46
|
+
} else if (isObjectDefinition(definition)) {
|
|
47
|
+
const { name: name$1, object } = definition;
|
|
48
|
+
if (!object) throw new TypeError(`no object implementation found.`);
|
|
49
|
+
components.set(name$1, buildVirtualObjectComponent(name$1, object, definition, this.defaultServiceOptions));
|
|
50
|
+
} else if (isWorkflowDefinition(definition)) {
|
|
51
|
+
const { name: name$1, workflow } = definition;
|
|
52
|
+
if (!workflow) throw new TypeError(`no workflow implementation found.`);
|
|
53
|
+
components.set(name$1, buildWorkflowComponent(name$1, workflow, definition, this.defaultServiceOptions));
|
|
54
|
+
} else throw new TypeError(`cannot bind ${name}, can only bind a service or a virtual object or a workflow definition`);
|
|
55
|
+
const discoveryMetadata = computeDiscovery(components);
|
|
56
|
+
return {
|
|
57
|
+
keySet: this.keySet,
|
|
58
|
+
loggerTransport: this.loggerTransport,
|
|
59
|
+
rlog,
|
|
60
|
+
components,
|
|
61
|
+
discoveryMetadata,
|
|
62
|
+
journalValueCodec: this.journalValueCodecProvider ? this.journalValueCodecProvider() : void 0
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
function computeDiscovery(components) {
|
|
67
|
+
return {
|
|
68
|
+
minProtocolVersion: 5,
|
|
69
|
+
maxProtocolVersion: 6,
|
|
70
|
+
services: [...components.values()].map((c) => c.discovery())
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
function buildServiceComponent(name, router, definition, defaultServiceOptions) {
|
|
74
|
+
if (name.indexOf("/") !== -1) throw new Error("service name must not contain any slash '/'");
|
|
75
|
+
const component = new require_components.ServiceComponent(name, definition.description, definition.metadata, {
|
|
76
|
+
...defaultServiceOptions,
|
|
77
|
+
...definition?.options
|
|
78
|
+
});
|
|
79
|
+
for (const [route, handler] of Object.entries(router)) {
|
|
80
|
+
const wrapper = require_rpc.HandlerWrapper.fromHandler(handler);
|
|
81
|
+
if (!wrapper) throw new TypeError(`${route} is not a restate handler.`);
|
|
82
|
+
wrapper.bindInstance(router);
|
|
83
|
+
component.add(route, wrapper);
|
|
84
|
+
}
|
|
85
|
+
return component;
|
|
86
|
+
}
|
|
87
|
+
function buildVirtualObjectComponent(name, router, definition, defaultServiceOptions) {
|
|
88
|
+
if (name.indexOf("/") !== -1) throw new Error("service name must not contain any slash '/'");
|
|
89
|
+
const component = new require_components.VirtualObjectComponent(name, definition.description, definition.metadata, {
|
|
90
|
+
...defaultServiceOptions,
|
|
91
|
+
...definition?.options
|
|
92
|
+
});
|
|
93
|
+
for (const [route, handler] of Object.entries(router)) {
|
|
94
|
+
const wrapper = require_rpc.HandlerWrapper.fromHandler(handler);
|
|
95
|
+
if (!wrapper) throw new TypeError(`${route} is not a restate handler.`);
|
|
96
|
+
wrapper.bindInstance(router);
|
|
97
|
+
component.add(route, wrapper);
|
|
98
|
+
}
|
|
99
|
+
return component;
|
|
100
|
+
}
|
|
101
|
+
function buildWorkflowComponent(name, workflow, definition, defaultServiceOptions) {
|
|
102
|
+
if (name.indexOf("/") !== -1) throw new Error("service name must not contain any slash '/'");
|
|
103
|
+
const component = new require_components.WorkflowComponent(name, definition.description, definition.metadata, {
|
|
104
|
+
...defaultServiceOptions,
|
|
105
|
+
...definition?.options
|
|
106
|
+
});
|
|
107
|
+
for (const [route, handler] of Object.entries(workflow)) {
|
|
108
|
+
const wrapper = require_rpc.HandlerWrapper.fromHandler(handler);
|
|
109
|
+
if (!wrapper) throw new TypeError(`${route} is not a restate handler.`);
|
|
110
|
+
wrapper.bindInstance(workflow);
|
|
111
|
+
component.add(route, wrapper);
|
|
112
|
+
}
|
|
113
|
+
return component;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
//#endregion
|
|
117
|
+
exports.EndpointBuilder = EndpointBuilder;
|