@temporalio/common 0.22.0 → 0.23.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.
@@ -1,5 +1,5 @@
1
1
  import { PayloadCodec } from './payload-codec';
2
- import { PayloadConverter } from './payload-converter';
2
+ import { WrappedPayloadConverter } from './wrapped-payload-converter';
3
3
  /**
4
4
  * When your data (arguments and return values) is sent over the wire and stored by Temporal Server, it is encoded in
5
5
  * binary in a {@link Payload} Protobuf message.
@@ -32,15 +32,19 @@ export interface DataConverter {
32
32
  */
33
33
  payloadConverterPath?: string;
34
34
  /**
35
- * A {@link PayloadCodec} instance. The default codec is a no-op.
35
+ * An array of {@link PayloadCodec} instances.
36
+ *
37
+ * Payloads are encoded in the order of the array and decoded in the opposite order. For example, if you have a
38
+ * compression codec and an encryption codec, then you want data to be encoded with the compression codec first, so
39
+ * you'd do `payloadCodecs: [compressionCodec, encryptionCodec]`.
36
40
  */
37
- payloadCodec?: PayloadCodec;
41
+ payloadCodecs?: PayloadCodec[];
38
42
  }
39
43
  /**
40
44
  * A {@link DataConverter} that has been loaded via {@link loadDataConverter}.
41
45
  */
42
46
  export interface LoadedDataConverter {
43
- payloadConverter: PayloadConverter;
44
- payloadCodec: PayloadCodec;
47
+ payloadConverter: WrappedPayloadConverter;
48
+ payloadCodecs: PayloadCodec[];
45
49
  }
46
50
  export declare const defaultDataConverter: LoadedDataConverter;
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.defaultDataConverter = void 0;
4
- const payload_codec_1 = require("./payload-codec");
5
- const payload_converter_1 = require("./payload-converter");
4
+ const payload_converters_1 = require("./payload-converters");
5
+ const wrapped_payload_converter_1 = require("./wrapped-payload-converter");
6
6
  exports.defaultDataConverter = {
7
- payloadConverter: payload_converter_1.defaultPayloadConverter,
8
- payloadCodec: payload_codec_1.defaultPayloadCodec,
7
+ payloadConverter: new wrapped_payload_converter_1.WrappedPayloadConverter(payload_converters_1.defaultPayloadConverter),
8
+ payloadCodecs: [],
9
9
  };
10
10
  //# sourceMappingURL=data-converter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-converter.js","sourceRoot":"","sources":["../../src/converter/data-converter.ts"],"names":[],"mappings":";;;AAAA,mDAAoE;AACpE,2DAAgF;AAgDnE,QAAA,oBAAoB,GAAwB;IACvD,gBAAgB,EAAE,2CAAuB;IACzC,YAAY,EAAE,mCAAmB;CAClC,CAAC"}
1
+ {"version":3,"file":"data-converter.js","sourceRoot":"","sources":["../../src/converter/data-converter.ts"],"names":[],"mappings":";;;AACA,6DAA+D;AAC/D,2EAAsE;AAoDzD,QAAA,oBAAoB,GAAwB;IACvD,gBAAgB,EAAE,IAAI,mDAAuB,CAAC,4CAAuB,CAAC;IACtE,aAAa,EAAE,EAAE;CAClB,CAAC"}
@@ -18,10 +18,3 @@ export interface PayloadCodec {
18
18
  */
19
19
  decode(payloads: Payload[]): Promise<Payload[]>;
20
20
  }
21
- /**
22
- * No-op implementation of {@link PayloadCodec}.
23
- */
24
- export declare const defaultPayloadCodec: {
25
- encode: (payloads: Payload[]) => Promise<Payload[]>;
26
- decode: (payloads: Payload[]) => Promise<Payload[]>;
27
- };
@@ -1,11 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.defaultPayloadCodec = void 0;
4
- /**
5
- * No-op implementation of {@link PayloadCodec}.
6
- */
7
- exports.defaultPayloadCodec = {
8
- encode: async (payloads) => payloads,
9
- decode: async (payloads) => payloads,
10
- };
11
3
  //# sourceMappingURL=payload-codec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"payload-codec.js","sourceRoot":"","sources":["../../src/converter/payload-codec.ts"],"names":[],"mappings":";;;AAuBA;;GAEG;AACU,QAAA,mBAAmB,GAAG;IACjC,MAAM,EAAE,KAAK,EAAE,QAAmB,EAAsB,EAAE,CAAC,QAAQ;IACnE,MAAM,EAAE,KAAK,EAAE,QAAmB,EAAsB,EAAE,CAAC,QAAQ;CACpE,CAAC"}
