@kernlang/python 4.0.1-canary.222.1.f06f1a51 → 4.0.1-canary.225.1.f5c8d5fe
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.
- package/dist/codegen-body-python.d.ts +13 -0
- package/dist/codegen-body-python.js +1221 -150
- package/dist/codegen-body-python.js.map +1 -1
- package/dist/core/emit-models.js +5 -1
- package/dist/core/emit-models.js.map +1 -1
- package/dist/core/expr/helpers.d.ts +77 -0
- package/dist/core/expr/helpers.js +584 -6
- package/dist/core/expr/helpers.js.map +1 -1
- package/dist/core/expr/index.d.ts +1 -1
- package/dist/core/expr/index.js +139 -9
- package/dist/core/expr/index.js.map +1 -1
- package/dist/core/expr/list-ops.d.ts +10 -1
- package/dist/core/expr/list-ops.js +5 -9
- package/dist/core/expr/list-ops.js.map +1 -1
- package/dist/generators/core.js +5 -1
- package/dist/generators/core.js.map +1 -1
- package/dist/generators/ground.d.ts +13 -0
- package/dist/generators/ground.js +117 -12
- package/dist/generators/ground.js.map +1 -1
- package/package.json +5 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/core/expr/helpers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/core/expr/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared Python expression lowering — framework-agnostic.
|
|
3
3
|
*/
|
|
4
|
-
export { KERN_FMT_HELPER_PY, KERN_I32_HELPER_PY, KERN_JS_ARRAY_HELPERS_PY, KERN_JS_HELPER_PY, KERN_JS_OBJECT_HELPERS_PY, KERN_JS_STRING_HELPERS_PY, KERN_PAIR_HELPERS_PY, KERN_TMOD_HELPER_PY, } from './helpers.js';
|
|
4
|
+
export { KERN_DECIMAL_STR_HELPER_PY, KERN_FMT_HELPER_PY, KERN_I32_HELPER_PY, KERN_JS_ARRAY_FROM_HELPER_PY, KERN_JS_ARRAY_HELPERS_PY, KERN_JS_HELPER_PY, KERN_JS_MATH_HELPERS_PY, KERN_JS_NUMBER_HELPERS_PY, KERN_JS_OBJECT_HELPERS_PY, KERN_JS_STRING_HELPERS_PY, KERN_JSON_STRINGIFY_SHIM_PY, KERN_NULLISH_HELPER_PY, KERN_PAIR_HELPERS_PY, KERN_REGEX_MATCH_HELPER_PY, KERN_REGEX_MATCHALL_HELPER_PY, KERN_TMOD_HELPER_PY, KERN_TO_NUMBER_HELPER_PY, } from './helpers.js';
|
|
5
5
|
export declare function quoteObjectKeysOutsideStrings(expr: string): string;
|
|
6
6
|
export declare function rewriteExpr(expr: string, pathParams: string[], bodyFields?: Set<string>, authUser?: boolean, imports?: Set<string>, hoistedDefs?: string[], closureSeq?: {
|
|
7
7
|
n: number;
|
package/dist/core/expr/index.js
CHANGED
|
@@ -1,11 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared Python expression lowering — framework-agnostic.
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import { PORTABLE_LOGIC_PRIMITIVES } from '@kernlang/core';
|
|
5
|
+
import { lowerJsClosureBodyToPython } from '@kernlang/core/node';
|
|
5
6
|
import { toSnakeCase } from '../../type-map.js';
|
|
6
|
-
import { KERN_I32_HELPER_PY, KERN_JS_ARRAY_HELPERS_PY, KERN_JS_HELPER_PY, KERN_JS_OBJECT_HELPERS_PY, KERN_JS_STRING_HELPERS_PY, KERN_TMOD_HELPER_PY, } from './helpers.js';
|
|
7
|
+
import { KERN_I32_HELPER_PY, KERN_JS_ARRAY_FROM_HELPER_PY, KERN_JS_ARRAY_HELPERS_PY, KERN_JS_HELPER_PY, KERN_JS_OBJECT_HELPERS_PY, KERN_JS_STRING_HELPERS_PY, KERN_TMOD_HELPER_PY, KERN_TO_NUMBER_HELPER_PY, } from './helpers.js';
|
|
7
8
|
import { isSharedPortableArrayMethod, isSharedPortableArrayProperty, lowerPortableArrayMethodPy, lowerPortableArrayPropertyPy, } from './list-ops.js';
|
|
8
|
-
export {
|
|
9
|
+
export {
|
|
10
|
+
// DECIMAL Slice 1 — KERN-owned canonical Decimal stringifier (`_kern_decimal_str`).
|
|
11
|
+
KERN_DECIMAL_STR_HELPER_PY, KERN_FMT_HELPER_PY, KERN_I32_HELPER_PY, KERN_JS_ARRAY_FROM_HELPER_PY, KERN_JS_ARRAY_HELPERS_PY, KERN_JS_HELPER_PY, KERN_JS_MATH_HELPERS_PY, KERN_JS_NUMBER_HELPERS_PY, KERN_JS_OBJECT_HELPERS_PY, KERN_JS_STRING_HELPERS_PY,
|
|
12
|
+
// Slice S7 — sentinel-aware Json.stringify shim (`_kern_json_stringify`).
|
|
13
|
+
KERN_JSON_STRINGIFY_SHIM_PY,
|
|
14
|
+
// Slice S7 — dual-sentinel nullish/equality substrate
|
|
15
|
+
// (`_kern_is_nullish` / `_kern_strict_equal` / `_kern_loose_equal`).
|
|
16
|
+
KERN_NULLISH_HELPER_PY, KERN_PAIR_HELPERS_PY,
|
|
17
|
+
// Milestone C, Slice 3 — portable regex match-set result-shape helpers
|
|
18
|
+
// (`_kern_regex_match` / `_kern_regex_matchall`).
|
|
19
|
+
KERN_REGEX_MATCH_HELPER_PY, KERN_REGEX_MATCHALL_HELPER_PY, KERN_TMOD_HELPER_PY,
|
|
20
|
+
// Slice-0.75 ToNumericPrimitive substrate. PURE ADDITION: not yet wired into
|
|
21
|
+
// any prelude/helper-block registry and not routed through production — the
|
|
22
|
+
// differential battery (ir-semantics-to-number-py.test.ts) is its only
|
|
23
|
+
// consumer until the future routing slice.
|
|
24
|
+
KERN_TO_NUMBER_HELPER_PY, } from './helpers.js';
|
|
9
25
|
// Quoted strings absorbed by the alternation; only literal `===`/`!==`
|
|
10
26
|
// outside strings get rewritten. Both single and double quotes AND
|
|
11
27
|
// backtick template literals are covered so a message like
|
|
@@ -198,6 +214,14 @@ function lowerArrowBlockClosure(arrow, ctx) {
|
|
|
198
214
|
// Closure params are def-locals (never `nonlocal`); the lowerer excludes
|
|
199
215
|
// them and block-locals from the written-free set.
|
|
200
216
|
paramNames: arrow.params,
|
|
217
|
+
// Round-7 — the block-scope hooks are now REQUIRED (a missing wire is a
|
|
218
|
+
// compile error, no longer a silent fail-open). The route path screens host
|
|
219
|
+
// names through the `rewriteExpr` rewriter, NOT a per-block shadow stack, so
|
|
220
|
+
// it has no block-scope tracking to maintain here: it opts OUT explicitly
|
|
221
|
+
// with no-op (identity) implementations. This is the intentional route-path
|
|
222
|
+
// opt-out the interface documents — visible at the call site, not an accident.
|
|
223
|
+
enterBlockScope: () => { },
|
|
224
|
+
exitBlockScope: () => { },
|
|
201
225
|
});
|
|
202
226
|
if (!result.ok)
|
|
203
227
|
return null;
|
|
@@ -950,7 +974,7 @@ function lowerMathBuiltinCalls(expr, imports) {
|
|
|
950
974
|
break;
|
|
951
975
|
case 'round':
|
|
952
976
|
imports?.add('import math as __k_math');
|
|
953
|
-
out +=
|
|
977
|
+
out += legacyJsRoundExpr(arg);
|
|
954
978
|
break;
|
|
955
979
|
case 'abs':
|
|
956
980
|
out += `abs(${arg})`;
|
|
@@ -1042,6 +1066,9 @@ function lowerMathBuiltinCalls(expr, imports) {
|
|
|
1042
1066
|
}
|
|
1043
1067
|
return out;
|
|
1044
1068
|
}
|
|
1069
|
+
function legacyJsRoundExpr(arg) {
|
|
1070
|
+
return `(lambda __k_n: __k_n if __k_n != __k_n or __k_n in (float("inf"), float("-inf")) or __k_n == 0 else (lambda __k_floor: (lambda __k_r: -0.0 if __k_r == 0 and __k_n < 0 else __k_r)(__k_floor + (1 if __k_n - __k_floor >= 0.5 else 0)))(__k_math.floor(__k_n)))(${arg})`;
|
|
1071
|
+
}
|
|
1045
1072
|
// Find the start of the JS expression that ends just before the current position.
|
|
1046
1073
|
function findReceiverStart(s) {
|
|
1047
1074
|
let j = s.length - 1;
|
|
@@ -1519,8 +1546,72 @@ function lowerObjectArrayDateBuiltinCalls(expr, imports) {
|
|
|
1519
1546
|
}
|
|
1520
1547
|
return out;
|
|
1521
1548
|
}
|
|
1549
|
+
// Normalize JS numeric word-literals (`Infinity`, `-Infinity`, `NaN`) that
|
|
1550
|
+
// reach the route-path Array.from `{length}` argument into their Python float
|
|
1551
|
+
// equivalents, respecting string/quote boundaries. The route pipeline's
|
|
1552
|
+
// `JS_LITERAL_RE` only rewrites `undefined|null|true|false`, so a bare
|
|
1553
|
+
// `Infinity`/`NaN` token survives to the emitted module as a Python NameError.
|
|
1554
|
+
// The Array.from length guard below feeds the count to `_kern_array_like_length`
|
|
1555
|
+
// via `{"length": <count>}`, so the count must be a valid Python value first.
|
|
1556
|
+
function normalizeNumericWordLiterals(expr) {
|
|
1557
|
+
let out = '';
|
|
1558
|
+
let i = 0;
|
|
1559
|
+
let quote = null;
|
|
1560
|
+
while (i < expr.length) {
|
|
1561
|
+
const c = expr[i];
|
|
1562
|
+
if (quote) {
|
|
1563
|
+
out += c;
|
|
1564
|
+
if (c === '\\') {
|
|
1565
|
+
out += expr[i + 1] ?? '';
|
|
1566
|
+
i += 2;
|
|
1567
|
+
continue;
|
|
1568
|
+
}
|
|
1569
|
+
if (c === quote)
|
|
1570
|
+
quote = null;
|
|
1571
|
+
i += 1;
|
|
1572
|
+
continue;
|
|
1573
|
+
}
|
|
1574
|
+
if (c === '"' || c === "'" || c === '`') {
|
|
1575
|
+
quote = c;
|
|
1576
|
+
out += c;
|
|
1577
|
+
i += 1;
|
|
1578
|
+
continue;
|
|
1579
|
+
}
|
|
1580
|
+
const rest = expr.slice(i);
|
|
1581
|
+
const prev = expr[i - 1];
|
|
1582
|
+
// Member access (`obj.Infinity`) must not be rewritten. The immediately-
|
|
1583
|
+
// previous char rules out the compact form; for the spaced form
|
|
1584
|
+
// (`obj . Infinity`) scan BACKWARD past contiguous whitespace and treat the
|
|
1585
|
+
// token as member access when the first non-whitespace char found is `.`.
|
|
1586
|
+
// A token at string-start (only whitespace before it) is NOT member access.
|
|
1587
|
+
let memberAccess = !!(prev && /[\w.$]/.test(prev));
|
|
1588
|
+
if (!memberAccess && prev !== undefined && /\s/.test(prev)) {
|
|
1589
|
+
let k = i - 1;
|
|
1590
|
+
while (k >= 0 && /\s/.test(expr[k]))
|
|
1591
|
+
k -= 1;
|
|
1592
|
+
if (k >= 0 && expr[k] === '.')
|
|
1593
|
+
memberAccess = true;
|
|
1594
|
+
}
|
|
1595
|
+
const wordOk = !memberAccess;
|
|
1596
|
+
const infM = wordOk ? rest.match(/^Infinity\b/) : null;
|
|
1597
|
+
if (infM && !/[\w$]/.test(expr[i + infM[0].length] ?? '')) {
|
|
1598
|
+
out += "float('inf')";
|
|
1599
|
+
i += infM[0].length;
|
|
1600
|
+
continue;
|
|
1601
|
+
}
|
|
1602
|
+
const nanM = wordOk ? rest.match(/^NaN\b/) : null;
|
|
1603
|
+
if (nanM && !/[\w$]/.test(expr[i + nanM[0].length] ?? '')) {
|
|
1604
|
+
out += "float('nan')";
|
|
1605
|
+
i += nanM[0].length;
|
|
1606
|
+
continue;
|
|
1607
|
+
}
|
|
1608
|
+
out += c;
|
|
1609
|
+
i += 1;
|
|
1610
|
+
}
|
|
1611
|
+
return out;
|
|
1612
|
+
}
|
|
1522
1613
|
// Build the Python comprehension for one `Array.from(...)` call's argument list.
|
|
1523
|
-
function tryLowerArrayFrom(args) {
|
|
1614
|
+
function tryLowerArrayFrom(args, imports) {
|
|
1524
1615
|
if (args.length < 2)
|
|
1525
1616
|
return null;
|
|
1526
1617
|
const arg0 = args[0].trim();
|
|
@@ -1566,7 +1657,46 @@ function tryLowerArrayFrom(args) {
|
|
|
1566
1657
|
if (inner.startsWith('{'))
|
|
1567
1658
|
body = inner;
|
|
1568
1659
|
}
|
|
1569
|
-
|
|
1660
|
+
// The body is lowered for nested `Array.from`/stdlib calls but is NOT run
|
|
1661
|
+
// through `normalizeNumericWordLiterals`. KNOWN LIMITATION (deliberate,
|
|
1662
|
+
// fail-loud): a bare `Infinity`/`NaN` token in a mapper body — or an
|
|
1663
|
+
// object-literal KEY named `Infinity`/`NaN` (e.g. `() => ({Infinity: 1})`) —
|
|
1664
|
+
// emits a Python `NameError` (fail-loud) rather than being silently rewritten.
|
|
1665
|
+
// String-level normalization cannot distinguish a value position from an
|
|
1666
|
+
// object-literal key, because the object-key `:` is indistinguishable from a
|
|
1667
|
+
// ternary `:`. Rewriting the body therefore corrupts the JS string key
|
|
1668
|
+
// `"Infinity"` into `{float('inf'): 1}` (silent cross-target divergence), so
|
|
1669
|
+
// we choose the loud NameError over silent corruption. `normalizeNumericWordLiterals`
|
|
1670
|
+
// still runs on the COUNT below, where the position is unambiguous.
|
|
1671
|
+
const loweredBody = lowerArrayFromCalls(body, imports);
|
|
1672
|
+
// Fast-path for a statically-safe non-negative INTEGER literal count: emit the
|
|
1673
|
+
// clean `range(<literal>)` form with NO length helper and NO normalize pass.
|
|
1674
|
+
// `4294967295` (2**32-1) and below are valid JS array lengths (JS would also
|
|
1675
|
+
// materialize them), so `range(<literal>)` is correct parity and the common
|
|
1676
|
+
// case (`Array.from({length: 3}, …)`) pays zero helper/cold-start cost. A
|
|
1677
|
+
// literal `> 4294967295` (e.g. `9007199254740992`) MUST still throw, so it is
|
|
1678
|
+
// explicitly excluded here and routed through the guard below. Only a bare
|
|
1679
|
+
// non-negative integer qualifies — NOT floats (`3.5`), NOT signed (`-1`), NOT
|
|
1680
|
+
// identifiers/member-access/arithmetic/`Infinity`/`NaN`, all of which need the
|
|
1681
|
+
// `_kern_array_like_length` validation.
|
|
1682
|
+
const trimmedCount = count.trim();
|
|
1683
|
+
if (/^\d+$/.test(trimmedCount) && Number(trimmedCount) <= 4294967295) {
|
|
1684
|
+
return `[${loweredBody} for ${idxVar} in range(${trimmedCount})]`;
|
|
1685
|
+
}
|
|
1686
|
+
// Otherwise route the `{length: N}` count through the SAME validated length
|
|
1687
|
+
// helper the native-body path uses (`_kern_array_like_length`) instead of
|
|
1688
|
+
// emitting a raw `range(N)`. Without this guard the route path diverges from JS
|
|
1689
|
+
// (and from the already-correct native-body path): `Array.from({length:
|
|
1690
|
+
// Infinity}, …)` must throw a RangeError (not emit a Python NameError for
|
|
1691
|
+
// `Infinity`), a length above 2**32-1 must throw, and `NaN`/≤0 must yield an
|
|
1692
|
+
// empty array — never a 4-billion-element materialization (DoS).
|
|
1693
|
+
// `_kern_array_like_length` self-defines `RangeError`/`_KERN_UNDEFINED` via its
|
|
1694
|
+
// idempotent guards but calls `_kern_to_number`, so BOTH helper blocks are
|
|
1695
|
+
// required (mirrors the `array-host` requirement pairing in codegen-body-python).
|
|
1696
|
+
const loweredCount = normalizeNumericWordLiterals(lowerArrayFromCalls(count, imports));
|
|
1697
|
+
imports?.add(KERN_TO_NUMBER_HELPER_PY);
|
|
1698
|
+
imports?.add(KERN_JS_ARRAY_FROM_HELPER_PY);
|
|
1699
|
+
return `[${loweredBody} for ${idxVar} in range(_kern_array_like_length({"length": ${loweredCount}}))]`;
|
|
1570
1700
|
}
|
|
1571
1701
|
// Expand JS object-literal shorthand properties to explicit `key: key`.
|
|
1572
1702
|
function expandObjectShorthand(expr) {
|
|
@@ -1615,7 +1745,7 @@ function expandObjectShorthand(expr) {
|
|
|
1615
1745
|
return out;
|
|
1616
1746
|
}
|
|
1617
1747
|
// Lower `Array.from({ length: N }, (_, i) => BODY)` to a Python list comprehension.
|
|
1618
|
-
function lowerArrayFromCalls(expr) {
|
|
1748
|
+
function lowerArrayFromCalls(expr, imports) {
|
|
1619
1749
|
let out = '';
|
|
1620
1750
|
let i = 0;
|
|
1621
1751
|
let quote = null;
|
|
@@ -1645,7 +1775,7 @@ function lowerArrayFromCalls(expr) {
|
|
|
1645
1775
|
const openIdx = i + m[0].length - 1;
|
|
1646
1776
|
const closeIdx = matchBalancedParen(expr, openIdx);
|
|
1647
1777
|
if (closeIdx !== -1 && expr[closeIdx + 1] !== '.') {
|
|
1648
|
-
const lowered = tryLowerArrayFrom(splitTopLevelArgs(expr.slice(openIdx + 1, closeIdx)));
|
|
1778
|
+
const lowered = tryLowerArrayFrom(splitTopLevelArgs(expr.slice(openIdx + 1, closeIdx)), imports);
|
|
1649
1779
|
if (lowered !== null) {
|
|
1650
1780
|
out += lowered;
|
|
1651
1781
|
i = closeIdx + 1;
|
|
@@ -2109,7 +2239,7 @@ export function rewriteExpr(expr, pathParams, bodyFields = new Set(), authUser =
|
|
|
2109
2239
|
let result = maskedExpr;
|
|
2110
2240
|
result = lowerSpreadElements(result);
|
|
2111
2241
|
result = expandObjectShorthand(result);
|
|
2112
|
-
result = lowerArrayFromCalls(result);
|
|
2242
|
+
result = lowerArrayFromCalls(result, imports);
|
|
2113
2243
|
for (const param of pathParams) {
|
|
2114
2244
|
result = result.replace(new RegExp(`\\bparams\\.${param}\\b`, 'g'), param);
|
|
2115
2245
|
}
|