@morphql/language-definitions 0.1.29 → 0.1.30

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/dist/index.cjs CHANGED
@@ -467,6 +467,134 @@ var FUNCTIONS = [
467
467
  example: "array(1, 2, 3) // [1, 2, 3]"
468
468
  }
469
469
  },
470
+ {
471
+ name: "avg",
472
+ doc: {
473
+ signature: "avg(array, valueExpression)",
474
+ description: "Returns the average of a numeric expression evaluated per item. Only non-NaN values contribute. Returns 0 for empty or null arrays.",
475
+ parameters: [
476
+ { name: "array", description: "The array to average over" },
477
+ {
478
+ name: "valueExpression",
479
+ description: "Expression evaluated for each item to extract the numeric value. Bare field names resolve against each item."
480
+ }
481
+ ],
482
+ returns: "number",
483
+ example: "set avgPrice = avg(items, price)"
484
+ }
485
+ },
486
+ {
487
+ name: "minof",
488
+ doc: {
489
+ signature: "minof(array, valueExpression)",
490
+ description: "Returns the minimum of a numeric expression evaluated per item. Skips non-numeric values. Returns null for empty or null arrays.",
491
+ parameters: [
492
+ { name: "array", description: "The array to find the minimum in" },
493
+ {
494
+ name: "valueExpression",
495
+ description: "Expression evaluated for each item. Bare field names resolve against each item."
496
+ }
497
+ ],
498
+ returns: "number | null",
499
+ example: "set cheapest = minof(products, price)"
500
+ }
501
+ },
502
+ {
503
+ name: "maxof",
504
+ doc: {
505
+ signature: "maxof(array, valueExpression)",
506
+ description: "Returns the maximum of a numeric expression evaluated per item. Skips non-numeric values. Returns null for empty or null arrays.",
507
+ parameters: [
508
+ { name: "array", description: "The array to find the maximum in" },
509
+ {
510
+ name: "valueExpression",
511
+ description: "Expression evaluated for each item. Bare field names resolve against each item."
512
+ }
513
+ ],
514
+ returns: "number | null",
515
+ example: "set mostExpensive = maxof(products, price)"
516
+ }
517
+ },
518
+ {
519
+ name: "every",
520
+ doc: {
521
+ signature: "every(array, conditionExpression)",
522
+ description: "Returns true if a condition expression is truthy for every item in the array. Returns true for empty or null arrays (vacuously true).",
523
+ parameters: [
524
+ { name: "array", description: "The array to test" },
525
+ {
526
+ name: "conditionExpression",
527
+ description: "Boolean expression evaluated for each item. Bare field names resolve against each item."
528
+ }
529
+ ],
530
+ returns: "boolean",
531
+ example: 'set allPaid = every(orders, status == "paid")\nset valid = every(items, amount > 0)'
532
+ }
533
+ },
534
+ {
535
+ name: "some",
536
+ doc: {
537
+ signature: "some(array, conditionExpression)",
538
+ description: "Returns true if a condition expression is truthy for at least one item. Returns false for empty or null arrays.",
539
+ parameters: [
540
+ { name: "array", description: "The array to test" },
541
+ {
542
+ name: "conditionExpression",
543
+ description: "Boolean expression evaluated for each item. Bare field names resolve against each item."
544
+ }
545
+ ],
546
+ returns: "boolean",
547
+ example: "set hasOverdue = some(invoices, daysOverdue > 0)\nset hasDiscount = some(items, discount > 0)"
548
+ }
549
+ },
550
+ {
551
+ name: "distinct",
552
+ doc: {
553
+ signature: "distinct(array, valueExpression)",
554
+ description: "Returns an array of distinct values of an expression across the array, preserving first-seen order. Deduplication is based on String() coercion.",
555
+ parameters: [
556
+ { name: "array", description: "The array to extract distinct values from" },
557
+ {
558
+ name: "valueExpression",
559
+ description: "Expression evaluated for each item. Bare field names resolve against each item."
560
+ }
561
+ ],
562
+ returns: "array",
563
+ example: "set categories = distinct(products, category)\nset statuses = distinct(orders, status)"
564
+ }
565
+ },
566
+ {
567
+ name: "sum",
568
+ doc: {
569
+ signature: "sum(array, valueExpression)",
570
+ description: "Sums a numeric expression evaluated per item across an array. null, undefined and non-numeric values are treated as 0.",
571
+ parameters: [
572
+ { name: "array", description: "The array to sum over" },
573
+ {
574
+ name: "valueExpression",
575
+ description: "Expression evaluated for each item to extract the numeric value. Bare field names resolve against each item."
576
+ }
577
+ ],
578
+ returns: "number",
579
+ example: "set total = sum(orders, amount)\nset discounted = sum(items, price * quantity)"
580
+ }
581
+ },
582
+ {
583
+ name: "groupby",
584
+ doc: {
585
+ signature: "groupby(array, keyExpression)",
586
+ description: "Groups an array of items by a key expression evaluated per item. Returns an array of `{ key, items }` objects in insertion order. Typically used as the `from` source of a `section multiple`.",
587
+ parameters: [
588
+ { name: "array", description: "The array to group" },
589
+ {
590
+ name: "keyExpression",
591
+ description: "Expression evaluated for each item to compute the group key. Bare field names resolve against each item."
592
+ }
593
+ ],
594
+ returns: "array of { key, items }",
595
+ example: "section multiple byCategory(\n set category = key\n set count = length(items)\n section multiple products(\n set name = name\n ) from items\n) from groupby(products, category)"
596
+ }
597
+ },
470
598
  // ── Math functions ────────────────────────────────────────────────────────