1
+ {"version":3,"file":"payload-codec.js","sourceRoot":"","sources":["../../src/converter/payload-codec.ts"],"names":[],"mappings":""}
@@ -1,7 +1,7 @@
1
- import { JsonPayloadConverter, PayloadConverterWithEncoding } from './payload-converters';
2
1
  import { Payload } from './types';
2
+ import { WrappedPayloadConverter } from './wrapped-payload-converter';
3
3
  /**
4
- * Used by the framework to serialize/deserialize parameters and return values.
4
+ * Used by the framework to serialize/deserialize data like parameters and return values.
5
5
  *
6
6
  * This is called inside the [Workflow isolate](https://docs.temporal.io/docs/typescript/determinism).
7
7
  * To write async code or use Node APIs (or use packages that use Node APIs), use a {@link PayloadCodec}.
@@ -9,52 +9,38 @@ import { Payload } from './types';
9
9
  export interface PayloadConverter {
10
10
  /**
11
11
  * Converts a value to a {@link Payload}.
12
- * @param value The value to convert. Example values include the Workflow args sent by the client and the values returned by a Workflow or Activity.
13
- */
14
- toPayload<T>(value: T): Payload | undefined;
15
- /**
16
- * Converts a {@link Payload} back to a value.
17
- */
18
- fromPayload<T>(payload: Payload): T;
19
- }
20
- export declare class CompositePayloadConverter implements PayloadConverter {
21
- readonly converters: PayloadConverterWithEncoding[];
22
- readonly converterByEncoding: Map<string, PayloadConverterWithEncoding>;
23
- constructor(...converters: PayloadConverterWithEncoding[]);
24
- /**
25
- * Tries to run `.toPayload(value)` on each converter in the order provided at construction.
26
- * Returns the first successful result, or `undefined` if there is no converter that can handle the value.
27
12
  *
28
- * @throws UnsupportedJsonTypeError
13
+ * @param value The value to convert. Example values include the Workflow args sent from the Client and the values returned by a Workflow or Activity.
14
+ * @returns The {@link Payload}, or `undefined` if unable to convert.
29
15
  */
30
16
  toPayload<T>(value: T): Payload | undefined;
31
17
  /**
32
- * Run {@link PayloadConverterWithEncoding.fromPayload} based on the {@link encodingTypes | encoding type} of the {@link Payload}.
18
+ * Converts a {@link Payload} back to a value.
33
19
  */
34
20
  fromPayload<T>(payload: Payload): T;
35
21
  }
36
22
  /**
37
23
  * Tries to convert `value` to a {@link Payload}. Throws if conversion fails.
38
24
  *
39
- * @throws {@link PayloadConverterError}
25
+ * @throws {@link ValueError}
40
26
  */
41
- export declare function toPayload(converter: PayloadConverter, value: unknown): Payload;
27
+ export declare function toPayload(converter: WrappedPayloadConverter, value: unknown): Payload;
42
28
  /**
43
29
  * Implements conversion of a list of values.
44
30
  *
45
31
  * @param converter
46
32
  * @param values JS values to convert to Payloads
47
- * @return converted values
48
- * @throws PayloadConverterError if conversion of the value passed as parameter failed for any
33
+ * @return list of {@link Payload}s
34
+ * @throws {@link ValueError} if conversion of the value passed as parameter failed for any
49
35
  * reason.
50
36
  */
51
- export declare function toPayloads(converter: PayloadConverter, ...values: unknown[]): Payload[] | undefined;
37
+ export declare function toPayloads(converter: WrappedPayloadConverter, ...values: unknown[]): Payload[] | undefined;
52
38
  /**
53
39
  * Run {@link PayloadConverter.toPayload} on each value in the map.
54
40
  *
55
- * @throws {@link PayloadConverterError} if conversion of any value in the map fails
41
+ * @throws {@link ValueError} if conversion of any value in the map fails
56
42
  */
57
- export declare function mapToPayloads<K extends string>(converter: PayloadConverter, map: Record<K, any>): Record<K, Payload>;
43
+ export declare function mapToPayloads<K extends string>(converter: WrappedPayloadConverter, map: Record<K, any>): Record<K, Payload>;
58
44
  /**
59
45
  * Implements conversion of an array of values of different types. Useful for deserializing
60
46
  * arguments of function invocations.
@@ -66,22 +52,9 @@ export declare function mapToPayloads<K extends string>(converter: PayloadConver
66
52
  * @throws {@link PayloadConverterError} if conversion of the data passed as parameter failed for any
67
53
  * reason.
68
54
  */
69
- export declare function fromPayloadsAtIndex<T>(converter: PayloadConverter, index: number, payloads?: Payload[] | null): T;
55
+ export declare function fromPayloadsAtIndex<T>(converter: WrappedPayloadConverter, index: number, payloads?: Payload[] | null): T;
70
56
  /**
71
57
  * Run {@link PayloadConverter.fromPayload} on each value in the array.
72
58
  */
