@astami/temporal-functions 0.2.1 → 0.2.2

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
- import { g as ClientConfig, j as TFNClient } from '../types-CmhOIEkF.mjs';
2
- export { S as StartWorkflowOptions, i as WorkflowHandle } from '../types-CmhOIEkF.mjs';
1
+ import { g as ClientConfig, j as TFNClient } from '../types-Curq8YlS.mjs';
2
+ export { S as StartWorkflowOptions, i as WorkflowHandle } from '../types-Curq8YlS.mjs';
3
3
 
4
4
  /**
5
5
  * Temporal Functions - Client Package
@@ -1,5 +1,5 @@
1
- import { g as ClientConfig, j as TFNClient } from '../types-CmhOIEkF.js';
2
- export { S as StartWorkflowOptions, i as WorkflowHandle } from '../types-CmhOIEkF.js';
1
+ import { g as ClientConfig, j as TFNClient } from '../types-Curq8YlS.js';
2
+ export { S as StartWorkflowOptions, i as WorkflowHandle } from '../types-Curq8YlS.js';
3
3
 
4
4
  /**
5
5
  * Temporal Functions - Client Package
@@ -43,10 +43,16 @@ var TemporalFunctionsClient = class {
43
43
  } : void 0
44
44
  } : void 0
45
45
  });
46
- this.client = new client.Client({
46
+ const clientOptions = {
47
47
  connection,
48
48
  namespace: this.config.temporal.namespace
49
- });
49
+ };
50
+ if (this.config.interceptors?.workflow) {
51
+ clientOptions.interceptors = {
52
+ workflow: this.config.interceptors.workflow
53
+ };
54
+ }
55
+ this.client = new client.Client(clientOptions);
50
56
  return this.client;
51
57
  })();
52
58
  return this.connectionPromise;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/client/index.ts"],"names":["Connection","Client"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Temporal Functions - Client Package\n *\n * Lightweight client for triggering workflows.\n * Import from 'temporal-functions/client'.\n */\n\nimport { Client, Connection } from '@temporalio/client';\nimport type {\n ClientConfig,\n WorkflowDef,\n StartWorkflowOptions,\n WorkflowHandle,\n TFNClient,\n} from '../types.js';\n\n// =============================================================================\n// Client Implementation\n// =============================================================================\n\nclass TemporalFunctionsClient implements TFNClient {\n private client: Client | null = null;\n private config: ClientConfig;\n private connectionPromise: Promise<Client> | null = null;\n\n constructor(config: ClientConfig) {\n this.config = {\n ...config,\n temporal: {\n namespace: 'default',\n ...config.temporal,\n },\n taskQueue: config.taskQueue || 'default',\n };\n }\n\n /**\n * Lazily connect to Temporal\n */\n private async getClient(): Promise<Client> {\n if (this.client) {\n return this.client;\n }\n\n if (this.connectionPromise) {\n return this.connectionPromise;\n }\n\n this.connectionPromise = (async () => {\n const connection = await Connection.connect({\n address: this.config.temporal.address,\n tls: this.config.temporal.tls\n ? {\n clientCertPair: this.config.temporal.tls.clientCertPath\n ? {\n crt: await import('fs').then((fs) =>\n fs.promises.readFile(this.config.temporal.tls!.clientCertPath!)\n ),\n key: await import('fs').then((fs) =>\n fs.promises.readFile(this.config.temporal.tls!.clientKeyPath!)\n ),\n }\n : undefined,\n }\n : undefined,\n });\n\n this.client = new Client({\n connection,\n namespace: this.config.temporal.namespace,\n });\n\n return this.client;\n })();\n\n return this.connectionPromise;\n }\n\n /**\n * Generate a workflow ID if not provided\n */\n private generateWorkflowId(workflowName: string): string {\n const timestamp = Date.now();\n const random = Math.random().toString(36).substring(2, 8);\n return `${workflowName}-${timestamp}-${random}`;\n }\n\n /**\n * Start a workflow and wait for the result\n */\n async invoke<TInput, TOutput>(\n workflow: WorkflowDef<TInput, TOutput>,\n input: TInput,\n options: StartWorkflowOptions = {}\n ): Promise<TOutput> {\n const handle = await this.start(workflow, input, options);\n return handle.result();\n }\n\n /**\n * Start a workflow without waiting (fire and forget)\n */\n async start<TInput, TOutput>(\n workflow: WorkflowDef<TInput, TOutput>,\n input: TInput,\n options: StartWorkflowOptions = {}\n ): Promise<WorkflowHandle<TOutput>> {\n const client = await this.getClient();\n\n const workflowId = options.workflowId || this.generateWorkflowId(workflow.name);\n const taskQueue = options.taskQueue || workflow.options.taskQueue || this.config.taskQueue || 'default';\n\n const handle = await client.workflow.start(workflow.name, {\n workflowId,\n taskQueue,\n args: [input],\n workflowExecutionTimeout: options.workflowExecutionTimeout,\n memo: options.memo,\n // searchAttributes requires specific types, omit for now if not properly typed\n });\n\n return this.wrapHandle<TOutput>(handle);\n }\n\n /**\n * Get a handle to an existing workflow\n */\n getHandle<TOutput = unknown>(workflowId: string): WorkflowHandle<TOutput> {\n // Create a lazy handle that connects when needed\n return {\n workflowId,\n runId: '', // Will be populated when we fetch\n result: async () => {\n const client = await this.getClient();\n const handle = client.workflow.getHandle(workflowId);\n return handle.result() as Promise<TOutput>;\n },\n query: async <TResult = unknown>(queryName: string) => {\n const client = await this.getClient();\n const handle = client.workflow.getHandle(workflowId);\n return handle.query<TResult>(queryName);\n },\n signal: async <TPayload = unknown>(signalName: string, payload: TPayload) => {\n const client = await this.getClient();\n const handle = client.workflow.getHandle(workflowId);\n await handle.signal(signalName, payload);\n },\n cancel: async () => {\n const client = await this.getClient();\n const handle = client.workflow.getHandle(workflowId);\n await handle.cancel();\n },\n terminate: async (reason?: string) => {\n const client = await this.getClient();\n const handle = client.workflow.getHandle(workflowId);\n await handle.terminate(reason);\n },\n };\n }\n\n /**\n * Signal an existing workflow\n */\n async signal<TPayload = unknown>(\n workflowId: string,\n signalName: string,\n payload: TPayload\n ): Promise<void> {\n const client = await this.getClient();\n const handle = client.workflow.getHandle(workflowId);\n await handle.signal(signalName, payload);\n }\n\n /**\n * Query an existing workflow\n */\n async query<TResult = unknown>(\n workflowId: string,\n queryName: string\n ): Promise<TResult> {\n const client = await this.getClient();\n const handle = client.workflow.getHandle(workflowId);\n return handle.query<TResult>(queryName);\n }\n\n /**\n * Wrap a Temporal workflow handle in our interface\n */\n private wrapHandle<TOutput>(\n handle: Awaited<ReturnType<Client['workflow']['start']>>\n ): WorkflowHandle<TOutput> {\n return {\n workflowId: handle.workflowId,\n runId: handle.firstExecutionRunId,\n result: () => handle.result() as Promise<TOutput>,\n query: <TResult = unknown>(queryName: string) =>\n handle.query<TResult>(queryName),\n signal: <TPayload = unknown>(signalName: string, payload: TPayload) =>\n handle.signal(signalName, payload),\n cancel: async () => {\n await handle.cancel();\n },\n terminate: async (reason?: string) => {\n await handle.terminate(reason);\n },\n };\n }\n}\n\n// =============================================================================\n// Factory Function\n// =============================================================================\n\n/**\n * Create a Temporal Functions client\n *\n * @example\n * ```typescript\n * import { tfn } from 'temporal-functions/client';\n *\n * const client = tfn.client({\n * temporal: {\n * address: 'localhost:7233',\n * namespace: 'default',\n * },\n * taskQueue: 'my-queue',\n * });\n *\n * const result = await client.invoke(myWorkflow, { data: 'hello' });\n * ```\n */\nfunction createClient(config: ClientConfig): TFNClient {\n return new TemporalFunctionsClient(config);\n}\n\n// =============================================================================\n// Export\n// =============================================================================\n\nexport const tfn = {\n client: createClient,\n};\n\nexport { createClient };\nexport type { ClientConfig, TFNClient, WorkflowHandle, StartWorkflowOptions };\nexport default tfn;\n"]}
