@ai-matrx/records 0.39.0 → 0.41.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 +53 -27
- package/dist/core/index.cjs +28 -5
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.cts +22 -2
- package/dist/core/index.d.ts +22 -2
- package/dist/core/index.js +28 -5
- package/dist/core/index.js.map +1 -1
- package/dist/{field-C5vJ0Kqv.d.cts → field-CVn0-HKo.d.cts} +54 -5
- package/dist/{field-C5vJ0Kqv.d.ts → field-CVn0-HKo.d.ts} +54 -5
- package/dist/index.cjs +15 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +15 -5
- package/dist/index.js.map +1 -1
- package/dist/react/index.cjs +28 -5
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +73 -5
- package/dist/react/index.d.ts +73 -5
- package/dist/react/index.js +28 -5
- package/dist/react/index.js.map +1 -1
- package/dist/use-cases/index.cjs.map +1 -1
- package/dist/use-cases/index.d.cts +1 -1
- package/dist/use-cases/index.d.ts +1 -1
- package/dist/use-cases/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,58 @@
|
|
|
1
1
|
# Changelog — @ai-matrx/records
|
|
2
2
|
|
|
3
|
+
## 0.41.0
|
|
4
|
+
|
|
5
|
+
**`recordWriteMany` — the door for a paste that is bigger than a page.**
|
|
6
|
+
|
|
7
|
+
`custom.record_write_many` has existed since the store did; no method on
|
|
8
|
+
`RecordsClient` called it, so every bulk create went one `record_write` at a
|
|
9
|
+
time. A 120-line customer list pasted into a grid whose page ceiling is 50 was
|
|
10
|
+
120 round trips, each re-asking the switch, the organization wall and the
|
|
11
|
+
Table's ladder for an answer that cannot have changed between rows.
|
|
12
|
+
|
|
13
|
+
* `recordWriteMany({ table_id, rows, ids? })` asks all three ONCE per call and
|
|
14
|
+
inserts the batch in one statement, returning the new ids IN THE ORDER THE
|
|
15
|
+
ROWS WERE HANDED IN — so a caller can tie each id back to the line of the
|
|
16
|
+
spreadsheet it came from.
|
|
17
|
+
* It CREATES only, and says so: an update carries a per-row optimistic version
|
|
18
|
+
and a batch would have to either drop that or fail a hundred rows for one
|
|
19
|
+
stale one.
|
|
20
|
+
* `store.generated.ts` regenerated against the live store (551 doors).
|
|
21
|
+
|
|
22
|
+
**Consumer action:** none. A caller writing rows one at a time still works;
|
|
23
|
+
`@ai-matrx/records-ui`'s grid paste now chunks through this instead.
|
|
24
|
+
|
|
25
|
+
## 0.40.0
|
|
26
|
+
|
|
27
|
+
**The parity floor this package types is asserted against the one the store ships.**
|
|
28
|
+
|
|
29
|
+
`checkbox` landed as the fourteenth parity type and `store.generated.ts` picked it
|
|
30
|
+
up — but nothing made that agreement a test. Everything that spelled the floor out
|
|
31
|
+
by hand went stale in the same hour: three of the store's own refusal hints, the
|
|
32
|
+
`FieldTypeWord` doc comment, `UseCaseField.parityType`'s doc comment and the
|
|
33
|
+
use-case README's list, all still saying thirteen. A person who asked for a
|
|
34
|
+
checkbox could be told by the store that checkboxes do not exist.
|
|
35
|
+
|
|
36
|
+
* `src/__tests__/real-doors.test.ts` gains three cases, in the one suite that runs
|
|
37
|
+
against the live store: `PARITY_FIELD_TYPES` is exactly
|
|
38
|
+
`custom.parity_field_types()` name for name (a diff NAMES the missing type, it
|
|
39
|
+
never prints a count); every parity type and every behaviour the store ships is
|
|
40
|
+
a legal `parityType` word in `RESOLVABLE_FIELD_TYPE_WORDS`; and `checkbox` is
|
|
41
|
+
present with behaviour `boolean`, with a compile-time assertion that the
|
|
42
|
+
`ParityFieldType` union still admits it. Shown RED: with the `checkbox` row
|
|
43
|
+
removed from `store.generated.ts` all three fail and the first one says
|
|
44
|
+
"expected 'attachment, currency, …' to be 'attachment, checkbox, …'".
|
|
45
|
+
* The four places that wrote the count or the list out by hand now point at the
|
|
46
|
+
derived set instead. No number is written down anywhere in this package.
|
|
47
|
+
* `store.generated.ts` regenerated against the live store (542 doors, 1023 entity
|
|
48
|
+
tokens); `pnpm check:store-registry` was RED on that drift before this release.
|
|
49
|
+
|
|
50
|
+
**Consumer action:** none.
|
|
51
|
+
|
|
52
|
+
**Why 0.40.0 and not 0.38.0.** This work landed on `main` a few minutes after
|
|
53
|
+
0.39.0 was tagged, so the published 0.39.0 does not contain it. The version number
|
|
54
|
+
moves rather than the tag.
|
|
55
|
+
|
|
3
56
|
## 0.39.0
|
|
4
57
|
|
|
5
58
|
**Two things a records screen could not know: that a table's shape had changed,
|
|
@@ -45,33 +98,6 @@ of the set, and nothing else. `src/__tests__/page-truth.test.ts` asserts the
|
|
|
45
98
|
refusal against the live store, so the day it softens into a silent shrink the
|
|
46
99
|
suite goes red and names the inference that has to change with it.
|
|
47
100
|
|
|
48
|
-
## 0.38.0
|
|
49
|
-
|
|
50
|
-
**The parity floor this package types is asserted against the one the store ships.**
|
|
51
|
-
|
|
52
|
-
`checkbox` landed as the fourteenth parity type and `store.generated.ts` picked it
|
|
53
|
-
up — but nothing made that agreement a test. Everything that spelled the floor out
|
|
54
|
-
by hand went stale in the same hour: three of the store's own refusal hints, the
|
|
55
|
-
`FieldTypeWord` doc comment, `UseCaseField.parityType`'s doc comment and the
|
|
56
|
-
use-case README's list, all still saying thirteen. A person who asked for a
|
|
57
|
-
checkbox could be told by the store that checkboxes do not exist.
|
|
58
|
-
|
|
59
|
-
* `src/__tests__/real-doors.test.ts` gains three cases, in the one suite that runs
|
|
60
|
-
against the live store: `PARITY_FIELD_TYPES` is exactly
|
|
61
|
-
`custom.parity_field_types()` name for name (a diff NAMES the missing type, it
|
|
62
|
-
never prints a count); every parity type and every behaviour the store ships is
|
|
63
|
-
a legal `parityType` word in `RESOLVABLE_FIELD_TYPE_WORDS`; and `checkbox` is
|
|
64
|
-
present with behaviour `boolean`, with a compile-time assertion that the
|
|
65
|
-
`ParityFieldType` union still admits it. Shown RED: with the `checkbox` row
|
|
66
|
-
removed from `store.generated.ts` all three fail and the first one says
|
|
67
|
-
"expected 'attachment, currency, …' to be 'attachment, checkbox, …'".
|
|
68
|
-
* The four places that wrote the count or the list out by hand now point at the
|
|
69
|
-
derived set instead. No number is written down anywhere in this package.
|
|
70
|
-
* `store.generated.ts` regenerated against the live store (542 doors, 1023 entity
|
|
71
|
-
tokens); `pnpm check:store-registry` was RED on that drift before this release.
|
|
72
|
-
|
|
73
|
-
**Consumer action:** none.
|
|
74
|
-
|
|
75
101
|
## 0.37.0
|
|
76
102
|
|
|
77
103
|
**Three doors the store already had and this client could not reach.**
|
package/dist/core/index.cjs
CHANGED
|
@@ -724,7 +724,7 @@ var STORE_DOORS = [
|
|
|
724
724
|
{ name: "comment_thread", args: "p_organization_id uuid, p_record_id uuid, p_include_resolved boolean DEFAULT false", returns: "jsonb", security: "definer" },
|
|
725
725
|
{ name: "comment_write", args: "p_organization_id uuid, p_record_id uuid, p_body text, p_anchor jsonb DEFAULT '{}'::jsonb, p_parent_comment_id uuid DEFAULT NULL::uuid, p_mentions uuid[] DEFAULT NULL::uuid[]", returns: "jsonb", security: "definer" },
|
|
726
726
|
{ name: "computed_block", args: "p_block jsonb", returns: "jsonb", security: "invoker" },
|
|
727
|
-
{ name: "computed_provenance", args: "p_organization_id uuid, p_record_id uuid", returns: "TABLE(field_key text, field_id uuid, value jsonb, rule_id uuid, rule_version integer, computed_at timestamp with time zone)", security: "
|
|
727
|
+
{ name: "computed_provenance", args: "p_organization_id uuid, p_record_id uuid", returns: "TABLE(field_key text, field_id uuid, value jsonb, rule_id uuid, rule_version integer, computed_at timestamp with time zone)", security: "definer" },
|
|
728
728
|
{ name: "containment_chain", args: "p_organization_id uuid, p_record_id uuid", returns: "TABLE(ancestor_id uuid, depth integer)", security: "invoker" },
|
|
729
729
|
{ name: "containment_depth_ceiling", args: "p_organization_id uuid DEFAULT NULL::uuid", returns: "integer", security: "invoker" },
|
|
730
730
|
{ name: "containment_edges", args: "p_organization_id uuid", returns: "TABLE(parent_id uuid, child_id uuid, via text)", security: "invoker" },
|
|
@@ -878,6 +878,7 @@ var STORE_DOORS = [
|
|
|
878
878
|
{ name: "io_infer_type", args: "p_samples jsonb", returns: "text", security: "invoker" },
|
|
879
879
|
{ name: "io_money_unit", args: "p_word text", returns: "text", security: "invoker" },
|
|
880
880
|
{ name: "io_outbox_announce", args: "", returns: "trigger", security: "definer" },
|
|
881
|
+
{ name: "io_outbox_broadcast_stmt", args: "", returns: "trigger", security: "definer" },
|
|
881
882
|
{ name: "io_outbox_drain", args: "p_organization_id uuid, p_consumer text, p_limit integer DEFAULT 100, p_event_key text DEFAULT 'records.changed'::text", returns: "TABLE(outbox_id uuid, record_id uuid, table_id uuid, operation text, changed_field_ids jsonb, actor jsonb, occurred_at timestamp with time zone)", security: "definer" },
|
|
882
883
|
{ name: "io_outbox_release", args: "p_organization_id uuid, p_consumer text, p_older_than interval DEFAULT '00:15:00'::interval", returns: "integer", security: "definer" },
|
|
883
884
|
{ name: "io_proposal_accept", args: "p_organization_id uuid, p_import_id uuid, p_column text, p_type text DEFAULT NULL::text, p_label text DEFAULT NULL::text", returns: "uuid", security: "definer" },
|
|
@@ -903,6 +904,7 @@ var STORE_DOORS = [
|
|
|
903
904
|
{ name: "mask_document", args: "p_document jsonb, p_visible_keys text[], p_notices jsonb, p_by_id boolean DEFAULT false, p_key_ids jsonb DEFAULT '{}'::jsonb", returns: "jsonb", security: "invoker" },
|
|
904
905
|
{ name: "mask_document", args: "p_document jsonb, p_visible_keys text[], p_notices jsonb, p_by_id boolean DEFAULT false, p_key_ids jsonb DEFAULT '{}'::jsonb, p_declared_keys text[] DEFAULT NULL::text[]", returns: "jsonb", security: "invoker" },
|
|
905
906
|
{ name: "mask_says_withheld", args: "p_mask jsonb, p_key text", returns: "boolean", security: "invoker" },
|
|
907
|
+
{ name: "may_invite_outside", args: "p_organization_id uuid, p_table_id uuid", returns: "boolean", security: "definer" },
|
|
906
908
|
{ name: "merge_field_kernel_id", args: "", returns: "uuid", security: "invoker" },
|
|
907
909
|
{ name: "migrate_choice_keys", args: "p_organization_id uuid, p_table_id uuid, p_dry_run boolean DEFAULT false", returns: "jsonb", security: "definer" },
|
|
908
910
|
{ name: "migrate_delete", args: "p_organization_id uuid, p_record_id uuid, p_note text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
|
|
@@ -1000,6 +1002,7 @@ var STORE_DOORS = [
|
|
|
1000
1002
|
{ name: "read_paths_outside_the_door", args: "", returns: "TABLE(object_name text, why text)", security: "invoker" },
|
|
1001
1003
|
{ name: "read_record", args: "p_organization_id uuid, p_record_id uuid, p_by_id boolean DEFAULT false", returns: "jsonb", security: "definer" },
|
|
1002
1004
|
{ name: "read_records", args: "p_organization_id uuid, p_table_id uuid, p_by_id boolean DEFAULT false, p_limit integer DEFAULT 200, p_offset integer DEFAULT 0", returns: "TABLE(id uuid, document jsonb, level permission_level)", security: "definer" },
|
|
1005
|
+
{ name: "realtime_topic_admits", args: "p_topic text", returns: "boolean", security: "definer" },
|
|
1003
1006
|
{ name: "record_aggregate", args: "p_organization_id uuid, p_table_id uuid, p_group_by jsonb DEFAULT '[]'::jsonb, p_measures jsonb DEFAULT '[]'::jsonb, p_bucket jsonb DEFAULT NULL::jsonb, p_filter jsonb DEFAULT '{}'::jsonb, p_limit integer DEFAULT 200, p_required text DEFAULT 'viewer'::text", returns: "TABLE(groups jsonb, measures jsonb, row_count bigint)", security: "definer" },
|
|
1004
1007
|
{ name: "record_applicability", args: "p_organization_id uuid, p_record_id uuid", returns: "TABLE(rule_id uuid, rule_name text, rule_version integer, applies boolean, answer jsonb)", security: "invoker" },
|
|
1005
1008
|
{ name: "record_as_of", args: "p_organization_id uuid, p_record_id uuid, p_at timestamp with time zone", returns: "TABLE(state jsonb, replayed boolean)", security: "definer" },
|
|
@@ -1102,6 +1105,12 @@ var STORE_DOORS = [
|
|
|
1102
1105
|
{ name: "table_record_ceiling", args: "", returns: "integer", security: "invoker" },
|
|
1103
1106
|
{ name: "table_record_ceiling", args: "p_organization_id uuid", returns: "integer", security: "invoker" },
|
|
1104
1107
|
{ name: "table_rules", args: "p_organization_id uuid, p_table_id uuid, p_use text, p_record_type text DEFAULT NULL::text", returns: "SETOF custom.record", security: "invoker" },
|
|
1108
|
+
{ name: "table_share_outside", args: "p_organization_id uuid, p_table_id uuid", returns: "jsonb", security: "definer" },
|
|
1109
|
+
{ name: "table_share_outside_accept", args: "p_token text", returns: "jsonb", security: "definer" },
|
|
1110
|
+
{ name: "table_share_outside_for_me", args: "", returns: "TABLE(invitation_id uuid, organization_id uuid, organization text, table_id uuid, table_name text, level text, level_label text, token text, expires_at timestamp with time zone, say text)", security: "definer" },
|
|
1111
|
+
{ name: "table_share_outside_invite", args: "p_organization_id uuid, p_table_id uuid, p_email text, p_level permission_level DEFAULT 'viewer'::permission_level", returns: "jsonb", security: "definer" },
|
|
1112
|
+
{ name: "table_share_outside_resend", args: "p_organization_id uuid, p_invitation_id uuid", returns: "jsonb", security: "definer" },
|
|
1113
|
+
{ name: "table_share_outside_revoke", args: "p_organization_id uuid, p_invitation_id uuid", returns: "jsonb", security: "definer" },
|
|
1105
1114
|
{ name: "table_stage_field", args: "p_organization_id uuid, p_table_id uuid", returns: "text", security: "definer" },
|
|
1106
1115
|
{ name: "table_storage", args: "p_organization_id uuid, p_table_id uuid", returns: "text", security: "invoker" },
|
|
1107
1116
|
{ name: "table_type_field", args: "p_organization_id uuid, p_table_id uuid", returns: "text", security: "definer" },
|
|
@@ -1200,6 +1209,7 @@ var STORE_KNOBS = [
|
|
|
1200
1209
|
{ key: "inbound_domain", value: '"inbound.matrxserver.com"', type: "string" },
|
|
1201
1210
|
{ key: "member_default_level", value: '"viewer"', type: "enum" },
|
|
1202
1211
|
{ key: "member_default_visibility", value: '"all_records"', type: "enum" },
|
|
1212
|
+
{ key: "outside_invite_who", value: '"org_admins_and_table_owners"', type: "string" },
|
|
1203
1213
|
{ key: "page_size_ceiling", value: "1000", type: "integer" },
|
|
1204
1214
|
{ key: "provenance_retention_days", value: "30", type: "number" },
|
|
1205
1215
|
{ key: "records_tool_default", value: "true", type: "boolean" },
|
|
@@ -1216,18 +1226,18 @@ var STORE_KNOBS = [
|
|
|
1216
1226
|
{ key: "world_publish_enabled", value: "false", type: "boolean" }
|
|
1217
1227
|
];
|
|
1218
1228
|
var STORE_REFUSAL_CODES = [
|
|
1219
|
-
{ code: "02000", raised_by: "_checklist_instantiate,checklist_declare,checklist_run,checklist_step_complete,checklist_step_refusal,checklist_template_shape,conversation_scope_bind,dashboard_delete,dashboard_run,doc_letterhead,doc_render_body,doc_render_document,doc_render_read,doc_sign,doc_signature_intact,doc_signature_read,doc_template_delete,doc_template_read,doc_template_save,enrich_pin,entity_field_retire,entity_field_update,entity_record_read,entity_value_write,external_history_event,external_rows,external_stub_upsert,external_writes_set,io_restore,migrate_delete,migrate_extract_parent,migrate_merge,migrate_reclass,migrate_rename,migrate_reparent,migrate_retype,migrate_split,migrate_undo,organization_clear,portal_card,portal_declare,portal_invite,portal_preview,portal_principal_bind,portal_revoke,read_record,record_delete,record_restore,record_restore_preview,record_table,record_update,relation_uncarry,share_access,share_grant,share_lane_set,share_people,share_revoke,sign_request_cancel,sign_request_create,sign_request_remind,sign_request_unchanged,visibility_as_of,work_approval_decide,work_approval_read,work_approval_request,work_assign,work_record_states,work_set_state" },
|
|
1229
|
+
{ code: "02000", raised_by: "_checklist_instantiate,checklist_declare,checklist_run,checklist_step_complete,checklist_step_refusal,checklist_template_shape,conversation_scope_bind,dashboard_delete,dashboard_run,doc_letterhead,doc_render_body,doc_render_document,doc_render_read,doc_sign,doc_signature_intact,doc_signature_read,doc_template_delete,doc_template_read,doc_template_save,enrich_pin,entity_field_retire,entity_field_update,entity_record_read,entity_value_write,external_history_event,external_rows,external_stub_upsert,external_writes_set,io_restore,migrate_delete,migrate_extract_parent,migrate_merge,migrate_reclass,migrate_rename,migrate_reparent,migrate_retype,migrate_split,migrate_undo,organization_clear,portal_card,portal_declare,portal_invite,portal_preview,portal_principal_bind,portal_revoke,read_record,record_delete,record_restore,record_restore_preview,record_table,record_update,relation_uncarry,share_access,share_grant,share_lane_set,share_people,share_revoke,sign_request_cancel,sign_request_create,sign_request_remind,sign_request_unchanged,table_share_outside_accept,table_share_outside_invite,table_share_outside_resend,table_share_outside_revoke,visibility_as_of,work_approval_decide,work_approval_read,work_approval_request,work_assign,work_record_states,work_set_state" },
|
|
1220
1230
|
{ code: "0A000", raised_by: "checklist_step_complete,external_rows,external_source_declare,external_write_through,promote_field,promoted_index_expr,promoted_query_sql,promoted_read,rule_eval,work_assign" },
|
|
1221
1231
|
{ code: "22003", raised_by: "context_resolve" },
|
|
1222
|
-
{ code: "22004", raised_by: "_entity_custom_fields_guard,_value_envelope,actor_word,agg_assert_key,agg_sql,anon_capture,anon_token_issue,anon_write,assert_client_may_reach,booking_declare,capture_submit,checklist_declare,context_resolve,dashboard_block_normalize,dashboard_declare,dashboard_window_sql,doc_render_write,doc_sign,doc_signature_write,doc_template_save,enrich_land,enrich_normalize,external_history_event,external_rows,external_source_declare,external_stub_upsert,external_write_through,external_writes_set,field_history,form_declare,form_submit,home_add,io_comment_write,io_import_begin,io_infer_column,io_outbox_drain,io_restore,migrate_choice_keys,migrate_purge,migrate_reclass,migrate_split,migrate_undo,organization_clear,organization_contents,pipeline_declare,pipeline_gate_preview,portal_declare,portal_invite,portal_principal_bind,provenance_retention_days,provenance_write,query_across_homes,query_by_coordinates,query_rollup,record_delete,record_reparent,record_resolve,record_restore,record_update,record_write,record_write_many,relation_carry,relation_own,rule_declare,share_grant,sign_request_create,sign_request_sign,subscription_declare,table_declare,value_restore,view_declare,work_approval_decide,work_approval_request,work_template_declare" },
|
|
1232
|
+
{ code: "22004", raised_by: "_entity_custom_fields_guard,_value_envelope,actor_word,agg_assert_key,agg_sql,anon_capture,anon_token_issue,anon_write,assert_client_may_reach,booking_declare,capture_submit,checklist_declare,context_resolve,dashboard_block_normalize,dashboard_declare,dashboard_window_sql,doc_render_write,doc_sign,doc_signature_write,doc_template_save,enrich_land,enrich_normalize,external_history_event,external_rows,external_source_declare,external_stub_upsert,external_write_through,external_writes_set,field_history,form_declare,form_submit,home_add,io_comment_write,io_import_begin,io_infer_column,io_outbox_drain,io_restore,migrate_choice_keys,migrate_purge,migrate_reclass,migrate_split,migrate_undo,organization_clear,organization_contents,pipeline_declare,pipeline_gate_preview,portal_declare,portal_invite,portal_principal_bind,provenance_retention_days,provenance_write,query_across_homes,query_by_coordinates,query_rollup,record_delete,record_reparent,record_resolve,record_restore,record_update,record_write,record_write_many,relation_carry,relation_own,rule_declare,share_grant,sign_request_create,sign_request_sign,subscription_declare,table_declare,table_share_outside_invite,value_restore,view_declare,work_approval_decide,work_approval_request,work_template_declare" },
|
|
1223
1233
|
{ code: "22007", raised_by: "dashboard_window_sql" },
|
|
1224
1234
|
{ code: "22012", raised_by: "rule_eval" },
|
|
1225
1235
|
{ code: "22023", raised_by: "_booking_availability,_entity_custom_fields_guard,_value_envelope,_work_shape_guard,actor_word,agg_assert_key,agg_sql,anon_token_issue,booking_declare,containment_parent,dashboard_block_normalize,dashboard_window_sql,doc_render_body,doc_render_write,doc_signature_write,enrich_declare,enrich_land,enrich_normalize,enrich_pin,entity_value_write,external_history_event,external_source_declare,external_stub_upsert,external_write_through,field_history,io_export,io_import_begin,io_import_finish,io_import_plan,io_import_report,io_proposal_accept,migrate_merge,migrate_reclass,my_levels,organization_clear,page_size,pin_agent_cells,pipeline_move,portal_declare,provenance_write,query_by_coordinates,query_rollup,record_update,record_write_many,relation_carry,rule_eval,rule_members,share_grant,share_lane_set,sign_request_create,sign_request_sign,subscription_declare,table_rules,visibility_as_of,work_approval_request,work_list,work_slot_hold" },
|
|
1226
1236
|
{ code: "23503", raised_by: "_booking_availability,_checklist_instantiate,_containment_guard,_field_document_for,_pipeline_stage_key,_record_rule_uses,agg_digest_assemble,anon_publish,anon_rate_take,anon_token_issue,anon_write,assert_organization_wall,booking_cancel,booking_confirm,booking_declare,booking_hold,booking_reschedule,capture_publish,checklist_declare,checklist_steps_table,comment_write,dashboard_declare,delete_rule,doc_sign,doc_template_save,enrich_declare,enrich_due,enrich_land,form_declare,form_submit,home_add,inbound_declare,inbound_mail_land,inbound_set,io_comment_write,io_import_begin,io_import_finish,io_import_report,io_import_rows,io_proposal_accept,migrate_demote,migrate_promote,pipeline_board,pipeline_declare,pipeline_move,pipeline_read,pipeline_transition_refusal,promote_field,promote_table,record_applicability,record_reparent,relation_carry,relation_own,resolve_first_match,rule_applies,rule_declare,rule_eval,rule_members,rule_run,sign_request_create,subscription_mute,subscription_preview,view_declare,work_set_state,work_take_assignment,work_template_instantiate" },
|
|
1227
|
-
{ code: "23505", raised_by: "_unique_rule_holds,doc_sign,doc_signature_write,entity_field_declare,field_declare,home_add,inbound_declare,io_proposal_accept,relation_carry,relation_own,share_grant,sign_request_cancel,sign_request_create,work_approval_decide,work_slot_hold" },
|
|
1237
|
+
{ code: "23505", raised_by: "_unique_rule_holds,doc_sign,doc_signature_write,entity_field_declare,field_declare,home_add,inbound_declare,io_proposal_accept,relation_carry,relation_own,share_grant,sign_request_cancel,sign_request_create,table_share_outside_invite,table_share_outside_resend,work_approval_decide,work_slot_hold" },
|
|
1228
1238
|
{ code: "23514", raised_by: "_checklist_instantiate,_checklist_step_guard,_containment_guard,_dated_values_guard,_derived_fields,_entity_custom_fields_guard,_field_class_guard,_field_document_for,_field_shape_guard,_field_type_parity_guard,_merge_field_shape_guard,_merge_field_temporal_guard,_promoted_field_cap_guard,_record_rule_uses,_resolve_choice_words,_rule_shape_guard,_rule_topology_guard,_store_relation_edge_names_its_field,_table_columns_word_guard,_table_shape_guard,_undeclared_key_guard,_value_envelope,_work_shape_guard,_workdoors_approval_guard,assert_columns_are_defined,assert_entity_is_organization_scoped,capture_publish,capture_sheet_declare,checklist_declare,checklist_step_complete,doc_sign,doc_signature_write,doc_template_save,entity_field_declare,entity_field_retire,entity_field_update,entity_records_find,entity_table,field_declare,field_retire,field_update,home_add,io_import_rows,migrate_merge,relation_carry,relation_own,sign_request_create,sign_request_sign,table_declare,validate_value_envelope,validate_values,work_set_state,work_slots_declare,work_take_assignment,work_template_instantiate" },
|
|
1229
1239
|
{ code: "40001", raised_by: "has_visibility_at" },
|
|
1230
|
-
{ code: "42501", raised_by: "_doc_render_immutable,_doc_signature_immutable,_field_definition_write,_field_write_door,_rule_definition_write,_store_door,anon_capture,anon_inbound_land,anon_publish,anon_token_issue,anon_token_verify,anon_write,assert_client_may_change,assert_client_may_open,assert_client_may_reach,assert_may_know_table,assert_organization_admin,assert_store_door,booking_confirm,booking_declare,booking_hold,capture_submit,checklist_run,comment_write,conversation_scope_bind,conversation_scope_unbind,enrich_declare,enrich_due,enrich_land,enrich_normalize,entity_field_declare,entity_field_retire,entity_field_update,entity_value_write,external_write_through,form_declare,form_submit,inbound_mail_land,io_comment_resolve,io_comment_write,io_import_begin,io_import_finish,io_restore,migrate_purge,migrate_reclass,my_levels,organization_clear,portal_declare,portal_invitation,portal_invite,portal_principal_bind,promote_table,query_visibility_parity,read_record,read_records,record_table,share_grant,subscription_mute,subscription_preview,visibility_as_of,work_approval_decide,work_approval_read,work_approval_request,work_person" },
|
|
1240
|
+
{ code: "42501", raised_by: "_doc_render_immutable,_doc_signature_immutable,_field_definition_write,_field_write_door,_rule_definition_write,_store_door,anon_capture,anon_inbound_land,anon_publish,anon_token_issue,anon_token_verify,anon_write,assert_client_may_change,assert_client_may_open,assert_client_may_reach,assert_may_know_table,assert_organization_admin,assert_store_door,booking_confirm,booking_declare,booking_hold,capture_submit,checklist_run,comment_write,conversation_scope_bind,conversation_scope_unbind,enrich_declare,enrich_due,enrich_land,enrich_normalize,entity_field_declare,entity_field_retire,entity_field_update,entity_value_write,external_write_through,form_declare,form_submit,inbound_mail_land,io_comment_resolve,io_comment_write,io_import_begin,io_import_finish,io_restore,migrate_purge,migrate_reclass,my_levels,organization_clear,portal_declare,portal_invitation,portal_invite,portal_principal_bind,promote_table,query_visibility_parity,read_record,read_records,record_table,share_grant,subscription_mute,subscription_preview,table_share_outside_accept,table_share_outside_invite,table_share_outside_resend,visibility_as_of,work_approval_decide,work_approval_read,work_approval_request,work_person" },
|
|
1231
1241
|
{ code: "42703", raised_by: "entity_table,portal_declare" },
|
|
1232
1242
|
{ code: "53400", raised_by: "anon_rate_take,delete_cascade_closure,enrich_due,enrich_land,promote_field" },
|
|
1233
1243
|
{ code: "54001", raised_by: "record_delete" },
|
|
@@ -2321,6 +2331,7 @@ var DOORS = {
|
|
|
2321
2331
|
queryRecordAsOf: "query_record_as_of",
|
|
2322
2332
|
queryTableAsOf: "query_table_as_of",
|
|
2323
2333
|
recordWrite: "record_write",
|
|
2334
|
+
recordWriteMany: "record_write_many",
|
|
2324
2335
|
recordUpdate: "record_update",
|
|
2325
2336
|
recordDelete: "record_delete",
|
|
2326
2337
|
recordRestore: "record_restore",
|
|
@@ -2902,6 +2913,18 @@ function createRecordsClient(config) {
|
|
|
2902
2913
|
"recordWrite"
|
|
2903
2914
|
);
|
|
2904
2915
|
},
|
|
2916
|
+
async recordWriteMany({ table_id, rows, ids }) {
|
|
2917
|
+
return callDoor(
|
|
2918
|
+
DOORS.recordWriteMany,
|
|
2919
|
+
{
|
|
2920
|
+
p_organization_id: org,
|
|
2921
|
+
p_table_id: table_id,
|
|
2922
|
+
p_rows: rows,
|
|
2923
|
+
...ids === void 0 ? {} : { p_ids: ids }
|
|
2924
|
+
},
|
|
2925
|
+
"recordWriteMany"
|
|
2926
|
+
);
|
|
2927
|
+
},
|
|
2905
2928
|
async recordUpdate({ record_id, patch, expectedVersion }) {
|
|
2906
2929
|
const result = await callDoor(
|
|
2907
2930
|
DOORS.recordUpdate,
|