@foro-sh/foro 0.11.0 → 0.12.2

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.
@@ -483,5 +483,233 @@ export declare const rawManifestCases: readonly [{
483
483
  readonly ok: false;
484
484
  readonly reason: "invalid_shape";
485
485
  };
486
+ }, {
487
+ readonly name: "python-egress-ip-entry";
488
+ readonly files: {
489
+ readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"10.20.30.40:5432\"]\n";
490
+ };
491
+ readonly expect: {
492
+ readonly ok: true;
493
+ };
494
+ }, {
495
+ readonly name: "python-egress-cidr-entry";
496
+ readonly files: {
497
+ readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"10.20.0.0/16:443\"]\n";
498
+ };
499
+ readonly expect: {
500
+ readonly ok: true;
501
+ };
502
+ }, {
503
+ readonly name: "python-egress-hostname-entry";
504
+ readonly files: {
505
+ readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"sql.database.windows.net:1433\"]\n";
506
+ };
507
+ readonly expect: {
508
+ readonly ok: true;
509
+ };
510
+ }, {
511
+ readonly name: "python-egress-multiple-entries";
512
+ readonly files: {
513
+ readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"sql.database.windows.net:1433\", \"10.20.30.40:5432\", \"10.20.0.0/16:443\"]\n";
514
+ };
515
+ readonly expect: {
516
+ readonly ok: true;
517
+ };
518
+ }, {
519
+ readonly name: "python-egress-empty-list-denies-everything";
520
+ readonly files: {
521
+ readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = []\n";
522
+ };
523
+ readonly expect: {
524
+ readonly ok: true;
525
+ };
526
+ }, {
527
+ readonly name: "python-egress-missing-port";
528
+ readonly files: {
529
+ readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"example.com\"]\n";
530
+ };
531
+ readonly expect: {
532
+ readonly ok: false;
533
+ readonly reason: "invalid_egress";
534
+ };
535
+ }, {
536
+ readonly name: "python-egress-port-zero";
537
+ readonly files: {
538
+ readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"example.com:0\"]\n";
539
+ };
540
+ readonly expect: {
541
+ readonly ok: false;
542
+ readonly reason: "invalid_egress";
543
+ };
544
+ }, {
545
+ readonly name: "python-egress-port-too-high";
546
+ readonly files: {
547
+ readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"example.com:65536\"]\n";
548
+ };
549
+ readonly expect: {
550
+ readonly ok: false;
551
+ readonly reason: "invalid_egress";
552
+ };
553
+ }, {
554
+ readonly name: "python-egress-blocked-mail-port";
555
+ readonly files: {
556
+ readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"smtp.example.com:25\"]\n";
557
+ };
558
+ readonly expect: {
559
+ readonly ok: false;
560
+ readonly reason: "invalid_egress";
561
+ };
562
+ }, {
563
+ readonly name: "python-egress-metadata-endpoint";
564
+ readonly files: {
565
+ readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"169.254.169.254:80\"]\n";
566
+ };
567
+ readonly expect: {
568
+ readonly ok: false;
569
+ readonly reason: "invalid_egress";
570
+ };
571
+ }, {
572
+ readonly name: "python-egress-whole-internet";
573
+ readonly files: {
574
+ readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"0.0.0.0/0:443\"]\n";
575
+ };
576
+ readonly expect: {
577
+ readonly ok: false;
578
+ readonly reason: "invalid_egress";
579
+ };
580
+ }, {
581
+ readonly name: "python-egress-wide-range-swallows-a-reserved-one";
582
+ readonly files: {
583
+ readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"172.16.0.0/12:443\"]\n";
584
+ };
585
+ readonly expect: {
586
+ readonly ok: false;
587
+ readonly reason: "invalid_egress";
588
+ };
589
+ }, {
590
+ readonly name: "python-egress-hostname-over-253-chars";
591
+ readonly files: {
592
+ readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa:443\"]\n";
593
+ };
594
+ readonly expect: {
595
+ readonly ok: false;
596
+ readonly reason: "invalid_egress";
597
+ };
598
+ }, {
599
+ readonly name: "python-egress-string-instead-of-list";
600
+ readonly files: {
601
+ readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = \"example.com:443\"\n";
602
+ };
603
+ readonly expect: {
604
+ readonly ok: false;
605
+ readonly reason: "invalid_egress";
606
+ };
607
+ }, {
608
+ readonly name: "python-egress-over-entry-cap";
609
+ readonly files: {
610
+ readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"h0.example.com:443\", \"h1.example.com:443\", \"h2.example.com:443\", \"h3.example.com:443\", \"h4.example.com:443\", \"h5.example.com:443\", \"h6.example.com:443\", \"h7.example.com:443\", \"h8.example.com:443\", \"h9.example.com:443\", \"h10.example.com:443\", \"h11.example.com:443\", \"h12.example.com:443\", \"h13.example.com:443\", \"h14.example.com:443\", \"h15.example.com:443\", \"h16.example.com:443\", \"h17.example.com:443\", \"h18.example.com:443\", \"h19.example.com:443\", \"h20.example.com:443\"]\n";
611
+ };
612
+ readonly expect: {
613
+ readonly ok: false;
614
+ readonly reason: "invalid_egress";
615
+ };
616
+ }, {
617
+ readonly name: "node-egress-non-string-entry";
618
+ readonly files: {
619
+ readonly "package.json": "{\"name\": \"my-server\", \"main\": \"index.js\", \"foro\": {\"egress\": [443]}}";
620
+ };
621
+ readonly expect: {
622
+ readonly ok: false;
623
+ readonly reason: "invalid_egress";
624
+ };
625
+ }, {
626
+ readonly name: "python-egress-shell-metacharacter";
627
+ readonly files: {
628
+ readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"evil.com:443; rm -rf /\"]\n";
629
+ };
630
+ readonly expect: {
631
+ readonly ok: false;
632
+ readonly reason: "invalid_egress";
633
+ };
634
+ }, {
635
+ readonly name: "python-egress-embedded-whitespace";
636
+ readonly files: {
637
+ readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"evil .com:443\"]\n";
638
+ };
639
+ readonly expect: {
640
+ readonly ok: false;
641
+ readonly reason: "invalid_egress";
642
+ };
643
+ }, {
644
+ readonly name: "python-egress-embedded-newline";
645
+ readonly files: {
646
+ readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"evil.com:443\\nother:80\"]\n";
647
+ };
648
+ readonly expect: {
649
+ readonly ok: false;
650
+ readonly reason: "invalid_egress";
651
+ };
652
+ }, {
653
+ readonly name: "python-egress-ipv6-literal";
654
+ readonly files: {
655
+ readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"::1:443\"]\n";
656
+ };
657
+ readonly expect: {
658
+ readonly ok: false;
659
+ readonly reason: "invalid_egress";
660
+ };
661
+ }, {
662
+ readonly name: "python-egress-cidr-prefix-out-of-range";
663
+ readonly files: {
664
+ readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"10.0.0.0/33:443\"]\n";
665
+ };
666
+ readonly expect: {
667
+ readonly ok: false;
668
+ readonly reason: "invalid_egress";
669
+ };
670
+ }, {
671
+ readonly name: "python-egress-link-local-range";
672
+ readonly files: {
673
+ readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"169.254.0.0/16:443\"]\n";
674
+ };
675
+ readonly expect: {
676
+ readonly ok: false;
677
+ readonly reason: "invalid_egress";
678
+ };
679
+ }, {
680
+ readonly name: "python-egress-loopback";
681
+ readonly files: {
682
+ readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"127.0.0.1:5432\"]\n";
683
+ };
684
+ readonly expect: {
685
+ readonly ok: false;
686
+ readonly reason: "invalid_egress";
687
+ };
688
+ }, {
689
+ readonly name: "python-egress-platform-bridge-network";
690
+ readonly files: {
691
+ readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"172.20.0.5:5432\"]\n";
692
+ };
693
+ readonly expect: {
694
+ readonly ok: false;
695
+ readonly reason: "invalid_egress";
696
+ };
697
+ }, {
698
+ readonly name: "python-egress-submission-port";
699
+ readonly files: {
700
+ readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"smtp.example.com:587\"]\n";
701
+ };
702
+ readonly expect: {
703
+ readonly ok: false;
704
+ readonly reason: "invalid_egress";
705
+ };
706
+ }, {
707
+ readonly name: "python-egress-private-ranges-stay-allowlistable";
708
+ readonly files: {
709
+ readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"10.20.30.40:5432\", \"192.168.1.0/24:443\"]\n";
710
+ };
711
+ readonly expect: {
712
+ readonly ok: true;
713
+ };
486
714
  }];