1
+ {"version":3,"sources":["../../src/client/index.ts"],"names":["Connection","Client"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Temporal Functions - Client Package\n *\n * Lightweight client for triggering workflows.\n * Import from 'temporal-functions/client'.\n */\n\nimport { Client, Connection, type ClientOptions } from '@temporalio/client';\nimport type {\n ClientConfig,\n WorkflowDef,\n StartWorkflowOptions,\n WorkflowHandle,\n TFNClient,\n} from '../types.js';\n\n// =============================================================================\n// Client Implementation\n// =============================================================================\n\nclass TemporalFunctionsClient implements TFNClient {\n private client: Client | null = null;\n private config: ClientConfig;\n private connectionPromise: Promise<Client> | null = null;\n\n constructor(config: ClientConfig) {\n this.config = {\n ...config,\n temporal: {\n namespace: 'default',\n ...config.temporal,\n },\n taskQueue: config.taskQueue || 'default',\n };\n }\n\n /**\n * Lazily connect to Temporal\n */\n private async getClient(): Promise<Client> {\n if (this.client) {\n return this.client;\n }\n\n if (this.connectionPromise) {\n return this.connectionPromise;\n }\n\n this.connectionPromise = (async () => {\n const connection = await Connection.connect({\n address: this.config.temporal.address,\n tls: this.config.temporal.tls\n ? {\n clientCertPair: this.config.temporal.tls.clientCertPath\n ? {\n crt: await import('fs').then((fs) =>\n fs.promises.readFile(this.config.temporal.tls!.clientCertPath!)\n ),\n key: await import('fs').then((fs) =>\n fs.promises.readFile(this.config.temporal.tls!.clientKeyPath!)\n ),\n }\n : undefined,\n }\n : undefined,\n });\n\n // Build client options with optional interceptors\n const clientOptions: ClientOptions = {\n connection,\n namespace: this.config.temporal.namespace!,\n };\n\n // Add workflow interceptors if configured (e.g., for OpenTelemetry)\n if (this.config.interceptors?.workflow) {\n clientOptions.interceptors = {\n workflow: this.config.interceptors.workflow,\n };\n }\n\n this.client = new Client(clientOptions);\n\n return this.client;\n })();\n\n return this.connectionPromise;\n }\n\n /**\n * Generate a workflow ID if not provided\n */\n private generateWorkflowId(workflowName: string): string {\n const timestamp = Date.now();\n const random = Math.random().toString(36).substring(2, 8);\n return `${workflowName}-${timestamp}-${random}`;\n }\n\n /**\n * Start a workflow and wait for the result\n */\n async invoke<TInput, TOutput>(\n workflow: WorkflowDef<TInput, TOutput>,\n input: TInput,\n options: StartWorkflowOptions = {}\n ): Promise<TOutput> {\n const handle = await this.start(workflow, input, options);\n return handle.result();\n }\n\n /**\n * Start a workflow without waiting (fire and forget)\n */\n async start<TInput, TOutput>(\n workflow: WorkflowDef<TInput, TOutput>,\n input: TInput,\n options: StartWorkflowOptions = {}\n ): Promise<WorkflowHandle<TOutput>> {\n const client = await this.getClient();\n\n const workflowId = options.workflowId || this.generateWorkflowId(workflow.name);\n const taskQueue = options.taskQueue || workflow.options.taskQueue || this.config.taskQueue || 'default';\n\n const handle = await client.workflow.start(workflow.name, {\n workflowId,\n taskQueue,\n args: [input],\n workflowExecutionTimeout: options.workflowExecutionTimeout,\n memo: options.memo,\n // searchAttributes requires specific types, omit for now if not properly typed\n });\n\n return this.wrapHandle<TOutput>(handle);\n }\n\n /**\n * Get a handle to an existing workflow\n */\n getHandle<TOutput = unknown>(workflowId: string): WorkflowHandle<TOutput> {\n // Create a lazy handle that connects when needed\n return {\n workflowId,\n runId: '', // Will be populated when we fetch\n result: async () => {\n const client = await this.getClient();\n const handle = client.workflow.getHandle(workflowId);\n return handle.result() as Promise<TOutput>;\n },\n query: async <TResult = unknown>(queryName: string) => {\n const client = await this.getClient();\n const handle = client.workflow.getHandle(workflowId);\n return handle.query<TResult>(queryName);\n },\n signal: async <TPayload = unknown>(signalName: string, payload: TPayload) => {\n const client = await this.getClient();\n const handle = client.workflow.getHandle(workflowId);\n await handle.signal(signalName, payload);\n },\n cancel: async () => {\n const client = await this.getClient();\n const handle = client.workflow.getHandle(workflowId);\n await handle.cancel();\n },\n terminate: async (reason?: string) => {\n const client = await this.getClient();\n const handle = client.workflow.getHandle(workflowId);\n await handle.terminate(reason);\n },\n };\n }\n\n /**\n * Signal an existing workflow\n */\n async signal<TPayload = unknown>(\n workflowId: string,\n signalName: string,\n payload: TPayload\n ): Promise<void> {\n const client = await this.getClient();\n const handle = client.workflow.getHandle(workflowId);\n await handle.signal(signalName, payload);\n }\n\n /**\n * Query an existing workflow\n */\n async query<TResult = unknown>(\n workflowId: string,\n queryName: string\n ): Promise<TResult> {\n const client = await this.getClient();\n const handle = client.workflow.getHandle(workflowId);\n return handle.query<TResult>(queryName);\n }\n\n /**\n * Wrap a Temporal workflow handle in our interface\n */\n private wrapHandle<TOutput>(\n handle: Awaited<ReturnType<Client['workflow']['start']>>\n ): WorkflowHandle<TOutput> {\n return {\n workflowId: handle.workflowId,\n runId: handle.firstExecutionRunId,\n result: () => handle.result() as Promise<TOutput>,\n query: <TResult = unknown>(queryName: string) =>\n handle.query<TResult>(queryName),\n signal: <TPayload = unknown>(signalName: string, payload: TPayload) =>\n handle.signal(signalName, payload),\n cancel: async () => {\n await handle.cancel();\n },\n terminate: async (reason?: string) => {\n await handle.terminate(reason);\n },\n };\n }\n}\n\n// =============================================================================\n// Factory Function\n// =============================================================================\n\n/**\n * Create a Temporal Functions client\n *\n * @example\n * ```typescript\n * import { tfn } from 'temporal-functions/client';\n *\n * const client = tfn.client({\n * temporal: {\n * address: 'localhost:7233',\n * namespace: 'default',\n * },\n * taskQueue: 'my-queue',\n * });\n *\n * const result = await client.invoke(myWorkflow, { data: 'hello' });\n * ```\n */\nfunction createClient(config: ClientConfig): TFNClient {\n return new TemporalFunctionsClient(config);\n}\n\n// =============================================================================\n// Export\n// =============================================================================\n\nexport const tfn = {\n client: createClient,\n};\n\nexport { createClient };\nexport type { ClientConfig, TFNClient, WorkflowHandle, StartWorkflowOptions };\nexport default tfn;\n"]}
@@ -39,10 +39,16 @@ var TemporalFunctionsClient = class {
39
39
  } : void 0
40
40
  } : void 0
41
41
  });
