@transcend-io/custom-function-types
v0.2.0
Published
TypeScript contracts and validation schemas for authoring Transcend Custom Functions.
Maintainers
Keywords
Readme
Custom Function types
TypeScript types and JSON Schemas for building Transcend Custom Functions:
- handler arguments and payloads;
- the Custom Function software development kit and key-value store;
- test payloads for General and data subject request (DSR) functions.
Install
npm install --save-dev @transcend-io/custom-function-typesFor a Deno-only project:
import type { CustomFunction } from 'npm:@transcend-io/custom-function-types';Type a Custom Function
import type { CustomFunction } from '@transcend-io/custom-function-types';
export async function enricher({ payload }: CustomFunction.EnricherArgument): Promise<void> {
console.info(`Enriching ${payload.requestIdentifier.name}`);
}
export default async function customFunction({
payload,
sdk,
}: CustomFunction.Argument): Promise<void> {
console.info(`Running ${payload.type}`);
await sdk.ping();
}The CustomFunction namespace is already available when writing code in
Transcend's Custom Function editor, so no import is needed there.
Validate test payloads
The root module exports generated schema constants and a typed selector:
import {
CustomFunctionSchemaType,
getCustomFunctionPayloadSchema,
} from '@transcend-io/custom-function-types';
const schema = getCustomFunctionPayloadSchema(CustomFunctionSchemaType.DsrDataPoint);The generated draft-07 JSON Schemas are also available from the package's
./schemas/* exports.
DSR test payload contracts describe raw test files before push prepares the
runtime payload. Both DSR schemas therefore allow extras.dataSilo to be
omitted when push will inject the resolved integration.
Pin generated imports
Generators can use the runtime version export to create exact npm specifiers without duplicating this package's version:
import { CUSTOM_FUNCTION_TYPES_VERSION } from '@transcend-io/custom-function-types';
const specifier = `npm:@transcend-io/custom-function-types@${CUSTOM_FUNCTION_TYPES_VERSION}`;CUSTOM_FUNCTION_TYPES_VERSION is sourced from this package's own manifest.
Compatibility and versioning
The package follows semantic versioning:
- patch releases clarify documentation or schema metadata without changing accepted values;
- minor releases add backward-compatible types or optional fields;
- major releases remove exports or narrow values accepted by existing code.
