@ai-matrx/records 0.87.31 → 0.92.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.
- package/CHANGELOG.md +98 -0
- package/README.md +115 -0
- package/dist/{client-E0VQ0NPO.d.ts → client-DE9Mq6YX.d.cts} +8 -5
- package/dist/{client-C3ZZNfGH.d.cts → client-vJAb7g9r.d.ts} +8 -5
- package/dist/core/index.cjs +25 -7
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.cts +23 -12
- package/dist/core/index.d.ts +23 -12
- package/dist/core/index.js +25 -7
- package/dist/core/index.js.map +1 -1
- package/dist/data/index.cjs +19 -7
- package/dist/data/index.cjs.map +1 -1
- package/dist/data/index.d.cts +12 -142
- package/dist/data/index.d.ts +12 -142
- package/dist/data/index.js +19 -7
- package/dist/data/index.js.map +1 -1
- package/dist/{declareTable-BK3zufr7.d.cts → declareTable-Btg5bql1.d.cts} +4 -4
- package/dist/{declareTable-B12XybRp.d.ts → declareTable-JKt2q34d.d.ts} +4 -4
- package/dist/entity/index.cjs +984 -0
- package/dist/entity/index.cjs.map +1 -0
- package/dist/entity/index.d.cts +36 -0
- package/dist/entity/index.d.ts +36 -0
- package/dist/entity/index.js +964 -0
- package/dist/entity/index.js.map +1 -0
- package/dist/entity/react.cjs +1024 -0
- package/dist/entity/react.cjs.map +1 -0
- package/dist/entity/react.d.cts +511 -0
- package/dist/entity/react.d.ts +511 -0
- package/dist/entity/react.js +1015 -0
- package/dist/entity/react.js.map +1 -0
- package/dist/{field-BanTVGK2.d.cts → field-BJBnTyJ0.d.cts} +1 -1
- package/dist/{field-BPABOJ2Y.d.ts → field-Ti5iAxFr.d.ts} +1 -1
- package/dist/forms/index.cjs +984 -0
- package/dist/forms/index.cjs.map +1 -0
- package/dist/forms/index.d.cts +333 -0
- package/dist/forms/index.d.ts +333 -0
- package/dist/forms/index.js +961 -0
- package/dist/forms/index.js.map +1 -0
- package/dist/index.cjs +10 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +11 -8
- package/dist/index.d.ts +11 -8
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/dist/memory/index.d.cts +7 -6
- package/dist/memory/index.d.ts +7 -6
- package/dist/port-CPVBfDxS.d.cts +301 -0
- package/dist/port-D2i2o7Lg.d.ts +301 -0
- package/dist/portal-Db4CYyHe.d.ts +331 -0
- package/dist/portal-DfeY2Boy.d.cts +331 -0
- package/dist/{ports-TMWX-t9l.d.ts → ports-BWtxAnXh.d.ts} +2 -2
- package/dist/{ports-D8-iuY1P.d.cts → ports-DSU2RsR6.d.cts} +2 -2
- package/dist/react/index.cjs +55 -523
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +14 -1
- package/dist/react/index.d.ts +14 -1
- package/dist/react/index.js +52 -527
- package/dist/react/index.js.map +1 -1
- package/dist/realtime/index.d.cts +2 -2
- package/dist/realtime/index.d.ts +2 -2
- package/dist/{record-DpB2QgAZ.d.cts → record-BQi92d4-.d.cts} +7 -1
- package/dist/{record-DpB2QgAZ.d.ts → record-BQi92d4-.d.ts} +7 -1
- package/dist/relation-DMwkmzgN.d.cts +230 -0
- package/dist/relation-DlcqV_W5.d.ts +230 -0
- package/dist/rule-B8kR0l01.d.ts +250 -0
- package/dist/rule-BMViCLmW.d.cts +250 -0
- package/dist/search/index.cjs +283 -0
- package/dist/search/index.cjs.map +1 -0
- package/dist/search/index.d.cts +44 -0
- package/dist/search/index.d.ts +44 -0
- package/dist/search/index.js +260 -0
- package/dist/search/index.js.map +1 -0
- package/dist/setup/index.cjs +6854 -0
- package/dist/setup/index.cjs.map +1 -0
- package/dist/setup/index.d.cts +87 -0
- package/dist/setup/index.d.ts +87 -0
- package/dist/setup/index.js +6829 -0
- package/dist/setup/index.js.map +1 -0
- package/dist/{subscription-D7KQBHXN.d.ts → subscription-5CLN3Jug.d.ts} +3 -249
- package/dist/{subscription-BD9DnJxX.d.cts → subscription-D-VEzvyy.d.cts} +3 -249
- package/dist/{table-kind-BZu8mtND.d.cts → table-kind-CVp43g6h.d.ts} +3 -558
- package/dist/{table-kind-xKxTHtrV.d.ts → table-kind-Cm6PXkWx.d.cts} +3 -558
- package/dist/templates/index.d.cts +10 -9
- package/dist/templates/index.d.ts +10 -9
- package/dist/typed-table/index.cjs +19 -7
- package/dist/typed-table/index.cjs.map +1 -1
- package/dist/typed-table/index.d.cts +10 -7
- package/dist/typed-table/index.d.ts +10 -7
- package/dist/typed-table/index.js +19 -7
- package/dist/typed-table/index.js.map +1 -1
- package/dist/{types-CLP5H4Wk.d.cts → types-9Q5SHRDJ.d.cts} +2 -2
- package/dist/{types-DmPkWQic.d.ts → types-CfYy-vdV.d.ts} +2 -2
- package/dist/{types-C2uspRtf.d.cts → types-Cs2MyE3u.d.cts} +2 -2
- package/dist/{types-Dv61jStB.d.ts → types-DF-dxB_l.d.ts} +2 -2
- package/dist/types-DTEGaxso.d.cts +139 -0
- package/dist/types-Dji5SpFS.d.ts +139 -0
- package/dist/use-cases/index.d.cts +5 -5
- package/dist/use-cases/index.d.ts +5 -5
- package/dist/{validate-CWVToe1T.d.ts → validate-BydKd-Le.d.ts} +1 -1
- package/dist/{validate-DEB_mn4Y.d.cts → validate-CqJakTKk.d.cts} +1 -1
- package/dist/versions/index.cjs +375 -0
- package/dist/versions/index.cjs.map +1 -0
- package/dist/versions/index.d.cts +160 -0
- package/dist/versions/index.d.ts +160 -0
- package/dist/versions/index.js +353 -0
- package/dist/versions/index.js.map +1 -0
- package/package.json +62 -2
package/dist/data/index.d.cts
CHANGED
|
@@ -1,144 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import { R as RecordsClient } from '../client-
|
|
4
|
-
import { b as Field } from '../field-
|
|
5
|
-
import {
|
|
6
|
-
import '../
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
/** §0. One column, read live — never from a generated file. */
|
|
13
|
-
interface Column {
|
|
14
|
-
/** The store's stable field key — never derived from the label. No platform key starts with "_". */
|
|
15
|
-
key: string;
|
|
16
|
-
label: string;
|
|
17
|
-
/** The store's word for what the value is: text, number, date, datetime, boolean, list, relation, formula, … */
|
|
18
|
-
type: string;
|
|
19
|
-
origin: "platform" | "custom";
|
|
20
|
-
required: boolean;
|
|
21
|
-
/** For a choice column: the words a person picks from (what a cell reads as and a write takes). */
|
|
22
|
-
choices?: string[];
|
|
23
|
-
/** For a link column: what it may point at (a custom table's id, or entity tokens). */
|
|
24
|
-
linksTo?: string[];
|
|
25
|
-
/**
|
|
26
|
-
* For a link column: the alias, in the SAME port, that serves the table it points at — so a form can list
|
|
27
|
-
* the linked rows to pick from. Absent when no source of this Applet serves that table.
|
|
28
|
-
*/
|
|
29
|
-
linksToSource?: string;
|
|
30
|
-
/**
|
|
31
|
-
* The store's own answer to "does this column hold more than one value" (`custom.field.multi`). A choice
|
|
32
|
-
* column's type is `list` whether it takes one word or many — only this tells them apart (Status, one
|
|
33
|
-
* value, drew as four switches and the store refused the list it sent: social planner, 2026-10-08).
|
|
34
|
-
*/
|
|
35
|
-
multi?: boolean;
|
|
36
|
-
/** The column a row is named by (the table's `title_field`) — what a link to the row reads as. */
|
|
37
|
-
title?: boolean;
|
|
38
|
-
readOnly: boolean;
|
|
39
|
-
}
|
|
40
|
-
/** §0. One row, keyed by `Column.key`. Underscore keys are the runtime's own. */
|
|
41
|
-
interface Row {
|
|
42
|
-
_id: Uuid;
|
|
43
|
-
_version: number;
|
|
44
|
-
_organization_id: Uuid;
|
|
45
|
-
/** On a platform row only: the organization's custom fields (a real column may be named `custom`). */
|
|
46
|
-
_custom?: Record<string, unknown>;
|
|
47
|
-
[key: string]: unknown;
|
|
48
|
-
}
|
|
49
|
-
/** §0. What a write carries, keyed by `Column.key`; `_custom` on platform sources. */
|
|
50
|
-
type Values = Record<string, unknown> & {
|
|
51
|
-
_custom?: Record<string, unknown>;
|
|
52
|
-
};
|
|
53
|
-
type WhereOp = "eq" | "neq" | "lt" | "lte" | "gt" | "gte" | "contains" | "in" | "empty";
|
|
54
|
-
interface WhereClause {
|
|
55
|
-
column: string;
|
|
56
|
-
op: WhereOp;
|
|
57
|
-
value?: unknown;
|
|
58
|
-
}
|
|
59
|
-
type Lane = "all" | "mine" | "team" | "orgs" | "shared" | "public" | "system";
|
|
60
|
-
/** §4. A question of one source. Every clause must hold. */
|
|
61
|
-
interface Query {
|
|
62
|
-
where?: WhereClause[];
|
|
63
|
-
search?: string;
|
|
64
|
-
sort?: {
|
|
65
|
-
column: string;
|
|
66
|
-
direction?: "asc" | "desc";
|
|
67
|
-
}[];
|
|
68
|
-
pageSize?: number;
|
|
69
|
-
/** Default: the type's "Shown to by default" knob. A custom table has one lane: what row security shows. */
|
|
70
|
-
lane?: Lane;
|
|
71
|
-
/** A filter, never a lock. Default "all". */
|
|
72
|
-
org?: Uuid | "all";
|
|
73
|
-
}
|
|
74
|
-
/** §4. One page; `cursor` is null on the last one. */
|
|
75
|
-
interface Page {
|
|
76
|
-
rows: Row[];
|
|
77
|
-
total: number | null;
|
|
78
|
-
cursor: string | null;
|
|
79
|
-
}
|
|
80
|
-
interface DataSource {
|
|
81
|
-
alias: string;
|
|
82
|
-
label: string;
|
|
83
|
-
kind: "table" | "entity";
|
|
84
|
-
canCreate: boolean;
|
|
85
|
-
canUpdate: boolean;
|
|
86
|
-
}
|
|
87
|
-
/** The one event stream a source has: these ids moved — re-read only them. `null`: cannot tell which. */
|
|
88
|
-
interface RowsEvent {
|
|
89
|
-
ids: Uuid[] | null;
|
|
90
|
-
/** The table's columns moved (one added, retired or changed): re-read `columns()` too. */
|
|
91
|
-
shape?: true;
|
|
92
|
-
}
|
|
93
|
-
type DataPortEventName = `rows:${string}`;
|
|
94
|
-
/** §4. The host's data port, scoped to ONE mounted Applet's aliases. Every call answers, never throws. */
|
|
95
|
-
interface DataPort {
|
|
96
|
-
sources(): Promise<RecordsResult<DataSource[]>>;
|
|
97
|
-
columns(alias: string): Promise<RecordsResult<Column[]>>;
|
|
98
|
-
list(alias: string, q: Query, cursor?: string): Promise<RecordsResult<Page>>;
|
|
99
|
-
get(alias: string, id: Uuid): Promise<RecordsResult<Row | null>>;
|
|
100
|
-
create(alias: string, values: Values): Promise<RecordsResult<Row>>;
|
|
101
|
-
update(alias: string, id: Uuid, patch: Values, baseVersion: number): Promise<RecordsResult<Row>>;
|
|
102
|
-
archive(alias: string, id: Uuid): Promise<RecordsResult<void>>;
|
|
103
|
-
restore(alias: string, id: Uuid): Promise<RecordsResult<void>>;
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* The frame's side of the §1 event stream `rows:<alias>` (the AppletHost's `host.events`). The listener
|
|
107
|
-
* stays in the frame; only the event payload `{ids, shape?}` crosses the channel.
|
|
108
|
-
*/
|
|
109
|
-
interface DataEvents {
|
|
110
|
-
on(event: DataPortEventName, listener: (event: RowsEvent) => void): () => void;
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* The HOST's DataPort (contracts amendment 2.2): the port plus the producer of its event streams.
|
|
114
|
-
* `subscribe` never crosses the frame/host channel — the AppletHost turns it into `rows:<alias>`.
|
|
115
|
-
*/
|
|
116
|
-
interface HostDataPort extends DataPort {
|
|
117
|
-
subscribe(event: DataPortEventName, listener: (event: RowsEvent) => void): () => void;
|
|
118
|
-
}
|
|
119
|
-
/** An alias as the Applet record declares it: one table plus its organization (an entity token is phase B). */
|
|
120
|
-
interface TableAlias {
|
|
121
|
-
kind: "table";
|
|
122
|
-
tableId: Uuid;
|
|
123
|
-
organizationId: Uuid;
|
|
124
|
-
/** Shown in `sources()`; the table's own name when left out. */
|
|
125
|
-
label?: string;
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* An alias bound to one PLATFORM entity type (contacts, projects, tasks…), served by `@ai-matrx/entity-data`'s port.
|
|
129
|
-
* `organizationId` is an assumed organization FILTER for its lists, never a lock; writes carry the active organization.
|
|
130
|
-
*/
|
|
131
|
-
interface EntityAlias {
|
|
132
|
-
kind: "entity";
|
|
133
|
-
/** The type's token in `platform.entity_types` (`party`, `project`, `task`, …). */
|
|
134
|
-
token: string;
|
|
135
|
-
organizationId?: Uuid;
|
|
136
|
-
label?: string;
|
|
137
|
-
}
|
|
138
|
-
/** Every alias an Applet record can declare. A host routes each kind to the port that serves it. */
|
|
139
|
-
type AnyAlias = TableAlias | EntityAlias;
|
|
140
|
-
/** What the table port takes (it serves `table` aliases only). */
|
|
141
|
-
type AliasBinding = TableAlias;
|
|
1
|
+
import { C as Column, Q as Query, A as AliasBinding, H as HostDataPort } from '../types-DTEGaxso.cjs';
|
|
2
|
+
export { a as AnyAlias, b as CUSTOM_ROW_TOKEN, D as DataEvents, c as DataPort, d as DataPortEventName, e as DataSource, E as EntityAlias, f as EntityRef, L as Lane, P as Page, R as Row, g as RowsEvent, T as TableAlias, V as Values, W as WhereClause, h as WhereOp } from '../types-DTEGaxso.cjs';
|
|
3
|
+
import { R as RecordsClient } from '../client-DE9Mq6YX.cjs';
|
|
4
|
+
import { b as Field } from '../field-BJBnTyJ0.cjs';
|
|
5
|
+
import { U as Uuid, R as RecordsResult, r as RecordPageSort, q as ReadRow } from '../record-BQi92d4-.cjs';
|
|
6
|
+
import { R as RuleExpression } from '../rule-BMViCLmW.cjs';
|
|
7
|
+
import '../relation-DMwkmzgN.cjs';
|
|
8
|
+
import '../ports-DSU2RsR6.cjs';
|
|
9
|
+
import '../table-kind-Cm6PXkWx.cjs';
|
|
10
|
+
import '../subscription-D-VEzvyy.cjs';
|
|
11
|
+
import '../portal-DfeY2Boy.cjs';
|
|
142
12
|
|
|
143
13
|
interface TableShape {
|
|
144
14
|
columns: Column[];
|
|
@@ -173,4 +43,4 @@ interface CreateTableDataPortOptions {
|
|
|
173
43
|
}
|
|
174
44
|
declare function createTableDataPort({ client, aliases }: CreateTableDataPortOptions): HostDataPort;
|
|
175
45
|
|
|
176
|
-
export {
|
|
46
|
+
export { AliasBinding, Column, type CreateTableDataPortOptions, DATA_PAGE_CEILING, DATA_PAGE_DEFAULT, HostDataPort, Query, type TableShape, Uuid, type VersionedReadRow, columnTypeOf, compileSort, compileWhere, containsPattern, createTableDataPort, readTableShape };
|
package/dist/data/index.d.ts
CHANGED
|
@@ -1,144 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import { R as RecordsClient } from '../client-
|
|
4
|
-
import { b as Field } from '../field-
|
|
5
|
-
import {
|
|
6
|
-
import '../
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
/** §0. One column, read live — never from a generated file. */
|
|
13
|
-
interface Column {
|
|
14
|
-
/** The store's stable field key — never derived from the label. No platform key starts with "_". */
|
|
15
|
-
key: string;
|
|
16
|
-
label: string;
|
|
17
|
-
/** The store's word for what the value is: text, number, date, datetime, boolean, list, relation, formula, … */
|
|
18
|
-
type: string;
|
|
19
|
-
origin: "platform" | "custom";
|
|
20
|
-
required: boolean;
|
|
21
|
-
/** For a choice column: the words a person picks from (what a cell reads as and a write takes). */
|
|
22
|
-
choices?: string[];
|
|
23
|
-
/** For a link column: what it may point at (a custom table's id, or entity tokens). */
|
|
24
|
-
linksTo?: string[];
|
|
25
|
-
/**
|
|
26
|
-
* For a link column: the alias, in the SAME port, that serves the table it points at — so a form can list
|
|
27
|
-
* the linked rows to pick from. Absent when no source of this Applet serves that table.
|
|
28
|
-
*/
|
|
29
|
-
linksToSource?: string;
|
|
30
|
-
/**
|
|
31
|
-
* The store's own answer to "does this column hold more than one value" (`custom.field.multi`). A choice
|
|
32
|
-
* column's type is `list` whether it takes one word or many — only this tells them apart (Status, one
|
|
33
|
-
* value, drew as four switches and the store refused the list it sent: social planner, 2026-10-08).
|
|
34
|
-
*/
|
|
35
|
-
multi?: boolean;
|
|
36
|
-
/** The column a row is named by (the table's `title_field`) — what a link to the row reads as. */
|
|
37
|
-
title?: boolean;
|
|
38
|
-
readOnly: boolean;
|
|
39
|
-
}
|
|
40
|
-
/** §0. One row, keyed by `Column.key`. Underscore keys are the runtime's own. */
|
|
41
|
-
interface Row {
|
|
42
|
-
_id: Uuid;
|
|
43
|
-
_version: number;
|
|
44
|
-
_organization_id: Uuid;
|
|
45
|
-
/** On a platform row only: the organization's custom fields (a real column may be named `custom`). */
|
|
46
|
-
_custom?: Record<string, unknown>;
|
|
47
|
-
[key: string]: unknown;
|
|
48
|
-
}
|
|
49
|
-
/** §0. What a write carries, keyed by `Column.key`; `_custom` on platform sources. */
|
|
50
|
-
type Values = Record<string, unknown> & {
|
|
51
|
-
_custom?: Record<string, unknown>;
|
|
52
|
-
};
|
|
53
|
-
type WhereOp = "eq" | "neq" | "lt" | "lte" | "gt" | "gte" | "contains" | "in" | "empty";
|
|
54
|
-
interface WhereClause {
|
|
55
|
-
column: string;
|
|
56
|
-
op: WhereOp;
|
|
57
|
-
value?: unknown;
|
|
58
|
-
}
|
|
59
|
-
type Lane = "all" | "mine" | "team" | "orgs" | "shared" | "public" | "system";
|
|
60
|
-
/** §4. A question of one source. Every clause must hold. */
|
|
61
|
-
interface Query {
|
|
62
|
-
where?: WhereClause[];
|
|
63
|
-
search?: string;
|
|
64
|
-
sort?: {
|
|
65
|
-
column: string;
|
|
66
|
-
direction?: "asc" | "desc";
|
|
67
|
-
}[];
|
|
68
|
-
pageSize?: number;
|
|
69
|
-
/** Default: the type's "Shown to by default" knob. A custom table has one lane: what row security shows. */
|
|
70
|
-
lane?: Lane;
|
|
71
|
-
/** A filter, never a lock. Default "all". */
|
|
72
|
-
org?: Uuid | "all";
|
|
73
|
-
}
|
|
74
|
-
/** §4. One page; `cursor` is null on the last one. */
|
|
75
|
-
interface Page {
|
|
76
|
-
rows: Row[];
|
|
77
|
-
total: number | null;
|
|
78
|
-
cursor: string | null;
|
|
79
|
-
}
|
|
80
|
-
interface DataSource {
|
|
81
|
-
alias: string;
|
|
82
|
-
label: string;
|
|
83
|
-
kind: "table" | "entity";
|
|
84
|
-
canCreate: boolean;
|
|
85
|
-
canUpdate: boolean;
|
|
86
|
-
}
|
|
87
|
-
/** The one event stream a source has: these ids moved — re-read only them. `null`: cannot tell which. */
|
|
88
|
-
interface RowsEvent {
|
|
89
|
-
ids: Uuid[] | null;
|
|
90
|
-
/** The table's columns moved (one added, retired or changed): re-read `columns()` too. */
|
|
91
|
-
shape?: true;
|
|
92
|
-
}
|
|
93
|
-
type DataPortEventName = `rows:${string}`;
|
|
94
|
-
/** §4. The host's data port, scoped to ONE mounted Applet's aliases. Every call answers, never throws. */
|
|
95
|
-
interface DataPort {
|
|
96
|
-
sources(): Promise<RecordsResult<DataSource[]>>;
|
|
97
|
-
columns(alias: string): Promise<RecordsResult<Column[]>>;
|
|
98
|
-
list(alias: string, q: Query, cursor?: string): Promise<RecordsResult<Page>>;
|
|
99
|
-
get(alias: string, id: Uuid): Promise<RecordsResult<Row | null>>;
|
|
100
|
-
create(alias: string, values: Values): Promise<RecordsResult<Row>>;
|
|
101
|
-
update(alias: string, id: Uuid, patch: Values, baseVersion: number): Promise<RecordsResult<Row>>;
|
|
102
|
-
archive(alias: string, id: Uuid): Promise<RecordsResult<void>>;
|
|
103
|
-
restore(alias: string, id: Uuid): Promise<RecordsResult<void>>;
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* The frame's side of the §1 event stream `rows:<alias>` (the AppletHost's `host.events`). The listener
|
|
107
|
-
* stays in the frame; only the event payload `{ids, shape?}` crosses the channel.
|
|
108
|
-
*/
|
|
109
|
-
interface DataEvents {
|
|
110
|
-
on(event: DataPortEventName, listener: (event: RowsEvent) => void): () => void;
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* The HOST's DataPort (contracts amendment 2.2): the port plus the producer of its event streams.
|
|
114
|
-
* `subscribe` never crosses the frame/host channel — the AppletHost turns it into `rows:<alias>`.
|
|
115
|
-
*/
|
|
116
|
-
interface HostDataPort extends DataPort {
|
|
117
|
-
subscribe(event: DataPortEventName, listener: (event: RowsEvent) => void): () => void;
|
|
118
|
-
}
|
|
119
|
-
/** An alias as the Applet record declares it: one table plus its organization (an entity token is phase B). */
|
|
120
|
-
interface TableAlias {
|
|
121
|
-
kind: "table";
|
|
122
|
-
tableId: Uuid;
|
|
123
|
-
organizationId: Uuid;
|
|
124
|
-
/** Shown in `sources()`; the table's own name when left out. */
|
|
125
|
-
label?: string;
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* An alias bound to one PLATFORM entity type (contacts, projects, tasks…), served by `@ai-matrx/entity-data`'s port.
|
|
129
|
-
* `organizationId` is an assumed organization FILTER for its lists, never a lock; writes carry the active organization.
|
|
130
|
-
*/
|
|
131
|
-
interface EntityAlias {
|
|
132
|
-
kind: "entity";
|
|
133
|
-
/** The type's token in `platform.entity_types` (`party`, `project`, `task`, …). */
|
|
134
|
-
token: string;
|
|
135
|
-
organizationId?: Uuid;
|
|
136
|
-
label?: string;
|
|
137
|
-
}
|
|
138
|
-
/** Every alias an Applet record can declare. A host routes each kind to the port that serves it. */
|
|
139
|
-
type AnyAlias = TableAlias | EntityAlias;
|
|
140
|
-
/** What the table port takes (it serves `table` aliases only). */
|
|
141
|
-
type AliasBinding = TableAlias;
|
|
1
|
+
import { C as Column, Q as Query, A as AliasBinding, H as HostDataPort } from '../types-Dji5SpFS.js';
|
|
2
|
+
export { a as AnyAlias, b as CUSTOM_ROW_TOKEN, D as DataEvents, c as DataPort, d as DataPortEventName, e as DataSource, E as EntityAlias, f as EntityRef, L as Lane, P as Page, R as Row, g as RowsEvent, T as TableAlias, V as Values, W as WhereClause, h as WhereOp } from '../types-Dji5SpFS.js';
|
|
3
|
+
import { R as RecordsClient } from '../client-vJAb7g9r.js';
|
|
4
|
+
import { b as Field } from '../field-Ti5iAxFr.js';
|
|
5
|
+
import { U as Uuid, R as RecordsResult, r as RecordPageSort, q as ReadRow } from '../record-BQi92d4-.js';
|
|
6
|
+
import { R as RuleExpression } from '../rule-B8kR0l01.js';
|
|
7
|
+
import '../relation-DlcqV_W5.js';
|
|
8
|
+
import '../ports-BWtxAnXh.js';
|
|
9
|
+
import '../table-kind-CVp43g6h.js';
|
|
10
|
+
import '../subscription-5CLN3Jug.js';
|
|
11
|
+
import '../portal-Db4CYyHe.js';
|
|
142
12
|
|
|
143
13
|
interface TableShape {
|
|
144
14
|
columns: Column[];
|
|
@@ -173,4 +43,4 @@ interface CreateTableDataPortOptions {
|
|
|
173
43
|
}
|
|
174
44
|
declare function createTableDataPort({ client, aliases }: CreateTableDataPortOptions): HostDataPort;
|
|
175
45
|
|
|
176
|
-
export {
|
|
46
|
+
export { AliasBinding, Column, type CreateTableDataPortOptions, DATA_PAGE_CEILING, DATA_PAGE_DEFAULT, HostDataPort, Query, type TableShape, Uuid, type VersionedReadRow, columnTypeOf, compileSort, compileWhere, containsPattern, createTableDataPort, readTableShape };
|
package/dist/data/index.js
CHANGED
|
@@ -290,9 +290,18 @@ function stableFilterKey(filter) {
|
|
|
290
290
|
return `{${parts.join(",")}}`;
|
|
291
291
|
}
|
|
292
292
|
function liftWithheld(rows) {
|
|
293
|
+
let shared;
|
|
294
|
+
for (const row of rows) {
|
|
295
|
+
const m = (row.measures ?? {})["_withheld"];
|
|
296
|
+
if (m !== void 0 && m !== null && typeof m === "object") {
|
|
297
|
+
shared = m;
|
|
298
|
+
break;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
293
301
|
return rows.map((row) => {
|
|
294
302
|
const measures = row.measures ?? {};
|
|
295
|
-
const
|
|
303
|
+
const own = measures["_withheld"];
|
|
304
|
+
const marker = own !== void 0 && own !== null && typeof own === "object" ? own : shared;
|
|
296
305
|
const rowCount = row.row_count ?? 0;
|
|
297
306
|
if (marker === void 0 || marker === null || typeof marker !== "object") {
|
|
298
307
|
return rowCount === row.row_count ? row : { ...row, row_count: rowCount };
|
|
@@ -3234,12 +3243,15 @@ function createRecordsClient(given) {
|
|
|
3234
3243
|
() => true
|
|
3235
3244
|
);
|
|
3236
3245
|
}
|
|
3237
|
-
const door = await
|
|
3238
|
-
DOORS.readRecord,
|
|
3239
|
-
|
|
3240
|
-
"recordRead"
|
|
3241
|
-
|
|
3246
|
+
const [door, header] = await Promise.all([
|
|
3247
|
+
callDoor(DOORS.readRecord, { p_organization_id: org, p_record_id: record_id }, "recordRead"),
|
|
3248
|
+
// A version that cannot be read never takes the record away: it comes back as null.
|
|
3249
|
+
callDoor(DOORS.recordHeaders, { p_organization_id: org, p_ids: [record_id] }, "recordRead.version").catch(
|
|
3250
|
+
() => null
|
|
3251
|
+
)
|
|
3252
|
+
]);
|
|
3242
3253
|
if (!door.ok) return err(door.error);
|
|
3254
|
+
const version = header && header.ok ? header.data?.find((h) => h.id === record_id)?.version ?? null : null;
|
|
3243
3255
|
const { document, hidden } = unfold(door.data);
|
|
3244
3256
|
let computed = [];
|
|
3245
3257
|
let computedUnavailable = null;
|
|
@@ -3252,7 +3264,7 @@ function createRecordsClient(given) {
|
|
|
3252
3264
|
if (provenance.ok) computed = provenance.data ?? [];
|
|
3253
3265
|
else computedUnavailable = provenance.error;
|
|
3254
3266
|
}
|
|
3255
|
-
return ok({ record_id, document, hidden, computed, computedUnavailable });
|
|
3267
|
+
return ok({ record_id, document, hidden, computed, computedUnavailable, version });
|
|
3256
3268
|
},
|
|
3257
3269
|
async listByIds({ table_id, ids }) {
|
|
3258
3270
|
if (ids.length === 0) return ok([]);
|