42
- this.client = new Client({
42
+ const clientOptions = {
43
43
  connection,
44
44
  namespace: this.config.temporal.namespace
45
- });
45
+ };
46
+ if (this.config.interceptors?.workflow) {
47
+ clientOptions.interceptors = {
48
+ workflow: this.config.interceptors.workflow
49
+ };
50
+ }
51
+ this.client = new Client(clientOptions);
46
52
  return this.client;
47
53
  })();
48
54
  return this.connectionPromise;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/client/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Temporal Functions - Client Package\n *\n * Lightweight client for triggering workflows.\n * Import from 'temporal-functions/client'.\n */\n\nimport { Client, Connection } from '@temporalio/client';\nimport type {\n ClientConfig,\n WorkflowDef,\n StartWorkflowOptions,\n WorkflowHandle,\n TFNClient,\n} from '../types.js';\n\n// =============================================================================\n// Client Implementation\n// =============================================================================\n\nclass TemporalFunctionsClient implements TFNClient {\n private client: Client | null = null;\n private config: ClientConfig;\n private connectionPromise: Promise<Client> | null = null;\n\n constructor(config: ClientConfig) {\n this.config = {\n ...config,\n temporal: {\n namespace: 'default',\n ...config.temporal,\n },\n taskQueue: config.taskQueue || 'default',\n };\n }\n\n /**\n * Lazily connect to Temporal\n */\n private async getClient(): Promise<Client> {\n if (this.client) {\n return this.client;\n }\n\n if (this.connectionPromise) {\n return this.connectionPromise;\n }\n\n this.connectionPromise = (async () => {\n const connection = await Connection.connect({\n address: this.config.temporal.address,\n tls: this.config.temporal.tls\n ? {\n clientCertPair: this.config.temporal.tls.clientCertPath\n ? {\n crt: await import('fs').then((fs) =>\n fs.promises.readFile(this.config.temporal.tls!.clientCertPath!)\n ),\n key: await import('fs').then((fs) =>\n fs.promises.readFile(this.config.temporal.tls!.clientKeyPath!)\n ),\n }\n : undefined,\n }\n : undefined,\n });\n\n this.client = new Client({\n connection,\n namespace: this.config.temporal.namespace,\n });\n\n return this.client;\n })();\n\n return this.connectionPromise;\n }\n\n /**\n * Generate a workflow ID if not provided\n */\n private generateWorkflowId(workflowName: string): string {\n const timestamp = Date.now();\n const random = Math.random().toString(36).substring(2, 8);\n return `${workflowName}-${timestamp}-${random}`;\n }\n\n /**\n * Start a workflow and wait for the result\n */\n async invoke<TInput, TOutput>(\n workflow: WorkflowDef<TInput, TOutput>,\n input: TInput,\n options: StartWorkflowOptions = {}\n ): Promise<TOutput> {\n const handle = await this.start(workflow, input, options);\n return handle.result();\n }\n\n /**\n * Start a workflow without waiting (fire and forget)\n */\n async start<TInput, TOutput>(\n workflow: WorkflowDef<TInput, TOutput>,\n input: TInput,\n options: StartWorkflowOptions = {}\n ): Promise<WorkflowHandle<TOutput>> {\n const client = await this.getClient();\n\n const workflowId = options.workflowId || this.generateWorkflowId(workflow.name);\n const taskQueue = options.taskQueue || workflow.options.taskQueue || this.config.taskQueue || 'default';\n\n const handle = await client.workflow.start(workflow.name, {\n workflowId,\n taskQueue,\n args: [input],\n workflowExecutionTimeout: options.workflowExecutionTimeout,\n memo: options.memo,\n // searchAttributes requires specific types, omit for now if not properly typed\n });\n\n return this.wrapHandle<TOutput>(handle);\n }\n\n /**\n * Get a handle to an existing workflow\n */\n getHandle<TOutput = unknown>(workflowId: string): WorkflowHandle<TOutput> {\n // Create a lazy handle that connects when needed\n return {\n workflowId,\n runId: '', // Will be populated when we fetch\n result: async () => {\n const client = await this.getClient();\n const handle = client.workflow.getHandle(workflowId);\n return handle.result() as Promise<TOutput>;\n },\n query: async <TResult = unknown>(queryName: string) => {\n const client = await this.getClient();\n const handle = client.workflow.getHandle(workflowId);\n return handle.query<TResult>(queryName);\n },\n signal: async <TPayload = unknown>(signalName: string, payload: TPayload) => {\n const client = await this.getClient();\n const handle = client.workflow.getHandle(workflowId);\n await handle.signal(signalName, payload);\n },\n cancel: async () => {\n const client = await this.getClient();\n const handle = client.workflow.getHandle(workflowId);\n await handle.cancel();\n },\n terminate: async (reason?: string) => {\n const client = await this.getClient();\n const handle = client.workflow.getHandle(workflowId);\n await handle.terminate(reason);\n },\n };\n }\n\n /**\n * Signal an existing workflow\n */\n async signal<TPayload = unknown>(\n workflowId: string,\n signalName: string,\n payload: TPayload\n ): Promise<void> {\n const client = await this.getClient();\n const handle = client.workflow.getHandle(workflowId);\n await handle.signal(signalName, payload);\n }\n\n /**\n * Query an existing workflow\n */\n async query<TResult = unknown>(\n workflowId: string,\n queryName: string\n ): Promise<TResult> {\n const client = await this.getClient();\n const handle = client.workflow.getHandle(workflowId);\n return handle.query<TResult>(queryName);\n }\n\n /**\n * Wrap a Temporal workflow handle in our interface\n */\n private wrapHandle<TOutput>(\n handle: Awaited<ReturnType<Client['workflow']['start']>>\n ): WorkflowHandle<TOutput> {\n return {\n workflowId: handle.workflowId,\n runId: handle.firstExecutionRunId,\n result: () => handle.result() as Promise<TOutput>,\n query: <TResult = unknown>(queryName: string) =>\n handle.query<TResult>(queryName),\n signal: <TPayload = unknown>(signalName: string, payload: TPayload) =>\n handle.signal(signalName, payload),\n cancel: async () => {\n await handle.cancel();\n },\n terminate: async (reason?: string) => {\n await handle.terminate(reason);\n },\n };\n }\n}\n\n// =============================================================================\n// Factory Function\n// =============================================================================\n\n/**\n * Create a Temporal Functions client\n *\n * @example\n * ```typescript\n * import { tfn } from 'temporal-functions/client';\n *\n * const client = tfn.client({\n * temporal: {\n * address: 'localhost:7233',\n * namespace: 'default',\n * },\n * taskQueue: 'my-queue',\n * });\n *\n * const result = await client.invoke(myWorkflow, { data: 'hello' });\n * ```\n */\nfunction createClient(config: ClientConfig): TFNClient {\n return new TemporalFunctionsClient(config);\n}\n\n// =============================================================================\n// Export\n// =============================================================================\n\nexport const tfn = {\n client: createClient,\n};\n\nexport { createClient };\nexport type { ClientConfig, TFNClient, WorkflowHandle, StartWorkflowOptions };\nexport default tfn;\n"]}
1
+ {"version":3,"sources":["../../src/client/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Temporal Functions - Client Package\n *\n * Lightweight client for triggering workflows.\n * Import from 'temporal-functions/client'.\n */\n\nimport { Client, Connection, type ClientOptions } from '@temporalio/client';\nimport type {\n ClientConfig,\n WorkflowDef,\n StartWorkflowOptions,\n WorkflowHandle,\n TFNClient,\n} from '../types.js';\n\n// =============================================================================\n// Client Implementation\n// =============================================================================\n\nclass TemporalFunctionsClient implements TFNClient {\n private client: Client | null = null;\n private config: ClientConfig;\n private connectionPromise: Promise<Client> | null = null;\n\n constructor(config: ClientConfig) {\n this.config = {\n ...config,\n temporal: {\n namespace: 'default',\n ...config.temporal,\n },\n taskQueue: config.taskQueue || 'default',\n };\n }\n\n /**\n * Lazily connect to Temporal\n */\n private async getClient(): Promise<Client> {\n if (this.client) {\n return this.client;\n }\n\n if (this.connectionPromise) {\n return this.connectionPromise;\n }\n\n this.connectionPromise = (async () => {\n const connection = await Connection.connect({\n address: this.config.temporal.address,\n tls: this.config.temporal.tls\n ? {\n clientCertPair: this.config.temporal.tls.clientCertPath\n ? {\n crt: await import('fs').then((fs) =>\n fs.promises.readFile(this.config.temporal.tls!.clientCertPath!)\n ),\n key: await import('fs').then((fs) =>\n fs.promises.readFile(this.config.temporal.tls!.clientKeyPath!)\n ),\n }\n : undefined,\n }\n : undefined,\n });\n\n // Build client options with optional interceptors\n const clientOptions: ClientOptions = {\n connection,\n namespace: this.config.temporal.namespace!,\n };\n\n // Add workflow interceptors if configured (e.g., for OpenTelemetry)\n if (this.config.interceptors?.workflow) {\n clientOptions.interceptors = {\n workflow: this.config.interceptors.workflow,\n };\n }\n\n this.client = new Client(clientOptions);\n\n return this.client;\n })();\n\n return this.connectionPromise;\n }\n\n /**\n * Generate a workflow ID if not provided\n */\n private generateWorkflowId(workflowName: string): string {\n const timestamp = Date.now();\n const random = Math.random().toString(36).substring(2, 8);\n return `${workflowName}-${timestamp}-${random}`;\n }\n\n /**\n * Start a workflow and wait for the result\n */\n async invoke<TInput, TOutput>(\n workflow: WorkflowDef<TInput, TOutput>,\n input: TInput,\n options: StartWorkflowOptions = {}\n ): Promise<TOutput> {\n const handle = await this.start(workflow, input, options);\n return handle.result();\n }\n\n /**\n * Start a workflow without waiting (fire and forget)\n */\n async start<TInput, TOutput>(\n workflow: WorkflowDef<TInput, TOutput>,\n input: TInput,\n options: StartWorkflowOptions = {}\n ): Promise<WorkflowHandle<TOutput>> {\n const client = await this.getClient();\n\n const workflowId = options.workflowId || this.generateWorkflowId(workflow.name);\n const taskQueue = options.taskQueue || workflow.options.taskQueue || this.config.taskQueue || 'default';\n\n const handle = await client.workflow.start(workflow.name, {\n workflowId,\n taskQueue,\n args: [input],\n workflowExecutionTimeout: options.workflowExecutionTimeout,\n memo: options.memo,\n // searchAttributes requires specific types, omit for now if not properly typed\n });\n\n return this.wrapHandle<TOutput>(handle);\n }\n\n /**\n * Get a handle to an existing workflow\n */\n getHandle<TOutput = unknown>(workflowId: string): WorkflowHandle<TOutput> {\n // Create a lazy handle that connects when needed\n return {\n workflowId,\n runId: '', // Will be populated when we fetch\n result: async () => {\n const client = await this.getClient();\n const handle = client.workflow.getHandle(workflowId);\n return handle.result() as Promise<TOutput>;\n },\n query: async <TResult = unknown>(queryName: string) => {\n const client = await this.getClient();\n const handle = client.workflow.getHandle(workflowId);\n return handle.query<TResult>(queryName);\n },\n signal: async <TPayload = unknown>(signalName: string, payload: TPayload) => {\n const client = await this.getClient();\n const handle = client.workflow.getHandle(workflowId);\n await handle.signal(signalName, payload);\n },\n cancel: async () => {\n const client = await this.getClient();\n const handle = client.workflow.getHandle(workflowId);\n await handle.cancel();\n },\n terminate: async (reason?: string) => {\n const client = await this.getClient();\n const handle = client.workflow.getHandle(workflowId);\n await handle.terminate(reason);\n },\n };\n }\n\n /**\n * Signal an existing workflow\n */\n async signal<TPayload = unknown>(\n workflowId: string,\n signalName: string,\n payload: TPayload\n ): Promise<void> {\n const client = await this.getClient();\n const handle = client.workflow.getHandle(workflowId);\n await handle.signal(signalName, payload);\n }\n\n /**\n * Query an existing workflow\n */\n async query<TResult = unknown>(\n workflowId: string,\n queryName: string\n ): Promise<TResult> {\n const client = await this.getClient();\n const handle = client.workflow.getHandle(workflowId);\n return handle.query<TResult>(queryName);\n }\n\n /**\n * Wrap a Temporal workflow handle in our interface\n */\n private wrapHandle<TOutput>(\n handle: Awaited<ReturnType<Client['workflow']['start']>>\n ): WorkflowHandle<TOutput> {\n return {\n workflowId: handle.workflowId,\n runId: handle.firstExecutionRunId,\n result: () => handle.result() as Promise<TOutput>,\n query: <TResult = unknown>(queryName: string) =>\n handle.query<TResult>(queryName),\n signal: <TPayload = unknown>(signalName: string, payload: TPayload) =>\n handle.signal(signalName, payload),\n cancel: async () => {\n await handle.cancel();\n },\n terminate: async (reason?: string) => {\n await handle.terminate(reason);\n },\n };\n }\n}\n\n// =============================================================================\n// Factory Function\n// =============================================================================\n\n/**\n * Create a Temporal Functions client\n *\n * @example\n * ```typescript\n * import { tfn } from 'temporal-functions/client';\n *\n * const client = tfn.client({\n * temporal: {\n * address: 'localhost:7233',\n * namespace: 'default',\n * },\n * taskQueue: 'my-queue',\n * });\n *\n * const result = await client.invoke(myWorkflow, { data: 'hello' });\n * ```\n */\nfunction createClient(config: ClientConfig): TFNClient {\n return new TemporalFunctionsClient(config);\n}\n\n// =============================================================================\n// Export\n// =============================================================================\n\nexport const tfn = {\n client: createClient,\n};\n\nexport { createClient };\nexport type { ClientConfig, TFNClient, WorkflowHandle, StartWorkflowOptions };\nexport default tfn;\n"]}
package/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
- import { F as FunctionOptions, a as FunctionDef, W as WorkflowHandler, b as WorkflowOptions, c as WorkflowDef, H as HttpTriggerOptions, C as CronTriggerOptions, R as Registry } from './types-CmhOIEkF.mjs';
2
- export { g as ClientConfig, f as RetryPolicy, S as StartWorkflowOptions, j as TFNClient, k as TFNWorker, T as TemporalConfig, h as WorkerConfig, d as WorkflowContext, i as WorkflowHandle, e as WorkflowInfo } from './types-CmhOIEkF.mjs';
1
+ import { F as FunctionOptions, a as FunctionDef, W as WorkflowHandler, b as WorkflowOptions, c as WorkflowDef, H as HttpTriggerOptions, C as CronTriggerOptions, R as Registry } from './types-Curq8YlS.mjs';
2
+ export { g as ClientConfig, f as RetryPolicy, S as StartWorkflowOptions, j as TFNClient, k as TFNWorker, T as TemporalConfig, h as WorkerConfig, d as WorkflowContext, i as WorkflowHandle, e as WorkflowInfo } from './types-Curq8YlS.mjs';
3
3
 
