@atscript/db 0.1.150 → 0.1.152

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/agg.d.cts CHANGED
@@ -1,3 +1,3 @@
1
- import { r as TResolvedBucket } from "./buckets-24Ac4sIS.cjs";
1
+ import { r as TResolvedBucket } from "./buckets-tzd8iIM2.cjs";
2
2
  import { _ as TDbAggregateFn, a as AggregateResult, c as CalendarBucketLabel, d as WeekStart, f as isAggregateExpr, h as resolveAlias, i as AggregateQuery, l as ComputedExpr, m as resolveAggregateSearch, n as AggregateExpr, o as BucketExpr, p as isBucketExpr, r as AggregateFn, s as BucketUnit, t as AggregateControls, u as ResolvedBucket, v as assertAggregateFn } from "./agg-42CSpGDR.cjs";
3
3
  export { type AggregateControls, type AggregateExpr, type AggregateFn, type AggregateQuery, type AggregateResult, type BucketExpr, type BucketUnit, type CalendarBucketLabel, type ComputedExpr, type ResolvedBucket, type TDbAggregateFn, type TResolvedBucket, type WeekStart, assertAggregateFn, isAggregateExpr, isBucketExpr, resolveAggregateSearch, resolveAlias };
package/dist/agg.d.mts CHANGED
@@ -1,3 +1,3 @@
1
- import { r as TResolvedBucket } from "./buckets-XOz0Bw5x.mjs";
1
+ import { r as TResolvedBucket } from "./buckets-Cb0zmhDc.mjs";
2
2
  import { _ as TDbAggregateFn, a as AggregateResult, c as CalendarBucketLabel, d as WeekStart, f as isAggregateExpr, h as resolveAlias, i as AggregateQuery, l as ComputedExpr, m as resolveAggregateSearch, n as AggregateExpr, o as BucketExpr, p as isBucketExpr, r as AggregateFn, s as BucketUnit, t as AggregateControls, u as ResolvedBucket, v as assertAggregateFn } from "./agg-Wo-smrYV.mjs";
3
3
  export { type AggregateControls, type AggregateExpr, type AggregateFn, type AggregateQuery, type AggregateResult, type BucketExpr, type BucketUnit, type CalendarBucketLabel, type ComputedExpr, type ResolvedBucket, type TDbAggregateFn, type TResolvedBucket, type WeekStart, assertAggregateFn, isAggregateExpr, isBucketExpr, resolveAggregateSearch, resolveAlias };
@@ -707,6 +707,8 @@ declare class AtscriptDbReadable<T extends TAtscriptAnnotatedType = TAtscriptAnn
707
707
  * @since 0.1.148
708
708
  */
709
709
  get uniqueKeySets(): string[][];
710
+ private _uniqueKeySets?;
711
+ private _computeUniqueKeySets;
710
712
  /** Preferred row identifier field names. Defaults to primary keys. */
711
713
  get preferredId(): readonly string[];
712
714
  /** Legitimate row-identifier shapes (primary key + every unique index). */
@@ -1201,7 +1203,12 @@ type TCascadePin = FilterExpr[] | undefined;
1201
1203
  declare abstract class IntegrityStrategy {
1202
1204
  abstract validateForeignKeys(items: Array<Record<string, unknown>>, meta: TableMetadata, fkLookupResolver: TFkLookupResolver | undefined, writeTableResolver: TWriteTableResolver | undefined, partial?: boolean, excludeTargetTable?: string): Promise<void>;
1203
1205
  abstract cascadeBeforeDelete(filter: FilterExpr, tableName: string, meta: TableMetadata, cascadeResolver: TCascadeResolver, translateFilter: (f: FilterExpr) => FilterExpr, adapter: BaseDbAdapter): Promise<TCascadePin>;
1204
- abstract needsCascade(cascadeResolver: TCascadeResolver | undefined): boolean;
1206
+ /**
1207
+ * Whether a delete must run the application-level cascade pass. `tableName`
1208
+ * (optional, since 0.1.151) lets the strategy answer `false` for a table
1209
+ * nothing references.
1210
+ */
1211
+ abstract needsCascade(cascadeResolver: TCascadeResolver | undefined, tableName?: string): boolean;
1205
1212
  }
1206
1213
  /**
1207
1214
  * Integrity strategy for adapters with native FK support (e.g. SQLite, MySQL).
@@ -1396,6 +1403,21 @@ declare class AtscriptDbTable<T extends TAtscriptAnnotatedType = TAtscriptAnnota
1396
1403
  * parent, so the write never touches a child of another parent.
1397
1404
  */
1398
1405
  private _rowFilters;
1406
+ /**
1407
+ * Whether a `*One` / `bulk*` write of `payloads` is a single statement that
1408
+ * needs no wrapping transaction (since 0.1.151): one root-level row, no
1409
+ * `guard` / `check` (their reads and the write must share one snapshot),
1410
+ * no nested navigation data (multi-table phases), and FK integrity enforced
1411
+ * by the database (application-level FK checks read before writing). The
1412
+ * write then calls the adapter outside any transaction of its own — one
1413
+ * `insertMany([row])` / `replaceOne` / `updateOne` / `nativePatch`, or a
1414
+ * read-only `count` for an empty patch; the array-operator read-modify-write
1415
+ * still opens a transaction for its pair. Adapters may rely on it: a
1416
+ * single-row `insertMany` reached this way runs outside a transaction.
1417
+ */
1418
+ private _isSingleStatementWrite;
1419
+ /** Runs a write body inside the adapter transaction — or directly for a single-statement write. */
1420
+ private _inWriteTransaction;
1399
1421
  /** Whether `filter` names every primary-key field (so it IS the row's exact key). */
1400
1422
  private _isPkFilter;
1401
1423
  /**
@@ -1465,6 +1487,13 @@ declare class AtscriptDbTable<T extends TAtscriptAnnotatedType = TAtscriptAnnota
1465
1487
  * engine's own default applies. The version column is never touched.
1466
1488
  */
1467
1489
  protected _applyDefaults(data: Record<string, unknown>): Record<string, unknown>;
1490
+ /**
1491
+ * Parsed `@db.default 'literal'` values that are primitives — reused for
1492
+ * every row (an object / array default is parsed per row: each row gets
1493
+ * its own instance).
1494
+ */
1495
+ private _primitiveDefaults?;
1496
+ private _valueDefault;
1468
1497
  /**
1469
1498
  * The JS value for a `@db.default 'literal'`: strings (including unions of
1470
1499
  * string literals) are used as-is, every other design type is parsed as
@@ -1858,6 +1887,12 @@ declare class DbSpace implements AsyncDisposable {
1858
1887
  private _readables;
1859
1888
  /** All tables created in this space — used for reverse FK lookup during cascade. */
1860
1889
  private _allTables;
1890
+ /**
1891
+ * Per-table-name memo of {@link _getCascadeTargets} / {@link _getFkLookupTarget}
1892
+ * (since 0.1.151) — both scan every table; cleared whenever a table is added.
1893
+ */
1894
+ private _cascadeTargets;
1895
+ private _fkLookupTargets;
1861
1896
  /** Every table / view handle the space created — flagged closed on {@link close}. */
1862
1897
  private _handles;
1863
1898
  /** Lazily created adapter for administrative ops (drop table/view) that don't need a registered readable. */
@@ -1952,11 +1987,13 @@ declare class DbSpace implements AsyncDisposable {
1952
1987
  * Accesses `table.foreignKeys` which triggers `_flatten()` if needed.
1953
1988
  */
1954
1989
  private _getCascadeTargets;
1990
+ private _scanCascadeTargets;
1955
1991
  /**
1956
1992
  * Resolves a table name to a queryable target for FK validation.
1957
1993
  * Searches all registered tables for one with the matching table name.
1958
1994
  */
1959
1995
  private _getFkLookupTarget;
1996
+ private _scanFkLookupTarget;
1960
1997
  }
1961
1998
  //#endregion
1962
1999
  //#region src/base-adapter.d.ts
@@ -707,6 +707,8 @@ declare class AtscriptDbReadable<T extends TAtscriptAnnotatedType = TAtscriptAnn
707
707
  * @since 0.1.148
708
708
  */
709
709
  get uniqueKeySets(): string[][];
710
+ private _uniqueKeySets?;
711
+ private _computeUniqueKeySets;
710
712
  /** Preferred row identifier field names. Defaults to primary keys. */
711
713
  get preferredId(): readonly string[];
712
714
  /** Legitimate row-identifier shapes (primary key + every unique index). */
@@ -1201,7 +1203,12 @@ type TCascadePin = FilterExpr[] | undefined;
1201
1203
  declare abstract class IntegrityStrategy {
1202
1204
  abstract validateForeignKeys(items: Array<Record<string, unknown>>, meta: TableMetadata, fkLookupResolver: TFkLookupResolver | undefined, writeTableResolver: TWriteTableResolver | undefined, partial?: boolean, excludeTargetTable?: string): Promise<void>;
1203
1205
  abstract cascadeBeforeDelete(filter: FilterExpr, tableName: string, meta: TableMetadata, cascadeResolver: TCascadeResolver, translateFilter: (f: FilterExpr) => FilterExpr, adapter: BaseDbAdapter): Promise<TCascadePin>;
1204
- abstract needsCascade(cascadeResolver: TCascadeResolver | undefined): boolean;
1206
+ /**
1207
+ * Whether a delete must run the application-level cascade pass. `tableName`
1208
+ * (optional, since 0.1.151) lets the strategy answer `false` for a table
1209
+ * nothing references.
1210
+ */
1211
+ abstract needsCascade(cascadeResolver: TCascadeResolver | undefined, tableName?: string): boolean;
1205
1212
  }
1206
1213
  /**
1207
1214
  * Integrity strategy for adapters with native FK support (e.g. SQLite, MySQL).
@@ -1396,6 +1403,21 @@ declare class AtscriptDbTable<T extends TAtscriptAnnotatedType = TAtscriptAnnota
1396
1403
  * parent, so the write never touches a child of another parent.
1397
1404
  */
1398
1405
  private _rowFilters;
1406
+ /**
1407
+ * Whether a `*One` / `bulk*` write of `payloads` is a single statement that
1408
+ * needs no wrapping transaction (since 0.1.151): one root-level row, no
1409
+ * `guard` / `check` (their reads and the write must share one snapshot),
1410
+ * no nested navigation data (multi-table phases), and FK integrity enforced
1411
+ * by the database (application-level FK checks read before writing). The
1412
+ * write then calls the adapter outside any transaction of its own — one
1413
+ * `insertMany([row])` / `replaceOne` / `updateOne` / `nativePatch`, or a
1414
+ * read-only `count` for an empty patch; the array-operator read-modify-write
1415
+ * still opens a transaction for its pair. Adapters may rely on it: a
1416
+ * single-row `insertMany` reached this way runs outside a transaction.
1417
+ */
1418
+ private _isSingleStatementWrite;
1419
+ /** Runs a write body inside the adapter transaction — or directly for a single-statement write. */
1420
+ private _inWriteTransaction;
1399
1421
  /** Whether `filter` names every primary-key field (so it IS the row's exact key). */
1400
1422
  private _isPkFilter;
1401
1423
  /**
@@ -1465,6 +1487,13 @@ declare class AtscriptDbTable<T extends TAtscriptAnnotatedType = TAtscriptAnnota
1465
1487
  * engine's own default applies. The version column is never touched.
1466
1488
  */
1467
1489
  protected _applyDefaults(data: Record<string, unknown>): Record<string, unknown>;
1490
+ /**
1491
+ * Parsed `@db.default 'literal'` values that are primitives — reused for
1492
+ * every row (an object / array default is parsed per row: each row gets
1493
+ * its own instance).
1494
+ */
1495
+ private _primitiveDefaults?;
1496
+ private _valueDefault;
1468
1497
  /**
1469
1498
  * The JS value for a `@db.default 'literal'`: strings (including unions of
1470
1499
  * string literals) are used as-is, every other design type is parsed as
@@ -1858,6 +1887,12 @@ declare class DbSpace implements AsyncDisposable {
1858
1887
  private _readables;
1859
1888
  /** All tables created in this space — used for reverse FK lookup during cascade. */
1860
1889
  private _allTables;
1890
+ /**
1891
+ * Per-table-name memo of {@link _getCascadeTargets} / {@link _getFkLookupTarget}
1892
+ * (since 0.1.151) — both scan every table; cleared whenever a table is added.
1893
+ */
1894
+ private _cascadeTargets;
1895
+ private _fkLookupTargets;
1861
1896
  /** Every table / view handle the space created — flagged closed on {@link close}. */
1862
1897
  private _handles;
1863
1898
  /** Lazily created adapter for administrative ops (drop table/view) that don't need a registered readable. */
@@ -1952,11 +1987,13 @@ declare class DbSpace implements AsyncDisposable {
1952
1987
  * Accesses `table.foreignKeys` which triggers `_flatten()` if needed.
1953
1988
  */
1954
1989
  private _getCascadeTargets;
1990
+ private _scanCascadeTargets;
1955
1991
  /**
1956
1992
  * Resolves a table name to a queryable target for FK validation.
1957
1993
  * Searches all registered tables for one with the matching table name.
1958
1994
  */
1959
1995
  private _getFkLookupTarget;
1996
+ private _scanFkLookupTarget;
1960
1997
  }
1961
1998
  //#endregion
1962
1999
  //#region src/base-adapter.d.ts