mirror of
https://github.com/n8n-io/n8n.git
synced 2026-06-04 18:49:20 +02:00
91 lines
2.9 KiB
TypeScript
91 lines
2.9 KiB
TypeScript
import { DateTime, Duration, Interval } from 'luxon';
|
|
|
|
import { extend, extendOptional } from '../extensions/extend';
|
|
|
|
import { SafeObject, SafeError, ExpressionError } from './safe-globals';
|
|
import { createDeepLazyProxy } from './lazy-proxy';
|
|
import { resetDataProxies } from './reset';
|
|
import { __prepareForTransfer } from './serialize';
|
|
|
|
// Augment globalThis with runtime properties
|
|
declare global {
|
|
namespace globalThis {
|
|
// Callbacks from bridge (ivm.Reference)
|
|
var __getValueAtPath: any;
|
|
var __getArrayElement: any;
|
|
var __callFunctionAtPath: any;
|
|
|
|
// Data container
|
|
var __data: Record<string, unknown>;
|
|
|
|
// Proxy creator function
|
|
var createDeepLazyProxy: (basePath?: string[]) => any;
|
|
|
|
// Reset function (Step 3)
|
|
var resetDataProxies: () => void;
|
|
|
|
// Safe wrappers
|
|
var SafeObject: typeof Object;
|
|
var SafeError: typeof Error;
|
|
|
|
// Expression engine globals
|
|
var DateTime: typeof import('luxon').DateTime;
|
|
var Duration: typeof import('luxon').Duration;
|
|
var Interval: typeof import('luxon').Interval;
|
|
var __prepareForTransfer: (value: unknown) => unknown;
|
|
var extend: typeof import('../extensions/extend').extend;
|
|
var extendOptional: typeof import('../extensions/extend').extendOptional;
|
|
|
|
// Workflow data exposed for expression access
|
|
var $json: unknown;
|
|
var $binary: unknown;
|
|
var $input: unknown;
|
|
var $node: unknown;
|
|
var $parameter: unknown;
|
|
var $workflow: unknown;
|
|
var $prevNode: unknown;
|
|
var $data: unknown;
|
|
var $env: unknown;
|
|
var $runIndex: number | undefined;
|
|
var $itemIndex: number | undefined;
|
|
var $now: import('luxon').DateTime;
|
|
var $today: import('luxon').DateTime;
|
|
var $items: unknown;
|
|
var $execution: unknown;
|
|
var $vars: unknown;
|
|
var $secrets: unknown;
|
|
var $executionId: string | undefined;
|
|
var $resumeWebhookUrl: string | undefined;
|
|
var $webhookId: string | undefined;
|
|
var $nodeId: string | undefined;
|
|
var $nodeVersion: number | undefined;
|
|
var $: (nodeName: string) => unknown;
|
|
}
|
|
}
|
|
|
|
// ============================================================================
|
|
// Library Setup
|
|
// ============================================================================
|
|
|
|
// Expose globals required by tournament-transformed expressions
|
|
globalThis.extend = extend;
|
|
globalThis.extendOptional = extendOptional;
|
|
globalThis.DateTime = DateTime;
|
|
globalThis.Duration = Duration;
|
|
globalThis.Interval = Interval;
|
|
|
|
// ============================================================================
|
|
// Expose security globals and runtime functions
|
|
// ============================================================================
|
|
|
|
globalThis.SafeObject = SafeObject;
|
|
globalThis.SafeError = SafeError;
|
|
(globalThis as any).ExpressionError = ExpressionError;
|
|
|
|
globalThis.createDeepLazyProxy = createDeepLazyProxy;
|
|
globalThis.resetDataProxies = resetDataProxies;
|
|
globalThis.__prepareForTransfer = __prepareForTransfer;
|
|
|
|
// Initialize empty __data object (populated by resetDataProxies before each evaluation)
|
|
globalThis.__data = {};
|