4
4
  /**
5
5
  * Temporal Functions - Main Entry Point
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { F as FunctionOptions, a as FunctionDef, W as WorkflowHandler, b as WorkflowOptions, c as WorkflowDef, H as HttpTriggerOptions, C as CronTriggerOptions, R as Registry } from './types-CmhOIEkF.js';
2
- export { g as ClientConfig, f as RetryPolicy, S as StartWorkflowOptions, j as TFNClient, k as TFNWorker, T as TemporalConfig, h as WorkerConfig, d as WorkflowContext, i as WorkflowHandle, e as WorkflowInfo } from './types-CmhOIEkF.js';
1
+ import { F as FunctionOptions, a as FunctionDef, W as WorkflowHandler, b as WorkflowOptions, c as WorkflowDef, H as HttpTriggerOptions, C as CronTriggerOptions, R as Registry } from './types-Curq8YlS.js';
2
+ export { g as ClientConfig, f as RetryPolicy, S as StartWorkflowOptions, j as TFNClient, k as TFNWorker, T as TemporalConfig, h as WorkerConfig, d as WorkflowContext, i as WorkflowHandle, e as WorkflowInfo } from './types-Curq8YlS.js';
3
3
 
4
4
  /**
5
5
  * Temporal Functions - Main Entry Point
@@ -1,4 +1,4 @@
1
- import { a as FunctionDef, c as WorkflowDef, d as WorkflowContext } from '../types-CmhOIEkF.mjs';
1
+ import { a as FunctionDef, c as WorkflowDef, d as WorkflowContext } from '../types-Curq8YlS.mjs';
2
2
 
3
3
  /**
4
4
  * Temporal Functions - Testing Utilities
@@ -1,4 +1,4 @@
1
- import { a as FunctionDef, c as WorkflowDef, d as WorkflowContext } from '../types-CmhOIEkF.js';
1
+ import { a as FunctionDef, c as WorkflowDef, d as WorkflowContext } from '../types-Curq8YlS.js';
2
2
 
3
3
  /**
4
4
  * Temporal Functions - Testing Utilities
@@ -172,6 +172,28 @@ interface TLSConfig {
172
172
  /** Path to CA certificate */
