Socket
Socket
Sign inDemoInstall

@temporalio/common

Package Overview
Dependencies
Maintainers
5
Versions
64
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@temporalio/common - npm Package Compare versions

Comparing version 0.17.1 to 0.17.2

11

lib/converter/data-converter.d.ts

@@ -7,3 +7,3 @@ import { Payload } from './types';

*
* Implement this in order to customize worker data serialization or use the default data converter which supports `Uint8Array`, Protobuf, and JSON serializables.
* Implement this in order to customize worker data serialization or use the default data converter which supports `Uint8Array` and JSON serializables.
*/

@@ -57,3 +57,2 @@ export interface DataConverter {

}
export declare const isValidDataConverter: (dataConverter: unknown) => dataConverter is DataConverter;
export declare class CompositeDataConverter implements DataConverter {

@@ -76,8 +75,2 @@ readonly converters: PayloadConverter[];

export declare function mapToPayloadsSync<K extends string>(converter: DataConverter, source: Record<K, any>): Record<K, Payload>;
export interface DefaultDataConverterOptions {
root?: Record<string, unknown>;
}
export declare class DefaultDataConverter extends CompositeDataConverter {
constructor({ root }?: DefaultDataConverterOptions);
}
export declare const defaultDataConverter: DefaultDataConverter;
export declare const defaultDataConverter: CompositeDataConverter;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.defaultDataConverter = exports.DefaultDataConverter = exports.mapToPayloadsSync = exports.arrayFromPayloadsSync = exports.mapToPayloads = exports.arrayFromPayloads = exports.CompositeDataConverter = exports.isValidDataConverter = void 0;
exports.defaultDataConverter = exports.mapToPayloadsSync = exports.arrayFromPayloadsSync = exports.mapToPayloads = exports.arrayFromPayloads = exports.CompositeDataConverter = void 0;
const errors_1 = require("../errors");
const types_1 = require("./types");
const payload_converter_1 = require("./payload-converter");
const isValidDataConverter = (dataConverter) => typeof dataConverter === 'object' &&
dataConverter !== null &&
['toPayload', 'toPayloads', 'fromPayload', 'fromPayloads'].every((method) => typeof dataConverter[method] === 'function');
exports.isValidDataConverter = isValidDataConverter;
class CompositeDataConverter {

@@ -107,11 +103,3 @@ constructor(...converters) {

exports.mapToPayloadsSync = mapToPayloadsSync;
class DefaultDataConverter extends CompositeDataConverter {
constructor({ root } = {}) {
// Match the order used in other SDKs
// Go SDK: https://github.com/temporalio/sdk-go/blob/5e5645f0c550dcf717c095ae32c76a7087d2e985/converter/default_data_converter.go#L28
super(new payload_converter_1.UndefinedPayloadConverter(), new payload_converter_1.BinaryPayloadConverter(), new payload_converter_1.ProtobufJsonPayloadConverter(root), new payload_converter_1.ProtobufBinaryPayloadConverter(root), new payload_converter_1.JsonPayloadConverter());
}
}
exports.DefaultDataConverter = DefaultDataConverter;
exports.defaultDataConverter = new DefaultDataConverter();
exports.defaultDataConverter = new CompositeDataConverter(new payload_converter_1.UndefinedPayloadConverter(), new payload_converter_1.BinaryPayloadConverter(), new payload_converter_1.JsonPayloadConverter());
//# sourceMappingURL=data-converter.js.map
import { Payload } from './types';
import type { Root, Type } from 'protobufjs';
/**

@@ -16,3 +15,3 @@ * Used by the framework to serialize/deserialize method parameters that need to be sent over the

* @param value JS value to convert.
* @return converted value or `undefined` if unable to convert.
* @return converted value
* @throws DataConverterException if conversion of the value passed as parameter failed for any

@@ -38,3 +37,3 @@ * reason.

* @param value JS value to convert.
* @return converted value or `undefined` if unable to convert.
* @return converted value
* @throws DataConverterException if conversion of the value passed as parameter failed for any

@@ -88,32 +87,1 @@ * reason.

}
declare abstract class ProtobufPayloadConverter extends AsyncFacadePayloadConverter {
protected readonly root: Root | undefined;
constructor(root?: unknown);
protected validatePayload(content: Payload): {
messageType: Type;
data: Uint8Array;
};
protected constructPayload({ messageTypeName, message }: {
messageTypeName: string;
message: Uint8Array;
}): Payload;
}
/**
* Converts between protobufjs Message instances and serialized Protobuf Payload
*/
export declare class ProtobufBinaryPayloadConverter extends ProtobufPayloadConverter {
encodingType: "binary/protobuf";
constructor(root?: unknown);
toDataSync(value: unknown): Payload | undefined;
fromDataSync<T>(content: Payload): T;
}
/**
* Converts between protobufjs Message instances and serialized JSON Payload
*/
export declare class ProtobufJsonPayloadConverter extends ProtobufPayloadConverter {
encodingType: "json/protobuf";
constructor(root?: unknown);
toDataSync(value: unknown): Payload | undefined;
fromDataSync<T>(content: Payload): T;
}
export {};
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ProtobufJsonPayloadConverter = exports.ProtobufBinaryPayloadConverter = exports.BinaryPayloadConverter = exports.JsonPayloadConverter = exports.UndefinedPayloadConverter = exports.AsyncFacadePayloadConverter = void 0;
exports.BinaryPayloadConverter = exports.JsonPayloadConverter = exports.UndefinedPayloadConverter = exports.AsyncFacadePayloadConverter = void 0;
const errors_1 = require("../errors");
const types_1 = require("./types");
const type_helpers_1 = require("../type-helpers");
const errors_2 = require("../errors");
const protoJsonSerializer = __importStar(require("proto3-json-serializer"));
class AsyncFacadePayloadConverter {

@@ -111,116 +89,2 @@ async toData(value) {

exports.BinaryPayloadConverter = BinaryPayloadConverter;
class ProtobufPayloadConverter extends AsyncFacadePayloadConverter {
// Don't use type Root here because root.d.ts doesn't export Root, so users would have to type assert
constructor(root) {
super();
if (root) {
if (!isRoot(root)) {
throw new TypeError('root must be an instance of a protobufjs Root');
}
this.root = root;
}
}
validatePayload(content) {
if (content.data === undefined || content.data === null) {
throw new errors_1.ValueError('Got payload with no data');
}
if (!content.metadata || !(types_1.METADATA_MESSAGE_TYPE_KEY in content.metadata)) {
throw new errors_1.ValueError(`Got protobuf payload without metadata.${types_1.METADATA_MESSAGE_TYPE_KEY}`);
}
if (!this.root) {
throw new errors_1.DataConverterError('Unable to deserialize protobuf message without `root` being provided');
}
const messageTypeName = (0, types_1.str)(content.metadata[types_1.METADATA_MESSAGE_TYPE_KEY]);
let messageType;
try {
messageType = this.root.lookupType(messageTypeName);
}
catch (e) {
if ((0, errors_2.errorMessage)(e)?.includes('no such type')) {
throw new errors_1.DataConverterError(`Got a \`${messageTypeName}\` protobuf message but cannot find corresponding message class in \`root\``);
}
throw e;
}
return { messageType, data: content.data };
}
constructPayload({ messageTypeName, message }) {
return {
metadata: {
[types_1.METADATA_ENCODING_KEY]: (0, types_1.u8)(this.encodingType),
[types_1.METADATA_MESSAGE_TYPE_KEY]: (0, types_1.u8)(messageTypeName),
},
data: message,
};
}
}
/**
* Converts between protobufjs Message instances and serialized Protobuf Payload
*/
class ProtobufBinaryPayloadConverter extends ProtobufPayloadConverter {
constructor(root) {
super(root);
this.encodingType = types_1.encodingTypes.METADATA_ENCODING_PROTOBUF;
}
toDataSync(value) {
if (!isProtobufMessage(value)) {
return undefined;
}
return this.constructPayload({
messageTypeName: getNamespacedTypeName(value.$type),
message: value.$type.encode(value).finish(),
});
}
fromDataSync(content) {
const { messageType, data } = this.validatePayload(content);
return messageType.decode(data);
}
}
exports.ProtobufBinaryPayloadConverter = ProtobufBinaryPayloadConverter;
/**
* Converts between protobufjs Message instances and serialized JSON Payload
*/
class ProtobufJsonPayloadConverter extends ProtobufPayloadConverter {
constructor(root) {
super(root);
this.encodingType = types_1.encodingTypes.METADATA_ENCODING_PROTOBUF_JSON;
}
toDataSync(value) {
if (!isProtobufMessage(value)) {
return undefined;
}
const jsonValue = protoJsonSerializer.toProto3JSON(value);
return this.constructPayload({
messageTypeName: getNamespacedTypeName(value.$type),
message: (0, types_1.u8)(JSON.stringify(jsonValue)),
});
}
fromDataSync(content) {
const { messageType, data } = this.validatePayload(content);
return protoJsonSerializer.fromProto3JSON(messageType, JSON.parse((0, types_1.str)(data)));
}
}
exports.ProtobufJsonPayloadConverter = ProtobufJsonPayloadConverter;
function isProtobufType(type) {
return ((0, type_helpers_1.isRecord)(type) &&
type.constructor.name === 'Type' &&
(0, type_helpers_1.hasOwnProperties)(type, ['parent', 'name', 'create', 'encode', 'decode']) &&
typeof type.name === 'string' &&
typeof type.create === 'function' &&
typeof type.encode === 'function' &&
typeof type.decode === 'function');
}
function isProtobufMessage(value) {
return (0, type_helpers_1.isRecord)(value) && (0, type_helpers_1.hasOwnProperty)(value, '$type') && isProtobufType(value.$type);
}
function getNamespacedTypeName(node) {
if (node.parent && !isRoot(node.parent)) {
return getNamespacedTypeName(node.parent) + '.' + node.name;
}
else {
return node.name;
}
}
function isRoot(root) {
return (0, type_helpers_1.isRecord)(root) && root.constructor.name === 'Root';
}
//# sourceMappingURL=payload-converter.js.map

@@ -23,2 +23,1 @@ import type * as iface from '@temporalio/proto/lib/coresdk';

};
export declare const METADATA_MESSAGE_TYPE_KEY = "messageType";

3

lib/converter/types.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.METADATA_MESSAGE_TYPE_KEY = exports.encodingKeys = exports.encodingTypes = exports.METADATA_ENCODING_KEY = exports.str = exports.u8 = void 0;
exports.encodingKeys = exports.encodingTypes = exports.METADATA_ENCODING_KEY = exports.str = exports.u8 = void 0;
const encoding_1 = require("../encoding");

@@ -31,3 +31,2 @@ /**

};
exports.METADATA_MESSAGE_TYPE_KEY = 'messageType';
//# sourceMappingURL=types.js.map

@@ -17,5 +17,1 @@ export declare class ValueError extends Error {

export declare function errorMessage(err: unknown): string | undefined;
/**
* Get error code from an Error or return undefined
*/
export declare function errorCode(error: unknown): string | undefined;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.errorCode = exports.errorMessage = exports.IllegalStateError = exports.DataConverterError = exports.ValueError = void 0;
exports.errorMessage = exports.IllegalStateError = exports.DataConverterError = exports.ValueError = void 0;
class ValueError extends Error {

@@ -41,14 +41,2 @@ constructor() {

exports.errorMessage = errorMessage;
/**
* Get error code from an Error or return undefined
*/
function errorCode(error) {
if (typeof error === 'object' &&
error.code !== undefined &&
typeof error.code === 'string') {
return error.code;
}
return undefined;
}
exports.errorCode = errorCode;
//# sourceMappingURL=errors.js.map

@@ -8,3 +8,2 @@ /**

export * from './converter/data-converter';
export * from './converter/helpers';
export * from './errors';

@@ -11,0 +10,0 @@ export * from './failure';

@@ -20,3 +20,2 @@ "use strict";

__exportStar(require("./converter/data-converter"), exports);
__exportStar(require("./converter/helpers"), exports);
__exportStar(require("./errors"), exports);

@@ -23,0 +22,0 @@ __exportStar(require("./failure"), exports);

@@ -9,4 +9,1 @@ /** Shorthand alias */

export declare function checkExtends<_Orig, _Copy extends _Orig>(): void;
export declare function isRecord(value: unknown): value is Record<string, unknown>;
export declare function hasOwnProperty<X extends Record<string, unknown>, Y extends PropertyKey>(record: X, prop: Y): record is X & Record<Y, unknown>;
export declare function hasOwnProperties<X extends Record<string, unknown>, Y extends PropertyKey>(record: X, props: Y[]): record is X & Record<Y, unknown>;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.hasOwnProperties = exports.hasOwnProperty = exports.isRecord = exports.checkExtends = void 0;
exports.checkExtends = void 0;
/** Verify that an type _Copy extends _Orig */

@@ -9,14 +9,2 @@ function checkExtends() {

exports.checkExtends = checkExtends;
function isRecord(value) {
return typeof value === 'object' && value !== null;
}
exports.isRecord = isRecord;
function hasOwnProperty(record, prop) {
return prop in record;
}
exports.hasOwnProperty = hasOwnProperty;
function hasOwnProperties(record, props) {
return props.every((prop) => prop in record);
}
exports.hasOwnProperties = hasOwnProperties;
//# sourceMappingURL=type-helpers.js.map
{
"name": "@temporalio/common",
"version": "0.17.1",
"version": "0.17.2",
"description": "Temporal.io SDK common library for use in Workflow and normal code",

@@ -16,5 +16,4 @@ "main": "lib/index.js",

"dependencies": {
"@temporalio/proto": "^0.17.1",
"ms": "^2.1.3",
"proto3-json-serializer": "^0.1.6"
"@temporalio/proto": "^0.17.2",
"ms": "^2.1.3"
},

@@ -28,6 +27,3 @@ "bugs": {

},
"devDependencies": {
"protobufjs": "^6.11.2"
},
"gitHead": "3ee26c92e9c18500f919654a402237a86e69652e"
"gitHead": "2232465a4f9b0cade28f0c21c2d7856053678728"
}

@@ -8,4 +8,2 @@ import { ValueError } from '../errors';

JsonPayloadConverter,
ProtobufJsonPayloadConverter,
ProtobufBinaryPayloadConverter,
} from './payload-converter';

@@ -17,3 +15,3 @@

*
* Implement this in order to customize worker data serialization or use the default data converter which supports `Uint8Array`, Protobuf, and JSON serializables.
* Implement this in order to customize worker data serialization or use the default data converter which supports `Uint8Array` and JSON serializables.
*/

@@ -73,9 +71,2 @@ export interface DataConverter {

export const isValidDataConverter = (dataConverter: unknown): dataConverter is DataConverter =>
typeof dataConverter === 'object' &&
dataConverter !== null &&
['toPayload', 'toPayloads', 'fromPayload', 'fromPayloads'].every(
(method) => typeof (dataConverter as Record<string, unknown>)[method] === 'function'
);
export class CompositeDataConverter implements DataConverter {

@@ -197,20 +188,6 @@ readonly converters: PayloadConverter[];

export interface DefaultDataConverterOptions {
root?: Record<string, unknown>;
}
export class DefaultDataConverter extends CompositeDataConverter {
constructor({ root }: DefaultDataConverterOptions = {}) {
// Match the order used in other SDKs
// Go SDK: https://github.com/temporalio/sdk-go/blob/5e5645f0c550dcf717c095ae32c76a7087d2e985/converter/default_data_converter.go#L28
super(
new UndefinedPayloadConverter(),
new BinaryPayloadConverter(),
new ProtobufJsonPayloadConverter(root),
new ProtobufBinaryPayloadConverter(root),
new JsonPayloadConverter()
);
}
}
export const defaultDataConverter = new DefaultDataConverter();
export const defaultDataConverter = new CompositeDataConverter(
new UndefinedPayloadConverter(),
new BinaryPayloadConverter(),
new JsonPayloadConverter()
);

@@ -1,15 +0,3 @@

import { ValueError, DataConverterError } from '../errors';
import {
u8,
str,
Payload,
encodingTypes,
encodingKeys,
METADATA_ENCODING_KEY,
METADATA_MESSAGE_TYPE_KEY,
} from './types';
import { isRecord, hasOwnProperty, hasOwnProperties } from '../type-helpers';
import { errorMessage } from '../errors';
import * as protoJsonSerializer from 'proto3-json-serializer';
import type { Root, Type, Namespace, Message } from 'protobufjs';
import { ValueError } from '../errors';
import { u8, str, Payload, encodingTypes, encodingKeys, METADATA_ENCODING_KEY } from './types';

@@ -30,3 +18,3 @@ /**

* @param value JS value to convert.
* @return converted value or `undefined` if unable to convert.
* @return converted value
* @throws DataConverterException if conversion of the value passed as parameter failed for any

@@ -54,3 +42,3 @@ * reason.

* @param value JS value to convert.
* @return converted value or `undefined` if unable to convert.
* @return converted value
* @throws DataConverterException if conversion of the value passed as parameter failed for any

@@ -157,140 +145,1 @@ * reason.

}
abstract class ProtobufPayloadConverter extends AsyncFacadePayloadConverter {
protected readonly root: Root | undefined;
// Don't use type Root here because root.d.ts doesn't export Root, so users would have to type assert
constructor(root?: unknown) {
super();
if (root) {
if (!isRoot(root)) {
throw new TypeError('root must be an instance of a protobufjs Root');
}
this.root = root;
}
}
protected validatePayload(content: Payload): { messageType: Type; data: Uint8Array } {
if (content.data === undefined || content.data === null) {
throw new ValueError('Got payload with no data');
}
if (!content.metadata || !(METADATA_MESSAGE_TYPE_KEY in content.metadata)) {
throw new ValueError(`Got protobuf payload without metadata.${METADATA_MESSAGE_TYPE_KEY}`);
}
if (!this.root) {
throw new DataConverterError('Unable to deserialize protobuf message without `root` being provided');
}
const messageTypeName = str(content.metadata[METADATA_MESSAGE_TYPE_KEY]);
let messageType;
try {
messageType = this.root.lookupType(messageTypeName);
} catch (e) {
if (errorMessage(e)?.includes('no such type')) {
throw new DataConverterError(
`Got a \`${messageTypeName}\` protobuf message but cannot find corresponding message class in \`root\``
);
}
throw e;
}
return { messageType, data: content.data };
}
protected constructPayload({ messageTypeName, message }: { messageTypeName: string; message: Uint8Array }): Payload {
return {
metadata: {
[METADATA_ENCODING_KEY]: u8(this.encodingType),
[METADATA_MESSAGE_TYPE_KEY]: u8(messageTypeName),
},
data: message,
};
}
}
/**
* Converts between protobufjs Message instances and serialized Protobuf Payload
*/
export class ProtobufBinaryPayloadConverter extends ProtobufPayloadConverter {
public encodingType = encodingTypes.METADATA_ENCODING_PROTOBUF;
constructor(root?: unknown) {
super(root);
}
public toDataSync(value: unknown): Payload | undefined {
if (!isProtobufMessage(value)) {
return undefined;
}
return this.constructPayload({
messageTypeName: getNamespacedTypeName(value.$type),
message: value.$type.encode(value).finish(),
});
}
public fromDataSync<T>(content: Payload): T {
const { messageType, data } = this.validatePayload(content);
return messageType.decode(data) as unknown as T;
}
}
/**
* Converts between protobufjs Message instances and serialized JSON Payload
*/
export class ProtobufJsonPayloadConverter extends ProtobufPayloadConverter {
public encodingType = encodingTypes.METADATA_ENCODING_PROTOBUF_JSON;
constructor(root?: unknown) {
super(root);
}
public toDataSync(value: unknown): Payload | undefined {
if (!isProtobufMessage(value)) {
return undefined;
}
const jsonValue = protoJsonSerializer.toProto3JSON(value);
return this.constructPayload({
messageTypeName: getNamespacedTypeName(value.$type),
message: u8(JSON.stringify(jsonValue)),
});
}
public fromDataSync<T>(content: Payload): T {
const { messageType, data } = this.validatePayload(content);
return protoJsonSerializer.fromProto3JSON(messageType, JSON.parse(str(data))) as unknown as T;
}
}
function isProtobufType(type: unknown): type is Type {
return (
isRecord(type) &&
type.constructor.name === 'Type' &&
hasOwnProperties(type, ['parent', 'name', 'create', 'encode', 'decode']) &&
typeof type.name === 'string' &&
typeof type.create === 'function' &&
typeof type.encode === 'function' &&
typeof type.decode === 'function'
);
}
function isProtobufMessage(value: unknown): value is Message {
return isRecord(value) && hasOwnProperty(value, '$type') && isProtobufType(value.$type);
}
function getNamespacedTypeName(node: Type | Namespace): string {
if (node.parent && !isRoot(node.parent)) {
return getNamespacedTypeName(node.parent) + '.' + node.name;
} else {
return node.name;
}
}
function isRoot(root: unknown): root is Root {
return isRecord(root) && root.constructor.name === 'Root';
}

@@ -33,3 +33,1 @@ import type * as iface from '@temporalio/proto/lib/coresdk';

} as const;
export const METADATA_MESSAGE_TYPE_KEY = 'messageType';

@@ -28,19 +28,1 @@ export class ValueError extends Error {

}
interface ErrorWithCode {
code: string;
}
/**
* Get error code from an Error or return undefined
*/
export function errorCode(error: unknown): string | undefined {
if (
typeof error === 'object' &&
(error as ErrorWithCode).code !== undefined &&
typeof (error as ErrorWithCode).code === 'string'
) {
return (error as ErrorWithCode).code;
}
return undefined;
}

@@ -8,3 +8,2 @@ /**

export * from './converter/data-converter';
export * from './converter/helpers';
export * from './errors';

@@ -11,0 +10,0 @@ export * from './failure';

@@ -12,19 +12,1 @@ /** Shorthand alias */

}
export function isRecord(value: unknown): value is Record<string, unknown> {
return typeof value === 'object' && value !== null;
}
export function hasOwnProperty<X extends Record<string, unknown>, Y extends PropertyKey>(
record: X,
prop: Y
): record is X & Record<Y, unknown> {
return prop in record;
}
export function hasOwnProperties<X extends Record<string, unknown>, Y extends PropertyKey>(
record: X,
props: Y[]
): record is X & Record<Y, unknown> {
return props.every((prop) => prop in record);
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc