bonsai-js 0.2.1 → 0.4.0

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,4 +1,4 @@
1
- import { i as BonsaiPlugin } from "../types-ClpZDF5z.mjs";
1
+ import { a as BonsaiPlugin } from "../types-C58c6SlH.mjs";
2
2
 
3
3
  //#region src/stdlib/strings.d.ts
4
4
  declare const strings: BonsaiPlugin;
@@ -1,4 +1,4 @@
1
- import { r as BonsaiTypeError } from "../errors-t5i9AEaf.mjs";
1
+ import { r as BonsaiTypeError } from "../errors-BONB6P_5.mjs";
2
2
  //#region src/stdlib/strings.ts
3
3
  function expectString$1(val, name) {
4
4
  if (typeof val !== "string") throw new BonsaiTypeError(name, "a string", val);
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["expectString","expectNumber"],"sources":["../../src/stdlib/strings.ts","../../src/stdlib/arrays.ts","../../src/stdlib/math.ts","../../src/stdlib/types.ts","../../src/stdlib/dates.ts","../../src/stdlib/index.ts"],"sourcesContent":["import type { BonsaiPlugin } from '../types.js'\nimport { BonsaiTypeError } from '../errors.js'\n\nfunction expectString(val: unknown, name: string): string {\n if (typeof val !== 'string') throw new BonsaiTypeError(name, 'a string', val)\n return val\n}\n\nconst MAX_STRING_LENGTH = 100_000\n\nexport const strings: BonsaiPlugin = (expr) => {\n expr.addTransform('upper', (val: unknown) => expectString(val, 'upper').toUpperCase())\n expr.addTransform('lower', (val: unknown) => expectString(val, 'lower').toLowerCase())\n expr.addTransform('trim', (val: unknown) => expectString(val, 'trim').trim())\n expr.addTransform('split', (val: unknown, sep: unknown) => {\n if (sep === undefined) throw new BonsaiTypeError('split', 'a separator argument', sep)\n return expectString(val, 'split').split(String(sep))\n })\n expr.addTransform('replace', (val: unknown, search: unknown, replacement: unknown) =>\n expectString(val, 'replace').replace(String(search), String(replacement)))\n expr.addTransform('replaceAll', (val: unknown, search: unknown, replacement: unknown) =>\n expectString(val, 'replaceAll').replaceAll(String(search), String(replacement)))\n expr.addTransform('startsWith', (val: unknown, search: unknown) => expectString(val, 'startsWith').startsWith(String(search)))\n expr.addTransform('endsWith', (val: unknown, search: unknown) => expectString(val, 'endsWith').endsWith(String(search)))\n expr.addTransform('includes', (val: unknown, search: unknown) => expectString(val, 'includes').includes(String(search)))\n expr.addTransform('padStart', (val: unknown, length: unknown, fill: unknown) => {\n const len = Number(length)\n if (!Number.isFinite(len) || len < 0) throw new BonsaiTypeError('padStart', 'a non-negative number for length', length)\n if (len > MAX_STRING_LENGTH) throw new BonsaiTypeError('padStart', `a length ≤ ${MAX_STRING_LENGTH}`, length)\n return expectString(val, 'padStart').padStart(len, fill === undefined ? ' ' : String(fill))\n })\n expr.addTransform('padEnd', (val: unknown, length: unknown, fill: unknown) => {\n const len = Number(length)\n if (!Number.isFinite(len) || len < 0) throw new BonsaiTypeError('padEnd', 'a non-negative number for length', length)\n if (len > MAX_STRING_LENGTH) throw new BonsaiTypeError('padEnd', `a length ≤ ${MAX_STRING_LENGTH}`, length)\n return expectString(val, 'padEnd').padEnd(len, fill === undefined ? ' ' : String(fill))\n })\n}\n","import type { BonsaiPlugin } from '../types.js'\nimport { BonsaiTypeError } from '../errors.js'\n\nfunction expectArray(val: unknown, name: string): unknown[] {\n if (!Array.isArray(val)) throw new BonsaiTypeError(name, 'an array', val)\n return val\n}\n\nfunction hasPromises(results: unknown[]): boolean {\n return results.some(r => r instanceof Promise)\n}\n\nexport const arrays: BonsaiPlugin = (expr) => {\n expr.addTransform('count', (val: unknown) => expectArray(val, 'count').length)\n expr.addTransform('first', (val: unknown) => expectArray(val, 'first')[0])\n expr.addTransform('last', (val: unknown) => {\n const arr = expectArray(val, 'last')\n return arr[arr.length - 1]\n })\n expr.addTransform('reverse', (val: unknown) => [...expectArray(val, 'reverse')].reverse())\n expr.addTransform('flatten', (val: unknown) => expectArray(val, 'flatten').flat())\n expr.addTransform('unique', (val: unknown) => [...new Set(expectArray(val, 'unique'))])\n expr.addTransform('join', (val: unknown, sep: unknown) => expectArray(val, 'join').join(String(sep ?? ',')))\n expr.addTransform('sort', (val: unknown) => {\n const arr = [...expectArray(val, 'sort')]\n return arr.sort((a, b) => {\n if (typeof a === 'number' && typeof b === 'number') return a - b\n return String(a).localeCompare(String(b))\n })\n })\n\n expr.addTransform('filter', (val: unknown, predicate: unknown) => {\n const arr = expectArray(val, 'filter')\n if (typeof predicate !== 'function') return arr.filter(Boolean)\n const fn = predicate as (item: unknown) => unknown\n const results = arr.map(fn)\n if (hasPromises(results)) {\n return Promise.all(results).then(resolved => arr.filter((_, i) => resolved[i]))\n }\n return arr.filter((_, i) => results[i])\n })\n\n expr.addTransform('map', (val: unknown, fn: unknown) => {\n const arr = expectArray(val, 'map')\n if (typeof fn !== 'function') return arr\n const results = arr.map(fn as (item: unknown) => unknown)\n return hasPromises(results) ? Promise.all(results) : results\n })\n\n expr.addTransform('find', (val: unknown, predicate: unknown) => {\n const arr = expectArray(val, 'find')\n if (typeof predicate !== 'function') return undefined\n const fn = predicate as (item: unknown) => unknown\n const results = arr.map(fn)\n if (hasPromises(results)) {\n return Promise.all(results).then(resolved => {\n const idx = resolved.findIndex(Boolean)\n return idx >= 0 ? arr[idx] : undefined\n })\n }\n const idx = results.findIndex(Boolean)\n return idx >= 0 ? arr[idx] : undefined\n })\n\n expr.addTransform('some', (val: unknown, predicate: unknown) => {\n const arr = expectArray(val, 'some')\n if (typeof predicate !== 'function') return arr.some(Boolean)\n const fn = predicate as (item: unknown) => unknown\n const results = arr.map(fn)\n if (hasPromises(results)) {\n return Promise.all(results).then(resolved => resolved.some(Boolean))\n }\n return results.some(Boolean)\n })\n\n expr.addTransform('every', (val: unknown, predicate: unknown) => {\n const arr = expectArray(val, 'every')\n if (typeof predicate !== 'function') return arr.every(Boolean)\n const fn = predicate as (item: unknown) => unknown\n const results = arr.map(fn)\n if (hasPromises(results)) {\n return Promise.all(results).then(resolved => resolved.every(Boolean))\n }\n return results.every(Boolean)\n })\n}\n","import type { BonsaiPlugin } from '../types.js'\nimport { BonsaiTypeError } from '../errors.js'\n\nfunction expectNumber(val: unknown, name: string): number {\n if (typeof val !== 'number') throw new BonsaiTypeError(name, 'a number', val)\n return val\n}\n\nfunction expectNumberArray(val: unknown, name: string): number[] {\n if (!Array.isArray(val)) throw new BonsaiTypeError(name, 'an array of numbers', val)\n for (const item of val) {\n if (typeof item !== 'number') throw new BonsaiTypeError(name, 'an array of numbers (all elements must be numbers)', item)\n }\n return val as number[]\n}\n\nexport const math: BonsaiPlugin = (expr) => {\n expr.addTransform('round', (val: unknown) => Math.round(expectNumber(val, 'round')))\n expr.addTransform('floor', (val: unknown) => Math.floor(expectNumber(val, 'floor')))\n expr.addTransform('ceil', (val: unknown) => Math.ceil(expectNumber(val, 'ceil')))\n expr.addTransform('abs', (val: unknown) => Math.abs(expectNumber(val, 'abs')))\n expr.addTransform('sum', (val: unknown) => expectNumberArray(val, 'sum').reduce((a, b) => a + b, 0))\n expr.addTransform('avg', (val: unknown) => {\n const arr = expectNumberArray(val, 'avg')\n if (arr.length === 0) return 0\n return arr.reduce((a, b) => a + b, 0) / arr.length\n })\n expr.addTransform('clamp', (val: unknown, min: unknown, max: unknown) =>\n Math.min(Math.max(expectNumber(val, 'clamp'), expectNumber(min, 'clamp'), ), expectNumber(max, 'clamp')))\n\n expr.addFunction('min', (...args: unknown[]) => Math.min(...(args as number[])))\n expr.addFunction('max', (...args: unknown[]) => Math.max(...(args as number[])))\n}\n","import type { BonsaiPlugin } from '../types.js'\n\nexport const types: BonsaiPlugin = (expr) => {\n expr.addTransform('isString', (val: unknown) => typeof val === 'string')\n expr.addTransform('isNumber', (val: unknown) => typeof val === 'number')\n expr.addTransform('isArray', (val: unknown) => Array.isArray(val))\n expr.addTransform('isNull', (val: unknown) => val === null)\n expr.addTransform('toBool', (val: unknown) => Boolean(val))\n expr.addTransform('toNumber', (val: unknown) => Number(val))\n expr.addTransform('toString', (val: unknown) => String(val))\n}\n","import type { BonsaiPlugin } from '../types.js'\nimport { BonsaiTypeError } from '../errors.js'\n\nfunction expectNumber(val: unknown, name: string): number {\n if (typeof val !== 'number') throw new BonsaiTypeError(name, 'a number (timestamp)', val)\n return val\n}\n\nfunction expectString(val: unknown, name: string): string {\n if (typeof val !== 'string') throw new BonsaiTypeError(name, 'a string', val)\n return val\n}\n\nexport const dates: BonsaiPlugin = (expr) => {\n expr.addFunction('now', () => Date.now())\n\n expr.addTransform('formatDate', (val: unknown, format: unknown) => {\n const ts = expectNumber(val, 'formatDate')\n const date = new Date(ts)\n if (isNaN(date.getTime())) throw new BonsaiTypeError('formatDate', 'a valid timestamp', ts)\n const fmt = expectString(format, 'formatDate')\n const PAD_WIDTH = 2\n const pad = (n: number) => String(n).padStart(PAD_WIDTH, '0')\n\n return fmt\n .replace('YYYY', String(date.getUTCFullYear()))\n .replace('MM', pad(date.getUTCMonth() + 1))\n .replace('DD', pad(date.getUTCDate()))\n .replace('HH', pad(date.getUTCHours()))\n .replace('mm', pad(date.getUTCMinutes()))\n .replace('ss', pad(date.getUTCSeconds()))\n })\n\n expr.addTransform('diffDays', (val: unknown, other: unknown) => {\n const msPerDay = 86_400_000\n return Math.abs(Math.round((expectNumber(val, 'diffDays') - expectNumber(other, 'diffDays')) / msPerDay))\n })\n}\n","/** String transforms: upper, lower, trim, split, replace, startsWith, endsWith, includes, padStart, padEnd. */\nexport { strings } from './strings.js'\n/** Array transforms: filter, map, find, some, every, sort, reverse, flatten, unique, join, first, last, count. */\nexport { arrays } from './arrays.js'\n/** Math transforms and functions: round, floor, ceil, abs, sum, avg, clamp, min, max. */\nexport { math } from './math.js'\n/** Type-checking transforms: isString, isNumber, isArray, isNull, toBool, toNumber, toString. */\nexport { types } from './types.js'\n/** Date transforms and functions: now, formatDate, diffDays. */\nexport { dates } from './dates.js'\n\nimport type { BonsaiPlugin } from '../types.js'\nimport { strings } from './strings.js'\nimport { arrays } from './arrays.js'\nimport { math } from './math.js'\nimport { types } from './types.js'\nimport { dates } from './dates.js'\n\n/** Convenience plugin that registers all standard library modules at once. */\nexport const all: BonsaiPlugin = (expr) => {\n expr.use(strings)\n expr.use(arrays)\n expr.use(math)\n expr.use(types)\n expr.use(dates)\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["expectString","expectNumber"],"sources":["../../src/stdlib/strings.ts","../../src/stdlib/arrays.ts","../../src/stdlib/math.ts","../../src/stdlib/types.ts","../../src/stdlib/dates.ts","../../src/stdlib/index.ts"],"sourcesContent":["import type { BonsaiPlugin } from '../types.js'\nimport { BonsaiTypeError } from '../errors.js'\n\nfunction expectString(val: unknown, name: string): string {\n if (typeof val !== 'string') throw new BonsaiTypeError(name, 'a string', val)\n return val\n}\n\nconst MAX_STRING_LENGTH = 100_000\n\nexport const strings: BonsaiPlugin = (expr) => {\n expr.addTransform('upper', (val: unknown) => expectString(val, 'upper').toUpperCase())\n expr.addTransform('lower', (val: unknown) => expectString(val, 'lower').toLowerCase())\n expr.addTransform('trim', (val: unknown) => expectString(val, 'trim').trim())\n expr.addTransform('split', (val: unknown, sep: unknown) => {\n if (sep === undefined) throw new BonsaiTypeError('split', 'a separator argument', sep)\n return expectString(val, 'split').split(String(sep))\n })\n expr.addTransform('replace', (val: unknown, search: unknown, replacement: unknown) =>\n expectString(val, 'replace').replace(String(search), String(replacement)))\n expr.addTransform('replaceAll', (val: unknown, search: unknown, replacement: unknown) =>\n expectString(val, 'replaceAll').replaceAll(String(search), String(replacement)))\n expr.addTransform('startsWith', (val: unknown, search: unknown) => expectString(val, 'startsWith').startsWith(String(search)))\n expr.addTransform('endsWith', (val: unknown, search: unknown) => expectString(val, 'endsWith').endsWith(String(search)))\n expr.addTransform('includes', (val: unknown, search: unknown) => expectString(val, 'includes').includes(String(search)))\n expr.addTransform('padStart', (val: unknown, length: unknown, fill: unknown) => {\n const len = Number(length)\n if (!Number.isFinite(len) || len < 0) throw new BonsaiTypeError('padStart', 'a non-negative number for length', length)\n if (len > MAX_STRING_LENGTH) throw new BonsaiTypeError('padStart', `a length ≤ ${MAX_STRING_LENGTH}`, length)\n return expectString(val, 'padStart').padStart(len, fill === undefined ? ' ' : String(fill))\n })\n expr.addTransform('padEnd', (val: unknown, length: unknown, fill: unknown) => {\n const len = Number(length)\n if (!Number.isFinite(len) || len < 0) throw new BonsaiTypeError('padEnd', 'a non-negative number for length', length)\n if (len > MAX_STRING_LENGTH) throw new BonsaiTypeError('padEnd', `a length ≤ ${MAX_STRING_LENGTH}`, length)\n return expectString(val, 'padEnd').padEnd(len, fill === undefined ? ' ' : String(fill))\n })\n}\n","import type { BonsaiPlugin } from '../types.js'\nimport { BonsaiTypeError } from '../errors.js'\n\nfunction expectArray(val: unknown, name: string): unknown[] {\n if (!Array.isArray(val)) throw new BonsaiTypeError(name, 'an array', val)\n return val\n}\n\nfunction hasPromises(results: unknown[]): boolean {\n return results.some(r => r instanceof Promise)\n}\n\nexport const arrays: BonsaiPlugin = (expr) => {\n expr.addTransform('count', (val: unknown) => expectArray(val, 'count').length)\n expr.addTransform('first', (val: unknown) => expectArray(val, 'first')[0])\n expr.addTransform('last', (val: unknown) => {\n const arr = expectArray(val, 'last')\n return arr[arr.length - 1]\n })\n expr.addTransform('reverse', (val: unknown) => [...expectArray(val, 'reverse')].reverse())\n expr.addTransform('flatten', (val: unknown) => expectArray(val, 'flatten').flat())\n expr.addTransform('unique', (val: unknown) => [...new Set(expectArray(val, 'unique'))])\n expr.addTransform('join', (val: unknown, sep: unknown) => expectArray(val, 'join').join(String(sep ?? ',')))\n expr.addTransform('sort', (val: unknown) => {\n const arr = [...expectArray(val, 'sort')]\n return arr.sort((a, b) => {\n if (typeof a === 'number' && typeof b === 'number') return a - b\n return String(a).localeCompare(String(b))\n })\n })\n\n expr.addTransform('filter', (val: unknown, predicate: unknown) => {\n const arr = expectArray(val, 'filter')\n if (typeof predicate !== 'function') return arr.filter(Boolean)\n const fn = predicate as (item: unknown) => unknown\n const results = arr.map(fn)\n if (hasPromises(results)) {\n return Promise.all(results).then(resolved => arr.filter((_, i) => resolved[i]))\n }\n return arr.filter((_, i) => results[i])\n })\n\n expr.addTransform('map', (val: unknown, fn: unknown) => {\n const arr = expectArray(val, 'map')\n if (typeof fn !== 'function') return arr\n const results = arr.map(fn as (item: unknown) => unknown)\n return hasPromises(results) ? Promise.all(results) : results\n })\n\n expr.addTransform('find', (val: unknown, predicate: unknown) => {\n const arr = expectArray(val, 'find')\n if (typeof predicate !== 'function') return undefined\n const fn = predicate as (item: unknown) => unknown\n const results = arr.map(fn)\n if (hasPromises(results)) {\n return Promise.all(results).then(resolved => {\n const idx = resolved.findIndex(Boolean)\n return idx >= 0 ? arr[idx] : undefined\n })\n }\n const idx = results.findIndex(Boolean)\n return idx >= 0 ? arr[idx] : undefined\n })\n\n expr.addTransform('some', (val: unknown, predicate: unknown) => {\n const arr = expectArray(val, 'some')\n if (typeof predicate !== 'function') return arr.some(Boolean)\n const fn = predicate as (item: unknown) => unknown\n const results = arr.map(fn)\n if (hasPromises(results)) {\n return Promise.all(results).then(resolved => resolved.some(Boolean))\n }\n return results.some(Boolean)\n })\n\n expr.addTransform('every', (val: unknown, predicate: unknown) => {\n const arr = expectArray(val, 'every')\n if (typeof predicate !== 'function') return arr.every(Boolean)\n const fn = predicate as (item: unknown) => unknown\n const results = arr.map(fn)\n if (hasPromises(results)) {\n return Promise.all(results).then(resolved => resolved.every(Boolean))\n }\n return results.every(Boolean)\n })\n}\n","import type { BonsaiPlugin } from '../types.js'\nimport { BonsaiTypeError } from '../errors.js'\n\nfunction expectNumber(val: unknown, name: string): number {\n if (typeof val !== 'number') throw new BonsaiTypeError(name, 'a number', val)\n return val\n}\n\nfunction expectNumberArray(val: unknown, name: string): number[] {\n if (!Array.isArray(val)) throw new BonsaiTypeError(name, 'an array of numbers', val)\n for (const item of val) {\n if (typeof item !== 'number') throw new BonsaiTypeError(name, 'an array of numbers (all elements must be numbers)', item)\n }\n return val as number[]\n}\n\nexport const math: BonsaiPlugin = (expr) => {\n expr.addTransform('round', (val: unknown) => Math.round(expectNumber(val, 'round')))\n expr.addTransform('floor', (val: unknown) => Math.floor(expectNumber(val, 'floor')))\n expr.addTransform('ceil', (val: unknown) => Math.ceil(expectNumber(val, 'ceil')))\n expr.addTransform('abs', (val: unknown) => Math.abs(expectNumber(val, 'abs')))\n expr.addTransform('sum', (val: unknown) => expectNumberArray(val, 'sum').reduce((a, b) => a + b, 0))\n expr.addTransform('avg', (val: unknown) => {\n const arr = expectNumberArray(val, 'avg')\n if (arr.length === 0) return 0\n return arr.reduce((a, b) => a + b, 0) / arr.length\n })\n expr.addTransform('clamp', (val: unknown, min: unknown, max: unknown) =>\n Math.min(Math.max(expectNumber(val, 'clamp'), expectNumber(min, 'clamp'), ), expectNumber(max, 'clamp')))\n\n expr.addFunction('min', (...args: unknown[]) => Math.min(...(args as number[])))\n expr.addFunction('max', (...args: unknown[]) => Math.max(...(args as number[])))\n}\n","import type { BonsaiPlugin } from '../types.js'\n\nexport const types: BonsaiPlugin = (expr) => {\n expr.addTransform('isString', (val: unknown) => typeof val === 'string')\n expr.addTransform('isNumber', (val: unknown) => typeof val === 'number')\n expr.addTransform('isArray', (val: unknown) => Array.isArray(val))\n expr.addTransform('isNull', (val: unknown) => val === null)\n expr.addTransform('toBool', (val: unknown) => Boolean(val))\n expr.addTransform('toNumber', (val: unknown) => Number(val))\n expr.addTransform('toString', (val: unknown) => String(val))\n}\n","import type { BonsaiPlugin } from '../types.js'\nimport { BonsaiTypeError } from '../errors.js'\n\nfunction expectNumber(val: unknown, name: string): number {\n if (typeof val !== 'number') throw new BonsaiTypeError(name, 'a number (timestamp)', val)\n return val\n}\n\nfunction expectString(val: unknown, name: string): string {\n if (typeof val !== 'string') throw new BonsaiTypeError(name, 'a string', val)\n return val\n}\n\nexport const dates: BonsaiPlugin = (expr) => {\n expr.addFunction('now', () => Date.now())\n\n expr.addTransform('formatDate', (val: unknown, format: unknown) => {\n const ts = expectNumber(val, 'formatDate')\n const date = new Date(ts)\n if (isNaN(date.getTime())) throw new BonsaiTypeError('formatDate', 'a valid timestamp', ts)\n const fmt = expectString(format, 'formatDate')\n const PAD_WIDTH = 2\n const pad = (n: number) => String(n).padStart(PAD_WIDTH, '0')\n\n return fmt\n .replace('YYYY', String(date.getUTCFullYear()))\n .replace('MM', pad(date.getUTCMonth() + 1))\n .replace('DD', pad(date.getUTCDate()))\n .replace('HH', pad(date.getUTCHours()))\n .replace('mm', pad(date.getUTCMinutes()))\n .replace('ss', pad(date.getUTCSeconds()))\n })\n\n expr.addTransform('diffDays', (val: unknown, other: unknown) => {\n const msPerDay = 86_400_000\n return Math.abs(Math.round((expectNumber(val, 'diffDays') - expectNumber(other, 'diffDays')) / msPerDay))\n })\n}\n","/** String transforms: upper, lower, trim, split, replace, startsWith, endsWith, includes, padStart, padEnd. */\nexport { strings } from './strings.js'\n/** Array transforms: filter, map, find, some, every, sort, reverse, flatten, unique, join, first, last, count. */\nexport { arrays } from './arrays.js'\n/** Math transforms and functions: round, floor, ceil, abs, sum, avg, clamp, min, max. */\nexport { math } from './math.js'\n/** Type-checking transforms: isString, isNumber, isArray, isNull, toBool, toNumber, toString. */\nexport { types } from './types.js'\n/** Date transforms and functions: now, formatDate, diffDays. */\nexport { dates } from './dates.js'\n\nimport type { BonsaiPlugin } from '../types.js'\nimport { strings } from './strings.js'\nimport { arrays } from './arrays.js'\nimport { math } from './math.js'\nimport { types } from './types.js'\nimport { dates } from './dates.js'\n\n/** Convenience plugin that registers all standard library modules at once. */\nexport const all: BonsaiPlugin = (expr) => {\n expr.use(strings)\n expr.use(arrays)\n expr.use(math)\n expr.use(types)\n expr.use(dates)\n}\n"],"mappings":"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"}
@@ -1,4 +1,19 @@
1
1
  //#region src/types.d.ts
2
+ /** Closed set of type names produced by runtime type inference. */
3
+ type InferredTypeName = 'string' | 'number' | 'boolean' | 'array' | 'object' | 'null' | 'undefined';
4
+ /** Read-only snapshot of the security policy, returned by {@link BonsaiInstance.getPolicy}. */
5
+ interface PolicySnapshot {
6
+ readonly allowedProperties?: readonly string[];
7
+ readonly deniedProperties?: readonly string[];
8
+ }
9
+ /** Discriminated result from {@link resolvePropertyChain}. */
10
+ type ResolveResult = {
11
+ found: true;
12
+ value: unknown;
13
+ } | {
14
+ found: false;
15
+ reason: 'blocked' | 'not-object' | 'not-found';
16
+ };
2
17
  type BinaryOperator = '||' | '&&' | '==' | '!=' | '<' | '>' | '<=' | '>=' | '+' | '-' | '*' | '/' | '%' | '**' | 'in' | 'not';
3
18
  type UnaryOperator = '!' | '-' | '+';
4
19
  type BinaryExpressionOperator = Exclude<BinaryOperator, 'not'> | 'not in' | '??';
@@ -172,45 +187,87 @@ interface BonsaiOptions {
172
187
  type TransformFn = (value: unknown, ...args: unknown[]) => unknown | Promise<unknown>;
173
188
  /** A function is called directly by name: `myFunction(arg1, arg2)`. */
174
189
  type FunctionFn = (...args: unknown[]) => unknown | Promise<unknown>;
175
- /** A plugin receives the Bonsai instance and extends it with transforms or functions. */
176
- type BonsaiPlugin = (instance: BonsaiInstance) => void;
177
- /** Core Bonsai instance returned by `bonsai()`. */
178
- interface BonsaiInstance {
190
+ /** The shape of an evaluation context object. */
191
+ type BonsaiContext = object;
192
+ type EmptyContext = Record<never, never>;
193
+ /**
194
+ * Evaluation/compiled call sites only require a `context` argument when the
195
+ * instance context type has required keys. Untyped instances keep the current
196
+ * ergonomic `evaluateSync(expr)` / `compiled.evaluateSync()` behavior.
197
+ */
198
+ type EvaluationContextArgs<TCtx extends BonsaiContext = Record<string, unknown>> = EmptyContext extends TCtx ? [context?: TCtx] : [context: TCtx];
199
+ /**
200
+ * A context-aware function. Receives the live evaluation context as its first
201
+ * parameter, followed by the call's argument values. The context is typed
202
+ * `Readonly<TCtx>` to signal read-only intent; it is passed by reference and is
203
+ * not copied or frozen, so treat it as read-only. Registered via
204
+ * {@link BonsaiInstance.addContextFunction}.
205
+ */
206
+ type ContextFunctionFn<TCtx extends BonsaiContext = Record<string, unknown>> = (context: Readonly<TCtx>, ...args: unknown[]) => unknown | Promise<unknown>;
207
+ /** A plugin receives a Bonsai instance and extends it with transforms or functions. */
208
+ type BonsaiPlugin<TCtx extends BonsaiContext = Record<string, unknown>> = (instance: BonsaiInstance<TCtx>) => void;
209
+ /**
210
+ * Core Bonsai instance returned by `bonsai()`.
211
+ *
212
+ * The members below are intentionally declared with method signatures rather
213
+ * than property signatures (so `oxlint`'s `typescript/method-signature-style`
214
+ * is disabled for this package). Method signatures are bivariant in their
215
+ * parameters, and that bivariance is load-bearing: it is what lets a plugin
216
+ * typed against a narrower context (`BonsaiPlugin<Minimal>`) apply to an
217
+ * instance with a wider context (`bonsai<Wider>()`), and lets an untyped
218
+ * plugin apply to a typed instance. Property signatures enforce strict
219
+ * contravariance, which rejects both of those documented affordances (because
220
+ * `TCtx` flows into the `context` parameter of `evaluate`/`evaluateSync`/
221
+ * `compile`). See the plugin-widening tests in `tests/context-functions*.ts`.
222
+ */
223
+ interface BonsaiInstance<TCtx extends BonsaiContext = Record<string, unknown>> {
179
224
  /** Register a plugin that extends this instance with transforms/functions. */
180
- use(plugin: BonsaiPlugin): this;
225
+ use(plugin: BonsaiPlugin<TCtx>): this;
181
226
  /** Register a named transform for use with the pipe operator (`|>`). */
182
227
  addTransform(name: string, fn: TransformFn): this;
183
228
  /** Register a named function callable as `name(args)` in expressions. */
184
229
  addFunction(name: string, fn: FunctionFn): this;
230
+ /**
231
+ * Register a context-aware function callable as `name(args)` in expressions.
232
+ * The function receives the live evaluation context as its first parameter
233
+ * (typed `Readonly<TCtx>` for read-only intent; passed by reference, not
234
+ * copied or frozen). Shares a namespace with {@link addFunction}: registering
235
+ * the same name with either method overwrites the previous registration.
236
+ */
237
+ addContextFunction(name: string, fn: ContextFunctionFn<TCtx>): this;
185
238
  /** Remove a previously registered transform. Returns true if it existed. */
186
239
  removeTransform(name: string): boolean;
187
- /** Remove a previously registered function. Returns true if it existed. */
240
+ /** Remove a previously registered function (pure or context-aware). Returns true if it existed. */
188
241
  removeFunction(name: string): boolean;
189
242
  /** Check whether a transform with the given name is registered. */
190
243
  hasTransform(name: string): boolean;
191
- /** Check whether a function with the given name is registered. */
244
+ /** Check whether a function (pure or context-aware) with the given name is registered. */
192
245
  hasFunction(name: string): boolean;
246
+ /** Check whether a function with the given name was registered via {@link addContextFunction}. */
247
+ isContextFunction(name: string): boolean;
193
248
  /** List all registered transform names. */
194
249
  listTransforms(): string[];
195
- /** List all registered function names. */
250
+ /** List all registered function names (both pure and context-aware). */
196
251
  listFunctions(): string[];
252
+ /** Returns a read-only snapshot of the security policy for autocomplete filtering. */
253
+ getPolicy(): PolicySnapshot;
197
254
  /** Clear the compiled expression and AST caches. */
198
255
  clearCache(): void;
199
256
  /** Pre-compile an expression for repeated evaluation. */
200
- compile(expression: string): CompiledExpression;
257
+ compile(expression: string): CompiledExpression<TCtx>;
201
258
  /** Evaluate an expression asynchronously. Required when transforms/functions are async. */
202
- evaluate<T = unknown>(expression: string, context?: Record<string, unknown>): Promise<T>;
259
+ evaluate<T = unknown>(expression: string, ...args: EvaluationContextArgs<TCtx>): Promise<T>;
203
260
  /** Evaluate an expression synchronously. Throws if a transform/function returns a Promise. */
204
- evaluateSync<T = unknown>(expression: string, context?: Record<string, unknown>): T;
261
+ evaluateSync<T = unknown>(expression: string, ...args: EvaluationContextArgs<TCtx>): T;
205
262
  /** Check if an expression is syntactically valid without evaluating it. */
206
263
  validate(expression: string): ValidationResult;
207
264
  }
208
265
  /** A pre-compiled expression that can be evaluated repeatedly with different contexts. */
209
- interface CompiledExpression {
266
+ interface CompiledExpression<TCtx extends BonsaiContext = Record<string, unknown>> {
210
267
  /** Evaluate asynchronously. Required when transforms/functions are async. */
211
- evaluate<T = unknown>(context?: Record<string, unknown>): Promise<T>;
268
+ evaluate<T = unknown>(...args: EvaluationContextArgs<TCtx>): Promise<T>;
212
269
  /** Evaluate synchronously. Throws if a transform/function returns a Promise. */
213
- evaluateSync<T = unknown>(context?: Record<string, unknown>): T;
270
+ evaluateSync<T = unknown>(...args: EvaluationContextArgs<TCtx>): T;
214
271
  /** The optimized AST after constant folding and dead branch elimination. */
215
272
  readonly ast: ASTNode;
216
273
  /** The original expression string. */
@@ -243,5 +300,5 @@ interface ValidationError {
243
300
  formatted?: string;
244
301
  }
245
302
  //#endregion
246
- export { CompiledExpression as a, Token as c, ValidationResult as d, BonsaiPlugin as i, TokenType as l, BonsaiInstance as n, ExpressionReferences as o, BonsaiOptions as r, FunctionFn as s, ASTNode as t, TransformFn as u };
247
- //# sourceMappingURL=types-ClpZDF5z.d.mts.map
303
+ export { BonsaiPlugin as a, ExpressionReferences as c, PolicySnapshot as d, ResolveResult as f, ValidationResult as g, TransformFn as h, BonsaiOptions as i, FunctionFn as l, TokenType as m, BonsaiContext as n, CompiledExpression as o, Token as p, BonsaiInstance as r, ContextFunctionFn as s, ASTNode as t, InferredTypeName as u };
304
+ //# sourceMappingURL=types-C58c6SlH.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-C58c6SlH.d.mts","names":[],"sources":["../src/types.ts"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bonsai-js",
3
- "version": "0.2.1",
3
+ "version": "0.4.0",
4
4
  "description": "A safe, zero-dependency expression language for rules, filters, and templates",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -14,6 +14,10 @@
14
14
  "./stdlib": {
15
15
  "types": "./dist/stdlib/index.d.mts",
16
16
  "import": "./dist/stdlib/index.mjs"
17
+ },
18
+ "./autocomplete": {
19
+ "types": "./dist/autocomplete/index.d.mts",
20
+ "import": "./dist/autocomplete/index.mjs"
17
21
  }
18
22
  },
19
23
  "files": [
@@ -57,7 +61,7 @@
57
61
  "lefthook": "^2.1.3",
58
62
  "oxlint": "^1.51.0",
59
63
  "tsdown": "^0.21.0",
60
- "typescript": "^5.9.3",
64
+ "typescript": "^6.0.2",
61
65
  "vitest": "^4.0.18"
62
66
  }
63
67
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"types-ClpZDF5z.d.mts","names":[],"sources":["../src/types.ts"],"mappings":";KAUY,cAAA;AAAA,KAOA,aAAA;AAAA,KACA,wBAAA,GAA2B,OAAA,CAAQ,cAAA;AAAA,KAEnC,aAAA,GAAgB,cAAA,GAAiB,aAAA;AAAA,KAEjC,gBAAA;AAAA,UAEF,SAAA;EACR,KAAA;EACA,GAAA;AAAA;AAAA,KAGU,KAAA;EACN,IAAA;EAAgB,KAAA;AAAA,IAAkB,SAAA;EAClC,IAAA;EAAgB,KAAA;AAAA,IAAkB,SAAA;EAClC,IAAA;EAAyB,KAAA;AAAA,IAAkB,SAAA;EAC3C,IAAA;EAAiB,KAAA;AAAA,IAA4B,SAAA;EAC7C,IAAA;EAAc,KAAA;AAAA,IAAkB,SAAA;EAChC,IAAA;EAAmB,KAAA;AAAA,IAAuB,SAAA;EAC1C,IAAA;EAAoB,KAAA;AAAA,IAAkB,SAAA;EACtC,IAAA;EAAkB,KAAA,EAAO,aAAA;AAAA,IAAkB,SAAA;EAC3C,IAAA;EAAqB,KAAA,EAAO,gBAAA;AAAA,IAAqB,SAAA;EACjD,IAAA;EAAc,KAAA;AAAA,IAAgB,SAAA;EAC9B,IAAA;EAAuB,KAAA;AAAA,IAAgB,SAAA;EACvC,IAAA;EAA2B,KAAA;AAAA,IAAgB,SAAA;EAC3C,IAAA;EAAgB,KAAA;AAAA,IAAiB,SAAA;EACjC,IAAA;EAAa,KAAA;AAAA,IAAc,SAAA;AAAA,KAErB,SAAA,GAAY,KAAA;AAAA,UAId,QAAA;EACR,KAAA;EACA,GAAA;AAAA;AAAA,UAGe,aAAA,SAAsB,QAAA;EACrC,IAAA;EACA,KAAA;AAAA;AAAA,UAGe,aAAA,SAAsB,QAAA;EACrC,IAAA;EACA,KAAA;AAAA;AAAA,UAGe,cAAA,SAAuB,QAAA;EACtC,IAAA;EACA,KAAA;AAAA;AAAA,UAGe,WAAA,SAAoB,QAAA;EACnC,IAAA;EACA,KAAA;AAAA;AAAA,UAGe,gBAAA,SAAyB,QAAA;EACxC,IAAA;EACA,KAAA;AAAA;AAAA,UAGe,UAAA,SAAmB,QAAA;EAClC,IAAA;EACA,IAAA;AAAA;AAAA,UAGe,gBAAA,SAAyB,QAAA;EACxC,IAAA;EACA,QAAA,EAAU,wBAAA;EACV,IAAA,EAAM,OAAA;EACN,KAAA,EAAO,OAAA;AAAA;AAAA,UAGQ,eAAA,SAAwB,QAAA;EACvC,IAAA;EACA,QAAA,EAAU,aAAA;EACV,OAAA,EAAS,OAAA;AAAA;AAAA,UAGM,qBAAA,SAA8B,QAAA;EAC7C,IAAA;EACA,IAAA,EAAM,OAAA;EACN,UAAA,EAAY,OAAA;EACZ,SAAA,EAAW,OAAA;AAAA;AAAA,UAGI,gBAAA,SAAyB,QAAA;EACxC,IAAA;EACA,MAAA,EAAQ,OAAA;EACR,QAAA,EAAU,OAAA;EACV,QAAA;AAAA;AAAA,UAGe,wBAAA,SAAiC,QAAA;EAChD,IAAA;EACA,MAAA,EAAQ,OAAA;EACR,QAAA,EAAU,OAAA;EACV,QAAA;AAAA;AAAA,UAGe,YAAA,SAAqB,QAAA;EACpC,IAAA;EAAA,SACS,QAAA,YAAoB,OAAA,GAAU,aAAA;AAAA;AAAA,UAGxB,aAAA,SAAsB,QAAA;EACrC,IAAA;EAAA,SACS,UAAA,WAAqB,cAAA;AAAA;AAAA,UAGf,cAAA,SAAuB,QAAA;EACtC,IAAA;EACA,GAAA,EAAK,OAAA;EACL,KAAA,EAAO,OAAA;EACP,QAAA;AAAA;AAAA,UAGe,cAAA,SAAuB,QAAA;EACtC,IAAA;EACA,MAAA,EAAQ,OAAA;EAAA,SACC,IAAA,WAAe,OAAA;AAAA;AAAA,UAGT,cAAA,SAAuB,QAAA;EACtC,IAAA;EACA,KAAA,EAAO,OAAA;EACP,SAAA,EAAW,OAAA;AAAA;AAAA,UAGI,eAAA,SAAwB,QAAA;EACvC,IAAA;EAAA,SACS,KAAA,YAAiB,aAAA,GAAgB,OAAA;AAAA;AAAA,UAG3B,aAAA,SAAsB,QAAA;EACrC,IAAA;EACA,QAAA,EAAU,OAAA;AAAA;AAAA,UAGK,cAAA,SAAuB,QAAA;EACtC,IAAA;EACA,QAAA;AAAA;AAAA,UAGe,gBAAA,SAAyB,QAAA;EACxC,IAAA;EACA,IAAA,EAAM,OAAA;AAAA;AAAA,UAGS,cAAA,SAAuB,QAAA;EACtC,IAAA;AAAA;AAAA,KAGU,OAAA,GACR,aAAA,GACA,aAAA,GACA,cAAA,GACA,WAAA,GACA,gBAAA,GACA,UAAA,GACA,gBAAA,GACA,eAAA,GACA,qBAAA,GACA,gBAAA,GACA,wBAAA,GACA,YAAA,GACA,aAAA,GACA,cAAA,GACA,cAAA,GACA,eAAA,GACA,aAAA,GACA,cAAA,GACA,gBAAA,GACA,cAAA;;UAKa,aAAA;EAnHX;EAqHJ,OAAA;EAlHgC;EAoHhC,QAAA;EAlHU;EAoHV,cAAA;EAlHO;EAoHP,iBAAA;EAxHgD;EA0HhD,gBAAA;EA1HwC;EA4HxC,SAAA;AAAA;;KAIU,WAAA,IAAe,KAAA,cAAmB,IAAA,0BAA8B,OAAA;;KAGhE,UAAA,OAAiB,IAAA,0BAA8B,OAAA;;KAG/C,YAAA,IAAgB,QAAA,EAAU,cAAA;;UAGrB,cAAA;EAlIgB;EAoI/B,GAAA,CAAI,MAAA,EAAQ,YAAA;EAlIF;EAoIV,YAAA,CAAa,IAAA,UAAc,EAAA,EAAI,WAAA;EAtIQ;EAwIvC,WAAA,CAAY,IAAA,UAAc,EAAA,EAAI,UAAA;EAxIiB;EA0I/C,eAAA,CAAgB,IAAA;EAzIhB;EA2IA,cAAA,CAAe,IAAA;EA1IL;EA4IV,YAAA,CAAa,IAAA;EA3IJ;EA6IT,WAAA,CAAY,IAAA;EA7II;EA+IhB,cAAA;EA5IqC;EA8IrC,aAAA;EA5IM;EA8IN,UAAA;EA5IW;EA8IX,OAAA,CAAQ,UAAA,WAAqB,kBAAA;EAlJwB;EAoJrD,QAAA,cAAsB,UAAA,UAAoB,OAAA,GAAU,MAAA,oBAA0B,OAAA,CAAQ,CAAA;EApJzC;EAsJ7C,YAAA,cAA0B,UAAA,UAAoB,OAAA,GAAU,MAAA,oBAA0B,CAAA;EApJlF;EAsJA,QAAA,CAAS,UAAA,WAAqB,gBAAA;AAAA;;UAIf,kBAAA;EAxJJ;EA0JX,QAAA,cAAsB,OAAA,GAAU,MAAA,oBAA0B,OAAA,CAAQ,CAAA;EA1JhD;EA4JlB,YAAA,cAA0B,OAAA,GAAU,MAAA,oBAA0B,CAAA;EAzJ9B;EAAA,SA2JvB,GAAA,EAAK,OAAA;EAzJN;EAAA,SA2JC,MAAA;AAAA;;UAIM,oBAAA;EACf,WAAA;EACA,UAAA;EACA,SAAA;AAAA;;KAIU,gBAAA;EACN,KAAA;EAAa,MAAA;EAAY,GAAA,EAAK,OAAA;EAAS,UAAA,EAAY,oBAAA;AAAA;EACnD,KAAA;EAAc,MAAA,EAAQ,eAAA;AAAA;;UAGX,eAAA;EACf,OAAA;EACA,QAAA;IAAY,IAAA;IAAc,MAAA;EAAA;EAC1B,UAAA;EACA,SAAA;AAAA"}