73
- export declare function arrayFromPayloads(converter: PayloadConverter, payloads?: Payload[] | null): unknown[];
74
- export declare function mapFromPayloads<K extends string>(converter: PayloadConverter, map?: Record<K, Payload> | null | undefined): Record<K, unknown> | undefined;
75
- export declare const searchAttributePayloadConverter: JsonPayloadConverter;
76
- export declare class DefaultPayloadConverter extends CompositePayloadConverter {
77
- constructor();
78
- }
79
- /**
80
- * The default {@link PayloadConverter} used by the SDK.
81
- * Supports `Uint8Array` and JSON serializables (so if [`JSON.stringify(yourArgOrRetval)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#description) works, the default payload converter will work).
82
- *
83
- * To also support Protobufs, create a custom payload converter with {@link DefaultPayloadConverter}:
84
- *
85
- * `const myConverter = new DefaultPayloadConverter({ protobufRoot })`
86
- */
87
- export declare const defaultPayloadConverter: DefaultPayloadConverter;
59
+ export declare function arrayFromPayloads(converter: WrappedPayloadConverter, payloads?: Payload[] | null): unknown[];
60
+ export declare function mapFromPayloads<K extends string>(converter: WrappedPayloadConverter, map?: Record<K, Payload> | null | undefined): Record<K, unknown> | undefined;
@@ -1,59 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.defaultPayloadConverter = exports.DefaultPayloadConverter = exports.searchAttributePayloadConverter = exports.mapFromPayloads = exports.arrayFromPayloads = exports.fromPayloadsAtIndex = exports.mapToPayloads = exports.toPayloads = exports.toPayload = exports.CompositePayloadConverter = void 0;
4
- const internal_workflow_common_1 = require("@temporalio/internal-workflow-common");
5
- const payload_converters_1 = require("./payload-converters");
6
- const types_1 = require("./types");
7
- class CompositePayloadConverter {
8
- constructor(...converters) {
9
- this.converterByEncoding = new Map();
10
- this.converters = converters;
11
- for (const converter of converters) {
12
- this.converterByEncoding.set(converter.encodingType, converter);
13
- }
14
- }
15
- /**
16
- * Tries to run `.toPayload(value)` on each converter in the order provided at construction.
17
- * Returns the first successful result, or `undefined` if there is no converter that can handle the value.
18
- *
19
- * @throws UnsupportedJsonTypeError
20
- */
21
- toPayload(value) {
22
- for (const converter of this.converters) {
23
- const result = converter.toPayload(value);
24
- if (result !== undefined) {
25
- return result;
26
- }
27
- }
28
- return undefined;
29
- }
30
- /**
31
- * Run {@link PayloadConverterWithEncoding.fromPayload} based on the {@link encodingTypes | encoding type} of the {@link Payload}.
32
- */
33
- fromPayload(payload) {
34
- if (payload.metadata === undefined || payload.metadata === null) {
35
- throw new internal_workflow_common_1.ValueError('Missing payload metadata');
36
- }
37
- const encoding = (0, types_1.str)(payload.metadata[types_1.METADATA_ENCODING_KEY]);
38
- const converter = this.converterByEncoding.get(encoding);
39
- if (converter === undefined) {
40
- throw new internal_workflow_common_1.ValueError(`Unknown encoding: ${encoding}`);
41
- }
42
- return converter.fromPayload(payload);
43
- }
44
- }
45
- exports.CompositePayloadConverter = CompositePayloadConverter;
3
+ exports.mapFromPayloads = exports.arrayFromPayloads = exports.fromPayloadsAtIndex = exports.mapToPayloads = exports.toPayloads = exports.toPayload = void 0;
46
4
  /**
47
5
  * Tries to convert `value` to a {@link Payload}. Throws if conversion fails.
48
6
  *
49
- * @throws {@link PayloadConverterError}
7
+ * @throws {@link ValueError}
50
8
  */
51
9
  function toPayload(converter, value) {
52
- const payload = converter.toPayload(value);
53
- if (payload === undefined) {
54
- throw new internal_workflow_common_1.PayloadConverterError(`Failed to convert value: ${value}`);
55
- }
56
- return payload;
10
+ return converter.toPayload(value);
57
11
  }
58
12
  exports.toPayload = toPayload;
59
13
  /**
@@ -61,8 +15,8 @@ exports.toPayload = toPayload;
61
15
  *
62
16
  * @param converter
63
17
  * @param values JS values to convert to Payloads
64
- * @return converted values
65
- * @throws PayloadConverterError if conversion of the value passed as parameter failed for any
18
+ * @return list of {@link Payload}s
19
+ * @throws {@link ValueError} if conversion of the value passed as parameter failed for any
66
20
  * reason.
67
21
  */
