@xanots/sdk 0.0.11 → 0.0.12
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/CHANGELOG.md +16 -0
- package/README.md +11 -6
- package/dist/.build-fingerprint +1 -1
- package/dist/{agent-file-refresh-QNKN5RYD.js → agent-file-refresh-GQWAAOBV.js} +4 -4
- package/dist/bin.js +11 -11
- package/dist/{branch-commands-2BLOC2GR.js → branch-commands-5KMPAAZV.js} +7 -7
- package/dist/bundle.d.ts +2 -2
- package/dist/bundle.js +2 -2
- package/dist/{capture-4WVJY4DQ.js → capture-YLUVAITI.js} +2 -2
- package/dist/chunk-2VTJSI6X.js +192 -0
- package/dist/{chunk-5XZ744TS.js → chunk-2ZCUO2UG.js} +1 -1
- package/dist/{chunk-XEOX6AM7.js → chunk-3LQGF2WS.js} +2 -2
- package/dist/{chunk-WP4OZZV4.js → chunk-3VFCKHOB.js} +2 -2
- package/dist/{chunk-XHEXOES3.js → chunk-5YDINUAP.js} +1 -1
- package/dist/{chunk-LU7TRWMC.js → chunk-6VNRMKFJ.js} +2 -2
- package/dist/{chunk-CTD5ZCV6.js → chunk-7WRJPKGK.js} +2 -2
- package/dist/{chunk-3INK4Y4E.js → chunk-AE3PDSDS.js} +1 -1
- package/dist/{chunk-22TKBSDV.js → chunk-AG5GCZDD.js} +2 -2
- package/dist/{chunk-DBFU47BJ.js → chunk-AOFFKSJC.js} +2 -2
- package/dist/{chunk-TCFIPDB3.js → chunk-AVGDL6RB.js} +1 -1
- package/dist/{chunk-BC2C5GVI.js → chunk-DCMANKMX.js} +1 -1
- package/dist/{chunk-WHOJWOSV.js → chunk-EETVJZAZ.js} +1 -1
- package/dist/{chunk-4Q7ZOHH7.js → chunk-ELK7UALJ.js} +3 -3
- package/dist/{chunk-VNQM3V2C.js → chunk-EXENFOWE.js} +2 -2
- package/dist/{chunk-UOZMSF4C.js → chunk-GSP2BY4F.js} +5 -5
- package/dist/{chunk-AIZKXUNP.js → chunk-IMLYGQK6.js} +2 -2
- package/dist/{chunk-QK7ZQJLP.js → chunk-N74KDCBD.js} +39 -25
- package/dist/{chunk-3IGNIP6R.js → chunk-NDP7OUPS.js} +1 -1
- package/dist/{chunk-EQW3YT5U.js → chunk-P6PVBQL6.js} +2 -2
- package/dist/{chunk-HYBN4H3F.js → chunk-PLE5QQOZ.js} +27 -20
- package/dist/{chunk-BSK7ELHU.js → chunk-PR7OXHGZ.js} +1 -1
- package/dist/{chunk-OWGCOGKK.js → chunk-QYSQ3UDO.js} +8 -8
- package/dist/{chunk-ZQ2PKR6R.js → chunk-RQ3FXV4K.js} +2 -2
- package/dist/{chunk-Q77KNEUL.js → chunk-RQNMTDXD.js} +1703 -2
- package/dist/{chunk-QKM4U5UK.js → chunk-TJS2AF5Y.js} +2 -2
- package/dist/{chunk-DIA7CT7J.js → chunk-V5Y7D4LH.js} +11 -2
- package/dist/{chunk-KA6G2L7U.js → chunk-VK26K7AY.js} +3 -3
- package/dist/{chunk-4IF54NU5.js → chunk-VPAWRBK5.js} +12 -16
- package/dist/{chunk-QYMAZRAU.js → chunk-VRNZ2NVV.js} +5 -5
- package/dist/{chunk-RCT7UX7B.js → chunk-XT3XQ4PF.js} +32 -27
- package/dist/{chunk-VAF6A3YD.js → chunk-XWFRNJMQ.js} +1 -1
- package/dist/{chunk-7ZYW652H.js → chunk-YHS6VVLJ.js} +2 -2
- package/dist/{chunk-G4EJMQLD.js → chunk-YX22LKQE.js} +2 -2
- package/dist/{chunk-F6CYJ7TN.js → chunk-Z2ZIE5CO.js} +2 -2
- package/dist/cli.d.ts +13 -6
- package/dist/cli.js +10 -10
- package/dist/codegen-command-Y2SPMAUW.js +47 -0
- package/dist/codegen.d.ts +5 -5
- package/dist/codegen.js +2 -2
- package/dist/{completion-WF46272M.js → completion-HJU5QEFB.js} +2 -2
- package/dist/{deploy-command-IP7V7GT4.js → deploy-command-XHS5PKPV.js} +19 -19
- package/dist/{ephemeral-command-U4AQ3TXX.js → ephemeral-command-2NKPEXUU.js} +8 -8
- package/dist/index.d.ts +88 -104
- package/dist/index.js +9 -9
- package/dist/init-command-23FFNUFT.js +32 -0
- package/dist/internal.d.ts +10 -16
- package/dist/internal.js +26 -26
- package/dist/{io-P2H75UV2.js → io-UBDMMDH6.js} +3 -3
- package/dist/{live-diff-IXKBVG4K.js → live-diff-HCOTN5WC.js} +3 -3
- package/dist/{lock-46FWYE4D.js → lock-HQ4KARU2.js} +2 -2
- package/dist/{lock-commands-ZZKZ4LZJ.js → lock-commands-WCRC56ME.js} +11 -11
- package/dist/{login-command-Z6CHTA57.js → login-command-P7LXD5TE.js} +6 -6
- package/dist/{loop-D5NPL4VH.js → loop-IC5ISSYB.js} +3 -3
- package/dist/{marketplace-command-P4IPLJ6J.js → marketplace-command-T6JCHW7J.js} +4 -4
- package/dist/{meta-client-K2J4XH64.js → meta-client-LKRKR3L2.js} +4 -4
- package/dist/node.d.ts +6 -6
- package/dist/node.js +14 -14
- package/dist/{preflight-command-K346GPTY.js → preflight-command-TZWPHBXY.js} +16 -16
- package/dist/{profile-command-LJSBDV2L.js → profile-command-WBNSMQSI.js} +3 -3
- package/dist/{release-command-IMNTIVWK.js → release-command-WEFYRTCI.js} +26 -26
- package/dist/{response-BQVQ24l1.d.ts → response-D6xGLEIn.d.ts} +18 -23
- package/dist/{routes-manifest-PWZHDOI5.js → routes-manifest-5ZFKUQWA.js} +2 -2
- package/dist/{runtime-V4C3AC3A.js → runtime-LSLIDALK.js} +1 -1
- package/dist/scaffold.d.ts +16 -8
- package/dist/scaffold.js +7 -11
- package/dist/{static-host-3WMV7IZO.js → static-host-4JDQCHUW.js} +1 -1
- package/dist/{status-command-AL47VG7H.js → status-command-VARULAR5.js} +4 -4
- package/dist/{store-BLyNeQ8S.d.ts → store-DAnUIi1T.d.ts} +81 -86
- package/dist/{test-command-YAZLKLGQ.js → test-command-YCAR4O35.js} +7 -7
- package/dist/{upgrade-command-BN3EHAOI.js → upgrade-command-GYEIMJBG.js} +15 -16
- package/dist/{workspace-2COHDBM3.js → workspace-33KHFLX3.js} +2 -2
- package/dist/{workspace-command-MNK7Y7MQ.js → workspace-command-2ZTGT26W.js} +26 -28
- package/dist/{workspace-export-DURY5WYL.js → workspace-export-MLYTYZS5.js} +3 -3
- package/dist/{xdo-BjJj5W_E.d.ts → xdo-ODuJklk6.d.ts} +27 -23
- package/guides/authoring.md +11 -2
- package/guides/typed-frontend.md +4 -4
- package/llms/statements-data.md +3 -2
- package/llms/values.md +1 -1
- package/llms-full.txt +18 -18
- package/llms.txt +14 -15
- package/manifest.json +6 -2
- package/package.json +1 -1
- package/dist/chunk-ANUDXFEX.js +0 -881
- package/dist/chunk-JGCWTCA7.js +0 -95
- package/dist/chunk-YBC3IKMF.js +0 -845
- package/dist/codegen-command-FUT2KJB6.js +0 -49
- package/dist/init-command-NPVL32L6.js +0 -34
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
assertPathParamInputs,
|
|
3
3
|
fillPathParams,
|
|
4
4
|
parsePathParams
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-EETVJZAZ.js";
|
|
6
6
|
import {
|
|
7
7
|
appNamesByGuid,
|
|
8
8
|
deriveGuid,
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
lockNameForObject,
|
|
13
13
|
queryGroupComponent,
|
|
14
14
|
resolveRef
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-XWFRNJMQ.js";
|
|
16
16
|
import {
|
|
17
17
|
COLUMN_CONTEXT,
|
|
18
18
|
INPUT_CONTEXT,
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
encodeStatement,
|
|
23
23
|
rawResponseItems,
|
|
24
24
|
registerStatement
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-2ZCUO2UG.js";
|
|
26
26
|
import {
|
|
27
27
|
sha1Bytes
|
|
28
28
|
} from "./chunk-OHX6MIUZ.js";
|
|
@@ -139,7 +139,7 @@ var DiagnosticBag = class {
|
|
|
139
139
|
* a guard. But the audience for this SDK is largely an agent that never reads
|
|
140
140
|
* stderr, and CI has no way to notice a message nobody fails on. `strict`
|
|
141
141
|
* gives a pipeline one switch that turns "printed something" into "did not
|
|
142
|
-
* ship"
|
|
142
|
+
* ship".
|
|
143
143
|
*
|
|
144
144
|
* Scope: the diagnostics an EXPORT collects. A guard that runs while a
|
|
145
145
|
* statement is being built ({@link emitDiagnostic}) has already had its say by
|
|
@@ -374,7 +374,7 @@ var c = {
|
|
|
374
374
|
* A `number` that is not an integer, or is past `Number.MAX_SAFE_INTEGER`,
|
|
375
375
|
* **throws**: by the time such a literal reaches here its precision is already
|
|
376
376
|
* gone, so encoding it would write a value the caller did not type. The throw
|
|
377
|
-
* names the string form.
|
|
377
|
+
* names the string form.
|
|
378
378
|
*/
|
|
379
379
|
int(n) {
|
|
380
380
|
return val(intLiteral(n), "const:int");
|
|
@@ -422,7 +422,7 @@ var c = {
|
|
|
422
422
|
* null** the engine writes into a `db.*` statement's `@meta` slot —
|
|
423
423
|
* `c.null("const:obj")` → `{tag:"const:obj", value:"null"}`, 16 of them across
|
|
424
424
|
* eight ordinary queries in the survey corpus, which had no spelling and came
|
|
425
|
-
* back as `rawValue
|
|
425
|
+
* back as `rawValue`.
|
|
426
426
|
*
|
|
427
427
|
* ⚠ Not the same bytes as `c.obj(null)`, which is the BLANK object
|
|
428
428
|
* (`value: ""`). Both evaluate to null — the engine JSON-decodes the stored
|
|
@@ -438,7 +438,7 @@ var c = {
|
|
|
438
438
|
* (`fl.regex_test`/`regex_match`/`regex_replace`/…). Xano runs PHP `preg_*`, so
|
|
439
439
|
* the pattern MUST be delimiter-wrapped — a bare `c.text("^…$")` is an invalid
|
|
440
440
|
* PCRE and the filter then matches *nothing* for every input, so a precondition
|
|
441
|
-
* built on it silently rejects all values
|
|
441
|
+
* built on it silently rejects all values. This wraps the raw
|
|
442
442
|
* pattern in `/…/`, escapes any interior `/`, and appends `flags`, so the result
|
|
443
443
|
* is always valid; `withFilters` rejects a bare `c.text` pattern and points here.
|
|
444
444
|
*
|
|
@@ -466,8 +466,13 @@ var c = {
|
|
|
466
466
|
* `text("now") |to_epoch_ms` chain; both evaluate to the same epoch-ms number
|
|
467
467
|
* on a live engine, and both persist verbatim, but the native tag is what the
|
|
468
468
|
* editor writes and needs no filter to get there. Chain math onto it as usual:
|
|
469
|
-
* `withFilters(c.now(), fl.epochms_add_ms(c.int(-maxAgeMs)))`.
|
|
470
|
-
*
|
|
469
|
+
* `withFilters(c.now(), fl.epochms_add_ms(c.int(-maxAgeMs)))`.
|
|
470
|
+
*
|
|
471
|
+
* Inside an `obj()` the tag is flattened into an expression string, where the
|
|
472
|
+
* identifier `now` alone is the STRING "now" — so `obj()` writes the
|
|
473
|
+
* `now|to_epochms` coercion that restores this tag's meaning. A `c.now()` used
|
|
474
|
+
* as a FILTER ARGUMENT there is refused: the coercion cannot be written in
|
|
475
|
+
* that position. Hoist it with `s.set_var` and `ref()` it.
|
|
471
476
|
*/
|
|
472
477
|
now() {
|
|
473
478
|
return val("now", "const:epochms");
|
|
@@ -478,7 +483,6 @@ var c = {
|
|
|
478
483
|
* compile error and throws at runtime — it would serialize as internal
|
|
479
484
|
* representation the engine can't decode. For a computed/multi-key object
|
|
480
485
|
* response use a record of values (`response: { key: value }`), not `c.obj`.
|
|
481
|
-
* See issue #42.
|
|
482
486
|
*
|
|
483
487
|
* Called with no argument it is the **empty object**, `{}` — the same default
|
|
484
488
|
* the editor gives a new object variable, and the only empty form current
|
|
@@ -495,7 +499,7 @@ var c = {
|
|
|
495
499
|
* same bytes instead of being quietly re-pointed at `{}`.
|
|
496
500
|
*
|
|
497
501
|
* A **populated** object is stored the way the editor stores one: an empty
|
|
498
|
-
* `{}` base carrying one `set` filter per key
|
|
502
|
+
* `{}` base carrying one `set` filter per key. It is NOT a
|
|
499
503
|
* populated JSON string — that form fails the request at runtime, see
|
|
500
504
|
* {@link objSetFilters}.
|
|
501
505
|
*
|
|
@@ -516,7 +520,7 @@ var c = {
|
|
|
516
520
|
/**
|
|
517
521
|
* Array constant → JSON-string value with `tag:"const:array"`. Takes **plain
|
|
518
522
|
* JSON literals only** — like {@link obj}, a nested tagged value is a compile
|
|
519
|
-
* error and throws at runtime.
|
|
523
|
+
* error and throws at runtime.
|
|
520
524
|
*/
|
|
521
525
|
array(a) {
|
|
522
526
|
assertPlainJson(a);
|
|
@@ -1350,7 +1354,7 @@ var f = {
|
|
|
1350
1354
|
* bytes, and a map does not preserve it.
|
|
1351
1355
|
*
|
|
1352
1356
|
* Without this there is no way to author a structured JSON column at all
|
|
1353
|
-
|
|
1357
|
+
*.
|
|
1354
1358
|
*/
|
|
1355
1359
|
json(options = {}) {
|
|
1356
1360
|
return descriptor("json", { ...options });
|
|
@@ -1420,9 +1424,8 @@ var f = {
|
|
|
1420
1424
|
* instead: `f.tableRef("tweets", { type: "int" })`. Identity guids derive
|
|
1421
1425
|
* from `(type, name)`, so the name form resolves to the same guid.
|
|
1422
1426
|
*
|
|
1423
|
-
* Byte-verified whole-object against a persisted table readback
|
|
1424
|
-
*
|
|
1425
|
-
* `test/conformance/kinds-corpus.test.ts`): the `@` method carries
|
|
1427
|
+
* Byte-verified whole-object against a persisted table readback: the `@`
|
|
1428
|
+
* method carries
|
|
1426
1429
|
* `disabled:false`, sits last in `methods`, and its `dbo=` arg is the target
|
|
1427
1430
|
* table's payload guid.
|
|
1428
1431
|
*
|
|
@@ -1469,7 +1472,7 @@ var input = {
|
|
|
1469
1472
|
* password on **both** signup and login, let the `f.password` *column* hash on write,
|
|
1470
1473
|
* and pass the plaintext straight to `check_password`. See the auth recipe in the
|
|
1471
1474
|
* README. Reach for `input.password` only when you specifically want bind-time hashing
|
|
1472
|
-
* and are not also comparing it with `check_password
|
|
1475
|
+
* and are not also comparing it with `check_password`.
|
|
1473
1476
|
*/
|
|
1474
1477
|
password: makeInput("password"),
|
|
1475
1478
|
/**
|
|
@@ -1599,8 +1602,15 @@ var IDENT = /^[A-Za-z_$][A-Za-z0-9_$]*$/;
|
|
|
1599
1602
|
function serializeValue(v2, path) {
|
|
1600
1603
|
const record = objSetRecord(v2, path);
|
|
1601
1604
|
if (record) return record;
|
|
1605
|
+
const nowExpr = serializeEpochMs(v2);
|
|
1606
|
+
if (nowExpr !== null) return nowExpr + serializeFilters(v2, path);
|
|
1602
1607
|
return serializeAtom(v2, path) + serializeFilters(v2, path);
|
|
1603
1608
|
}
|
|
1609
|
+
function serializeEpochMs(v2) {
|
|
1610
|
+
if (v2.tag !== "const:epochms") return null;
|
|
1611
|
+
if (v2.value !== "now") return null;
|
|
1612
|
+
return "now|to_epochms";
|
|
1613
|
+
}
|
|
1604
1614
|
function objSetRecord(v2, path) {
|
|
1605
1615
|
if (v2.tag !== "const:obj") return null;
|
|
1606
1616
|
if (v2.value === "") {
|
|
@@ -1717,12 +1727,16 @@ function serializeAtom(v2, path) {
|
|
|
1717
1727
|
// renders `$env.STRIPE_KEY`.
|
|
1718
1728
|
case "setting":
|
|
1719
1729
|
return `$env.${v2.value}`;
|
|
1720
|
-
// The engine's native current-time constant
|
|
1721
|
-
//
|
|
1722
|
-
//
|
|
1730
|
+
// The engine's native current-time constant reaches this function ONLY as a
|
|
1731
|
+
// filter argument — a member position is answered by `serializeEpochMs`
|
|
1732
|
+
// above. There it is unwritable: the value needs a leading `|to_epochms` to
|
|
1733
|
+
// evaluate as a time at all (see `serializeEpochMs`), and inside an argument
|
|
1734
|
+
// a trailing `|` binds to the whole value rather than to the argument, which
|
|
1735
|
+
// is the same wall a pre-filtered argument hits.
|
|
1723
1736
|
case "const:epochms":
|
|
1724
|
-
|
|
1725
|
-
|
|
1737
|
+
throw new Error(
|
|
1738
|
+
`obj(): \`${path}\` is \`c.now()\` used as a FILTER ARGUMENT. In an expression the current-time constant has to carry a \`|to_epochms\` coercion, and a \`|\` inside an argument binds to the whole value instead \u2014 so this cannot be written without changing what it means. Compute it in a prior step (\`s.set_var("now", c.now())\`) and reference it with \`ref("now")\`.`
|
|
1739
|
+
);
|
|
1726
1740
|
// `c.array([…])` stores plain JSON, and the literal grammar spells the same
|
|
1727
1741
|
// list — so it renders to the identical bytes a bare `[…]` member does. The
|
|
1728
1742
|
// bare form always worked and this one used to throw, which made the empty
|
|
@@ -1801,7 +1815,7 @@ var slotted = (name, argNames, required, capped = true) => (...args) => {
|
|
|
1801
1815
|
const hole = argNames.slice(0, last).findIndex((n) => named[n] === void 0);
|
|
1802
1816
|
if (hole !== -1) {
|
|
1803
1817
|
throw new Error(
|
|
1804
|
-
`fl.${name}: \`${argNames[hole]}\` is omitted but \`${argNames[last]}\` is supplied. Filter arguments are positional even in this form \u2014 the engine reads them by slot, so one in the middle cannot be skipped. Supply \`${argNames[hole]}\` too
|
|
1818
|
+
`fl.${name}: \`${argNames[hole]}\` is omitted but \`${argNames[last]}\` is supplied. Filter arguments are positional even in this form \u2014 the engine reads them by slot, so one in the middle cannot be skipped. Supply \`${argNames[hole]}\` too.`
|
|
1805
1819
|
);
|
|
1806
1820
|
}
|
|
1807
1821
|
assertArity(name, argNames, required, last + 1);
|
|
@@ -1810,7 +1824,7 @@ var slotted = (name, argNames, required, capped = true) => (...args) => {
|
|
|
1810
1824
|
var assertArity = (name, argNames, required, got) => {
|
|
1811
1825
|
if (got >= required) return;
|
|
1812
1826
|
throw new Error(
|
|
1813
|
-
`fl.${name} needs ${required} argument(s) \u2014 ${argNames.slice(0, required).join(", ")} \u2014 but got ${got}. Filter arguments are positional and the engine refuses a short call, so a missing one cannot be inferred \u2014 not even where the filter's own documentation calls it optional. Some filters accept omission from the END and some require every argument regardless; which is which is probed, not declared
|
|
1827
|
+
`fl.${name} needs ${required} argument(s) \u2014 ${argNames.slice(0, required).join(", ")} \u2014 but got ${got}. Filter arguments are positional and the engine refuses a short call, so a missing one cannot be inferred \u2014 not even where the filter's own documentation calls it optional. Some filters accept omission from the END and some require every argument regardless; which is which is probed, not declared.`
|
|
1814
1828
|
);
|
|
1815
1829
|
};
|
|
1816
1830
|
var assertMaxArity = (name, argNames, got) => {
|
|
@@ -4237,4 +4251,4 @@ export {
|
|
|
4237
4251
|
serializeBundle,
|
|
4238
4252
|
emitBundle
|
|
4239
4253
|
};
|
|
4240
|
-
//# sourceMappingURL=chunk-
|
|
4254
|
+
//# sourceMappingURL=chunk-N74KDCBD.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
describeTransportFailure,
|
|
3
3
|
httpFailure
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-NDP7OUPS.js";
|
|
5
5
|
|
|
6
6
|
// src/deploy/branch.ts
|
|
7
7
|
var BRANCH_TIMEOUT_MS = 3e4;
|
|
@@ -156,4 +156,4 @@ export {
|
|
|
156
156
|
assertBranchAbsent,
|
|
157
157
|
requireBranch
|
|
158
158
|
};
|
|
159
|
-
//# sourceMappingURL=chunk-
|
|
159
|
+
//# sourceMappingURL=chunk-P6PVBQL6.js.map
|
|
@@ -1,40 +1,40 @@
|
|
|
1
1
|
import {
|
|
2
2
|
resolveEphemeralName
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-RQ3FXV4K.js";
|
|
4
4
|
import {
|
|
5
5
|
getAccessToken
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-TJS2AF5Y.js";
|
|
7
7
|
import {
|
|
8
8
|
exportWorkspaceBundle
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-YHS6VVLJ.js";
|
|
10
10
|
import {
|
|
11
11
|
projectShellFiles,
|
|
12
12
|
resolveFrontendPreset,
|
|
13
13
|
resolveThemeChoice,
|
|
14
14
|
sanitizeAppName
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-VPAWRBK5.js";
|
|
16
16
|
import {
|
|
17
17
|
XANO_DIR,
|
|
18
18
|
resolveAiPresets,
|
|
19
19
|
scaffoldProject
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-VK26K7AY.js";
|
|
21
21
|
import {
|
|
22
22
|
TEST_EXPECT_TYPES
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-YX22LKQE.js";
|
|
24
24
|
import {
|
|
25
25
|
raw
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-6VNRMKFJ.js";
|
|
27
27
|
import {
|
|
28
28
|
codegenLanding,
|
|
29
29
|
describeOrigin,
|
|
30
30
|
renderCodegenMarker,
|
|
31
31
|
renderCodegenReadme
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-RQNMTDXD.js";
|
|
33
33
|
import {
|
|
34
34
|
FIELD_METHODS,
|
|
35
35
|
SUPERSEDED_STATEMENTS,
|
|
36
36
|
supersededBy
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-PR7OXHGZ.js";
|
|
38
38
|
import {
|
|
39
39
|
DEFAULT_PREFERENCES,
|
|
40
40
|
DEFAULT_SETTINGS,
|
|
@@ -50,7 +50,7 @@ import {
|
|
|
50
50
|
searchConstrainsRows,
|
|
51
51
|
tableTrigger,
|
|
52
52
|
workspaceTrigger
|
|
53
|
-
} from "./chunk-
|
|
53
|
+
} from "./chunk-GSP2BY4F.js";
|
|
54
54
|
import {
|
|
55
55
|
linkedTableOf,
|
|
56
56
|
tableRefOf
|
|
@@ -72,18 +72,18 @@ import {
|
|
|
72
72
|
normalize,
|
|
73
73
|
retiredInputSuccessor,
|
|
74
74
|
retiredInputs
|
|
75
|
-
} from "./chunk-
|
|
75
|
+
} from "./chunk-AE3PDSDS.js";
|
|
76
76
|
import {
|
|
77
77
|
STATEMENT_SURFACES,
|
|
78
78
|
sPathOf
|
|
79
|
-
} from "./chunk-
|
|
79
|
+
} from "./chunk-DCMANKMX.js";
|
|
80
80
|
import {
|
|
81
81
|
loadDefault,
|
|
82
82
|
readVersion
|
|
83
|
-
} from "./chunk-
|
|
83
|
+
} from "./chunk-XT3XQ4PF.js";
|
|
84
84
|
import {
|
|
85
85
|
UsageError
|
|
86
|
-
} from "./chunk-
|
|
86
|
+
} from "./chunk-Z2ZIE5CO.js";
|
|
87
87
|
import {
|
|
88
88
|
blank,
|
|
89
89
|
detail,
|
|
@@ -124,14 +124,14 @@ import {
|
|
|
124
124
|
sys,
|
|
125
125
|
toolset,
|
|
126
126
|
withFilters
|
|
127
|
-
} from "./chunk-
|
|
127
|
+
} from "./chunk-N74KDCBD.js";
|
|
128
128
|
import {
|
|
129
129
|
parsePathParams,
|
|
130
130
|
unboundPathParams
|
|
131
|
-
} from "./chunk-
|
|
131
|
+
} from "./chunk-EETVJZAZ.js";
|
|
132
132
|
import {
|
|
133
133
|
REFERENCEABLE_KIND_PAYLOAD_KEYS
|
|
134
|
-
} from "./chunk-
|
|
134
|
+
} from "./chunk-XWFRNJMQ.js";
|
|
135
135
|
import {
|
|
136
136
|
COLUMN_CONTEXT,
|
|
137
137
|
INPUT_CONTEXT,
|
|
@@ -139,7 +139,7 @@ import {
|
|
|
139
139
|
encodeField,
|
|
140
140
|
encodeMockMap,
|
|
141
141
|
encodeStatement
|
|
142
|
-
} from "./chunk-
|
|
142
|
+
} from "./chunk-2ZCUO2UG.js";
|
|
143
143
|
|
|
144
144
|
// src/emit/codegen-command.ts
|
|
145
145
|
import { existsSync, readFileSync, writeFileSync } from "fs";
|
|
@@ -1036,6 +1036,7 @@ function parseMember(cur) {
|
|
|
1036
1036
|
let built = lifted.built;
|
|
1037
1037
|
const symbols = [...lifted.symbols];
|
|
1038
1038
|
const filterExprs = [];
|
|
1039
|
+
let absorbNowCoercion = built.tag === "const:epochms" && built.value === "now";
|
|
1039
1040
|
while (cur.eat("|")) {
|
|
1040
1041
|
const name = cur.take(/[A-Za-z0-9_]/);
|
|
1041
1042
|
if (name === "" || !FILTER_NAMES.includes(name)) return null;
|
|
@@ -1059,9 +1060,15 @@ function parseMember(cur) {
|
|
|
1059
1060
|
} catch {
|
|
1060
1061
|
return null;
|
|
1061
1062
|
}
|
|
1063
|
+
if (absorbNowCoercion && name === "to_epochms" && argBuilt.length === 0) {
|
|
1064
|
+
absorbNowCoercion = false;
|
|
1065
|
+
continue;
|
|
1066
|
+
}
|
|
1067
|
+
absorbNowCoercion = false;
|
|
1062
1068
|
built = withFilters(built, filterValue);
|
|
1063
1069
|
filterExprs.push(call(`fl.${name}`, ...argExprs));
|
|
1064
1070
|
}
|
|
1071
|
+
if (filterExprs.length === 0) return { expr, built, symbols };
|
|
1065
1072
|
return {
|
|
1066
1073
|
expr: call("withFilters", expr, ...filterExprs),
|
|
1067
1074
|
built,
|
|
@@ -6746,7 +6753,7 @@ async function fetchBundle(args, source) {
|
|
|
6746
6753
|
if (source.kind === "ephemeral") {
|
|
6747
6754
|
const auth3 = await getAccessToken(args);
|
|
6748
6755
|
const name = resolveEphemeralName(auth3, source.name);
|
|
6749
|
-
const { resolveLive, fetchEphemeralBundle } = await import("./ephemeral-command-
|
|
6756
|
+
const { resolveLive, fetchEphemeralBundle } = await import("./ephemeral-command-2NKPEXUU.js");
|
|
6750
6757
|
const summary = await resolveLive(auth3, auth3.workspaceId, name);
|
|
6751
6758
|
step(`Reading ephemeral "${name}"`);
|
|
6752
6759
|
return {
|
|
@@ -7008,4 +7015,4 @@ export {
|
|
|
7008
7015
|
verifyCrashEntry,
|
|
7009
7016
|
blameGeneratedFile
|
|
7010
7017
|
};
|
|
7011
|
-
//# sourceMappingURL=chunk-
|
|
7018
|
+
//# sourceMappingURL=chunk-PLE5QQOZ.js.map
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
reversedRegexOperands,
|
|
14
14
|
stackReferencesAuth,
|
|
15
15
|
tableColumns
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-N74KDCBD.js";
|
|
17
17
|
import {
|
|
18
18
|
CANONICAL_PAYLOAD_KEYS,
|
|
19
19
|
REFERENCEABLE_KINDS,
|
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
mintCanonical,
|
|
27
27
|
recordObserved,
|
|
28
28
|
resolveRef
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-XWFRNJMQ.js";
|
|
30
30
|
|
|
31
31
|
// src/workspace/seed-coerce.ts
|
|
32
32
|
function coerceScalarValue(label, column, type, value, values) {
|
|
@@ -1411,7 +1411,7 @@ var Xano = class {
|
|
|
1411
1411
|
}
|
|
1412
1412
|
/**
|
|
1413
1413
|
* Every def object handed to {@link register}, by identity, so the SAME one
|
|
1414
|
-
* registered twice is caught at the call that did it
|
|
1414
|
+
* registered twice is caught at the call that did it.
|
|
1415
1415
|
*
|
|
1416
1416
|
* Identity, not structure. Two separately constructed defs sharing a name are
|
|
1417
1417
|
* a genuine collision, and the guid check at export already diagnoses that
|
|
@@ -1448,7 +1448,7 @@ var Xano = class {
|
|
|
1448
1448
|
* what `workspace("my-app")` set — so the natural chain
|
|
1449
1449
|
* `workspace("my-app").registerWorkspace(workspaceConfig({ history }))` no
|
|
1450
1450
|
* longer makes an author restate a name this registry has held since its
|
|
1451
|
-
* first call
|
|
1451
|
+
* first call. An explicit `name` still wins, and a rename this way is
|
|
1452
1452
|
* a rename of the workspace.
|
|
1453
1453
|
*/
|
|
1454
1454
|
registerWorkspace(def) {
|
|
@@ -1576,7 +1576,7 @@ var Xano = class {
|
|
|
1576
1576
|
* With `options.strict`, every build WARNING fails the export instead of
|
|
1577
1577
|
* printing — the shapes that deploy clean and then lose data or return the
|
|
1578
1578
|
* wrong rows. Nothing about the emitted bundle changes; it either exports or
|
|
1579
|
-
* it does not
|
|
1579
|
+
* it does not.
|
|
1580
1580
|
*/
|
|
1581
1581
|
export(options = {}) {
|
|
1582
1582
|
const lockCtx = options.lock;
|
|
@@ -1686,7 +1686,7 @@ var Xano = class {
|
|
|
1686
1686
|
}
|
|
1687
1687
|
/**
|
|
1688
1688
|
* Warn about an `auth()`-keyed middleware **directly attached** to a host where
|
|
1689
|
-
* `auth()` may resolve to `null
|
|
1689
|
+
* `auth()` may resolve to `null`.
|
|
1690
1690
|
*
|
|
1691
1691
|
* The footgun: a rate limiter keyed by `auth("id")` is the canonical middleware,
|
|
1692
1692
|
* but attach it to a host with no authenticated caller and `auth()` silently
|
|
@@ -1701,7 +1701,7 @@ var Xano = class {
|
|
|
1701
1701
|
* false positives on legitimate use. The warning names the host and reason so
|
|
1702
1702
|
* the author can confirm intent, vary the key, or move to an authenticated host.
|
|
1703
1703
|
*
|
|
1704
|
-
* Scope: the host's EFFECTIVE chain, across all three tiers
|
|
1704
|
+
* Scope: the host's EFFECTIVE chain, across all three tiers. The
|
|
1705
1705
|
* guard used to see only a host's own `middleware.pre`/`post`, so an author who
|
|
1706
1706
|
* DRY'd a per-user limiter up to `apiGroup({ middleware })` or to the workspace
|
|
1707
1707
|
* tier silently reintroduced the shared bucket — the same collapse, attached
|
|
@@ -1858,4 +1858,4 @@ export {
|
|
|
1858
1858
|
Xano,
|
|
1859
1859
|
workspace
|
|
1860
1860
|
};
|
|
1861
|
-
//# sourceMappingURL=chunk-
|
|
1861
|
+
//# sourceMappingURL=chunk-QYSQ3UDO.js.map
|
|
@@ -27,7 +27,7 @@ async function resolveMetaTarget(auth, selector, deps = {}) {
|
|
|
27
27
|
case "workspace":
|
|
28
28
|
return { base: auth.instance, workspaceId: auth.workspaceId, label: `workspace ${auth.workspaceId}` };
|
|
29
29
|
case "ephemeral": {
|
|
30
|
-
const resolveLive = deps.resolveLive ?? (await import("./ephemeral-command-
|
|
30
|
+
const resolveLive = deps.resolveLive ?? (await import("./ephemeral-command-2NKPEXUU.js")).resolveLive;
|
|
31
31
|
return resolveEphemeral(auth, selector.name, { ...deps, resolveLive });
|
|
32
32
|
}
|
|
33
33
|
}
|
|
@@ -37,4 +37,4 @@ export {
|
|
|
37
37
|
resolveEphemeralName,
|
|
38
38
|
resolveMetaTarget
|
|
39
39
|
};
|
|
40
|
-
//# sourceMappingURL=chunk-
|
|
40
|
+
//# sourceMappingURL=chunk-RQ3FXV4K.js.map
|