@ai-matrx/records 0.11.0 → 0.17.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 +154 -0
- package/dist/core/index.cjs +364 -34
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.cts +157 -8
- package/dist/core/index.d.ts +157 -8
- package/dist/core/index.js +364 -34
- package/dist/core/index.js.map +1 -1
- package/dist/index.cjs +134 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +719 -11
- package/dist/index.d.ts +719 -11
- package/dist/index.js +134 -8
- package/dist/index.js.map +1 -1
- package/dist/react/index.cjs +361 -31
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +855 -16
- package/dist/react/index.d.ts +855 -16
- package/dist/react/index.js +361 -31
- package/dist/react/index.js.map +1 -1
- package/package.json +1 -1
package/dist/react/index.cjs
CHANGED
|
@@ -58,11 +58,20 @@ __export(react_exports, {
|
|
|
58
58
|
VALUE_ENVELOPE_KEYS: () => VALUE_ENVELOPE_KEYS,
|
|
59
59
|
asPermissionLevel: () => asPermissionLevel,
|
|
60
60
|
atLeast: () => atLeast,
|
|
61
|
+
choiceSlug: () => choiceSlug,
|
|
62
|
+
choiceValuesOf: () => choiceValuesOf,
|
|
63
|
+
choicesOf: () => choicesOf,
|
|
61
64
|
err: () => err,
|
|
62
65
|
highestLevel: () => highestLevel,
|
|
66
|
+
holdsARetiredChoice: () => holdsARetiredChoice,
|
|
63
67
|
isRecordsErr: () => isRecordsErr,
|
|
68
|
+
isTheChosen: () => isTheChosen,
|
|
69
|
+
looksLikeAnId: () => looksLikeAnId,
|
|
64
70
|
measureKey: () => measureKey,
|
|
65
71
|
ok: () => ok,
|
|
72
|
+
optionKey: () => optionKey,
|
|
73
|
+
optionLabel: () => optionLabel,
|
|
74
|
+
portalPath: () => portalPath,
|
|
66
75
|
publicFormPath: () => publicFormPath,
|
|
67
76
|
useEntityFieldMutation: () => useEntityFieldMutation,
|
|
68
77
|
useEntityFieldRights: () => useEntityFieldRights,
|
|
@@ -224,7 +233,24 @@ var STORE_DOORS = [
|
|
|
224
233
|
{ name: "caller_role", args: "", returns: "name", security: "invoker" },
|
|
225
234
|
{ name: "carrying_edges_in", args: "p_organization_id uuid", returns: "TABLE(container_type text, container_id uuid, item_type text, item_id uuid, conveys_max permission_level)", security: "definer" },
|
|
226
235
|
{ name: "carrying_edges_of", args: "p_item_type text, p_item_id uuid", returns: "TABLE(container_type text, container_id uuid, conveys_max permission_level)", security: "definer" },
|
|
236
|
+
{ name: "choice_census", args: "p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid", returns: "jsonb", security: "definer" },
|
|
237
|
+
{ name: "choice_field_map", args: "p_organization_id uuid, p_table_id uuid", returns: "jsonb", security: "invoker" },
|
|
238
|
+
{ name: "choice_filter_normalize", args: "p_map jsonb, p_filter jsonb", returns: "jsonb", security: "invoker" },
|
|
239
|
+
{ name: "choice_key_for", args: "p_organization_id uuid, p_options_table_id uuid, p_title text, p_exclude uuid DEFAULT NULL::uuid", returns: "text", security: "invoker" },
|
|
240
|
+
{ name: "choice_key_of", args: "p_field jsonb, p_token text", returns: "text", security: "invoker" },
|
|
241
|
+
{ name: "choice_options", args: "p_organization_id uuid, p_options_table_id uuid", returns: "jsonb", security: "invoker" },
|
|
242
|
+
{ name: "choice_render", args: "p_organization_id uuid, p_table_id uuid, p_doc jsonb", returns: "jsonb", security: "invoker" },
|
|
243
|
+
{ name: "choice_render_groups", args: "p_map jsonb, p_groups jsonb", returns: "jsonb", security: "invoker" },
|
|
244
|
+
{ name: "choice_render_note", args: "p_field jsonb, p_value jsonb", returns: "jsonb", security: "invoker" },
|
|
245
|
+
{ name: "choice_render_value", args: "p_field jsonb, p_value jsonb", returns: "jsonb", security: "invoker" },
|
|
246
|
+
{ name: "choice_slug", args: "p_word text", returns: "text", security: "invoker" },
|
|
247
|
+
{ name: "choice_synonyms", args: "p_organization_id uuid, p_table_id uuid, p_token text", returns: "text[]", security: "invoker" },
|
|
248
|
+
{ name: "choice_synonyms_in", args: "p_map jsonb, p_token text", returns: "text[]", security: "invoker" },
|
|
249
|
+
{ name: "choice_words", args: "p_field jsonb", returns: "text", security: "invoker" },
|
|
227
250
|
{ name: "client_write_grants", args: "", returns: "TABLE(role_name text, object_name text, privilege text)", security: "invoker" },
|
|
251
|
+
{ name: "comment_mention_deliver", args: "p_organization_id uuid, p_record_id uuid, p_table_id uuid, p_comment_id uuid, p_recipient uuid, p_author_name text, p_record_title text, p_body text", returns: "uuid", security: "definer" },
|
|
252
|
+
{ name: "comment_thread", args: "p_organization_id uuid, p_record_id uuid, p_include_resolved boolean DEFAULT false", returns: "jsonb", security: "definer" },
|
|
253
|
+
{ 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" },
|
|
228
254
|
{ 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: "invoker" },
|
|
229
255
|
{ name: "containment_chain", args: "p_organization_id uuid, p_record_id uuid", returns: "TABLE(ancestor_id uuid, depth integer)", security: "invoker" },
|
|
230
256
|
{ name: "containment_depth_ceiling", args: "p_organization_id uuid DEFAULT NULL::uuid", returns: "integer", security: "invoker" },
|
|
@@ -232,6 +258,17 @@ var STORE_DOORS = [
|
|
|
232
258
|
{ name: "containment_parent", args: "p_data jsonb", returns: "uuid", security: "invoker" },
|
|
233
259
|
{ name: "cross_organization_links_open", args: "p_source_organization_id uuid, p_target_organization_id uuid", returns: "boolean", security: "invoker" },
|
|
234
260
|
{ name: "custom_fields_tables", args: "", returns: "TABLE(token text, schema_name text, table_name text)", security: "invoker" },
|
|
261
|
+
{ name: "dashboard_block_normalize", args: "p_organization_id uuid, p_subject_table_id uuid, p_block jsonb", returns: "jsonb", security: "definer" },
|
|
262
|
+
{ name: "dashboard_class", args: "", returns: "text", security: "invoker" },
|
|
263
|
+
{ name: "dashboard_declare", args: "p_organization_id uuid, p_table_id uuid, p_name text, p_blocks jsonb DEFAULT '[]'::jsonb, p_presentation jsonb DEFAULT '{}'::jsonb, p_dashboard_id uuid DEFAULT NULL::uuid", returns: "uuid", security: "definer" },
|
|
264
|
+
{ name: "dashboard_delete", args: "p_organization_id uuid, p_dashboard_id uuid", returns: "boolean", security: "definer" },
|
|
265
|
+
{ name: "dashboard_field_keys", args: "p_organization_id uuid, p_table_id uuid", returns: "text[]", security: "definer" },
|
|
266
|
+
{ name: "dashboard_kinds", args: "", returns: "text[]", security: "invoker" },
|
|
267
|
+
{ name: "dashboard_moment_sql", args: "p_key text", returns: "text", security: "invoker" },
|
|
268
|
+
{ name: "dashboard_run", args: "p_organization_id uuid, p_dashboard_id uuid, p_filter jsonb DEFAULT '{}'::jsonb", returns: "jsonb", security: "definer" },
|
|
269
|
+
{ name: "dashboard_stuck", args: "p_organization_id uuid, p_table_id uuid, p_state_key text, p_days integer DEFAULT 14, p_filter jsonb DEFAULT '{}'::jsonb, p_limit integer DEFAULT 50, p_required text DEFAULT 'viewer'::text", returns: "TABLE(record_id uuid, title text, state text, last_changed_at timestamp with time zone, days_unchanged numeric, measured_from text)", security: "definer" },
|
|
270
|
+
{ name: "dashboard_window_sql", args: "p_key text, p_window jsonb", returns: "text", security: "invoker" },
|
|
271
|
+
{ name: "dashboards", args: "p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid", returns: "TABLE(dashboard_id uuid, table_id uuid, name text, blocks jsonb, presentation jsonb, block_count integer, version integer, created_at timestamp with time zone, updated_at timestamp with time zone)", security: "definer" },
|
|
235
272
|
{ name: "delete_cascade_closure", args: "p_organization_id uuid, p_record_id uuid", returns: "uuid[]", security: "invoker" },
|
|
236
273
|
{ name: "delete_preview", args: "p_organization_id uuid, p_record_id uuid", returns: "jsonb", security: "definer" },
|
|
237
274
|
{ name: "delete_rule", args: "p_organization_id uuid, p_record_id uuid, p_apply boolean DEFAULT true", returns: "jsonb", security: "definer" },
|
|
@@ -246,13 +283,17 @@ var STORE_DOORS = [
|
|
|
246
283
|
{ name: "doc_render_document", args: "p_organization_id uuid, p_template_id uuid, p_record_id uuid", returns: "uuid", security: "definer" },
|
|
247
284
|
{ name: "doc_render_read", args: "p_organization_id uuid, p_render_id uuid", returns: "jsonb", security: "definer" },
|
|
248
285
|
{ name: "doc_render_write", args: "p_organization_id uuid, p_template_id uuid, p_record_id uuid, p_table_id uuid, p_template_version integer, p_body text, p_content_hash text", returns: "uuid", security: "definer" },
|
|
286
|
+
{ name: "doc_renders", args: "p_organization_id uuid, p_record_id uuid", returns: "TABLE(render_id uuid, template_id uuid, record_id uuid, table_id uuid, template_version integer, body text, content_hash text, rendered_at timestamp with time zone)", security: "definer" },
|
|
249
287
|
{ name: "doc_sign", args: "p_organization_id uuid, p_render_id uuid, p_field_key text, p_signer_name text, p_signer_user_id uuid DEFAULT NULL::uuid", returns: "uuid", security: "definer" },
|
|
250
288
|
{ name: "doc_signature_field_ok", args: "p_field_data jsonb", returns: "boolean", security: "invoker" },
|
|
251
289
|
{ name: "doc_signature_intact", args: "p_organization_id uuid, p_signature_id uuid", returns: "jsonb", security: "invoker" },
|
|
252
290
|
{ name: "doc_signature_read", args: "p_organization_id uuid, p_signature_id uuid", returns: "jsonb", security: "definer" },
|
|
253
291
|
{ name: "doc_signature_write", args: "p_organization_id uuid, p_render_id uuid, p_record_id uuid, p_field_key text, p_signer_name text, p_signer_user_id uuid, p_document_hash text, p_document_version integer", returns: "uuid", security: "definer" },
|
|
292
|
+
{ name: "doc_signatures", args: "p_organization_id uuid, p_record_id uuid", returns: "TABLE(signature_id uuid, render_id uuid, record_id uuid, field_key text, signer_name text, signer_user_id uuid, signed_at timestamp with time zone, document_hash text, document_version integer)", security: "definer" },
|
|
293
|
+
{ name: "doc_template_delete", args: "p_organization_id uuid, p_template_id uuid", returns: "boolean", security: "definer" },
|
|
254
294
|
{ name: "doc_template_read", args: "p_organization_id uuid, p_template_id uuid", returns: "jsonb", security: "definer" },
|
|
255
295
|
{ name: "doc_template_save", args: "p_organization_id uuid, p_table_id uuid, p_name text, p_body text, p_template_id uuid DEFAULT NULL::uuid", returns: "uuid", security: "definer" },
|
|
296
|
+
{ name: "doc_templates", args: "p_organization_id uuid, p_table_id uuid", returns: "TABLE(template_id uuid, renders_table_id uuid, name text, body text, template_version integer, token_count bigint, updated_at timestamp with time zone)", security: "definer" },
|
|
256
297
|
{ name: "doc_token_pattern", args: "", returns: "text", security: "invoker" },
|
|
257
298
|
{ name: "doc_tokens", args: "p_body text", returns: "TABLE(ordinal integer, raw text, field_id uuid)", security: "invoker" },
|
|
258
299
|
{ name: "doc_unresolved_tokens", args: "p_organization_id uuid, p_table_id uuid, p_body text", returns: "TABLE(raw text, field_id uuid, why text)", security: "invoker" },
|
|
@@ -281,6 +322,7 @@ var STORE_DOORS = [
|
|
|
281
322
|
{ name: "field_behaviour", args: "p_field_data jsonb", returns: "text", security: "invoker" },
|
|
282
323
|
{ name: "field_declare", args: "p_organization_id uuid, p_table_id uuid, p_spec jsonb", returns: "uuid", security: "definer" },
|
|
283
324
|
{ name: "field_dependants", args: "p_organization_id uuid, p_field_id uuid", returns: "TABLE(kind text, dependant_id uuid, label text, how text)", security: "definer" },
|
|
325
|
+
{ name: "field_history", args: "p_organization_id uuid, p_table_id uuid, p_field_key text, p_limit integer DEFAULT 100, p_offset integer DEFAULT 0, p_record_id uuid DEFAULT NULL::uuid", returns: "TABLE(record_id uuid, record_title text, version integer, occurred_at timestamp with time zone, operation_label text, actor jsonb, before jsonb, after jsonb)", security: "definer" },
|
|
284
326
|
{ name: "field_kernel_id", args: "", returns: "uuid", security: "invoker" },
|
|
285
327
|
{ name: "field_options", args: "p_organization_id uuid, p_field_id uuid", returns: "SETOF custom.record", security: "definer" },
|
|
286
328
|
{ name: "field_retire", args: "p_organization_id uuid, p_field_id uuid", returns: "boolean", security: "definer" },
|
|
@@ -299,7 +341,11 @@ var STORE_DOORS = [
|
|
|
299
341
|
{ name: "has_visibility", args: "p_user_id uuid, p_type text, p_id uuid, p_required permission_level DEFAULT 'viewer'::permission_level", returns: "boolean", security: "definer" },
|
|
300
342
|
{ name: "has_visibility_at", args: "p_user_id uuid, p_type text, p_id uuid, p_required permission_level DEFAULT 'viewer'::permission_level, p_organization_id uuid DEFAULT NULL::uuid, p_min_version bigint DEFAULT NULL::bigint", returns: "boolean", security: "definer" },
|
|
301
343
|
{ name: "hidden_field_notice", args: "p_field custom.record, p_action text DEFAULT 'read'::text", returns: "jsonb", security: "invoker" },
|
|
344
|
+
{ name: "history_actor", args: "p_tier text, p_document jsonb, p_actor_id uuid, p_people jsonb", returns: "jsonb", security: "invoker" },
|
|
345
|
+
{ name: "history_changes", args: "p_organization_id uuid, p_table_id uuid, p_old jsonb, p_new jsonb", returns: "jsonb", security: "invoker" },
|
|
346
|
+
{ name: "history_people", args: "p_organization_id uuid, p_ids uuid[]", returns: "jsonb", security: "definer" },
|
|
302
347
|
{ name: "history_prune", args: "p_organization_id uuid, p_scope text DEFAULT 'values'::text, p_table_id uuid DEFAULT NULL::uuid, p_dry_run boolean DEFAULT true", returns: "jsonb", security: "definer" },
|
|
348
|
+
{ name: "history_restore_body", args: "p_current jsonb, p_target jsonb, p_field_key text DEFAULT NULL::text", returns: "jsonb", security: "invoker" },
|
|
303
349
|
{ name: "history_retention", args: "p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid", returns: "jsonb", security: "definer" },
|
|
304
350
|
{ name: "history_retention_floor_raise", args: "p_organization_id uuid, p_days integer", returns: "integer", security: "definer" },
|
|
305
351
|
{ name: "history_retention_set", args: "p_organization_id uuid, p_table_id uuid, p_days integer", returns: "integer", security: "definer" },
|
|
@@ -328,16 +374,20 @@ var STORE_DOORS = [
|
|
|
328
374
|
{ name: "io_restore", args: "p_organization_id uuid, p_record_id uuid, p_version integer", returns: "integer", security: "definer" },
|
|
329
375
|
{ name: "io_revisions", args: "p_organization_id uuid, p_record_id uuid", returns: "TABLE(version integer, changed_at timestamp with time zone, changed_by uuid, summary text, operation text, changed_fields jsonb)", security: "definer" },
|
|
330
376
|
{ name: "is_a_retirement", args: "p_old_deleted timestamp with time zone, p_new_deleted timestamp with time zone, p_old_data jsonb, p_new_data jsonb, p_old_table uuid, p_new_table uuid, p_old_org uuid, p_new_org uuid, p_old_class text, p_new_class text", returns: "boolean", security: "invoker" },
|
|
377
|
+
{ name: "list_door_disagreements", args: "p_pretend text DEFAULT NULL::text, p_only_organization uuid DEFAULT NULL::uuid, p_sample integer DEFAULT 200", returns: "TABLE(organization_id uuid, organization_name text, member_id uuid, table_id uuid, record_id uuid, door text, why text)", security: "invoker" },
|
|
378
|
+
{ name: "list_door_disagreements", args: "p_pretend text, p_only_organization uuid, p_sample integer, p_exhaustive boolean", returns: "TABLE(organization_id uuid, organization_name text, member_id uuid, table_id uuid, record_id uuid, door text, why text)", security: "invoker" },
|
|
331
379
|
{ name: "lookup_value", args: "p_organization_id uuid, p_record_id uuid, p_field_data jsonb", returns: "jsonb", security: "invoker" },
|
|
332
380
|
{ 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" },
|
|
333
381
|
{ 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" },
|
|
334
382
|
{ name: "merge_field_kernel_id", args: "", returns: "uuid", security: "invoker" },
|
|
383
|
+
{ name: "migrate_choice_keys", args: "p_organization_id uuid, p_table_id uuid, p_dry_run boolean DEFAULT false", returns: "jsonb", security: "definer" },
|
|
335
384
|
{ name: "migrate_delete", args: "p_organization_id uuid, p_record_id uuid, p_note text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
|
|
336
385
|
{ name: "migrate_demote", args: "p_organization_id uuid, p_table_id uuid, p_note text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
|
|
337
386
|
{ name: "migrate_extract_parent", args: "p_organization_id uuid, p_id uuid, p_parent_table_id uuid, p_moved_keys text[], p_note text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
|
|
338
387
|
{ name: "migrate_merge", args: "p_organization_id uuid, p_winner_id uuid, p_loser_id uuid, p_note text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
|
|
339
388
|
{ name: "migrate_promote", args: "p_organization_id uuid, p_table_id uuid, p_note text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
|
|
340
389
|
{ name: "migrate_purge", args: "p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid, p_dry_run boolean DEFAULT true", returns: "jsonb", security: "definer" },
|
|
390
|
+
{ name: "migrate_reclass", args: "p_organization_id uuid, p_id uuid, p_to text DEFAULT 'field'::text, p_note text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
|
|
341
391
|
{ name: "migrate_rename", args: "p_organization_id uuid, p_id uuid, p_to text, p_note text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
|
|
342
392
|
{ name: "migrate_reparent", args: "p_organization_id uuid, p_id uuid, p_parent_id uuid, p_note text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
|
|
343
393
|
{ name: "migrate_retype", args: "p_organization_id uuid, p_id uuid, p_to text, p_note text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
|
|
@@ -357,6 +407,20 @@ var STORE_DOORS = [
|
|
|
357
407
|
{ name: "parity_values", args: "p_organization_id uuid, p_record_id uuid", returns: "TABLE(field_key text, field_id uuid, parity_type text, behavior text, unit text, format text, value jsonb, value_version integer, actor text, written_at timestamp with time zone)", security: "invoker" },
|
|
358
408
|
{ name: "per_value_access_words", args: "", returns: "text[]", security: "invoker" },
|
|
359
409
|
{ name: "person_kernel_id", args: "", returns: "uuid", security: "invoker" },
|
|
410
|
+
{ name: "portal_admits", args: "p_organization_id uuid, p_user_id uuid DEFAULT NULL::uuid", returns: "boolean", security: "definer" },
|
|
411
|
+
{ name: "portal_card", args: "p_organization_id uuid, p_portal_id uuid", returns: "jsonb", security: "definer" },
|
|
412
|
+
{ name: "portal_declare", args: "p_organization_id uuid, p_title text, p_client_table_id uuid, p_tables jsonb, p_portal_id uuid DEFAULT NULL::uuid, p_slug text DEFAULT NULL::text, p_sign_in_method text DEFAULT 'magic_link'::text", returns: "uuid", security: "definer" },
|
|
413
|
+
{ name: "portal_field_map", args: "p_organization_id uuid, p_table_id uuid", returns: "TABLE(field_id uuid, field_key text, field_type text, points_at uuid)", security: "definer" },
|
|
414
|
+
{ name: "portal_invitation", args: "p_slug text, p_email text", returns: "jsonb", security: "definer" },
|
|
415
|
+
{ name: "portal_invite", args: "p_organization_id uuid, p_portal_id uuid, p_client_record_id uuid, p_email text, p_user_id uuid DEFAULT NULL::uuid", returns: "jsonb", security: "definer" },
|
|
416
|
+
{ name: "portal_me", args: "", returns: "jsonb", security: "definer" },
|
|
417
|
+
{ name: "portal_preview", args: "p_organization_id uuid, p_portal_id uuid, p_principal_id uuid, p_table_id uuid", returns: "TABLE(record_id uuid, title text)", security: "definer" },
|
|
418
|
+
{ name: "portal_principal_bind", args: "p_organization_id uuid, p_principal_id uuid, p_user_id uuid", returns: "jsonb", security: "definer" },
|
|
419
|
+
{ name: "portal_public", args: "p_slug text", returns: "jsonb", security: "definer" },
|
|
420
|
+
{ name: "portal_record_title", args: "p_organization_id uuid, p_record_id uuid", returns: "text", security: "definer" },
|
|
421
|
+
{ name: "portal_revoke", args: "p_organization_id uuid, p_portal_id uuid, p_principal_id uuid", returns: "jsonb", security: "definer" },
|
|
422
|
+
{ name: "portal_slug", args: "p_organization_id uuid, p_title text, p_portal_id uuid DEFAULT NULL::uuid", returns: "text", security: "definer" },
|
|
423
|
+
{ name: "portals", args: "p_organization_id uuid", returns: "TABLE(portal_id uuid, title text, slug text, client_table_id uuid, client_table text, is_active boolean, tables integer, invited integer, signed_in integer, sign_in_method text, opened_at timestamp with time zone)", security: "definer" },
|
|
360
424
|
{ name: "presentation_kernel_id", args: "", returns: "uuid", security: "invoker" },
|
|
361
425
|
{ name: "promote_field", args: "p_organization_id uuid, p_table_id uuid, p_field_id uuid", returns: "jsonb", security: "invoker" },
|
|
362
426
|
{ name: "promote_table", args: "p_organization_id uuid, p_table_id uuid", returns: "jsonb", security: "definer" },
|
|
@@ -402,15 +466,20 @@ var STORE_DOORS = [
|
|
|
402
466
|
{ name: "record_card", args: "p_viewer uuid, p_organization_id uuid, p_record_id uuid", returns: "jsonb", security: "definer" },
|
|
403
467
|
{ name: "record_carrying_edges", args: "p_id uuid, p_data_class text, p_data jsonb, p_deleted_at timestamp with time zone", returns: "TABLE(container_id uuid, item_id uuid, edge_role text)", security: "invoker" },
|
|
404
468
|
{ name: "record_delete", args: "p_organization_id uuid, p_record_id uuid", returns: "timestamp with time zone", security: "definer" },
|
|
469
|
+
{ name: "record_history", args: "p_organization_id uuid, p_record_id uuid, p_limit integer DEFAULT 200, p_offset integer DEFAULT 0", returns: "TABLE(version integer, occurred_at timestamp with time zone, operation text, operation_label text, actor jsonb, changes jsonb, migration_id uuid, undoable boolean)", security: "definer" },
|
|
405
470
|
{ name: "record_relation_edges", args: "p_organization_id uuid, p_id uuid, p_table_id uuid, p_data_class text, p_data jsonb, p_deleted_at timestamp with time zone", returns: "TABLE(target_id uuid, edge_role text, field_id uuid, ord integer)", security: "invoker" },
|
|
406
471
|
{ name: "record_reparent", args: "p_organization_id uuid, p_record_id uuid, p_parent_id uuid", returns: "void", security: "definer" },
|
|
407
472
|
{ name: "record_resolve", args: "p_organization_id uuid, p_id uuid", returns: "jsonb", security: "definer" },
|
|
408
473
|
{ name: "record_restore", args: "p_organization_id uuid, p_record_id uuid", returns: "void", security: "definer" },
|
|
474
|
+
{ name: "record_restore_preview", args: "p_organization_id uuid, p_record_id uuid, p_version integer, p_field_key text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
|
|
475
|
+
{ name: "record_restore_version", args: "p_organization_id uuid, p_record_id uuid, p_version integer", returns: "jsonb", security: "definer" },
|
|
409
476
|
{ name: "record_state_as_of", args: "p_record_id uuid, p_at timestamp with time zone", returns: "TABLE(state jsonb, replayed boolean)", security: "definer" },
|
|
477
|
+
{ name: "record_table", args: "p_organization_id uuid, p_record_id uuid", returns: "uuid", security: "definer" },
|
|
410
478
|
{ name: "record_update", args: "p_organization_id uuid, p_record_id uuid, p_patch jsonb, p_expected_version integer DEFAULT NULL::integer", returns: "integer", security: "definer" },
|
|
411
479
|
{ name: "record_values", args: "p_organization_id uuid, p_record_id uuid", returns: "jsonb", security: "invoker" },
|
|
412
480
|
{ name: "record_values_versioned", args: "p_organization_id uuid, p_record_id uuid", returns: "TABLE(field_key text, field_id uuid, value jsonb, value_version integer, source jsonb, absent_reason text, actor text, on_behalf_of text, written_at timestamp with time zone, alternates jsonb)", security: "definer" },
|
|
413
481
|
{ name: "record_write", args: "p_organization_id uuid, p_table_id uuid, p_data jsonb", returns: "uuid", security: "definer" },
|
|
482
|
+
{ name: "refusals_claiming_a_level_never_asked", args: "", returns: "TABLE(function_name text, identity_args text, why text)", security: "invoker" },
|
|
414
483
|
{ name: "relation_carry", args: "p_organization_id uuid, p_container_id uuid, p_item_id uuid", returns: "uuid", security: "definer" },
|
|
415
484
|
{ name: "relation_edges_withdraw", args: "p_organization_id uuid, p_field_ids uuid[], p_why text", returns: "integer", security: "definer" },
|
|
416
485
|
{ name: "relation_own", args: "p_organization_id uuid, p_owner_id uuid, p_target_id uuid", returns: "uuid", security: "definer" },
|
|
@@ -456,7 +525,11 @@ var STORE_DOORS = [
|
|
|
456
525
|
{ name: "stamp_value_envelopes", args: "p_data jsonb, p_actor text, p_on_behalf_of text, p_at timestamp with time zone", returns: "jsonb", security: "invoker" },
|
|
457
526
|
{ name: "storage_modes", args: "", returns: "text[]", security: "invoker" },
|
|
458
527
|
{ name: "store_is_open", args: "p_organization_id uuid DEFAULT NULL::uuid", returns: "boolean", security: "invoker" },
|
|
528
|
+
{ name: "subscription_cadences", args: "p_organization_id uuid", returns: "text[]", security: "definer" },
|
|
529
|
+
{ name: "subscription_mute", args: "p_organization_id uuid, p_rule_id uuid, p_muted boolean DEFAULT true", returns: "boolean", security: "definer" },
|
|
530
|
+
{ name: "subscriptions", args: "p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid", returns: "TABLE(rule_id uuid, name text, table_id uuid, saved_view_id uuid, cadence text, schedule text, channel text, recipient_user_id uuid, event_key text, muted boolean, mine boolean, i_may_mute boolean)", security: "definer" },
|
|
459
531
|
{ name: "table_capacity", args: "p_organization_id uuid, p_table_id uuid", returns: "jsonb", security: "definer" },
|
|
532
|
+
{ name: "table_carries_its_rows", args: "p_user_id uuid, p_table_id uuid, p_required permission_level DEFAULT 'viewer'::permission_level", returns: "boolean", security: "definer" },
|
|
460
533
|
{ name: "table_contents", args: "p_organization_id uuid, p_table_id uuid", returns: "TABLE(record_id uuid, kind text, goes_at integer)", security: "invoker" },
|
|
461
534
|
{ name: "table_declare", args: "p_organization_id uuid, p_spec jsonb", returns: "uuid", security: "definer" },
|
|
462
535
|
{ name: "table_has_a_visible_record", args: "p_user uuid, p_organization_id uuid, p_table_id uuid", returns: "boolean", security: "definer" },
|
|
@@ -478,6 +551,7 @@ var STORE_DOORS = [
|
|
|
478
551
|
{ name: "value_envelope_ok", args: "p_data jsonb", returns: "boolean", security: "invoker" },
|
|
479
552
|
{ name: "value_envelope_refusal", args: "p_data jsonb", returns: "text", security: "invoker" },
|
|
480
553
|
{ name: "value_read", args: "p_organization_id uuid, p_record_id uuid, p_key text", returns: "TABLE(field_key text, field_id uuid, value jsonb, value_version integer, source jsonb, absent_reason text, actor text, on_behalf_of text, written_at timestamp with time zone, alternates jsonb)", security: "definer" },
|
|
554
|
+
{ name: "value_restore", args: "p_organization_id uuid, p_record_id uuid, p_field_key text, p_version integer", returns: "jsonb", security: "definer" },
|
|
481
555
|
{ name: "value_versions", args: "p_old jsonb, p_new jsonb", returns: "jsonb", security: "invoker" },
|
|
482
556
|
{ name: "visibility_ancestors", args: "p_item_type text, p_item_id uuid", returns: "TABLE(container_type text, container_id uuid, depth integer, max_level permission_level)", security: "definer" },
|
|
483
557
|
{ name: "visibility_as_of", args: "p_organization_id uuid, p_record_id uuid, p_at timestamp with time zone", returns: "TABLE(principal_kind text, principal_id uuid, level permission_level, through_kind text, through_id uuid, reason text, replayed boolean, held_from timestamp with time zone, held_to timestamp with time zone)", security: "definer" },
|
|
@@ -490,6 +564,7 @@ var STORE_DOORS = [
|
|
|
490
564
|
{ name: "widget_kernel_id", args: "", returns: "uuid", security: "invoker" },
|
|
491
565
|
{ name: "work_approval_approvers", args: "p_organization_id uuid, p_subject_id uuid, p_approver_id uuid DEFAULT NULL::uuid", returns: "TABLE(user_id uuid, name text, why text)", security: "definer" },
|
|
492
566
|
{ name: "work_approval_decide", args: "p_organization_id uuid, p_approval_id uuid, p_approve boolean, p_note text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
|
|
567
|
+
{ name: "work_approval_kinds", args: "", returns: "text[]", security: "invoker" },
|
|
493
568
|
{ name: "work_approval_may_decide", args: "p_organization_id uuid, p_approval_id uuid", returns: "boolean", security: "definer" },
|
|
494
569
|
{ name: "work_approval_read", args: "p_organization_id uuid, p_approval_id uuid", returns: "jsonb", security: "definer" },
|
|
495
570
|
{ name: "work_approval_request", args: "p_organization_id uuid, p_subject_id uuid, p_change jsonb, p_note text DEFAULT NULL::text, p_approver_id uuid DEFAULT NULL::uuid, p_origin text DEFAULT 'person'::text, p_conversation_id uuid DEFAULT NULL::uuid", returns: "jsonb", security: "definer" },
|
|
@@ -509,6 +584,7 @@ var STORE_DOORS = [
|
|
|
509
584
|
{ name: "work_slot_index_name", args: "p_table_id uuid", returns: "text", security: "invoker" },
|
|
510
585
|
{ name: "work_slot_release", args: "p_organization_id uuid, p_hold_id uuid", returns: "boolean", security: "definer" },
|
|
511
586
|
{ name: "work_slots_declare", args: "p_organization_id uuid, p_name text, p_slug text, p_home_id uuid DEFAULT NULL::uuid", returns: "jsonb", security: "definer" },
|
|
587
|
+
{ name: "work_state_id", args: "p_organization_id uuid, p_table_id uuid, p_value text", returns: "uuid", security: "invoker" },
|
|
512
588
|
{ name: "work_states", args: "", returns: "TABLE(sort integer, name text, terminal boolean, next text[])", security: "invoker" },
|
|
513
589
|
{ name: "work_take_assignment", args: "p_organization_id uuid, p_table_id uuid", returns: "jsonb", security: "definer" },
|
|
514
590
|
{ name: "work_template_declare", args: "p_organization_id uuid, p_name text, p_graph jsonb", returns: "uuid", security: "definer" },
|
|
@@ -526,6 +602,7 @@ var STORE_KNOBS = [
|
|
|
526
602
|
{ key: "code_paths_enabled", value: "false", type: "boolean" },
|
|
527
603
|
{ key: "consumer_chat_seeding_enabled", value: "false", type: "boolean" },
|
|
528
604
|
{ key: "consumer_checkout_enabled", value: "false", type: "boolean" },
|
|
605
|
+
{ key: "consumer_context_enabled", value: "false", type: "boolean" },
|
|
529
606
|
{ key: "consumer_education_enabled", value: "false", type: "boolean" },
|
|
530
607
|
{ key: "consumer_extension_enabled", value: "false", type: "boolean" },
|
|
531
608
|
{ key: "consumer_grid_enabled", value: "false", type: "boolean" },
|
|
@@ -557,17 +634,18 @@ var STORE_KNOBS = [
|
|
|
557
634
|
{ key: "world_publish_enabled", value: "false", type: "boolean" }
|
|
558
635
|
];
|
|
559
636
|
var STORE_REFUSAL_CODES = [
|
|
560
|
-
{ code: "02000", raised_by: "doc_render_body,doc_render_document,doc_render_read,doc_sign,doc_signature_intact,doc_signature_read,doc_template_read,doc_template_save,entity_field_retire,entity_field_update,entity_record_read,entity_value_write,external_history_event,external_rows,external_stub_upsert,external_writes_set,migrate_delete,migrate_extract_parent,migrate_merge,migrate_rename,migrate_reparent,migrate_retype,migrate_split,migrate_undo,organization_clear,read_record,record_delete,record_restore,record_update,relation_uncarry,share_access,share_grant,share_lane_set,share_people,share_revoke,visibility_as_of,work_approval_decide,work_approval_read,work_approval_request,work_assign,work_record_states,work_set_state" },
|
|
561
|
-
{ code: "0A000", raised_by: "external_rows,external_source_declare,external_write_through,promote_field,promoted_index_expr,promoted_query_sql,promoted_read,rule_eval,work_assign
|
|
562
|
-
{ 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,doc_render_write,doc_sign,doc_signature_write,doc_template_save,external_history_event,external_rows,external_source_declare,external_stub_upsert,external_write_through,external_writes_set,form_declare,form_submit,home_add,io_comment_write,io_import_open,io_outbox_drain,io_restore,migrate_purge,migrate_split,migrate_undo,organization_clear,organization_contents,query_across_homes,query_by_coordinates,query_rollup,record_delete,record_reparent,record_resolve,record_restore,record_update,record_write,relation_carry,relation_own,rule_declare,share_grant,table_declare,work_approval_decide,work_approval_request,work_template_declare" },
|
|
637
|
+
{ code: "02000", raised_by: "dashboard_delete,dashboard_run,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,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,visibility_as_of,work_approval_decide,work_approval_read,work_approval_request,work_assign,work_record_states,work_set_state" },
|
|
638
|
+
{ code: "0A000", raised_by: "external_rows,external_source_declare,external_write_through,promote_field,promoted_index_expr,promoted_query_sql,promoted_read,rule_eval,work_assign" },
|
|
639
|
+
{ 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,dashboard_block_normalize,dashboard_declare,dashboard_window_sql,doc_render_write,doc_sign,doc_signature_write,doc_template_save,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_open,io_outbox_drain,io_restore,migrate_choice_keys,migrate_purge,migrate_reclass,migrate_split,migrate_undo,organization_clear,organization_contents,portal_declare,portal_invite,portal_principal_bind,query_across_homes,query_by_coordinates,query_rollup,record_delete,record_reparent,record_resolve,record_restore,record_update,record_write,relation_carry,relation_own,rule_declare,share_grant,table_declare,value_restore,work_approval_decide,work_approval_request,work_template_declare" },
|
|
640
|
+
{ code: "22007", raised_by: "dashboard_window_sql" },
|
|
563
641
|
{ code: "22012", raised_by: "rule_eval" },
|
|
564
|
-
{ code: "22023", raised_by: "_entity_custom_fields_guard,_value_envelope,_work_shape_guard,actor_word,agg_assert_key,agg_sql,anon_token_issue,containment_parent,doc_render_body,doc_render_write,doc_signature_write,entity_value_write,external_history_event,external_source_declare,external_stub_upsert,external_write_through,io_import_open,io_proposal_accept,migrate_merge,my_levels,organization_clear,query_by_coordinates,query_rollup,record_update,relation_carry,rule_eval,rule_members,share_grant,share_lane_set,table_rules,visibility_as_of,work_approval_request,work_list,work_slot_hold" },
|
|
565
|
-
{ code: "23503", raised_by: "_containment_guard,_field_document_for,_record_rule_uses,anon_publish,anon_rate_take,anon_token_issue,anon_write,assert_organization_wall,delete_rule,doc_sign,doc_template_save,form_declare,form_submit,home_add,io_comment_write,io_import_rows,io_proposal_accept,migrate_demote,migrate_promote,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,work_set_state,work_take_assignment,work_template_instantiate" },
|
|
642
|
+
{ code: "22023", raised_by: "_entity_custom_fields_guard,_value_envelope,_work_shape_guard,actor_word,agg_assert_key,agg_sql,anon_token_issue,containment_parent,dashboard_block_normalize,dashboard_window_sql,doc_render_body,doc_render_write,doc_signature_write,entity_value_write,external_history_event,external_source_declare,external_stub_upsert,external_write_through,field_history,io_import_open,io_proposal_accept,migrate_merge,migrate_reclass,my_levels,organization_clear,portal_declare,query_by_coordinates,query_rollup,record_update,relation_carry,rule_eval,rule_members,share_grant,share_lane_set,table_rules,visibility_as_of,work_approval_request,work_list,work_slot_hold" },
|
|
643
|
+
{ code: "23503", raised_by: "_containment_guard,_field_document_for,_record_rule_uses,anon_publish,anon_rate_take,anon_token_issue,anon_write,assert_organization_wall,comment_write,dashboard_declare,delete_rule,doc_sign,doc_template_save,form_declare,form_submit,home_add,io_comment_write,io_import_rows,io_proposal_accept,migrate_demote,migrate_promote,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,subscription_mute,work_set_state,work_take_assignment,work_template_instantiate" },
|
|
566
644
|
{ code: "23505", raised_by: "_unique_rule_holds,doc_sign,doc_signature_write,entity_field_declare,field_declare,home_add,io_proposal_accept,relation_carry,relation_own,share_grant,work_approval_decide,work_slot_hold" },
|
|
567
|
-
{ code: "23514", raised_by: "_containment_guard,_dated_values_guard,_derived_fields,_entity_custom_fields_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_shape_guard,_value_envelope,_work_shape_guard,_workdoors_approval_guard,assert_entity_is_organization_scoped,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,migrate_merge,relation_carry,relation_own,validate_value_envelope,validate_values,work_set_state,work_slots_declare,work_take_assignment,work_template_instantiate" },
|
|
645
|
+
{ code: "23514", raised_by: "_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_shape_guard,_value_envelope,_work_shape_guard,_workdoors_approval_guard,assert_entity_is_organization_scoped,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,migrate_merge,relation_carry,relation_own,validate_value_envelope,validate_values,work_set_state,work_slots_declare,work_take_assignment,work_template_instantiate" },
|
|
568
646
|
{ code: "40001", raised_by: "has_visibility_at" },
|
|
569
|
-
{ 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,entity_field_declare,entity_field_retire,entity_field_update,entity_value_write,external_write_through,form_declare,form_submit,io_comment_resolve,io_comment_write,io_restore,migrate_purge,my_levels,organization_clear,promote_table,query_visibility_parity,read_record,read_records,share_grant,visibility_as_of,work_approval_decide,work_approval_read,work_approval_request,work_person" },
|
|
570
|
-
{ code: "42703", raised_by: "entity_table" },
|
|
647
|
+
{ 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,comment_write,entity_field_declare,entity_field_retire,entity_field_update,entity_value_write,external_write_through,form_declare,form_submit,io_comment_resolve,io_comment_write,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,visibility_as_of,work_approval_decide,work_approval_read,work_approval_request,work_person" },
|
|
648
|
+
{ code: "42703", raised_by: "entity_table,portal_declare" },
|
|
571
649
|
{ code: "53400", raised_by: "anon_rate_take,delete_cascade_closure,promote_field" },
|
|
572
650
|
{ code: "54001", raised_by: "record_delete" },
|
|
573
651
|
{ code: "PT409", raised_by: "record_update" }
|
|
@@ -1743,6 +1821,32 @@ var DOORS = {
|
|
|
1743
1821
|
// are server-lane doors and a browser never calls them.
|
|
1744
1822
|
forms: "forms",
|
|
1745
1823
|
formDeclare: "form_declare",
|
|
1824
|
+
// THE CLIENT PORTAL, OWNER'S SIDE (VIS-31 / PORTAL). A portal is how somebody
|
|
1825
|
+
// with NO membership is let in to see the records that name them. `portals`
|
|
1826
|
+
// lists them, `portalCard` opens one, `portalDeclare` states what it exposes,
|
|
1827
|
+
// `portalInvite` and `portalRevoke` are the two acts on a person, and
|
|
1828
|
+
// `portalPreview` is "view as this client" — it asks `custom.visible_set` for
|
|
1829
|
+
// HER user id, the same call `custom.read_records` makes when she opens the
|
|
1830
|
+
// page, so the preview cannot disagree with what she sees. The CLIENT-side
|
|
1831
|
+
// pair (`custom.portal_public`, `custom.portal_invitation`, `custom.portal_me`)
|
|
1832
|
+
// is deliberately absent here: those belong to the outsider's own shell.
|
|
1833
|
+
portals: "portals",
|
|
1834
|
+
portalCard: "portal_card",
|
|
1835
|
+
portalDeclare: "portal_declare",
|
|
1836
|
+
portalInvite: "portal_invite",
|
|
1837
|
+
portalRevoke: "portal_revoke",
|
|
1838
|
+
portalPreview: "portal_preview",
|
|
1839
|
+
// SCR-16 — the canvas. A dashboard is a record in the presentation kernel
|
|
1840
|
+
// whose blocks are saved SPECS for the eighth verb; `dashboardRun` walks them
|
|
1841
|
+
// under the CALLER'S principal, so nothing here is precomputed and nothing is
|
|
1842
|
+
// summed in a browser. `dashboardStuck` is the seventh block kind on its own,
|
|
1843
|
+
// because "what has not moved in fourteen days" is a question a screen asks
|
|
1844
|
+
// outside a canvas too.
|
|
1845
|
+
dashboards: "dashboards",
|
|
1846
|
+
dashboardDeclare: "dashboard_declare",
|
|
1847
|
+
dashboardRun: "dashboard_run",
|
|
1848
|
+
dashboardStuck: "dashboard_stuck",
|
|
1849
|
+
dashboardDelete: "dashboard_delete",
|
|
1746
1850
|
// The eighth verb (AGT-N-8): a grouped, bucketed, filtered count/sum/avg/
|
|
1747
1851
|
// min/max computed INSIDE the read door's own query, so a chart shows exactly
|
|
1748
1852
|
// the rows this person may see and never fetches the ones they may not.
|
|
@@ -1753,6 +1857,16 @@ var DOORS = {
|
|
|
1753
1857
|
// over a saved view. There is no subscription TABLE and no second notifier.
|
|
1754
1858
|
aggSubscriptions: "agg_subscriptions",
|
|
1755
1859
|
aggSubscriptionCadences: "agg_subscription_cadences",
|
|
1860
|
+
// The OWNER's side of DOOR-18. `agg_subscriptions` is the notifier's reader
|
|
1861
|
+
// and is not client-callable; these two are what a person reaches: what am I
|
|
1862
|
+
// being told about, and switch this one off. A form's notify Rule is one of
|
|
1863
|
+
// these rows, so "tell me when a patient arrives" can also be un-told.
|
|
1864
|
+
subscriptions: "subscriptions",
|
|
1865
|
+
subscriptionMute: "subscription_mute",
|
|
1866
|
+
// The cadence CATALOGUE a person's screen may ask for. `agg_subscription_cadences`
|
|
1867
|
+
// above is the notifier's own and holds no client grant; this door delegates to
|
|
1868
|
+
// it, so a picker and the digest runner can never offer different words.
|
|
1869
|
+
subscriptionCadences: "subscription_cadences",
|
|
1756
1870
|
// The doc doors: a template is saved, a render is written once and frozen,
|
|
1757
1871
|
// and a signature is checked against the exact bytes that were signed.
|
|
1758
1872
|
docTemplateSave: "doc_template_save",
|
|
@@ -1762,6 +1876,15 @@ var DOORS = {
|
|
|
1762
1876
|
docUnresolvedTokens: "doc_unresolved_tokens",
|
|
1763
1877
|
docSign: "doc_sign",
|
|
1764
1878
|
docSignatureIntact: "doc_signature_intact",
|
|
1879
|
+
// THE PLURAL ACTS. Until 2026-09-20 this package read `custom.doc_template`,
|
|
1880
|
+
// `custom.doc_render` and `custom.doc_signature` with a direct PostgREST
|
|
1881
|
+
// `.from()`, and all three hold NO client SELECT — so every list in product #5
|
|
1882
|
+
// opened on "permission denied for view doc_template". A list is a DOOR, never
|
|
1883
|
+
// a grant on the thing behind it (DOORS-TWO).
|
|
1884
|
+
docTemplates: "doc_templates",
|
|
1885
|
+
docTemplateDelete: "doc_template_delete",
|
|
1886
|
+
docRenders: "doc_renders",
|
|
1887
|
+
docSignatures: "doc_signatures",
|
|
1765
1888
|
// THE ANONYMOUS LANE (W4-ANON). It landed, and it landed as SEVEN doors
|
|
1766
1889
|
// rather than the one this package had guessed at: a token is issued and
|
|
1767
1890
|
// verified separately from the write it authorises, a form is published
|
|
@@ -1849,6 +1972,14 @@ var BY_SQLSTATE = {
|
|
|
1849
1972
|
// caught it raised by a door this package did not know about — which is the
|
|
1850
1973
|
// suite working, and is why the map is a census rather than a guess.
|
|
1851
1974
|
"42703": "invalid_argument",
|
|
1975
|
+
// 22007 — a date or a time the store could not read as one. It is raised by
|
|
1976
|
+
// `custom.dashboard_window_sql`, which is handed a window a caller wrote
|
|
1977
|
+
// ("last 30 days", a literal date), so the class is again "the call named
|
|
1978
|
+
// something the shape does not accept" and the store's own sentence names the
|
|
1979
|
+
// text it could not read. Added 2026-09-20 (lane SCREEN-BREAK) after the
|
|
1980
|
+
// live-door census caught it — the same way 42703 arrived, which is the
|
|
1981
|
+
// census working rather than a guess.
|
|
1982
|
+
"22007": "invalid_argument",
|
|
1852
1983
|
"02000": "not_found",
|
|
1853
1984
|
"23503": "missing_reference",
|
|
1854
1985
|
"23505": "already_exists",
|
|
@@ -2218,9 +2349,11 @@ function createRecordsClient(config) {
|
|
|
2218
2349
|
);
|
|
2219
2350
|
if (!applicable.ok) return err(applicable.error);
|
|
2220
2351
|
const rows = applicable.data ?? [];
|
|
2221
|
-
|
|
2222
|
-
|
|
2352
|
+
const fields = rows.map((row) => ({ id: row.id, ...row.data }));
|
|
2353
|
+
fields.sort(
|
|
2354
|
+
(a, b) => (a.sort ?? 0) - (b.sort ?? 0) || (a.label ?? "").localeCompare(b.label ?? "")
|
|
2223
2355
|
);
|
|
2356
|
+
return ok(fields);
|
|
2224
2357
|
},
|
|
2225
2358
|
async fieldOptions({ field_id }) {
|
|
2226
2359
|
return callDoor(
|
|
@@ -2394,6 +2527,65 @@ function createRecordsClient(config) {
|
|
|
2394
2527
|
"formDeclare"
|
|
2395
2528
|
);
|
|
2396
2529
|
},
|
|
2530
|
+
async portals() {
|
|
2531
|
+
return callDoor(DOORS.portals, { p_organization_id: org }, "portals");
|
|
2532
|
+
},
|
|
2533
|
+
async portalCard({ portal_id }) {
|
|
2534
|
+
return callDoor(
|
|
2535
|
+
DOORS.portalCard,
|
|
2536
|
+
{ p_organization_id: org, p_portal_id: portal_id },
|
|
2537
|
+
"portalCard"
|
|
2538
|
+
);
|
|
2539
|
+
},
|
|
2540
|
+
async portalDeclare(args) {
|
|
2541
|
+
return callDoor(
|
|
2542
|
+
DOORS.portalDeclare,
|
|
2543
|
+
{
|
|
2544
|
+
p_organization_id: org,
|
|
2545
|
+
p_title: args.title,
|
|
2546
|
+
p_client_table_id: args.client_table_id,
|
|
2547
|
+
p_tables: args.tables,
|
|
2548
|
+
p_portal_id: args.portal_id ?? null,
|
|
2549
|
+
p_slug: args.slug ?? null,
|
|
2550
|
+
p_sign_in_method: args.sign_in_method ?? "magic_link"
|
|
2551
|
+
},
|
|
2552
|
+
"portalDeclare"
|
|
2553
|
+
);
|
|
2554
|
+
},
|
|
2555
|
+
async portalInvite(args) {
|
|
2556
|
+
return callDoor(
|
|
2557
|
+
DOORS.portalInvite,
|
|
2558
|
+
{
|
|
2559
|
+
p_organization_id: org,
|
|
2560
|
+
p_portal_id: args.portal_id,
|
|
2561
|
+
p_client_record_id: args.client_record_id,
|
|
2562
|
+
p_email: args.email,
|
|
2563
|
+
// ALWAYS null from a client. See the interface comment: an invitation
|
|
2564
|
+
// confers nothing until the person follows their own sign-in link.
|
|
2565
|
+
p_user_id: null
|
|
2566
|
+
},
|
|
2567
|
+
"portalInvite"
|
|
2568
|
+
);
|
|
2569
|
+
},
|
|
2570
|
+
async portalRevoke({ portal_id, principal_id }) {
|
|
2571
|
+
return callDoor(
|
|
2572
|
+
DOORS.portalRevoke,
|
|
2573
|
+
{ p_organization_id: org, p_portal_id: portal_id, p_principal_id: principal_id },
|
|
2574
|
+
"portalRevoke"
|
|
2575
|
+
);
|
|
2576
|
+
},
|
|
2577
|
+
async portalPreview({ portal_id, principal_id, table_id }) {
|
|
2578
|
+
return callDoor(
|
|
2579
|
+
DOORS.portalPreview,
|
|
2580
|
+
{
|
|
2581
|
+
p_organization_id: org,
|
|
2582
|
+
p_portal_id: portal_id,
|
|
2583
|
+
p_principal_id: principal_id,
|
|
2584
|
+
p_table_id: table_id
|
|
2585
|
+
},
|
|
2586
|
+
"portalPreview"
|
|
2587
|
+
);
|
|
2588
|
+
},
|
|
2397
2589
|
async ruleRun({ rule_id, values, context }) {
|
|
2398
2590
|
return callDoor(
|
|
2399
2591
|
DOORS.ruleRun,
|
|
@@ -2418,6 +2610,55 @@ function createRecordsClient(config) {
|
|
|
2418
2610
|
"ruleEval"
|
|
2419
2611
|
);
|
|
2420
2612
|
},
|
|
2613
|
+
async dashboards(args) {
|
|
2614
|
+
return callDoor(
|
|
2615
|
+
DOORS.dashboards,
|
|
2616
|
+
{ p_organization_id: org, p_table_id: args?.table_id ?? null },
|
|
2617
|
+
"dashboards"
|
|
2618
|
+
);
|
|
2619
|
+
},
|
|
2620
|
+
async dashboardDeclare(args) {
|
|
2621
|
+
return callDoor(
|
|
2622
|
+
DOORS.dashboardDeclare,
|
|
2623
|
+
{
|
|
2624
|
+
p_organization_id: org,
|
|
2625
|
+
p_table_id: args.table_id,
|
|
2626
|
+
p_name: args.name,
|
|
2627
|
+
p_blocks: args.blocks ?? [],
|
|
2628
|
+
p_presentation: args.presentation ?? {},
|
|
2629
|
+
p_dashboard_id: args.dashboard_id ?? null
|
|
2630
|
+
},
|
|
2631
|
+
"dashboardDeclare"
|
|
2632
|
+
);
|
|
2633
|
+
},
|
|
2634
|
+
async dashboardRun({ dashboard_id, filter }) {
|
|
2635
|
+
return callDoor(
|
|
2636
|
+
DOORS.dashboardRun,
|
|
2637
|
+
{ p_organization_id: org, p_dashboard_id: dashboard_id, p_filter: filter ?? {} },
|
|
2638
|
+
"dashboardRun"
|
|
2639
|
+
);
|
|
2640
|
+
},
|
|
2641
|
+
async dashboardStuck({ table_id, state_key, days, filter, limit }) {
|
|
2642
|
+
return callDoor(
|
|
2643
|
+
DOORS.dashboardStuck,
|
|
2644
|
+
{
|
|
2645
|
+
p_organization_id: org,
|
|
2646
|
+
p_table_id: table_id,
|
|
2647
|
+
p_state_key: state_key,
|
|
2648
|
+
p_days: days ?? 14,
|
|
2649
|
+
p_filter: filter ?? {},
|
|
2650
|
+
p_limit: limit ?? 50
|
|
2651
|
+
},
|
|
2652
|
+
"dashboardStuck"
|
|
2653
|
+
);
|
|
2654
|
+
},
|
|
2655
|
+
async dashboardDelete({ dashboard_id }) {
|
|
2656
|
+
return callDoor(
|
|
2657
|
+
DOORS.dashboardDelete,
|
|
2658
|
+
{ p_organization_id: org, p_dashboard_id: dashboard_id },
|
|
2659
|
+
"dashboardDelete"
|
|
2660
|
+
);
|
|
2661
|
+
},
|
|
2421
2662
|
async recordAggregate({ table_id, groupBy, measures, bucket, filter, limit }) {
|
|
2422
2663
|
return callDoor(
|
|
2423
2664
|
DOORS.recordAggregate,
|
|
@@ -2453,6 +2694,27 @@ function createRecordsClient(config) {
|
|
|
2453
2694
|
async aggSubscriptionCadences() {
|
|
2454
2695
|
return callDoor(DOORS.aggSubscriptionCadences, {}, "aggSubscriptionCadences");
|
|
2455
2696
|
},
|
|
2697
|
+
async subscriptionCadences() {
|
|
2698
|
+
return callDoor(
|
|
2699
|
+
DOORS.subscriptionCadences,
|
|
2700
|
+
{ p_organization_id: org },
|
|
2701
|
+
"subscriptionCadences"
|
|
2702
|
+
);
|
|
2703
|
+
},
|
|
2704
|
+
async subscriptions(args) {
|
|
2705
|
+
return callDoor(
|
|
2706
|
+
DOORS.subscriptions,
|
|
2707
|
+
{ p_organization_id: org, p_table_id: args?.table_id ?? null },
|
|
2708
|
+
"subscriptions"
|
|
2709
|
+
);
|
|
2710
|
+
},
|
|
2711
|
+
async subscriptionMute({ rule_id, muted }) {
|
|
2712
|
+
return callDoor(
|
|
2713
|
+
DOORS.subscriptionMute,
|
|
2714
|
+
{ p_organization_id: org, p_rule_id: rule_id, p_muted: muted },
|
|
2715
|
+
"subscriptionMute"
|
|
2716
|
+
);
|
|
2717
|
+
},
|
|
2456
2718
|
async docTemplateSave({ table_id, name, body, template_id }) {
|
|
2457
2719
|
return callDoor(
|
|
2458
2720
|
DOORS.docTemplateSave,
|
|
@@ -2503,32 +2765,52 @@ function createRecordsClient(config) {
|
|
|
2503
2765
|
"docSign"
|
|
2504
2766
|
);
|
|
2505
2767
|
},
|
|
2768
|
+
// A LIST IS A DOOR, NEVER A GRANT ON THE THING BEHIND IT. These three used to
|
|
2769
|
+
// read `custom.doc_template`, `custom.doc_render` and `custom.doc_signature`
|
|
2770
|
+
// with a direct PostgREST `.from()`, and none of the three holds a client
|
|
2771
|
+
// SELECT — so a person could save a template they could never list and
|
|
2772
|
+
// render a document they could never find again, and every document screen
|
|
2773
|
+
// opened on "permission denied for view doc_template". The doors below
|
|
2774
|
+
// narrow inside the definer, after the ladder has spoken (DOORS-TWO).
|
|
2506
2775
|
async docTemplates({ table_id }) {
|
|
2507
|
-
const
|
|
2508
|
-
|
|
2509
|
-
|
|
2510
|
-
|
|
2511
|
-
|
|
2512
|
-
|
|
2513
|
-
return ok(
|
|
2776
|
+
const answered = await callDoor(
|
|
2777
|
+
DOORS.docTemplates,
|
|
2778
|
+
{ p_organization_id: org, p_table_id: table_id },
|
|
2779
|
+
"docTemplates"
|
|
2780
|
+
);
|
|
2781
|
+
if (!answered.ok) return answered;
|
|
2782
|
+
return ok(
|
|
2783
|
+
answered.data.map((row) => ({ ...row, id: row["template_id"] }))
|
|
2784
|
+
);
|
|
2785
|
+
},
|
|
2786
|
+
async docTemplateDelete({ template_id }) {
|
|
2787
|
+
return callDoor(
|
|
2788
|
+
DOORS.docTemplateDelete,
|
|
2789
|
+
{ p_organization_id: org, p_template_id: template_id },
|
|
2790
|
+
"docTemplateDelete"
|
|
2791
|
+
);
|
|
2514
2792
|
},
|
|
2515
2793
|
async docRenders({ record_id }) {
|
|
2516
|
-
const
|
|
2517
|
-
|
|
2518
|
-
|
|
2519
|
-
|
|
2520
|
-
|
|
2521
|
-
|
|
2522
|
-
return ok(
|
|
2794
|
+
const answered = await callDoor(
|
|
2795
|
+
DOORS.docRenders,
|
|
2796
|
+
{ p_organization_id: org, p_record_id: record_id },
|
|
2797
|
+
"docRenders"
|
|
2798
|
+
);
|
|
2799
|
+
if (!answered.ok) return answered;
|
|
2800
|
+
return ok(
|
|
2801
|
+
answered.data.map((row) => ({ ...row, id: row["render_id"] }))
|
|
2802
|
+
);
|
|
2523
2803
|
},
|
|
2524
2804
|
async docSignatures({ record_id }) {
|
|
2525
|
-
const
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
|
|
2529
|
-
|
|
2530
|
-
|
|
2531
|
-
return ok(
|
|
2805
|
+
const answered = await callDoor(
|
|
2806
|
+
DOORS.docSignatures,
|
|
2807
|
+
{ p_organization_id: org, p_record_id: record_id },
|
|
2808
|
+
"docSignatures"
|
|
2809
|
+
);
|
|
2810
|
+
if (!answered.ok) return answered;
|
|
2811
|
+
return ok(
|
|
2812
|
+
answered.data.map((row) => ({ ...row, id: row["signature_id"] }))
|
|
2813
|
+
);
|
|
2532
2814
|
},
|
|
2533
2815
|
async recordValuesVersioned({ record_id }) {
|
|
2534
2816
|
return readValues(record_id);
|
|
@@ -3384,11 +3666,59 @@ var OVERRIDE_POLICIES = [
|
|
|
3384
3666
|
var FRESHNESS = ["live", "cached", "snapshot"];
|
|
3385
3667
|
var TABLE_DISPLAYS = ["list", "grid", "board", "calendar", "timeline"];
|
|
3386
3668
|
|
|
3669
|
+
// src/choice.ts
|
|
3670
|
+
var UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
3671
|
+
function optionKey(option) {
|
|
3672
|
+
const stored = option.metadata?.["option_key"];
|
|
3673
|
+
if (typeof stored === "string" && stored.trim() !== "") return stored;
|
|
3674
|
+
return choiceSlug(optionLabel(option));
|
|
3675
|
+
}
|
|
3676
|
+
function optionLabel(option) {
|
|
3677
|
+
const doc = option.data;
|
|
3678
|
+
const title = doc?.["title"] ?? doc?.["name"];
|
|
3679
|
+
if (typeof title === "string" && title.trim() !== "") return title;
|
|
3680
|
+
return "Unnamed choice";
|
|
3681
|
+
}
|
|
3682
|
+
function choiceSlug(word) {
|
|
3683
|
+
const slug = word.trim().toLowerCase().replace(/[^a-z0-9]+/g, "_").replace(/^_+|_+$/g, "").slice(0, 55);
|
|
3684
|
+
return slug === "" ? "choice" : slug;
|
|
3685
|
+
}
|
|
3686
|
+
function isTheChosen(option, value) {
|
|
3687
|
+
if (typeof value !== "string") return false;
|
|
3688
|
+
const asked = value.trim().toLowerCase();
|
|
3689
|
+
if (asked === "") return false;
|
|
3690
|
+
return asked === optionKey(option).toLowerCase() || asked === optionLabel(option).toLowerCase() || asked === option.id.toLowerCase();
|
|
3691
|
+
}
|
|
3692
|
+
function choiceValuesOf(value) {
|
|
3693
|
+
if (Array.isArray(value)) return value.filter((v) => typeof v === "string");
|
|
3694
|
+
if (typeof value === "string" && value !== "") return [value];
|
|
3695
|
+
return [];
|
|
3696
|
+
}
|
|
3697
|
+
function choicesOf(document, fieldKeyOrId) {
|
|
3698
|
+
const block = document?.["_choices"];
|
|
3699
|
+
if (!block || typeof block !== "object") return [];
|
|
3700
|
+
const entry = block[fieldKeyOrId];
|
|
3701
|
+
if (!entry) return [];
|
|
3702
|
+
const list = Array.isArray(entry) ? entry : [entry];
|
|
3703
|
+
return list.filter((x) => !!x && typeof x === "object" && typeof x.key === "string");
|
|
3704
|
+
}
|
|
3705
|
+
function holdsARetiredChoice(document, fieldKeyOrId) {
|
|
3706
|
+
return choicesOf(document, fieldKeyOrId).some((c) => c.retired === true);
|
|
3707
|
+
}
|
|
3708
|
+
function looksLikeAnId(value) {
|
|
3709
|
+
return typeof value === "string" && UUID.test(value);
|
|
3710
|
+
}
|
|
3711
|
+
|
|
3387
3712
|
// src/rule.ts
|
|
3388
3713
|
function publicFormPath(formId) {
|
|
3389
3714
|
return `/f/${formId}`;
|
|
3390
3715
|
}
|
|
3391
3716
|
|
|
3717
|
+
// src/portal.ts
|
|
3718
|
+
function portalPath(slug) {
|
|
3719
|
+
return `/portal/c/${slug}`;
|
|
3720
|
+
}
|
|
3721
|
+
|
|
3392
3722
|
// src/aggregate.ts
|
|
3393
3723
|
function measureKey(measure) {
|
|
3394
3724
|
return measure.op === "count" ? "count" : `${measure.op}_${measure.key ?? ""}`;
|