68
22
  function toPayloads(converter, ...values) {
@@ -75,7 +29,7 @@ exports.toPayloads = toPayloads;
75
29
  /**
76
30
  * Run {@link PayloadConverter.toPayload} on each value in the map.
77
31
  *
78
- * @throws {@link PayloadConverterError} if conversion of any value in the map fails
32
+ * @throws {@link ValueError} if conversion of any value in the map fails
79
33
  */
80
34
  function mapToPayloads(converter, map) {
81
35
  return Object.fromEntries(Object.entries(map).map(([k, v]) => [k, toPayload(converter, v)]));
@@ -119,26 +73,4 @@ function mapFromPayloads(converter, map) {
119
73
  }));
120
74
  }
121
75
  exports.mapFromPayloads = mapFromPayloads;
122
- exports.searchAttributePayloadConverter = new payload_converters_1.JsonPayloadConverter();
123
- class DefaultPayloadConverter extends CompositePayloadConverter {
124
- // Match the order used in other SDKs, but exclude Protobuf converters so that the code, including
125
- // `proto3-json-serializer`, doesn't take space in Workflow bundles that don't use Protobufs. To use Protobufs, use
126
- // {@link DefaultPayloadConverterWithProtobufs}.
127
- //
128
- // Go SDK:
129
- // https://github.com/temporalio/sdk-go/blob/5e5645f0c550dcf717c095ae32c76a7087d2e985/converter/default_data_converter.go#L28
130
- constructor() {
131
- super(new payload_converters_1.UndefinedPayloadConverter(), new payload_converters_1.BinaryPayloadConverter(), new payload_converters_1.JsonPayloadConverter());
132
- }
133
- }
134
- exports.DefaultPayloadConverter = DefaultPayloadConverter;
135
- /**
136
- * The default {@link PayloadConverter} used by the SDK.
137
- * Supports `Uint8Array` and JSON serializables (so if [`JSON.stringify(yourArgOrRetval)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#description) works, the default payload converter will work).
138
- *
139
- * To also support Protobufs, create a custom payload converter with {@link DefaultPayloadConverter}:
140
- *
141
- * `const myConverter = new DefaultPayloadConverter({ protobufRoot })`
142
- */
143
- exports.defaultPayloadConverter = new DefaultPayloadConverter();
144
76
  //# sourceMappingURL=payload-converter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"payload-converter.js","sourceRoot":"","sources":["../../src/converter/payload-converter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"payload-converter.js","sourceRoot":"","sources":["../../src/converter/payload-converter.ts"],"names":[],"mappings":";;;AAwBA;;;;GAIG;AACH,SAAgB,SAAS,CAAC,SAAkC,EAAE,KAAc;IAC1E,OAAO,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC;AAFD,8BAEC;AAED;;;;;;;;GAQG;AACH,SAAgB,UAAU,CAAC,SAAkC,EAAE,GAAG,MAAiB;IACjF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,OAAO,SAAS,CAAC;KAClB;IAED,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5D,CAAC;AAND,gCAMC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAC3B,SAAkC,EAClC,GAAmB;IAEnB,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAgB,EAAE,CAAC,CAAC,CAAM,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAC/D,CAAC;AAC1B,CAAC;AAPD,sCAOC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,mBAAmB,CACjC,SAAkC,EAClC,KAAa,EACb,QAA2B;IAE3B,yDAAyD;IACzD,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,IAAI,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE;QAC3E,OAAO,SAAgB,CAAC;KACzB;IACD,OAAO,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAChD,CAAC;AAVD,kDAUC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,SAAkC,EAAE,QAA2B;IAC/F,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO,EAAE,CAAC;KACX;IACD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAgB,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5E,CAAC;AALD,8CAKC;AAED,SAAgB,eAAe,CAC7B,SAAkC,EAClC,GAA2C;IAE3C,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACxD,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAgB,EAAE;QACrD,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC,OAAkB,CAAC,CAAC;QACxD,OAAO,CAAC,CAAM,EAAE,KAAK,CAAC,CAAC;IACzB,CAAC,CAAC,CACmB,CAAC;AAC1B,CAAC;AAXD,0CAWC"}
@@ -1,8 +1,29 @@
1
1
  import { PayloadConverter } from './payload-converter';
2
2
  import { Payload } from './types';
3
+ import { WrappedPayloadConverter } from './wrapped-payload-converter';
3
4
  export interface PayloadConverterWithEncoding extends PayloadConverter {
4
5
  readonly encodingType: string;
5
6
  }
