Documentation

Sandbox data tools

Which sk helpers JavaScript transforms can use and where their limits are.

As of release v10.4.20
Chapters

JavaScript workflow transforms can use bounded, synchronous sk helpers. They perform no network, filesystem or credential access. Namespaces are immutable. Promises and unseeded randomness are unsupported; use the execution clock and sk.uuid() for repeatable values.

TaskHelpersContract
Decimal amountssk.money.add/sub/mul/div/round/compareDecimal strings; div and round require scale and down, halfUp, halfEven or up. No currency conversion.
CSVsk.csv.parse/stringifyExplicit delimiter/header options; export escapes spreadsheet formulas by default. Up to 10,000 rows.
Datessk.date.parse/format/add/startOf/convertZoneDate-only values stay dates. Local datetimes require an IANA zone; ambiguous or missing DST times require explicit earlier/later.
Validationsk.schema.validate/assert, sk.assertLocal schema references only; no remote resolution or asynchronous validators.
URLssk.url.parse/build/query/encode/decodeWHATWG parsing, repeated query entries, UTF-8 percent encoding. No requests.
XMLsk.xml.parse/buildOrdered {name, attributes, children} trees retain mixed text; no DTD or custom entities.
Text and recordssk.template.render, sk.diff.recordsEscaped HTML by default, explicit text mode; bounded list sections. Record diff requires a unique key.
return {
  total: sk.money.add("19.90", "4.95"),
  csv: sk.csv.stringify([{ name: "Ada", amount: "24.85" }]),
  tomorrow: sk.date.add("2024-02-28", 1, "days"),
  greeting: sk.template.render("Hello {{name}}", { name: "Ada" })
};

Text inputs and outputs are limited to 1 MiB, structures to 100,000 nodes and 64 levels. Existing sandbox memory, execution and output budgets still apply. Each helper is embedded and loaded on first access in each sandbox; regenerate it with bun run gen:sandbox-tools and check it with bun run check:sandbox-tools-drift. Package versions and timezone data are pinned in the lockfile. These tools do not add document rendering, OCR or a browser. JavaScript transforms, JSONata and binary parsing use bounded worker processes. The default lane can run two workers in parallel; hooks have a separate lane. Per-engine-process global and per-tenant queue limits apply across default and hook workers. The RSS watchdog is available on Linux; it is a polling limit rather than a kernel-enforced memory ceiling.

On this page

Privacy settings

Necessary preferences

Your privacy choice is stored on your device. Forms also keep a request ID and timestamp for the session, without form contents. Language and appearance follow your browser and system, without saved preferences.

Analytics

Analytics is not available on this website at present. No Google Analytics script is loaded and no measurement is sent.

Privacy notice