173
173
  serverRootCACertPath?: string;
174
174
  }
175
+ /**
176
+ * Client interceptors configuration
177
+ *
178
+ * Uses the actual Temporal SDK interceptor types for full compatibility
179
+ * with @temporalio/interceptors-opentelemetry and other interceptor packages.
180
+ *
181
+ * @example
182
+ * ```typescript
183
+ * import { OpenTelemetryWorkflowClientInterceptor } from '@temporalio/interceptors-opentelemetry';
184
+ *
185
+ * const client = tfn.client({
186
+ * temporal: { address: 'localhost:7233' },
187
+ * interceptors: {
188
+ * workflow: [new OpenTelemetryWorkflowClientInterceptor()],
189
+ * },
190
+ * });
191
+ * ```
192
+ */
193
+ interface ClientInterceptors {
194
+ /** Workflow client interceptors (e.g., for OpenTelemetry trace propagation) */
195
+ workflow?: any[];
196
+ }
175
197
  /**
176
198
  * Client configuration options
177
199
  */
@@ -180,6 +202,8 @@ interface ClientConfig {
180
202
  temporal: TemporalConfig;
181
203
  /** Default task queue for workflows */
182
204
  taskQueue?: string;
205
+ /** Client interceptors for customizing behavior */
206
+ interceptors?: ClientInterceptors;
183
207
  }