7
+ /**
8
+ * Tries to convert values to {@link Payload}s using the {@link PayloadConverterWithEncoding}s provided to the constructor, in the order provided.
9
+ *
10
+ * Converts Payloads to values based on the `Payload.metadata.encoding` field, which matches the {@link PayloadConverterWithEncoding.encodingType}
11
+ * of the converter that created the Payload.
12
+ */
13
+ export declare class CompositePayloadConverter implements PayloadConverter {
14
+ readonly converters: PayloadConverterWithEncoding[];
15
+ readonly converterByEncoding: Map<string, PayloadConverterWithEncoding>;
16
+ constructor(...converters: PayloadConverterWithEncoding[]);
17
+ /**
18
+ * Tries to run `.toPayload(value)` on each converter in the order provided at construction.
19
+ * Returns the first successful result, or `undefined` if there is no converter that can handle the value.
20
+ */
21
+ toPayload<T>(value: T): Payload | undefined;
22
+ /**
23
+ * Run {@link PayloadConverterWithEncoding.fromPayload} based on the {@link encodingTypes | encoding type} of the {@link Payload}.
24
+ */
25
+ fromPayload<T>(payload: Payload): T;
26
+ }
6
27
  /**
7
28
  * Converts between JS undefined and NULL Payload
8
29
  */
@@ -13,8 +34,6 @@ export declare class UndefinedPayloadConverter implements PayloadConverterWithEn
13
34
  }
14
35
  /**
15
36
  * Converts between non-undefined values and serialized JSON Payload
16
- *
17
- * @throws UnsupportedJsonTypeError
18
37
  */
19
38
  export declare class JsonPayloadConverter implements PayloadConverterWithEncoding {
20
39
  encodingType: "json/plain";
@@ -29,3 +48,16 @@ export declare class BinaryPayloadConverter implements PayloadConverterWithEncod
29
48
  toPayload(value: unknown): Payload | undefined;
30
49
  fromPayload<T>(content: Payload): T;
31
50
  }
51
+ export declare const searchAttributePayloadConverter: WrappedPayloadConverter;
52
+ export declare class DefaultPayloadConverter extends CompositePayloadConverter {
53
+ constructor();
54
+ }
55
+ /**
56
+ * The default {@link PayloadConverter} used by the SDK.
57
+ * Supports `Uint8Array` and JSON serializables (so if [`JSON.stringify(yourArgOrRetval)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#description) works, the default payload converter will work).
58
+ *
59
+ * To also support Protobufs, create a custom payload converter with {@link DefaultPayloadConverter}:
60
+ *
61
+ * `const myConverter = new DefaultPayloadConverter({ protobufRoot })`
62
+ */
63
+ export declare const defaultPayloadConverter: DefaultPayloadConverter;
@@ -1,8 +1,55 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BinaryPayloadConverter = exports.JsonPayloadConverter = exports.UndefinedPayloadConverter = void 0;
3
+ exports.defaultPayloadConverter = exports.DefaultPayloadConverter = exports.searchAttributePayloadConverter = exports.BinaryPayloadConverter = exports.JsonPayloadConverter = exports.UndefinedPayloadConverter = exports.CompositePayloadConverter = void 0;
4
4
  const internal_workflow_common_1 = require("@temporalio/internal-workflow-common");
5
5
  const types_1 = require("./types");
6
+ const wrapped_payload_converter_1 = require("./wrapped-payload-converter");
7
+ /**
8
+ * Tries to convert values to {@link Payload}s using the {@link PayloadConverterWithEncoding}s provided to the constructor, in the order provided.
9
+ *
10
+ * Converts Payloads to values based on the `Payload.metadata.encoding` field, which matches the {@link PayloadConverterWithEncoding.encodingType}
11
+ * of the converter that created the Payload.
12
+ */
13
+ class CompositePayloadConverter {
14
+ constructor(...converters) {
15
+ this.converterByEncoding = new Map();
16
+ if (converters.length === 0) {
17
+ throw new internal_workflow_common_1.PayloadConverterError('Must provide at least one PayloadConverterWithEncoding');
18
+ }
19
+ this.converters = converters;
20
+ for (const converter of converters) {
21
+ this.converterByEncoding.set(converter.encodingType, converter);
22
+ }
23
+ }
24
+ /**
25
+ * Tries to run `.toPayload(value)` on each converter in the order provided at construction.
26
+ * Returns the first successful result, or `undefined` if there is no converter that can handle the value.
27
+ */
28
+ toPayload(value) {
29
+ for (const converter of this.converters) {
30
+ const result = converter.toPayload(value);
31
+ if (result !== undefined) {
32
+ return result;
33
+ }
34
+ }
35
+ return undefined;
36
+ }
37
+ /**
38
+ * Run {@link PayloadConverterWithEncoding.fromPayload} based on the {@link encodingTypes | encoding type} of the {@link Payload}.
39
+ */
40
+ fromPayload(payload) {
41
+ if (payload.metadata === undefined || payload.metadata === null) {
42
+ throw new internal_workflow_common_1.ValueError('Missing payload metadata');
43
+ }
44
+ const encoding = (0, types_1.str)(payload.metadata[types_1.METADATA_ENCODING_KEY]);
45
+ const converter = this.converterByEncoding.get(encoding);
46
+ if (converter === undefined) {
47
+ throw new internal_workflow_common_1.ValueError(`Unknown encoding: ${encoding}`);
48
+ }
49
+ return converter.fromPayload(payload);
50
+ }
51
+ }
52
+ exports.CompositePayloadConverter = CompositePayloadConverter;
6
53
  /**
7
54
  * Converts between JS undefined and NULL Payload
8
55
  */