471
599
  {
472
600
  name: "floor",
package/dist/index.js CHANGED
@@ -425,6 +425,134 @@ var FUNCTIONS = [
425
425
  example: "array(1, 2, 3) // [1, 2, 3]"
426
426
  }
427
427
  },
428
+ {
429
+ name: "avg",
430
+ doc: {
431
+ signature: "avg(array, valueExpression)",
432
+ description: "Returns the average of a numeric expression evaluated per item. Only non-NaN values contribute. Returns 0 for empty or null arrays.",
433
+ parameters: [
434
+ { name: "array", description: "The array to average over" },
435
+ {
436
+ name: "valueExpression",
437
+ description: "Expression evaluated for each item to extract the numeric value. Bare field names resolve against each item."
438
+ }
439
+ ],
440
+ returns: "number",
441
+ example: "set avgPrice = avg(items, price)"
442
+ }
443
+ },
444
+ {
445
+ name: "minof",
446
+ doc: {
447
+ signature: "minof(array, valueExpression)",
448
+ description: "Returns the minimum of a numeric expression evaluated per item. Skips non-numeric values. Returns null for empty or null arrays.",
449
+ parameters: [
450
+ { name: "array", description: "The array to find the minimum in" },
451
+ {
452
+ name: "valueExpression",
453
+ description: "Expression evaluated for each item. Bare field names resolve against each item."
454
+ }
455
+ ],
456
+ returns: "number | null",
457
+ example: "set cheapest = minof(products, price)"
458
+ }
459
+ },
460
+ {
461
+ name: "maxof",
462
+ doc: {
463
+ signature: "maxof(array, valueExpression)",
464
+ description: "Returns the maximum of a numeric expression evaluated per item. Skips non-numeric values. Returns null for empty or null arrays.",
465
+ parameters: [
466
+ { name: "array", description: "The array to find the maximum in" },
467
+ {
468
+ name: "valueExpression",
469
+ description: "Expression evaluated for each item. Bare field names resolve against each item."
470
+ }
471
+ ],
472
+ returns: "number | null",
473
+ example: "set mostExpensive = maxof(products, price)"
474
+ }
475
+ },
476
+ {
477
+ name: "every",
478
+ doc: {
479
+ signature: "every(array, conditionExpression)",
480
+ description: "Returns true if a condition expression is truthy for every item in the array. Returns true for empty or null arrays (vacuously true).",
481
+ parameters: [
482
+ { name: "array", description: "The array to test" },
483
+ {
484
+ name: "conditionExpression",
485
+ description: "Boolean expression evaluated for each item. Bare field names resolve against each item."
486
+ }
487
+ ],
488
+ returns: "boolean",
489
+ example: 'set allPaid = every(orders, status == "paid")\nset valid = every(items, amount > 0)'
490
+ }
491
+ },
492
+ {
493
+ name: "some",
494
+ doc: {
495
+ signature: "some(array, conditionExpression)",
496
+ description: "Returns true if a condition expression is truthy for at least one item. Returns false for empty or null arrays.",
497
+ parameters: [
498
+ { name: "array", description: "The array to test" },
499
+ {
500
+ name: "conditionExpression",
501
+ description: "Boolean expression evaluated for each item. Bare field names resolve against each item."
502
+ }
503
+ ],
504
+ returns: "boolean",
505
+ example: "set hasOverdue = some(invoices, daysOverdue > 0)\nset hasDiscount = some(items, discount > 0)"
506
+ }
507
+ },
508
+ {
509
+ name: "distinct",
510
+ doc: {
511
+ signature: "distinct(array, valueExpression)",
512
+ description: "Returns an array of distinct values of an expression across the array, preserving first-seen order. Deduplication is based on String() coercion.",
513
+ parameters: [
514
+ { name: "array", description: "The array to extract distinct values from" },
515
+ {
516
+ name: "valueExpression",
517
+ description: "Expression evaluated for each item. Bare field names resolve against each item."
518
+ }
519
+ ],
520
+ returns: "array",
521
+ example: "set categories = distinct(products, category)\nset statuses = distinct(orders, status)"
522
+ }
523
+ },
524
+ {
525
+ name: "sum",
526
+ doc: {
527
+ signature: "sum(array, valueExpression)",
528
+ description: "Sums a numeric expression evaluated per item across an array. null, undefined and non-numeric values are treated as 0.",
529
+ parameters: [
530
+ { name: "array", description: "The array to sum over" },
531
+ {
532
+ name: "valueExpression",
533
+ description: "Expression evaluated for each item to extract the numeric value. Bare field names resolve against each item."
534
+ }
535
+ ],
536
+ returns: "number",
537
+ example: "set total = sum(orders, amount)\nset discounted = sum(items, price * quantity)"
538
+ }
539
+ },
540
+ {
541
+ name: "groupby",
542
+ doc: {
543
+ signature: "groupby(array, keyExpression)",
544
+ description: "Groups an array of items by a key expression evaluated per item. Returns an array of `{ key, items }` objects in insertion order. Typically used as the `from` source of a `section multiple`.",
545
+ parameters: [
546
+ { name: "array", description: "The array to group" },
547
+ {
548
+ name: "keyExpression",
549
+ description: "Expression evaluated for each item to compute the group key. Bare field names resolve against each item."
550
+ }
551
+ ],
552
+ returns: "array of { key, items }",
553
+ example: "section multiple byCategory(\n set category = key\n set count = length(items)\n section multiple products(\n set name = name\n ) from items\n) from groupby(products, category)"
554
+ }
555
+ },
428
556
  // ── Math functions ────────────────────────────────────────────────────────