487
715
  //# sourceMappingURL=_generated-manifest-cases.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"_generated-manifest-cases.d.ts","sourceRoot":"","sources":["../src/_generated-manifest-cases.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4hBnB,CAAA"}
1
+ {"version":3,"file":"_generated-manifest-cases.d.ts","sourceRoot":"","sources":["../src/_generated-manifest-cases.ts"],"names":[],"mappings":"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"}
@@ -539,5 +539,259 @@ export const rawManifestCases = [
539
539
  "ok": false,
540
540
  "reason": "invalid_shape"
541
541
  }
542
+ },
543
+ {
544
+ "name": "python-egress-ip-entry",
545
+ "files": {
546
+ "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"10.20.30.40:5432\"]\n"
547
+ },
548
+ "expect": {
549
+ "ok": true
550
+ }
551
+ },
552
+ {
553
+ "name": "python-egress-cidr-entry",
554
+ "files": {
555
+ "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"10.20.0.0/16:443\"]\n"
556
+ },
557
+ "expect": {
558
+ "ok": true
559
+ }
560
+ },
561
+ {
562
+ "name": "python-egress-hostname-entry",
563
+ "files": {
564
+ "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"sql.database.windows.net:1433\"]\n"
565
+ },
566
+ "expect": {
567
+ "ok": true
568
+ }
569
+ },
570
+ {
571
+ "name": "python-egress-multiple-entries",
572
+ "files": {
573
+ "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"sql.database.windows.net:1433\", \"10.20.30.40:5432\", \"10.20.0.0/16:443\"]\n"
574
+ },
575
+ "expect": {
576
+ "ok": true
577
+ }
578
+ },
579
+ {
580
+ "name": "python-egress-empty-list-denies-everything",
581
+ "files": {
582
+ "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = []\n"
583
+ },
584
+ "expect": {
585
+ "ok": true
586
+ }
587
+ },
588
+ {
589
+ "name": "python-egress-missing-port",
590
+ "files": {
591
+ "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"example.com\"]\n"
592
+ },
593
+ "expect": {
594
+ "ok": false,
595
+ "reason": "invalid_egress"
596
+ }
597
+ },
598
+ {
599
+ "name": "python-egress-port-zero",
600
+ "files": {
601
+ "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"example.com:0\"]\n"
602
+ },
603
+ "expect": {
604
+ "ok": false,
605
+ "reason": "invalid_egress"
606
+ }
607
+ },
608
+ {
609
+ "name": "python-egress-port-too-high",
610
+ "files": {
611
+ "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"example.com:65536\"]\n"
612
+ },
613
+ "expect": {
614
+ "ok": false,
615
+ "reason": "invalid_egress"
616
+ }
617
+ },
618
+ {
619
+ "name": "python-egress-blocked-mail-port",
620
+ "files": {
621
+ "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"smtp.example.com:25\"]\n"
622
+ },
623
+ "expect": {
624
+ "ok": false,
625
+ "reason": "invalid_egress"
626
+ }
627
+ },
628
+ {
629
+ "name": "python-egress-metadata-endpoint",
630
+ "files": {
631
+ "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"169.254.169.254:80\"]\n"
632
+ },
633
+ "expect": {
634
+ "ok": false,
635
+ "reason": "invalid_egress"
636
+ }
637
+ },
638
+ {
639
+ "name": "python-egress-whole-internet",
640
+ "files": {
641
+ "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"0.0.0.0/0:443\"]\n"
642
+ },
643
+ "expect": {
644
+ "ok": false,
645
+ "reason": "invalid_egress"
646
+ }
647
+ },
648
+ {
649
+ "name": "python-egress-wide-range-swallows-a-reserved-one",
650
+ "files": {
651
+ "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"172.16.0.0/12:443\"]\n"
652
+ },
653
+ "expect": {
654
+ "ok": false,
655
+ "reason": "invalid_egress"
656
+ }
657
+ },
658
+ {
659
+ "name": "python-egress-hostname-over-253-chars",
660
+ "files": {
661
+ "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa:443\"]\n"
662
+ },
663
+ "expect": {
664
+ "ok": false,
665
+ "reason": "invalid_egress"
666
+ }
667
+ },
668
+ {
669
+ "name": "python-egress-string-instead-of-list",
670
+ "files": {
671
+ "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = \"example.com:443\"\n"
672
+ },
673
+ "expect": {
674
+ "ok": false,
675
+ "reason": "invalid_egress"
676
+ }
677
+ },
678
+ {
679
+ "name": "python-egress-over-entry-cap",
680
+ "files": {
681
+ "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"h0.example.com:443\", \"h1.example.com:443\", \"h2.example.com:443\", \"h3.example.com:443\", \"h4.example.com:443\", \"h5.example.com:443\", \"h6.example.com:443\", \"h7.example.com:443\", \"h8.example.com:443\", \"h9.example.com:443\", \"h10.example.com:443\", \"h11.example.com:443\", \"h12.example.com:443\", \"h13.example.com:443\", \"h14.example.com:443\", \"h15.example.com:443\", \"h16.example.com:443\", \"h17.example.com:443\", \"h18.example.com:443\", \"h19.example.com:443\", \"h20.example.com:443\"]\n"
682
+ },
683
+ "expect": {
684
+ "ok": false,
685
+ "reason": "invalid_egress"
686
+ }
687
+ },
688
+ {
689
+ "name": "node-egress-non-string-entry",
690
+ "files": {
691
+ "package.json": "{\"name\": \"my-server\", \"main\": \"index.js\", \"foro\": {\"egress\": [443]}}"
692
+ },
693
+ "expect": {
694
+ "ok": false,
695
+ "reason": "invalid_egress"
696
+ }
697
+ },
698
+ {
699
+ "name": "python-egress-shell-metacharacter",
700
+ "files": {
701
+ "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"evil.com:443; rm -rf /\"]\n"
702
+ },
703
+ "expect": {
704
+ "ok": false,
705
+ "reason": "invalid_egress"
706
+ }
707
+ },
708
+ {
709
+ "name": "python-egress-embedded-whitespace",
710
+ "files": {
711
+ "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"evil .com:443\"]\n"
712
+ },
713
+ "expect": {
714
+ "ok": false,
715
+ "reason": "invalid_egress"
716
+ }
717
+ },
718
+ {
719
+ "name": "python-egress-embedded-newline",
720
+ "files": {
721
+ "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"evil.com:443\\nother:80\"]\n"
722
+ },
723
+ "expect": {
724
+ "ok": false,
725
+ "reason": "invalid_egress"
726
+ }
727
+ },
728
+ {
729
+ "name": "python-egress-ipv6-literal",
730
+ "files": {
731
+ "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"::1:443\"]\n"
732
+ },
733
+ "expect": {
734
+ "ok": false,
735
+ "reason": "invalid_egress"
736
+ }
737
+ },
738
+ {
739
+ "name": "python-egress-cidr-prefix-out-of-range",
740
+ "files": {
741
+ "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"10.0.0.0/33:443\"]\n"
742
+ },
743
+ "expect": {
744
+ "ok": false,
745
+ "reason": "invalid_egress"
746
+ }
747
+ },
748
+ {
749
+ "name": "python-egress-link-local-range",
750
+ "files": {
751
+ "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"169.254.0.0/16:443\"]\n"
752
+ },
753
+ "expect": {
754
+ "ok": false,
755
+ "reason": "invalid_egress"
756
+ }
757
+ },
758
+ {
759
+ "name": "python-egress-loopback",
760
+ "files": {
761
+ "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"127.0.0.1:5432\"]\n"
762
+ },
763
+ "expect": {
764
+ "ok": false,
765
+ "reason": "invalid_egress"
766
+ }
767
+ },
768
+ {
769
+ "name": "python-egress-platform-bridge-network",
770
+ "files": {
771
+ "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"172.20.0.5:5432\"]\n"
772
+ },
773
+ "expect": {
774
+ "ok": false,
775
+ "reason": "invalid_egress"
776
+ }
777
+ },
778
+ {
779
+ "name": "python-egress-submission-port",
780
+ "files": {
781
+ "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"smtp.example.com:587\"]\n"
782
+ },
783
+ "expect": {
784
+ "ok": false,
785
+ "reason": "invalid_egress"
786
+ }
787
+ },
788
+ {
789
+ "name": "python-egress-private-ranges-stay-allowlistable",
790
+ "files": {
791
+ "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"10.20.30.40:5432\", \"192.168.1.0/24:443\"]\n"
792
+ },
793
+ "expect": {
794
+ "ok": true
795
+ }
542
796
  }
