@openfn/language-opencrvs 1.0.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/ast.json ADDED
@@ -0,0 +1,868 @@
1
+ {
2
+ "operations": [
3
+ {
4
+ "name": "createBirthNotification",
5
+ "params": [
6
+ "body"
7
+ ],
8
+ "docs": {
9
+ "description": "Create a Birth Notification. Pass an array of FHIR resources wrapped in entry\nobjects like `{ fullUrl, resource }`. References must use the full URL\nof the corresponding resources. See [OpenCRVS Event Notification Postman documentation](https://github.com/opencrvs/opencrvs-countryconfig/blob/master/postman/Event%20Notification.postman_collection.json)",
10
+ "tags": [
11
+ {
12
+ "title": "example",
13
+ "description": "createBirthNotification($.bundleData)",
14
+ "caption": "Create a birth notification"
15
+ },
16
+ {
17
+ "title": "example",
18
+ "description": "createBirthNotification([\n{\nfullUrl: 'urn:uuid:abcde',\nresource: {\nresourceType: 'Composition',\nsection:[\n{\ntitle: \"Mother's details\",\ncode: {\ncoding: [\n{\nsystem: 'http://opencrvs.org/specs/sections',\ncode: 'mother-details',\n},\n],\ntext: \"Mother's details\",\n},\nentry: [\n{\nreference: 'urn:uuid:wxyz',\n},\n],\n}\n// ... other section details \n]\n\n// ... other resource details\n},\n},\n{\nfullUrl: 'urn:uuid:wxyz',\nresource: {\nresourceType: 'Patient',\n// ... other resource details\n},\n},\n]);",
19
+ "caption": "Cross-reference two bundle resources"
20
+ },
21
+ {
22
+ "title": "function",
23
+ "description": null,
24
+ "name": null
25
+ },
26
+ {
27
+ "title": "public",
28
+ "description": null,
29
+ "type": null
30
+ },
31
+ {
32
+ "title": "param",
33
+ "description": "An array of Birth Notification bundle entries.",
34
+ "type": {
35
+ "type": "NameExpression",
36
+ "name": "Array"
37
+ },
38
+ "name": "body"
39
+ },
40
+ {
41
+ "title": "returns",
42
+ "description": null,
43
+ "type": {
44
+ "type": "NameExpression",
45
+ "name": "Operation"
46
+ }
47
+ },
48
+ {
49
+ "title": "state",
50
+ "description": "{OpenCRVSState}"
51
+ }
52
+ ]
53
+ },
54
+ "valid": true
55
+ },
56
+ {
57
+ "name": "queryEvents",
58
+ "params": [
59
+ "variables",
60
+ "options"
61
+ ],
62
+ "docs": {
63
+ "description": "Make an events search query against the OpenCRVS GraphQL API.",
64
+ "tags": [
65
+ {
66
+ "title": "example",
67
+ "description": "query(\n{\nevent: 'birth',\nregistrationStatuses: ['REGISTERED'],\nchildGender: 'male',\ndateOfRegistrationEnd: '2022-12-31T23:59:59.999Z',\ndateOfRegistrationStart: '2021-11-01T00:00:00.000Z',\ndeclarationJurisdictionId: '',\neventLocationId: '704b9706-d729-4834-8656-05b562065deb',\nfatherFirstNames: 'Dad',\nmotherFirstNames: 'Mom',\n},\n);",
68
+ "caption": "Search for events with specific parameters"
69
+ },
70
+ {
71
+ "title": "example",
72
+ "description": "query(\n{\nevent: 'birth',\nregistrationStatuses: ['REGISTERED'],\nchildGender: 'male',\ndateOfRegistrationEnd: '2022-12-31T23:59:59.999Z',\ndateOfRegistrationStart: '2021-11-01T00:00:00.000Z',\ndeclarationJurisdictionId: '',\neventLocationId: '704b9706-d729-4834-8656-05b562065deb',\nfatherFirstNames: 'Dad',\nmotherFirstNames: 'Mom',\n},\n{ count: 10, skip: 0 }\n);",
73
+ "caption": "Search for events with options"
74
+ },
75
+ {
76
+ "title": "function",
77
+ "description": null,
78
+ "name": null
79
+ },
80
+ {
81
+ "title": "public",
82
+ "description": null,
83
+ "type": null
84
+ },
85
+ {
86
+ "title": "param",
87
+ "description": "GraphQL search parameters. For a full list of options, see [variables.advancedSearchParameters in OpenCRVS Docs](https://documentation.opencrvs.org/technology/interoperability/record-search-clients#record-search-requests)",
88
+ "type": {
89
+ "type": "NameExpression",
90
+ "name": "Object"
91
+ },
92
+ "name": "variables"
93
+ },
94
+ {
95
+ "title": "param",
96
+ "description": "Options to control the request, such as `count` and `skip`. Count defaults to 10.",
97
+ "type": {
98
+ "type": "NameExpression",
99
+ "name": "Object"
100
+ },
101
+ "name": "options"
102
+ },
103
+ {
104
+ "title": "returns",
105
+ "description": null,
106
+ "type": {
107
+ "type": "NameExpression",
108
+ "name": "Operation"
109
+ }
110
+ },
111
+ {
112
+ "title": "state",
113
+ "description": "{OpenCRVSState}"
114
+ }
115
+ ]
116
+ },
117
+ "valid": true
118
+ }
119
+ ],
120
+ "exports": [],
121
+ "common": [
122
+ {
123
+ "name": "fn",
124
+ "params": [
125
+ "func"
126
+ ],
127
+ "docs": {
128
+ "description": "Creates a custom step (or operation) for more flexible job writing.",
129
+ "tags": [
130
+ {
131
+ "title": "public",
132
+ "description": null,
133
+ "type": null
134
+ },
135
+ {
136
+ "title": "function",
137
+ "description": null,
138
+ "name": null
139
+ },
140
+ {
141
+ "title": "example",
142
+ "description": "fn(state => {\n // do some things to state\n return state;\n});"
143
+ },
144
+ {
145
+ "title": "param",
146
+ "description": "is the function",
147
+ "type": {
148
+ "type": "NameExpression",
149
+ "name": "Function"
150
+ },
151
+ "name": "func"
152
+ },
153
+ {
154
+ "title": "returns",
155
+ "description": null,
156
+ "type": {
157
+ "type": "NameExpression",
158
+ "name": "Operation"
159
+ }
160
+ }
161
+ ]
162
+ },
163
+ "valid": true
164
+ },
165
+ {
166
+ "name": "fnIf",
167
+ "params": [
168
+ "condition",
169
+ "operation"
170
+ ],
171
+ "docs": {
172
+ "description": "A custom operation that will only execute the function if the condition returns true",
173
+ "tags": [
174
+ {
175
+ "title": "public",
176
+ "description": null,
177
+ "type": null
178
+ },
179
+ {
180
+ "title": "function",
181
+ "description": null,
182
+ "name": null
183
+ },
184
+ {
185
+ "title": "example",
186
+ "description": "fnIf((state) => state?.data?.name, get(\"https://example.com\"));"
187
+ },
188
+ {
189
+ "title": "param",
190
+ "description": "The condition that returns true",
191
+ "type": {
192
+ "type": "NameExpression",
193
+ "name": "Boolean"
194
+ },
195
+ "name": "condition"
196
+ },
197
+ {
198
+ "title": "param",
199
+ "description": "The operation needed to be executed.",
200
+ "type": {
201
+ "type": "NameExpression",
202
+ "name": "Operation"
203
+ },
204
+ "name": "operation"
205
+ },
206
+ {
207
+ "title": "returns",
208
+ "description": null,
209
+ "type": {
210
+ "type": "NameExpression",
211
+ "name": "Operation"
212
+ }
213
+ }
214
+ ]
215
+ },
216
+ "valid": true
217
+ },
218
+ {
219
+ "name": "sourceValue",
220
+ "params": [
221
+ "path"
222
+ ],
223
+ "docs": {
224
+ "description": "Picks out a single value from source data.\nIf a JSONPath returns more than one value for the reference, the first\nitem will be returned.",
225
+ "tags": [
226
+ {
227
+ "title": "public",
228
+ "description": null,
229
+ "type": null
230
+ },
231
+ {
232
+ "title": "function",
233
+ "description": null,
234
+ "name": null
235
+ },
236
+ {
237
+ "title": "example",
238
+ "description": "sourceValue('$.key')"
239
+ },
240
+ {
241
+ "title": "param",
242
+ "description": "JSONPath referencing a point in `state`.",
243
+ "type": {
244
+ "type": "NameExpression",
245
+ "name": "String"
246
+ },
247
+ "name": "path"
248
+ },
249
+ {
250
+ "title": "returns",
251
+ "description": null,
252
+ "type": {
253
+ "type": "NameExpression",
254
+ "name": "Operation"
255
+ }
256
+ }
257
+ ]
258
+ },
259
+ "valid": true
260
+ },
261
+ {
262
+ "name": "dataPath",
263
+ "params": [
264
+ "path"
265
+ ],
266
+ "docs": {
267
+ "description": "Ensures a path points at the data.",
268
+ "tags": [
269
+ {
270
+ "title": "public",
271
+ "description": null,
272
+ "type": null
273
+ },
274
+ {
275
+ "title": "function",
276
+ "description": null,
277
+ "name": null
278
+ },
279
+ {
280
+ "title": "example",
281
+ "description": "dataPath('key')"
282
+ },
283
+ {
284
+ "title": "param",
285
+ "description": "JSONPath referencing a point in `data`.",
286
+ "type": {
287
+ "type": "NameExpression",
288
+ "name": "string"
289
+ },
290
+ "name": "path"
291
+ },
292
+ {
293
+ "title": "returns",
294
+ "description": null,
295
+ "type": {
296
+ "type": "NameExpression",
297
+ "name": "string"
298
+ }
299
+ }
300
+ ]
301
+ },
302
+ "valid": true
303
+ },
304
+ {
305
+ "name": "dataValue",
306
+ "params": [
307
+ "path"
308
+ ],
309
+ "docs": {
310
+ "description": "Picks out a single value from the source data object—usually `state.data`.\nIf a JSONPath returns more than one value for the reference, the first\nitem will be returned.",
311
+ "tags": [
312
+ {
313
+ "title": "public",
314
+ "description": null,
315
+ "type": null
316
+ },
317
+ {
318
+ "title": "function",
319
+ "description": null,
320
+ "name": null
321
+ },
322
+ {
323
+ "title": "example",
324
+ "description": "dataValue('key')"
325
+ },
326
+ {
327
+ "title": "param",
328
+ "description": "JSONPath referencing a point in `data`.",
329
+ "type": {
330
+ "type": "NameExpression",
331
+ "name": "String"
332
+ },
333
+ "name": "path"
334
+ },
335
+ {
336
+ "title": "returns",
337
+ "description": null,
338
+ "type": {
339
+ "type": "NameExpression",
340
+ "name": "Operation"
341
+ }
342
+ }
343
+ ]
344
+ },
345
+ "valid": true
346
+ },
347
+ {
348
+ "name": "lastReferenceValue",
349
+ "params": [
350
+ "path"
351
+ ],
352
+ "docs": {
353
+ "description": "Picks out the last reference value from source data.",
354
+ "tags": [
355
+ {
356
+ "title": "public",
357
+ "description": null,
358
+ "type": null
359
+ },
360
+ {
361
+ "title": "function",
362
+ "description": null,
363
+ "name": null
364
+ },
365
+ {
366
+ "title": "example",
367
+ "description": "lastReferenceValue('key')"
368
+ },
369
+ {
370
+ "title": "param",
371
+ "description": "JSONPath referencing a point in `references`.",
372
+ "type": {
373
+ "type": "NameExpression",
374
+ "name": "String"
375
+ },
376
+ "name": "path"
377
+ },
378
+ {
379
+ "title": "returns",
380
+ "description": null,
381
+ "type": {
382
+ "type": "NameExpression",
383
+ "name": "Operation"
384
+ }
385
+ }
386
+ ]
387
+ },
388
+ "valid": true
389
+ },
390
+ {
391
+ "name": "each",
392
+ "params": [
393
+ "dataSource",
394
+ "operation"
395
+ ],
396
+ "docs": {
397
+ "description": "Iterates over an array of items and invokes an operation upon each one, where the state\nobject is _scoped_ so that state.data is the item under iteration.\nThe rest of the state object is untouched and can be referenced as usual.\nYou can pass an array directly, or use lazy state or a JSONPath string to\nreference a slice of state.",
398
+ "tags": [
399
+ {
400
+ "title": "public",
401
+ "description": null,
402
+ "type": null
403
+ },
404
+ {
405
+ "title": "function",
406
+ "description": null,
407
+ "name": null
408
+ },
409
+ {
410
+ "title": "example",
411
+ "description": "each(\n $.data,\n // Inside the callback operation, `$.data` is scoped to the item under iteration\n insert(\"patient\", {\n patient_name: $.data.properties.case_name,\n patient_id: $.data.case_id,\n })\n);",
412
+ "caption": "Using lazy state ($) to iterate over items in state.data and pass each into an \"insert\" operation"
413
+ },
414
+ {
415
+ "title": "example",
416
+ "description": "each(\n $.data,\n insert(\"patient\", (state) => ({\n patient_id: state.data.case_id,\n ...state.data\n }))\n);",
417
+ "caption": "Iterate over items in state.data and pass each one into an \"insert\" operation"
418
+ },
419
+ {
420
+ "title": "example",
421
+ "description": "each(\n \"$.data[*]\",\n insert(\"patient\", (state) => ({\n patient_name: state.data.properties.case_name,\n patient_id: state.data.case_id,\n }))\n);",
422
+ "caption": "Using JSON path to iterate over items in state.data and pass each one into an \"insert\" operation"
423
+ },
424
+ {
425
+ "title": "param",
426
+ "description": "JSONPath referencing a point in `state`.",
427
+ "type": {
428
+ "type": "NameExpression",
429
+ "name": "DataSource"
430
+ },
431
+ "name": "dataSource"
432
+ },
433
+ {
434
+ "title": "param",
435
+ "description": "The operation needed to be repeated.",
436
+ "type": {
437
+ "type": "NameExpression",
438
+ "name": "Operation"
439
+ },
440
+ "name": "operation"
441
+ },
442
+ {
443
+ "title": "returns",
444
+ "description": null,
445
+ "type": {
446
+ "type": "NameExpression",
447
+ "name": "Operation"
448
+ }
449
+ }
450
+ ]
451
+ },
452
+ "valid": true
453
+ },
454
+ {
455
+ "name": "combine",
456
+ "params": [
457
+ "operations"
458
+ ],
459
+ "docs": {
460
+ "description": "Combines two operations into one",
461
+ "tags": [
462
+ {
463
+ "title": "public",
464
+ "description": null,
465
+ "type": null
466
+ },
467
+ {
468
+ "title": "function",
469
+ "description": null,
470
+ "name": null
471
+ },
472
+ {
473
+ "title": "example",
474
+ "description": "combine(\n create('foo'),\n delete('bar')\n)"
475
+ },
476
+ {
477
+ "title": "param",
478
+ "description": "Operations to be performed.",
479
+ "type": {
480
+ "type": "NameExpression",
481
+ "name": "Operations"
482
+ },
483
+ "name": "operations"
484
+ },
485
+ {
486
+ "title": "returns",
487
+ "description": null,
488
+ "type": {
489
+ "type": "NameExpression",
490
+ "name": "Operation"
491
+ }
492
+ }
493
+ ]
494
+ },
495
+ "valid": true
496
+ },
497
+ {
498
+ "name": "field",
499
+ "params": [
500
+ "key",
501
+ "value"
502
+ ],
503
+ "docs": {
504
+ "description": "Returns a key, value pair in an array.",
505
+ "tags": [
506
+ {
507
+ "title": "public",
508
+ "description": null,
509
+ "type": null
510
+ },
511
+ {
512
+ "title": "function",
513
+ "description": null,
514
+ "name": null
515
+ },
516
+ {
517
+ "title": "example",
518
+ "description": "field('destination_field_name__c', 'value')"
519
+ },
520
+ {
521
+ "title": "param",
522
+ "description": "Name of the field",
523
+ "type": {
524
+ "type": "NameExpression",
525
+ "name": "string"
526
+ },
527
+ "name": "key"
528
+ },
529
+ {
530
+ "title": "param",
531
+ "description": "The value itself or a sourceable operation.",
532
+ "type": {
533
+ "type": "NameExpression",
534
+ "name": "Value"
535
+ },
536
+ "name": "value"
537
+ },
538
+ {
539
+ "title": "returns",
540
+ "description": null,
541
+ "type": {
542
+ "type": "NameExpression",
543
+ "name": "Field"
544
+ }
545
+ }
546
+ ]
547
+ },
548
+ "valid": true
549
+ },
550
+ {
551
+ "name": "fields",
552
+ "params": [
553
+ "fields"
554
+ ],
555
+ "docs": {
556
+ "description": "Zips key value pairs into an object.",
557
+ "tags": [
558
+ {
559
+ "title": "public",
560
+ "description": null,
561
+ "type": null
562
+ },
563
+ {
564
+ "title": "function",
565
+ "description": null,
566
+ "name": null
567
+ },
568
+ {
569
+ "title": "example",
570
+ "description": "fields(list_of_fields)"
571
+ },
572
+ {
573
+ "title": "param",
574
+ "description": "a list of fields",
575
+ "type": {
576
+ "type": "NameExpression",
577
+ "name": "Fields"
578
+ },
579
+ "name": "fields"
580
+ },
581
+ {
582
+ "title": "returns",
583
+ "description": null,
584
+ "type": {
585
+ "type": "NameExpression",
586
+ "name": "Object"
587
+ }
588
+ }
589
+ ]
590
+ },
591
+ "valid": true
592
+ },
593
+ {
594
+ "name": "merge",
595
+ "params": [
596
+ "dataSource",
597
+ "fields"
598
+ ],
599
+ "docs": {
600
+ "description": "Merges fields into each item in an array.",
601
+ "tags": [
602
+ {
603
+ "title": "public",
604
+ "description": null,
605
+ "type": null
606
+ },
607
+ {
608
+ "title": "example",
609
+ "description": "merge(\n \"$.books[*]\",\n fields(\n field( \"publisher\", sourceValue(\"$.publisher\") )\n )\n)"
610
+ },
611
+ {
612
+ "title": "function",
613
+ "description": null,
614
+ "name": null
615
+ },
616
+ {
617
+ "title": "public",
618
+ "description": null,
619
+ "type": null
620
+ },
621
+ {
622
+ "title": "param",
623
+ "description": null,
624
+ "type": {
625
+ "type": "NameExpression",
626
+ "name": "DataSource"
627
+ },
628
+ "name": "dataSource"
629
+ },
630
+ {
631
+ "title": "param",
632
+ "description": "Group of fields to merge in.",
633
+ "type": {
634
+ "type": "NameExpression",
635
+ "name": "Object"
636
+ },
637
+ "name": "fields"
638
+ },
639
+ {
640
+ "title": "returns",
641
+ "description": null,
642
+ "type": {
643
+ "type": "NameExpression",
644
+ "name": "DataSource"
645
+ }
646
+ }
647
+ ]
648
+ },
649
+ "valid": true
650
+ },
651
+ {
652
+ "name": "group",
653
+ "params": [
654
+ "arrayOfObjects",
655
+ "keyPath",
656
+ "callback"
657
+ ],
658
+ "docs": {
659
+ "description": "Groups an array of objects by a specified key path.",
660
+ "tags": [
661
+ {
662
+ "title": "public",
663
+ "description": null,
664
+ "type": null
665
+ },
666
+ {
667
+ "title": "example",
668
+ "description": "const users = [\n { name: 'Alice', age: 25, city: 'New York' },\n { name: 'Bob', age: 30, city: 'San Francisco' },\n { name: 'Charlie', age: 25, city: 'New York' },\n { name: 'David', age: 30, city: 'San Francisco' }\n];\ngroup(users, 'city');\n// state is { data: { 'New York': [/Alice, Charlie/], 'San Francisco': [ /Bob, David / ] }"
669
+ },
670
+ {
671
+ "title": "function",
672
+ "description": null,
673
+ "name": null
674
+ },
675
+ {
676
+ "title": "public",
677
+ "description": null,
678
+ "type": null
679
+ },
680
+ {
681
+ "title": "param",
682
+ "description": "The array of objects to be grouped.",
683
+ "type": {
684
+ "type": "TypeApplication",
685
+ "expression": {
686
+ "type": "NameExpression",
687
+ "name": "Array"
688
+ },
689
+ "applications": [
690
+ {
691
+ "type": "NameExpression",
692
+ "name": "Object"
693
+ }
694
+ ]
695
+ },
696
+ "name": "arrayOfObjects"
697
+ },
698
+ {
699
+ "title": "param",
700
+ "description": "The key path to group by.",
701
+ "type": {
702
+ "type": "NameExpression",
703
+ "name": "string"
704
+ },
705
+ "name": "keyPath"
706
+ },
707
+ {
708
+ "title": "param",
709
+ "description": "(Optional) Callback function",
710
+ "type": {
711
+ "type": "NameExpression",
712
+ "name": "function"
713
+ },
714
+ "name": "callback"
715
+ },
716
+ {
717
+ "title": "returns",
718
+ "description": null,
719
+ "type": {
720
+ "type": "NameExpression",
721
+ "name": "Operation"
722
+ }
723
+ }
724
+ ]
725
+ },
726
+ "valid": true
727
+ },
728
+ {
729
+ "name": "scrubEmojis",
730
+ "params": [
731
+ "text",
732
+ "replacementChars"
733
+ ],
734
+ "docs": {
735
+ "description": "Replaces emojis in a string.",
736
+ "tags": [
737
+ {
738
+ "title": "public",
739
+ "description": null,
740
+ "type": null
741
+ },
742
+ {
743
+ "title": "function",
744
+ "description": null,
745
+ "name": null
746
+ },
747
+ {
748
+ "title": "example",
749
+ "description": "scrubEmojis('Dove🕊️⭐ 29')"
750
+ },
751
+ {
752
+ "title": "param",
753
+ "description": "String that needs to be cleaned",
754
+ "type": {
755
+ "type": "NameExpression",
756
+ "name": "string"
757
+ },
758
+ "name": "text"
759
+ },
760
+ {
761
+ "title": "param",
762
+ "description": "Characters that replace the emojis",
763
+ "type": {
764
+ "type": "NameExpression",
765
+ "name": "string"
766
+ },
767
+ "name": "replacementChars"
768
+ },
769
+ {
770
+ "title": "returns",
771
+ "description": null,
772
+ "type": {
773
+ "type": "NameExpression",
774
+ "name": "string"
775
+ }
776
+ }
777
+ ]
778
+ },
779
+ "valid": true
780
+ },
781
+ {
782
+ "name": "cursor",
783
+ "params": [
784
+ "value",
785
+ "options"
786
+ ],
787
+ "docs": {
788
+ "description": "Sets a cursor property on state.\nSupports natural language dates like `now`, `today`, `yesterday`, `n hours ago`, `n days ago`, and `start`,\nwhich will be converted relative to the environment (ie, the Lightning or CLI locale). Custom timezones\nare not yet supported.\nYou can provide a formatter to customise the final cursor value, which is useful for normalising\ndifferent inputs. The custom formatter runs after natural language date conversion.\nSee the usage guide at {@link https://docs.openfn.org/documentation/jobs/job-writing-guide#using-cursors}",
789
+ "tags": [
790
+ {
791
+ "title": "public",
792
+ "description": null,
793
+ "type": null
794
+ },
795
+ {
796
+ "title": "function",
797
+ "description": null,
798
+ "name": null
799
+ },
800
+ {
801
+ "title": "example",
802
+ "description": "cursor($.cursor, { defaultValue: 'today' })",
803
+ "caption": "Use a cursor from state if present, or else use the default value"
804
+ },
805
+ {
806
+ "title": "example",
807
+ "description": "cursor(22)",
808
+ "caption": "Use a pagination cursor"
809
+ },
810
+ {
811
+ "title": "param",
812
+ "description": "the cursor value. Usually an ISO date, natural language date, or page number",
813
+ "type": {
814
+ "type": "NameExpression",
815
+ "name": "any"
816
+ },
817
+ "name": "value"
818
+ },
819
+ {
820
+ "title": "param",
821
+ "description": "options to control the cursor.",
822
+ "type": {
823
+ "type": "NameExpression",
824
+ "name": "object"
825
+ },
826
+ "name": "options"
827
+ },
828
+ {
829
+ "title": "param",
830
+ "description": "set the cursor key. Will persist through the whole run.",
831
+ "type": {
832
+ "type": "NameExpression",
833
+ "name": "string"
834
+ },
835
+ "name": "options.key"
836
+ },
837
+ {
838
+ "title": "param",
839
+ "description": "the value to use if value is falsy",
840
+ "type": {
841
+ "type": "NameExpression",
842
+ "name": "any"
843
+ },
844
+ "name": "options.defaultValue"
845
+ },
846
+ {
847
+ "title": "param",
848
+ "description": "custom formatter for the final cursor value",
849
+ "type": {
850
+ "type": "NameExpression",
851
+ "name": "Function"
852
+ },
853
+ "name": "options.format"
854
+ },
855
+ {
856
+ "title": "returns",
857
+ "description": null,
858
+ "type": {
859
+ "type": "NameExpression",
860
+ "name": "Operation"
861
+ }
862
+ }
863
+ ]
864
+ },
865
+ "valid": false
866
+ }
867
+ ]
868
+ }