429
557
  {
430
558
  name: "floor",
@@ -530,6 +530,158 @@
530
530
  "example": "array(1, 2, 3) // [1, 2, 3]"
531
531
  }
532
532
  },
533
+ {
534
+ "name": "avg",
535
+ "doc": {
536
+ "signature": "avg(array, valueExpression)",
537
+ "description": "Returns the average of a numeric expression evaluated per item. Only non-NaN values contribute. Returns 0 for empty or null arrays.",
538
+ "parameters": [
539
+ {
540
+ "name": "array",
541
+ "description": "The array to average over"
542
+ },
543
+ {
544
+ "name": "valueExpression",
545
+ "description": "Expression evaluated for each item to extract the numeric value. Bare field names resolve against each item."
546
+ }
547
+ ],
548
+ "returns": "number",
549
+ "example": "set avgPrice = avg(items, price)"
550
+ }
551
+ },
552
+ {
553
+ "name": "minof",
554
+ "doc": {
555
+ "signature": "minof(array, valueExpression)",
556
+ "description": "Returns the minimum of a numeric expression evaluated per item. Skips non-numeric values. Returns null for empty or null arrays.",
557
+ "parameters": [
558
+ {
559
+ "name": "array",
560
+ "description": "The array to find the minimum in"
561
+ },
562
+ {
563
+ "name": "valueExpression",
564
+ "description": "Expression evaluated for each item. Bare field names resolve against each item."
565
+ }
566
+ ],
567
+ "returns": "number | null",
568
+ "example": "set cheapest = minof(products, price)"
569
+ }
570
+ },
571
+ {
572
+ "name": "maxof",
573
+ "doc": {
574
+ "signature": "maxof(array, valueExpression)",
575
+ "description": "Returns the maximum of a numeric expression evaluated per item. Skips non-numeric values. Returns null for empty or null arrays.",
576
+ "parameters": [
577
+ {
578
+ "name": "array",
579
+ "description": "The array to find the maximum in"
580
+ },
581
+ {
582
+ "name": "valueExpression",
583
+ "description": "Expression evaluated for each item. Bare field names resolve against each item."
584
+ }
585
+ ],
586
+ "returns": "number | null",
587
+ "example": "set mostExpensive = maxof(products, price)"
588
+ }
589
+ },
590
+ {
591
+ "name": "every",
592
+ "doc": {
593
+ "signature": "every(array, conditionExpression)",
594
+ "description": "Returns true if a condition expression is truthy for every item in the array. Returns true for empty or null arrays (vacuously true).",
595
+ "parameters": [
596
+ {
597
+ "name": "array",
598
+ "description": "The array to test"
599
+ },
600
+ {
601
+ "name": "conditionExpression",
602
+ "description": "Boolean expression evaluated for each item. Bare field names resolve against each item."
603
+ }
604
+ ],
605
+ "returns": "boolean",
606
+ "example": "set allPaid = every(orders, status == \"paid\")\nset valid = every(items, amount > 0)"
607
+ }
608
+ },
609
+ {
610
+ "name": "some",
611
+ "doc": {
612
+ "signature": "some(array, conditionExpression)",
613
+ "description": "Returns true if a condition expression is truthy for at least one item. Returns false for empty or null arrays.",
614
+ "parameters": [
615
+ {
616
+ "name": "array",
617
+ "description": "The array to test"
618
+ },
619
+ {
620
+ "name": "conditionExpression",
621
+ "description": "Boolean expression evaluated for each item. Bare field names resolve against each item."
622
+ }
623
+ ],
624
+ "returns": "boolean",
625
+ "example": "set hasOverdue = some(invoices, daysOverdue > 0)\nset hasDiscount = some(items, discount > 0)"
626
+ }
627
+ },
628
+ {
629
+ "name": "distinct",
630
+ "doc": {
631
+ "signature": "distinct(array, valueExpression)",
632
+ "description": "Returns an array of distinct values of an expression across the array, preserving first-seen order. Deduplication is based on String() coercion.",
633
+ "parameters": [
634
+ {
635
+ "name": "array",
636
+ "description": "The array to extract distinct values from"
637
+ },
638
+ {
639
+ "name": "valueExpression",
640
+ "description": "Expression evaluated for each item. Bare field names resolve against each item."
641
+ }
642
+ ],
643
+ "returns": "array",
644
+ "example": "set categories = distinct(products, category)\nset statuses = distinct(orders, status)"
645
+ }
646
+ },
647
+ {
648
+ "name": "sum",
649
+ "doc": {
650
+ "signature": "sum(array, valueExpression)",
651
+ "description": "Sums a numeric expression evaluated per item across an array. null, undefined and non-numeric values are treated as 0.",
652
+ "parameters": [
653
+ {
654
+ "name": "array",
655
+ "description": "The array to sum over"
656
+ },
657
+ {
658
+ "name": "valueExpression",
659
+ "description": "Expression evaluated for each item to extract the numeric value. Bare field names resolve against each item."
660
+ }
661
+ ],
662
+ "returns": "number",
663
+ "example": "set total = sum(orders, amount)\nset discounted = sum(items, price * quantity)"
664
+ }
665
+ },
666
+ {
667
+ "name": "groupby",
668
+ "doc": {
669
+ "signature": "groupby(array, keyExpression)",
670
+ "description": "Groups an array of items by a key expression evaluated per item. Returns an array of `{ key, items }` objects in insertion order. Typically used as the `from` source of a `section multiple`.",
671
+ "parameters": [
672
+ {
673
+ "name": "array",
674
+ "description": "The array to group"
675
+ },
676
+ {
677
+ "name": "keyExpression",
678
+ "description": "Expression evaluated for each item to compute the group key. Bare field names resolve against each item."
679
+ }
680
+ ],
681
+ "returns": "array of { key, items }",
682
+ "example": "section multiple byCategory(\n set category = key\n set count = length(items)\n section multiple products(\n set name = name\n ) from items\n) from groupby(products, category)"
683
+ }
684
+ },
533
685
  {
534
686
  "name": "floor",
535
687
  "doc": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@morphql/language-definitions",
3
- "version": "0.1.29",
3
+ "version": "0.1.30",
4
4
  "description": "Shared language definitions for MorphQL across VSCode, Monaco, and documentation",
5
5
  "type": "module",
6
6
  "publishConfig": {