184
208
  /**
185
209
  * Options when starting a workflow
@@ -195,6 +219,8 @@ interface StartWorkflowOptions {
195
219
  memo?: Record<string, unknown>;
196
220
  /** Search attributes */
197
221
  searchAttributes?: Record<string, unknown>;
222
+ /** Headers for context propagation (e.g., OpenTelemetry trace context) */
223
+ headers?: Record<string, string>;
198
224
  }
199
225
  /**
200
226
  * Handle to a running workflow
@@ -172,6 +172,28 @@ interface TLSConfig {
172
172
  /** Path to CA certificate */
173
173
  serverRootCACertPath?: string;
174
174
  }
175
+ /**
176
+ * Client interceptors configuration
177
+ *
178
+ * Uses the actual Temporal SDK interceptor types for full compatibility
179
+ * with @temporalio/interceptors-opentelemetry and other interceptor packages.
180
+ *
181
+ * @example
182
+ * ```typescript
183
+ * import { OpenTelemetryWorkflowClientInterceptor } from '@temporalio/interceptors-opentelemetry';
184
+ *
185
+ * const client = tfn.client({
186
+ * temporal: { address: 'localhost:7233' },
187
+ * interceptors: {
188
+ * workflow: [new OpenTelemetryWorkflowClientInterceptor()],
189
+ * },
190
+ * });
191
+ * ```
192
+ */
193
+ interface ClientInterceptors {
194
+ /** Workflow client interceptors (e.g., for OpenTelemetry trace propagation) */
195
+ workflow?: any[];
196
+ }
175
197
  /**
176
198
  * Client configuration options
177
199
  */