@@ -11,8 +58,9 @@ class UndefinedPayloadConverter {
11
58
  this.encodingType = types_1.encodingTypes.METADATA_ENCODING_NULL;
12
59
  }
13
60
  toPayload(value) {
14
- if (value !== undefined)
15
- return undefined; // Can't encode
61
+ if (value !== undefined) {
62
+ return undefined;
63
+ }
16
64
  return {
17
65
  metadata: {
18
66
  [types_1.METADATA_ENCODING_KEY]: types_1.encodingKeys.METADATA_ENCODING_NULL,
@@ -26,22 +74,21 @@ class UndefinedPayloadConverter {
26
74
  exports.UndefinedPayloadConverter = UndefinedPayloadConverter;
27
75
  /**
28
76
  * Converts between non-undefined values and serialized JSON Payload
29
- *
30
- * @throws UnsupportedJsonTypeError
31
77
  */
32
78
  class JsonPayloadConverter {
33
79
  constructor() {
34
80
  this.encodingType = types_1.encodingTypes.METADATA_ENCODING_JSON;
35
81
  }
36
82
  toPayload(value) {
37
- if (value === undefined)
83
+ if (value === undefined) {
38
84
  return undefined;
85
+ }
39
86
  let json;
40
87
  try {
41
88
  json = JSON.stringify(value);
42
89
  }
43
90
  catch (e) {
44
- throw new internal_workflow_common_1.UnsupportedJsonTypeError(`Can't run JSON.stringify on this value: ${value}. Either convert it (or its properties) to JSON-serializable values (see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#description ), or use a custom data converter: https://docs.temporal.io/docs/typescript/data-converters . JSON.stringify error message: ${(0, internal_workflow_common_1.errorMessage)(e)}`, e);
91
+ return undefined;
45
92
  }
46
93
  return {
47
94
  metadata: {
@@ -67,8 +114,9 @@ class BinaryPayloadConverter {
67
114
  }
68
115
  toPayload(value) {
69
116
  // TODO: support any DataView or ArrayBuffer?
70
- if (!(value instanceof Uint8Array))
117
+ if (!(value instanceof Uint8Array)) {
71
118
  return undefined;
119
+ }
72
120
  return {
73
121
  metadata: {
74
122
  [types_1.METADATA_ENCODING_KEY]: types_1.encodingKeys.METADATA_ENCODING_RAW,
@@ -82,4 +130,26 @@ class BinaryPayloadConverter {
82
130
  }
83
131
  }
84
132
  exports.BinaryPayloadConverter = BinaryPayloadConverter;
133
+ exports.searchAttributePayloadConverter = new wrapped_payload_converter_1.WrappedPayloadConverter(new JsonPayloadConverter());
134
+ class DefaultPayloadConverter extends CompositePayloadConverter {
135
+ // Match the order used in other SDKs, but exclude Protobuf converters so that the code, including
136
+ // `proto3-json-serializer`, doesn't take space in Workflow bundles that don't use Protobufs. To use Protobufs, use
137
+ // {@link DefaultPayloadConverterWithProtobufs}.
138
+ //
139
+ // Go SDK:
140
+ // https://github.com/temporalio/sdk-go/blob/5e5645f0c550dcf717c095ae32c76a7087d2e985/converter/default_data_converter.go#L28
141
+ constructor() {
142
+ super(new UndefinedPayloadConverter(), new BinaryPayloadConverter(), new JsonPayloadConverter());
143
+ }
144
+ }
145
+ exports.DefaultPayloadConverter = DefaultPayloadConverter;
146
+ /**
147
+ * The default {@link PayloadConverter} used by the SDK.
148
+ * Supports `Uint8Array` and JSON serializables (so if [`JSON.stringify(yourArgOrRetval)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#description) works, the default payload converter will work).
149
+ *
150
+ * To also support Protobufs, create a custom payload converter with {@link DefaultPayloadConverter}:
151
+ *
152
+ * `const myConverter = new DefaultPayloadConverter({ protobufRoot })`
153
+ */
154
+ exports.defaultPayloadConverter = new DefaultPayloadConverter();
85
155
  //# sourceMappingURL=payload-converters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"payload-converters.js","sourceRoot":"","sources":["../../src/converter/payload-converters.ts"],"names":[],"mappings":";;;AAAA,mFAA0G;AAE1G,mCAA+F;AAM/F;;GAEG;AACH,MAAa,yBAAyB;IAAtC;QACS,iBAAY,GAAG,qBAAa,CAAC,sBAAsB,CAAC;IAc7D,CAAC;IAZQ,SAAS,CAAC,KAAc;QAC7B,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC,CAAC,eAAe;QAC1D,OAAO;YACL,QAAQ,EAAE;gBACR,CAAC,6BAAqB,CAAC,EAAE,oBAAY,CAAC,sBAAsB;aAC7D;SACF,CAAC;IACJ,CAAC;IAEM,WAAW,CAAI,QAAiB;QACrC,OAAO,SAAgB,CAAC,CAAC,wBAAwB;IACnD,CAAC;CACF;AAfD,8DAeC;AAED;;;;GAIG;AACH,MAAa,oBAAoB;IAAjC;QACS,iBAAY,GAAG,qBAAa,CAAC,sBAAsB,CAAC;IA+B7D,CAAC;IA7BQ,SAAS,CAAC,KAAc;QAC7B,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAE1C,IAAI,IAAI,CAAC;QACT,IAAI;YACF,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SAC9B;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,IAAI,mDAAwB,CAChC,2CAA2C,KAAK,oTAAoT,IAAA,uCAAY,EAC9W,CAAC,CACF,EAAE,EACH,CAAU,CACX,CAAC;SACH;QAED,OAAO;YACL,QAAQ,EAAE;gBACR,CAAC,6BAAqB,CAAC,EAAE,oBAAY,CAAC,sBAAsB;aAC7D;YACD,IAAI,EAAE,IAAA,UAAE,EAAC,IAAI,CAAC;SACf,CAAC;IACJ,CAAC;IAEM,WAAW,CAAI,OAAgB;QACpC,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE;YACvD,MAAM,IAAI,qCAAU,CAAC,0BAA0B,CAAC,CAAC;SAClD;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAA,WAAG,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACvC,CAAC;CACF;AAhCD,oDAgCC;AAED;;GAEG;AACH,MAAa,sBAAsB;IAAnC;QACS,iBAAY,GAAG,qBAAa,CAAC,qBAAqB,CAAC;IAiB5D,CAAC;IAfQ,SAAS,CAAC,KAAc;QAC7B,6CAA6C;QAC7C,IAAI,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC;YAAE,OAAO,SAAS,CAAC;QACrD,OAAO;YACL,QAAQ,EAAE;gBACR,CAAC,6BAAqB,CAAC,EAAE,oBAAY,CAAC,qBAAqB;aAC5D;YACD,IAAI,EAAE,KAAK;SACZ,CAAC;IACJ,CAAC;IAEM,WAAW,CAAI,OAAgB;QACpC,6CAA6C;QAC7C,OAAO,OAAO,CAAC,IAAW,CAAC;IAC7B,CAAC;CACF;AAlBD,wDAkBC"}
1
+ {"version":3,"file":"payload-converters.js","sourceRoot":"","sources":["../../src/converter/payload-converters.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import type { Root, Type } from 'protobufjs';
2
- import { CompositePayloadConverter } from './payload-converter';
3
- import { PayloadConverterWithEncoding } from './payload-converters';
2
+ import { CompositePayloadConverter, PayloadConverterWithEncoding } from './payload-converters';
4
3
  import { EncodingType, Payload } from './types';
5
4
  declare abstract class ProtobufPayloadConverter implements PayloadConverterWithEncoding {
6
5
  protected readonly root: Root | undefined;
@@ -26,7 +26,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.DefaultPayloadConverterWithProtobufs = exports.ProtobufJsonPayloadConverter = exports.ProtobufBinaryPayloadConverter = void 0;
27
27
  const internal_workflow_common_1 = require("@temporalio/internal-workflow-common");
28
28
  const protoJsonSerializer = __importStar(require("proto3-json-serializer"));
29
- const payload_converter_1 = require("./payload-converter");
30
29
  const payload_converters_1 = require("./payload-converters");
31
30
  const types_1 = require("./types");
32
31
  class ProtobufPayloadConverter {
@@ -84,8 +83,9 @@ class ProtobufBinaryPayloadConverter extends ProtobufPayloadConverter {
84
83
  this.encodingType = types_1.encodingTypes.METADATA_ENCODING_PROTOBUF;
85
84
  }
86
85
  toPayload(value) {
87
- if (!isProtobufMessage(value))
86
+ if (!isProtobufMessage(value)) {
88
87
  return undefined;
88
+ }
89
89
  return this.constructPayload({
90
90
  messageTypeName: getNamespacedTypeName(value.$type),
91
91
  message: value.$type.encode(value).finish(),
@@ -109,8 +109,9 @@ class ProtobufJsonPayloadConverter extends ProtobufPayloadConverter {
109
109
  this.encodingType = types_1.encodingTypes.METADATA_ENCODING_PROTOBUF_JSON;
110
110
  }
111
111
  toPayload(value) {
112
- if (!isProtobufMessage(value))
112
+ if (!isProtobufMessage(value)) {
113
113
  return undefined;
114
+ }
114
115
  const jsonValue = protoJsonSerializer.toProto3JSON(value);
115
116
  return this.constructPayload({
116
117
  messageTypeName: getNamespacedTypeName(value.$type),
@@ -146,7 +147,7 @@ function getNamespacedTypeName(node) {
146
147
  function isRoot(root) {
147
148
  return (0, internal_workflow_common_1.isRecord)(root) && root.constructor.name === 'Root';
148
149
  }
149
- class DefaultPayloadConverterWithProtobufs extends payload_converter_1.CompositePayloadConverter {
150
+ class DefaultPayloadConverterWithProtobufs extends payload_converters_1.CompositePayloadConverter {
150
151
  // Match the order used in other SDKs.
151
152
  //
152
153
  // Go SDK:
@@ -1 +1 @@
1
- {"version":3,"file":"protobuf-payload-converters.js","sourceRoot":"","sources":["../../src/converter/protobuf-payload-converters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protobuf-payload-converters.js","sourceRoot":"","sources":["../../src/converter/protobuf-payload-converters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { PayloadConverter } from './payload-converter';
2
+ import { Payload } from './types';
3
+ /**
4
+ * When we call {@link PayloadConverter.toPayload}, we want it to either throw or return a Payload, so we wrap Payload
5
+ * Converters with this class before using them.
6
+ */
7
+ export declare class WrappedPayloadConverter implements PayloadConverter {
8
+ private readonly payloadConverter;
9
+ constructor(payloadConverter: PayloadConverter);
10
+ toPayload(value: unknown): Payload;
11
+ fromPayload<T>(payload: Payload): T;
12
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WrappedPayloadConverter = void 0;
4
+ const internal_workflow_common_1 = require("@temporalio/internal-workflow-common");
5
+ /**
6
+ * When we call {@link PayloadConverter.toPayload}, we want it to either throw or return a Payload, so we wrap Payload
7
+ * Converters with this class before using them.
8
+ */
9
+ class WrappedPayloadConverter {
10
+ constructor(payloadConverter) {
11
+ this.payloadConverter = payloadConverter;
12
+ }
13
+ toPayload(value) {
14
+ const result = this.payloadConverter.toPayload(value);
15
+ if (!isPayload(result)) {
16
+ throw new internal_workflow_common_1.ValueError(`The Payload Converter method ${Object.getPrototypeOf(this.payloadConverter).constructor.name}.toPayload must return a Payload. Received \`${result}\` of type \`${typeof result}\` when trying to convert \`${value}\` of type \`${typeof value}\`.`);
17
+ }
18
+ return result;
19
+ }
20
+ fromPayload(payload) {
21
+ return this.payloadConverter.fromPayload(payload);
22
+ }
23
+ }
24
+ exports.WrappedPayloadConverter = WrappedPayloadConverter;
25
+ function isPayload(payload) {
26
+ return (0, internal_workflow_common_1.isRecord)(payload) && ((0, internal_workflow_common_1.hasOwnProperty)(payload, 'metadata') || (0, internal_workflow_common_1.hasOwnProperty)(payload, 'data'));
27
+ }
28
+ //# sourceMappingURL=wrapped-payload-converter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapped-payload-converter.js","sourceRoot":"","sources":["../../src/converter/wrapped-payload-converter.ts"],"names":[],"mappings":";;;AAAA,mFAA4F;AAI5F;;;GAGG;AACH,MAAa,uBAAuB;IAClC,YAA6B,gBAAkC;QAAlC,qBAAgB,GAAhB,gBAAgB,CAAkB;IAAG,CAAC;IAE5D,SAAS,CAAC,KAAc;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACtB,MAAM,IAAI,qCAAU,CAClB,gCACE,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,WAAW,CAAC,IAC3D,gDAAgD,MAAM,gBAAgB,OAAO,MAAM,+BAA+B,KAAK,gBAAgB,OAAO,KAAK,KAAK,CACzJ,CAAC;SACH;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,WAAW,CAAI,OAAgB;QACpC,OAAO,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;CACF;AAlBD,0DAkBC;AAED,SAAS,SAAS,CAAC,OAAgB;IACjC,OAAO,IAAA,mCAAQ,EAAC,OAAO,CAAC,IAAI,CAAC,IAAA,yCAAc,EAAC,OAAO,EAAE,UAAU,CAAC,IAAI,IAAA,yCAAc,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AACvG,CAAC"}