@dereekb/dbx-components-mcp 14.16.0 → 14.18.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/dbx-components-mcp.js +4195 -962
- package/generated/dereekb-dbx-core.actions.mcp.generated.json +10 -0
- package/generated/dereekb-dbx-core.filters.mcp.generated.json +1 -1
- package/generated/dereekb-dbx-web.css-utilities.mcp.generated.json +34 -0
- package/generated/dereekb-dbx-web.ui-components.mcp.generated.json +39 -0
- package/generated/dereekb-firebase.model-firebase-index.mcp.generated.json +116 -0
- package/generated/dereekb-firebase.semantic-types.mcp.generated.json +72 -0
- package/generated/dereekb-firebase.utils.mcp.generated.json +112 -0
- package/generated/dereekb-model.utils.mcp.generated.json +41 -0
- package/generated/dereekb-util.utils.mcp.generated.json +161 -0
- package/package.json +3 -3
|
@@ -34,6 +34,16 @@
|
|
|
34
34
|
"name": "afterDistinctLoadingStateTypeChange",
|
|
35
35
|
"signature": "afterDistinctLoadingStateTypeChange(): Observable<ActionContextState<T, O>>",
|
|
36
36
|
"description": ""
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"name": "registerValueSnapshot",
|
|
40
|
+
"signature": "registerValueSnapshot(valueSnapshotFunction: DbxActionValueSnapshotFunction<T>): DestroyFunction",
|
|
41
|
+
"description": "Registers the function that returns the value a trigger would ready right now. Registered by the action's value source, such as dbxActionValue or dbxActionForm.\n\nOnly one function is kept, so a later registration replaces an earlier one."
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"name": "valueSnapshot",
|
|
45
|
+
"signature": "valueSnapshot(): Maybe<DbxActionValueGetterResult<T>>",
|
|
46
|
+
"description": "Returns the value a trigger would ready right now, without triggering the action.\n\nLets a change be applied synchronously when the action's own trigger path and its delays can no longer run, such as right before\nthe content that holds the action is destroyed."
|
|
37
47
|
}
|
|
38
48
|
],
|
|
39
49
|
"observables": [
|
|
@@ -114,7 +114,7 @@
|
|
|
114
114
|
"selector": "[dbxFilterMapRouteParams]",
|
|
115
115
|
"className": "DbxFilterMapRouteParamsDirective",
|
|
116
116
|
"module": "@dereekb/dbx-core",
|
|
117
|
-
"description": "Loads the filter of a keyed entry in an ancestor {@link FilterMap} from the current route params, so a link can open the page on a specific filter.\n\nThe params' filter becomes the key's default filter when the page loads, and a later change to the params (such as a link to\nthe same page with other params) sets the key's filter. When {@link DbxFilterMapRouteParamsConfig.paramsFromFilter} is set,\nevery change to the key is also written back to the URL, so reloading the page keeps the filter.\n\nThe params must be declared on the current route (for UIRouter, as query params of an ancestor state, ideally `dynamic: true`\nso writing them does not reload the state). Do not use it together with {@link DbxFilterMapStorageDirective} on the same key,\nsince both set the key's default filter.",
|
|
117
|
+
"description": "Loads the filter of a keyed entry in an ancestor {@link FilterMap} from the current route params, so a link can open the page on a specific filter.\n\nThe params' filter becomes the key's default filter when the page loads, and a later change to the params (such as a link to\nthe same page with other params) sets the key's filter. When {@link DbxFilterMapRouteParamsConfig.paramsFromFilter} is set,\nevery change to the key is also written back to the URL, so reloading the page keeps the filter.\n\nThe params must be declared on the current route (for UIRouter, as query params of an ancestor state, ideally `dynamic: true`\nso writing them does not reload the state). Do not use it together with {@link DbxFilterMapStorageDirective} on the same key,\nsince both set the key's default filter.\n\nA filter popover that edits the key should set `closeOnFilterChange: false` on its `DbxFilterComponentConfig`, which also keeps it\nopen across the route transition each change causes (`closeOnTransition`).",
|
|
118
118
|
"inputs": [
|
|
119
119
|
{
|
|
120
120
|
"name": "dbxFilterMapRouteParams",
|
|
@@ -2368,6 +2368,40 @@
|
|
|
2368
2368
|
"--mat-sys-corner-medium"
|
|
2369
2369
|
]
|
|
2370
2370
|
},
|
|
2371
|
+
{
|
|
2372
|
+
"slug": "filter-popover-content-buttons",
|
|
2373
|
+
"selector": ".dbx-filter-popover-content-buttons",
|
|
2374
|
+
"source": "@dereekb/dbx-web",
|
|
2375
|
+
"module": "@dereekb/dbx-web",
|
|
2376
|
+
"file": "src/lib/interaction/filter/_filter.scss",
|
|
2377
|
+
"line": 12,
|
|
2378
|
+
"declarations": [
|
|
2379
|
+
{
|
|
2380
|
+
"property": "display",
|
|
2381
|
+
"value": "flex"
|
|
2382
|
+
},
|
|
2383
|
+
{
|
|
2384
|
+
"property": "align-items",
|
|
2385
|
+
"value": "center"
|
|
2386
|
+
},
|
|
2387
|
+
{
|
|
2388
|
+
"property": "justify-content",
|
|
2389
|
+
"value": "center"
|
|
2390
|
+
},
|
|
2391
|
+
{
|
|
2392
|
+
"property": "padding",
|
|
2393
|
+
"value": "var(--dbx-padding-2) var(--dbx-padding-3)"
|
|
2394
|
+
}
|
|
2395
|
+
],
|
|
2396
|
+
"role": "layout",
|
|
2397
|
+
"intent": "filter popover buttons below the filter content — holds the same switch and close buttons as the header when `showButtonsBelowContent` is set",
|
|
2398
|
+
"component": "DbxFilterPopoverComponent",
|
|
2399
|
+
"scope": "component-class",
|
|
2400
|
+
"tokensRead": [
|
|
2401
|
+
"--dbx-padding-2",
|
|
2402
|
+
"--dbx-padding-3"
|
|
2403
|
+
]
|
|
2404
|
+
},
|
|
2371
2405
|
{
|
|
2372
2406
|
"slug": "flex",
|
|
2373
2407
|
"selector": ".dbx-flex",
|
|
@@ -988,6 +988,45 @@
|
|
|
988
988
|
"example": "<dbx-dialog-content>\n <h2>Confirm</h2>\n <p>Are you sure?</p>\n</dbx-dialog-content>",
|
|
989
989
|
"minimalExample": "<div dbxDialogContent>Body</div>"
|
|
990
990
|
},
|
|
991
|
+
{
|
|
992
|
+
"slug": "filter-popover-button",
|
|
993
|
+
"category": "overlay",
|
|
994
|
+
"kind": "component",
|
|
995
|
+
"selector": "dbx-filter-popover-button",
|
|
996
|
+
"className": "DbxFilterPopoverButtonComponent",
|
|
997
|
+
"module": "@dereekb/dbx-web",
|
|
998
|
+
"description": "Renders an icon button that opens a filter popover when clicked.\n\nThe popover closes when the filter changes unless `closeOnFilterChange` is false, and closes on a route transition unless\n`closeOnTransition` (which defaults to `closeOnFilterChange`) is false — so a popover editing a filter that is written to the\nURL stays open while it is edited. The popover always closes when this button is destroyed, such as when leaving the page.\nA `dbx-filter-wrapper` without its own Apply button applies its last change before the popover closes on its close button\nor a click outside.",
|
|
999
|
+
"inputs": [
|
|
1000
|
+
{
|
|
1001
|
+
"name": "disabled",
|
|
1002
|
+
"type": "Maybe<boolean>",
|
|
1003
|
+
"description": "",
|
|
1004
|
+
"required": false
|
|
1005
|
+
},
|
|
1006
|
+
{
|
|
1007
|
+
"name": "buttonDisplayStyle",
|
|
1008
|
+
"type": "Maybe<DbxButtonDisplayStylePair>",
|
|
1009
|
+
"description": "",
|
|
1010
|
+
"required": false
|
|
1011
|
+
},
|
|
1012
|
+
{
|
|
1013
|
+
"name": "config",
|
|
1014
|
+
"type": "Maybe<DbxFilterComponentConfig<F, any, any, any>>",
|
|
1015
|
+
"description": "",
|
|
1016
|
+
"required": false,
|
|
1017
|
+
"default": "undefined"
|
|
1018
|
+
}
|
|
1019
|
+
],
|
|
1020
|
+
"outputs": [],
|
|
1021
|
+
"relatedSlugs": [
|
|
1022
|
+
"popover"
|
|
1023
|
+
],
|
|
1024
|
+
"skillRefs": [
|
|
1025
|
+
"dbx__ref__dbx-component-patterns"
|
|
1026
|
+
],
|
|
1027
|
+
"example": "<dbx-filter-popover-button [config]=\"filterConfig\" [buttonDisplayStyle]=\"{ display: { icon: 'filter_alt' } }\"></dbx-filter-popover-button>",
|
|
1028
|
+
"minimalExample": "<dbx-filter-popover-button [config]=\"filterConfig\"></dbx-filter-popover-button>"
|
|
1029
|
+
},
|
|
991
1030
|
{
|
|
992
1031
|
"slug": "popover",
|
|
993
1032
|
"category": "overlay",
|
|
@@ -1047,6 +1047,122 @@
|
|
|
1047
1047
|
}
|
|
1048
1048
|
]
|
|
1049
1049
|
},
|
|
1050
|
+
{
|
|
1051
|
+
"slug": "notification-task-bots-due-for-repair-query",
|
|
1052
|
+
"name": "notificationTaskBotsDueForRepairQuery",
|
|
1053
|
+
"module": "@dereekb/firebase",
|
|
1054
|
+
"subpath": "model/notification/notification.query",
|
|
1055
|
+
"signature": "notificationTaskBotsDueForRepairQuery(before: Date): FirestoreQueryConstraint[]",
|
|
1056
|
+
"description": "Query constraints for finding {@link NotificationTaskBot} documents whose soonest live run (`nat`) is at or before the given time.\n\nUsed by the repair sweep to find bots with an overdue run, whose run task may have gone missing.",
|
|
1057
|
+
"model": "NotificationTaskBot",
|
|
1058
|
+
"collection": "ntb",
|
|
1059
|
+
"isNested": false,
|
|
1060
|
+
"scope": "COLLECTION",
|
|
1061
|
+
"manual": false,
|
|
1062
|
+
"skip": false,
|
|
1063
|
+
"category": "sweep",
|
|
1064
|
+
"params": [
|
|
1065
|
+
{
|
|
1066
|
+
"name": "before",
|
|
1067
|
+
"type": "Date",
|
|
1068
|
+
"description": "- Bots with a `nat` at or before this time are returned.",
|
|
1069
|
+
"optional": false
|
|
1070
|
+
}
|
|
1071
|
+
],
|
|
1072
|
+
"returns": "Array of Firestore query constraints filtering for overdue bots.",
|
|
1073
|
+
"tags": [
|
|
1074
|
+
"sweep",
|
|
1075
|
+
"notificationtaskbot",
|
|
1076
|
+
"notification",
|
|
1077
|
+
"task",
|
|
1078
|
+
"bots",
|
|
1079
|
+
"due",
|
|
1080
|
+
"for",
|
|
1081
|
+
"repair",
|
|
1082
|
+
"query",
|
|
1083
|
+
"notificationtaskbotsdueforrepairquery",
|
|
1084
|
+
"bot",
|
|
1085
|
+
"constraints",
|
|
1086
|
+
"finding",
|
|
1087
|
+
"link",
|
|
1088
|
+
"documents",
|
|
1089
|
+
"whose",
|
|
1090
|
+
"soonest",
|
|
1091
|
+
"live",
|
|
1092
|
+
"run"
|
|
1093
|
+
],
|
|
1094
|
+
"constraintSequences": [
|
|
1095
|
+
{
|
|
1096
|
+
"pathLabel": "all",
|
|
1097
|
+
"entries": [
|
|
1098
|
+
{
|
|
1099
|
+
"kind": "where",
|
|
1100
|
+
"fieldPath": "nat",
|
|
1101
|
+
"operator": "<="
|
|
1102
|
+
}
|
|
1103
|
+
]
|
|
1104
|
+
}
|
|
1105
|
+
],
|
|
1106
|
+
"derivedComposites": [],
|
|
1107
|
+
"derivedFieldOverrides": []
|
|
1108
|
+
},
|
|
1109
|
+
{
|
|
1110
|
+
"slug": "notification-task-bots-stalled-query",
|
|
1111
|
+
"name": "notificationTaskBotsStalledQuery",
|
|
1112
|
+
"module": "@dereekb/firebase",
|
|
1113
|
+
"subpath": "model/notification/notification.query",
|
|
1114
|
+
"signature": "notificationTaskBotsStalledQuery(stalledBefore?: Date): FirestoreQueryConstraint[]",
|
|
1115
|
+
"description": "Query constraints for finding {@link NotificationTaskBot} documents with a stalled entry: their `stl` (the earliest\nentry `stl`) is at or before the given time.\n\nThe repair sweep marks a live run stalled when its task keeps failing or nothing picks it up. Pass an earlier time to\nfind the bots that have been stalled at least that long. Use it for an admin list (`NotificationTaskBotCollectionStore`)\nor an alerting cron. Firestore's automatic single-field index covers it.",
|
|
1116
|
+
"model": "NotificationTaskBot",
|
|
1117
|
+
"collection": "ntb",
|
|
1118
|
+
"isNested": false,
|
|
1119
|
+
"scope": "COLLECTION",
|
|
1120
|
+
"manual": false,
|
|
1121
|
+
"skip": false,
|
|
1122
|
+
"category": "lookup",
|
|
1123
|
+
"params": [
|
|
1124
|
+
{
|
|
1125
|
+
"name": "stalledBefore",
|
|
1126
|
+
"type": "Date",
|
|
1127
|
+
"description": "- Bots whose earliest stalled entry was marked at or before this time are returned. Defaults to now.",
|
|
1128
|
+
"optional": true
|
|
1129
|
+
}
|
|
1130
|
+
],
|
|
1131
|
+
"returns": "Array of Firestore query constraints filtering for stalled bots.",
|
|
1132
|
+
"tags": [
|
|
1133
|
+
"lookup",
|
|
1134
|
+
"notificationtaskbot",
|
|
1135
|
+
"notification",
|
|
1136
|
+
"task",
|
|
1137
|
+
"bots",
|
|
1138
|
+
"stalled",
|
|
1139
|
+
"query",
|
|
1140
|
+
"notificationtaskbotsstalledquery",
|
|
1141
|
+
"bot",
|
|
1142
|
+
"constraints",
|
|
1143
|
+
"finding",
|
|
1144
|
+
"link",
|
|
1145
|
+
"documents",
|
|
1146
|
+
"entry",
|
|
1147
|
+
"their",
|
|
1148
|
+
"stl",
|
|
1149
|
+
"earliest"
|
|
1150
|
+
],
|
|
1151
|
+
"constraintSequences": [
|
|
1152
|
+
{
|
|
1153
|
+
"pathLabel": "all",
|
|
1154
|
+
"entries": [
|
|
1155
|
+
{
|
|
1156
|
+
"kind": "where",
|
|
1157
|
+
"fieldPath": "stl",
|
|
1158
|
+
"operator": "<="
|
|
1159
|
+
}
|
|
1160
|
+
]
|
|
1161
|
+
}
|
|
1162
|
+
],
|
|
1163
|
+
"derivedComposites": [],
|
|
1164
|
+
"derivedFieldOverrides": []
|
|
1165
|
+
},
|
|
1050
1166
|
{
|
|
1051
1167
|
"slug": "oidc-entries-with-type-query",
|
|
1052
1168
|
"name": "oidcEntriesWithTypeQuery",
|
|
@@ -312,6 +312,52 @@
|
|
|
312
312
|
],
|
|
313
313
|
"notes": "Key of a {@link NotificationTemplateTypeInfoGroup}. Template types whose groups share a key are shown together."
|
|
314
314
|
},
|
|
315
|
+
{
|
|
316
|
+
"name": "NotificationTaskBotEntryId",
|
|
317
|
+
"package": "@dereekb/firebase",
|
|
318
|
+
"module": "src/lib/model/notification/notification.id",
|
|
319
|
+
"kind": "semantic-type",
|
|
320
|
+
"definition": "string",
|
|
321
|
+
"baseType": "string",
|
|
322
|
+
"topics": [
|
|
323
|
+
"string",
|
|
324
|
+
"dereekb-firebase:notification"
|
|
325
|
+
],
|
|
326
|
+
"guards": [
|
|
327
|
+
"isNotificationTaskBotEntryId"
|
|
328
|
+
],
|
|
329
|
+
"notes": "Identifier of a {@link NotificationTaskBotEmbeddedScriptEntry}, unique within its bot.\n\nMust match {@link NOTIFICATION_TASK_BOT_ENTRY_ID_REGEX}."
|
|
330
|
+
},
|
|
331
|
+
{
|
|
332
|
+
"name": "NotificationTaskBotScriptGroupKey",
|
|
333
|
+
"package": "@dereekb/firebase",
|
|
334
|
+
"module": "src/lib/model/notification/notification.id",
|
|
335
|
+
"kind": "semantic-type",
|
|
336
|
+
"definition": "string",
|
|
337
|
+
"baseType": "string",
|
|
338
|
+
"topics": [
|
|
339
|
+
"identifier",
|
|
340
|
+
"string",
|
|
341
|
+
"dereekb-firebase:notification"
|
|
342
|
+
],
|
|
343
|
+
"guards": [
|
|
344
|
+
"isNotificationTaskBotScriptGroupKey"
|
|
345
|
+
],
|
|
346
|
+
"notes": "Key of a NotificationTaskBotScriptGroup, the topic a script belongs to (e.g. \"Email reminders\").\n\nThe bot's owner opts out of a whole group at once rather than individual entries.\n\nMust match {@link NOTIFICATION_TASK_BOT_SCRIPT_GROUP_KEY_REGEX}."
|
|
347
|
+
},
|
|
348
|
+
{
|
|
349
|
+
"name": "NotificationTaskBotRunNumber",
|
|
350
|
+
"package": "@dereekb/firebase",
|
|
351
|
+
"module": "src/lib/model/notification/notification.id",
|
|
352
|
+
"kind": "semantic-type",
|
|
353
|
+
"definition": "number",
|
|
354
|
+
"baseType": "number",
|
|
355
|
+
"topics": [
|
|
356
|
+
"numeric",
|
|
357
|
+
"dereekb-firebase:notification"
|
|
358
|
+
],
|
|
359
|
+
"notes": "Run number of a single NotificationTaskBot run. Taken from the bot's monotonic run counter, so it never repeats within a bot."
|
|
360
|
+
},
|
|
315
361
|
{
|
|
316
362
|
"name": "NotificationTemplateType",
|
|
317
363
|
"package": "@dereekb/firebase",
|
|
@@ -381,6 +427,32 @@
|
|
|
381
427
|
],
|
|
382
428
|
"notes": "Discriminator string that routes the subtask to the correct processing configuration."
|
|
383
429
|
},
|
|
430
|
+
{
|
|
431
|
+
"name": "NotificationTaskBotScriptType",
|
|
432
|
+
"package": "@dereekb/firebase",
|
|
433
|
+
"module": "src/lib/model/notification/notification.taskbot",
|
|
434
|
+
"kind": "semantic-type",
|
|
435
|
+
"definition": "string",
|
|
436
|
+
"baseType": "string",
|
|
437
|
+
"topics": [
|
|
438
|
+
"string",
|
|
439
|
+
"dereekb-firebase:notification"
|
|
440
|
+
],
|
|
441
|
+
"notes": "Type of a NotificationTaskBot script, registered by the app. Selects the server-side processor that runs an entry."
|
|
442
|
+
},
|
|
443
|
+
{
|
|
444
|
+
"name": "NotificationTaskBotPauseReason",
|
|
445
|
+
"package": "@dereekb/firebase",
|
|
446
|
+
"module": "src/lib/model/notification/notification.taskbot",
|
|
447
|
+
"kind": "semantic-type",
|
|
448
|
+
"definition": "string",
|
|
449
|
+
"baseType": "string",
|
|
450
|
+
"topics": [
|
|
451
|
+
"string",
|
|
452
|
+
"dereekb-firebase:notification"
|
|
453
|
+
],
|
|
454
|
+
"notes": "Reason an entry was paused. The library defines {@link NOTIFICATION_TASK_BOT_PAUSE_REASON_MANUAL} and\n{@link NOTIFICATION_TASK_BOT_PAUSE_REASON_FAILED}; scripts may add their own (e.g. `'no_progress'`)."
|
|
455
|
+
},
|
|
384
456
|
{
|
|
385
457
|
"name": "NotificationTaskCheckpointString",
|
|
386
458
|
"package": "@dereekb/firebase",
|
|
@@ -263,6 +263,74 @@
|
|
|
263
263
|
"firebase-auth-oob-code-data-pair-delimiter"
|
|
264
264
|
]
|
|
265
265
|
},
|
|
266
|
+
{
|
|
267
|
+
"slug": "form-space-submission-notification-task-key",
|
|
268
|
+
"name": "formSpaceSubmissionNotificationTaskKey",
|
|
269
|
+
"kind": "function",
|
|
270
|
+
"category": "firestore",
|
|
271
|
+
"module": "@dereekb/firebase",
|
|
272
|
+
"subpath": "model/formspace/formspace.task",
|
|
273
|
+
"signature": "formSpaceSubmissionNotificationTaskKey(input: FormSpaceSubmissionNotificationTaskUniqueIdInput): NotificationTaskKey",
|
|
274
|
+
"description": "Returns the full key of the NotificationTask processing one SUBMISSION ATTEMPT of a FormSpace.\n\nThe task lives in the framework task box because {@link formSpaceSubmissionNotificationTaskTemplate} sets no notification model, and {@link uniqueNotificationTaskKey} applies the same default.",
|
|
275
|
+
"params": [
|
|
276
|
+
{
|
|
277
|
+
"name": "input",
|
|
278
|
+
"type": "FormSpaceSubmissionNotificationTaskUniqueIdInput",
|
|
279
|
+
"description": "- The FormSpace id and the attempt's reopen count.",
|
|
280
|
+
"optional": false
|
|
281
|
+
}
|
|
282
|
+
],
|
|
283
|
+
"returns": "The unique notification task's full key.",
|
|
284
|
+
"tags": [
|
|
285
|
+
"formspace",
|
|
286
|
+
"notification",
|
|
287
|
+
"task",
|
|
288
|
+
"submission",
|
|
289
|
+
"attempt",
|
|
290
|
+
"key",
|
|
291
|
+
"firestore",
|
|
292
|
+
"form",
|
|
293
|
+
"space",
|
|
294
|
+
"formspacesubmissionnotificationtaskkey"
|
|
295
|
+
],
|
|
296
|
+
"example": "formSpaceSubmissionNotificationTaskKey({ formSpaceId: 'abc' }); // 'nb/not_not/nbn/abc_FSPS'\nformSpaceSubmissionNotificationTaskKey({ formSpaceId: 'abc', reopenCount: 2 }); // 'nb/not_not/nbn/abc_FSPS_r2'",
|
|
297
|
+
"relatedSlugs": [
|
|
298
|
+
"unique-notification-task-key"
|
|
299
|
+
]
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
"slug": "unique-notification-task-key",
|
|
303
|
+
"name": "uniqueNotificationTaskKey",
|
|
304
|
+
"kind": "function",
|
|
305
|
+
"category": "firestore",
|
|
306
|
+
"module": "@dereekb/firebase",
|
|
307
|
+
"subpath": "model/notification/notification.create",
|
|
308
|
+
"signature": "uniqueNotificationTaskKey(input: UniqueNotificationTaskKeyInput): NotificationTaskKey",
|
|
309
|
+
"description": "Returns the key of a unique notification task: the notification with the unique id in the notification model's box.\n\nThis is the location {@link createNotificationDocumentPair} loads a unique task from when its accessor comes from `context`, so a key recorded with this function always points at the created task.",
|
|
310
|
+
"params": [
|
|
311
|
+
{
|
|
312
|
+
"name": "input",
|
|
313
|
+
"type": "UniqueNotificationTaskKeyInput",
|
|
314
|
+
"description": "- The notification model and the unique task id.",
|
|
315
|
+
"optional": false
|
|
316
|
+
}
|
|
317
|
+
],
|
|
318
|
+
"returns": "The full key of the unique notification task.",
|
|
319
|
+
"tags": [
|
|
320
|
+
"notification",
|
|
321
|
+
"task",
|
|
322
|
+
"unique",
|
|
323
|
+
"key",
|
|
324
|
+
"notification-box",
|
|
325
|
+
"location",
|
|
326
|
+
"firestore",
|
|
327
|
+
"uniquenotificationtaskkey"
|
|
328
|
+
],
|
|
329
|
+
"example": "uniqueNotificationTaskKey({ notificationModel: 'profile/abc', uniqueId: 'abc_T' }); // 'nb/profile_abc/nbn/abc_T'\nuniqueNotificationTaskKey({ uniqueId: 'abc_T' }); // 'nb/not_not/nbn/abc_T'",
|
|
330
|
+
"relatedSlugs": [
|
|
331
|
+
"form-space-submission-notification-task-key"
|
|
332
|
+
]
|
|
333
|
+
},
|
|
266
334
|
{
|
|
267
335
|
"slug": "is-nth-hour-of-day",
|
|
268
336
|
"name": "isNthHourOfDay",
|
|
@@ -1186,6 +1254,50 @@
|
|
|
1186
1254
|
"load-documents-for-document-references"
|
|
1187
1255
|
]
|
|
1188
1256
|
},
|
|
1257
|
+
{
|
|
1258
|
+
"slug": "load-document-for-id-or-key",
|
|
1259
|
+
"name": "loadDocumentForIdOrKey",
|
|
1260
|
+
"kind": "function",
|
|
1261
|
+
"category": "firestore",
|
|
1262
|
+
"module": "@dereekb/firebase",
|
|
1263
|
+
"subpath": "common/firestore/accessor/document.utility",
|
|
1264
|
+
"signature": "loadDocumentForIdOrKey(accessor: FirestoreDocumentAccessor<T, D>, idOrKey: FirestoreModelId | FirestoreModelKey): D",
|
|
1265
|
+
"description": "Loads the {@link FirestoreDocument} a document id or a full key refers to.\n\nA value containing `/` is a full key, loaded with `accessor.loadDocumentForKey()`, which refuses a key of another\ncollection. Anything else is a document id, loaded relative to the accessor's collection with `accessor.loadDocumentForId()`.\nResolving an id through the accessor, rather than prefixing a collection name onto it, keeps a subcollection's parent and\na test driver's fuzzed collection names intact. No network calls are made.",
|
|
1266
|
+
"params": [
|
|
1267
|
+
{
|
|
1268
|
+
"name": "accessor",
|
|
1269
|
+
"type": "FirestoreDocumentAccessor<T, D>",
|
|
1270
|
+
"description": "- Accessor to load the document with (must have collection context to resolve an id).",
|
|
1271
|
+
"optional": false
|
|
1272
|
+
},
|
|
1273
|
+
{
|
|
1274
|
+
"name": "idOrKey",
|
|
1275
|
+
"type": "FirestoreModelId | FirestoreModelKey",
|
|
1276
|
+
"description": "- A document id (`abc123`) or a full key (`gb/abc123`).",
|
|
1277
|
+
"optional": false
|
|
1278
|
+
}
|
|
1279
|
+
],
|
|
1280
|
+
"returns": "The document instance.",
|
|
1281
|
+
"tags": [
|
|
1282
|
+
"firestore",
|
|
1283
|
+
"document",
|
|
1284
|
+
"loader",
|
|
1285
|
+
"accessor",
|
|
1286
|
+
"id",
|
|
1287
|
+
"key",
|
|
1288
|
+
"path",
|
|
1289
|
+
"either",
|
|
1290
|
+
"promote",
|
|
1291
|
+
"load",
|
|
1292
|
+
"for",
|
|
1293
|
+
"or",
|
|
1294
|
+
"loaddocumentforidorkey"
|
|
1295
|
+
],
|
|
1296
|
+
"relatedSlugs": [
|
|
1297
|
+
"load-documents-for-ids",
|
|
1298
|
+
"load-documents-for-keys"
|
|
1299
|
+
]
|
|
1300
|
+
},
|
|
1189
1301
|
{
|
|
1190
1302
|
"slug": "firestore-document-loader",
|
|
1191
1303
|
"name": "firestoreDocumentLoader",
|
|
@@ -5,6 +5,47 @@
|
|
|
5
5
|
"generatedAt": "1970-01-01T00:00:00.000Z",
|
|
6
6
|
"generator": "@dereekb/dbx-components-mcp/scripts/generate-manifests.mjs",
|
|
7
7
|
"entries": [
|
|
8
|
+
{
|
|
9
|
+
"slug": "merge-clearable-object-update",
|
|
10
|
+
"name": "mergeClearableObjectUpdate",
|
|
11
|
+
"kind": "function",
|
|
12
|
+
"category": "object",
|
|
13
|
+
"module": "@dereekb/model",
|
|
14
|
+
"subpath": "type/type",
|
|
15
|
+
"signature": "mergeClearableObjectUpdate(current: Maybe<Partial<T>>, update: Maybe<ClearableObjectUpdate<T>>): Partial<T>",
|
|
16
|
+
"description": "Merges a {@link ClearableObjectUpdate} into the current object and returns the result as a new object.\n\nA `null` value in the update deletes the key, and an `undefined` value leaves the current value unchanged.\n`null` and `undefined` values already on the current object are dropped too, so the result only holds set values.",
|
|
17
|
+
"params": [
|
|
18
|
+
{
|
|
19
|
+
"name": "current",
|
|
20
|
+
"type": "Maybe<Partial<T>>",
|
|
21
|
+
"description": "- The current object. Null/undefined is treated as an empty object.",
|
|
22
|
+
"optional": false
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "update",
|
|
26
|
+
"type": "Maybe<ClearableObjectUpdate<T>>",
|
|
27
|
+
"description": "- The update to merge in. Null/undefined returns a copy of the current values.",
|
|
28
|
+
"optional": false
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
"returns": "A new object with the update applied. Neither input is modified.",
|
|
32
|
+
"tags": [
|
|
33
|
+
"object",
|
|
34
|
+
"merge",
|
|
35
|
+
"update",
|
|
36
|
+
"patch",
|
|
37
|
+
"clear",
|
|
38
|
+
"clearable",
|
|
39
|
+
"null",
|
|
40
|
+
"delete",
|
|
41
|
+
"mergeclearableobjectupdate"
|
|
42
|
+
],
|
|
43
|
+
"example": "mergeClearableObjectUpdate({ a: 1, b: 2 }, { b: null, c: 3, d: undefined });\n// { a: 1, c: 3 }",
|
|
44
|
+
"relatedSlugs": [
|
|
45
|
+
"merge-objects",
|
|
46
|
+
"strip-object"
|
|
47
|
+
]
|
|
48
|
+
},
|
|
8
49
|
{
|
|
9
50
|
"slug": "iso8601-day-string-type",
|
|
10
51
|
"name": "iso8601DayStringType",
|