@@ -180,6 +202,8 @@ interface ClientConfig {
180
202
  temporal: TemporalConfig;
181
203
  /** Default task queue for workflows */
182
204
  taskQueue?: string;
205
+ /** Client interceptors for customizing behavior */
206
+ interceptors?: ClientInterceptors;
183
207
  }
184
208
  /**
185
209
  * Options when starting a workflow
@@ -195,6 +219,8 @@ interface StartWorkflowOptions {
195
219
  memo?: Record<string, unknown>;
196
220
  /** Search attributes */
197
221
  searchAttributes?: Record<string, unknown>;
222
+ /** Headers for context propagation (e.g., OpenTelemetry trace context) */
223
+ headers?: Record<string, string>;
198
224
  }
199
225
  /**
200
226
  * Handle to a running workflow
@@ -1,4 +1,4 @@
1
- import { h as WorkerConfig, k as TFNWorker } from '../types-CmhOIEkF.mjs';
1
+ import { h as WorkerConfig, k as TFNWorker } from '../types-Curq8YlS.mjs';
2
2
 
3
3
  /**
4
4
  * Temporal Functions - Worker Package
@@ -1,4 +1,4 @@
1
- import { h as WorkerConfig, k as TFNWorker } from '../types-CmhOIEkF.js';
1
+ import { h as WorkerConfig, k as TFNWorker } from '../types-Curq8YlS.js';
2
2
 
3
3
  /**
4
4
  * Temporal Functions - Worker Package
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@astami/temporal-functions",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "description": "A lightweight TypeScript framework providing lambda-like DX on top of Temporal's durable execution engine",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",