543
797
  ];
@@ -15,7 +15,7 @@
15
15
  /** Mirrors `ManifestRejectionReason` in foro-sh/platform's `@foro/types`.
16
16
  * Kept in sync deliberately: it is what makes a reason added on one side a
17
17
  * compile error on the other. */
18
- export type ManifestRejectionReason = 'missing_manifest' | 'unsupported_language' | 'invalid_yaml' | 'invalid_shape' | 'invalid_name' | 'invalid_entrypoint' | 'invalid_build_path' | 'invalid_runtime' | 'invalid_runtime_version' | 'invalid_port' | 'invalid_dependency_manager' | 'unsupported_project' | 'unknown_field';
18
+ export type ManifestRejectionReason = 'missing_manifest' | 'unsupported_language' | 'invalid_yaml' | 'invalid_shape' | 'invalid_name' | 'invalid_entrypoint' | 'invalid_build_path' | 'invalid_runtime' | 'invalid_runtime_version' | 'invalid_port' | 'invalid_dependency_manager' | 'unsupported_project' | 'unknown_field' | 'invalid_egress';
19
19
  export interface ManifestCase {
20
20
  /** Stable identifier, unique across the table - use it as the test name. */
21
21
  readonly name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"manifest-cases.d.ts","sourceRoot":"","sources":["../src/manifest-cases.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH;;kCAEkC;AAClC,MAAM,MAAM,uBAAuB,GAC/B,kBAAkB,GAClB,sBAAsB,GACtB,cAAc,GACd,eAAe,GACf,cAAc,GACd,oBAAoB,GACpB,oBAAoB,GACpB,iBAAiB,GACjB,yBAAyB,GACzB,cAAc,GACd,4BAA4B,GAC5B,qBAAqB,GACrB,eAAe,CAAA;AAEnB,MAAM,WAAW,YAAY;IAC3B,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB;;oDAEgD;IAChD,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAChD,QAAQ,CAAC,MAAM,EACX;QAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAA;KAAE,GACrB;QAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAA;KAAE,CAAA;CACrE;AAED,eAAO,MAAM,aAAa,EAAE,SAAS,YAAY,EAAqB,CAAA"}
1
+ {"version":3,"file":"manifest-cases.d.ts","sourceRoot":"","sources":["../src/manifest-cases.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH;;kCAEkC;AAClC,MAAM,MAAM,uBAAuB,GAC/B,kBAAkB,GAClB,sBAAsB,GACtB,cAAc,GACd,eAAe,GACf,cAAc,GACd,oBAAoB,GACpB,oBAAoB,GACpB,iBAAiB,GACjB,yBAAyB,GACzB,cAAc,GACd,4BAA4B,GAC5B,qBAAqB,GACrB,eAAe,GACf,gBAAgB,CAAA;AAEpB,MAAM,WAAW,YAAY;IAC3B,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB;;oDAEgD;IAChD,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAChD,QAAQ,CAAC,MAAM,EACX;QAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAA;KAAE,GACrB;QAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAA;KAAE,CAAA;CACrE;AAED,eAAO,MAAM,aAAa,EAAE,SAAS,YAAY,EAAqB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@foro-sh/foro",
3
- "version": "0.11.0",
3
+ "version": "0.12.2",
4
4
  "description": "TypeScript SDK for Foro",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -48,7 +48,7 @@
48
48
  "node": ">=18"
49
49
  },
50
50
  "devDependencies": {
51
- "@types/node": "^20.11.0",
52
- "typescript": "^5.6.3"
51
+ "@types/node": "^26.2.0",
52
+ "typescript": "^7.0.2"
53
53
  }
54
54
  }