@funnelsgrove/cli 0.1.29 → 0.1.35

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.
Files changed (42) hide show
  1. package/funnel-contract-compatibility.json +28 -28
  2. package/package.json +3 -3
  3. package/template_docs/.funnelsgrove-docs.json +3 -3
  4. package/template_docs/docs/funnelsgrove/migrations/step-contract-v3.md +1 -1
  5. package/template_docs/funnel-docs.config.json +1 -1
  6. package/template_scaffold/.funnelsgrove-docs.json +3 -3
  7. package/template_scaffold/.funnelsgrove-scaffold.json +150 -150
  8. package/template_scaffold/docs/funnelsgrove/migrations/step-contract-v3.md +1 -1
  9. package/template_scaffold/funnel-docs.config.json +1 -1
  10. package/template_scaffold/package-lock.json +13 -13
  11. package/template_scaffold/package.json +3 -3
  12. package/template_scaffold/public/paywall/money-back-badge.png +0 -0
  13. package/template_scaffold/src/steps/step-32-paywall.tsx +2 -2
  14. package/template_scaffold/src/steps/step-33-subscription-started.tsx +1 -43
  15. package/template_scaffold/{funnel-agent-docs.test.ts → tests/funnel-agent-docs.test.ts} +4 -4
  16. package/template_scaffold/{package.test.ts → tests/package.test.ts} +4 -4
  17. package/template_scaffold/{src → tests/src}/app/layout.test.ts +2 -2
  18. package/template_scaffold/{src → tests/src}/components/FunnelFlow.test.tsx +2 -2
  19. package/template_scaffold/{src → tests/src}/config/billing.plans.test.ts +4 -4
  20. package/template_scaffold/{src → tests/src}/config/experiments.test.ts +1 -1
  21. package/template_scaffold/{src → tests/src}/config/funnel.manifest.test.ts +1 -1
  22. package/template_scaffold/{src → tests/src}/contract/funnel-project.validation.test.ts +2 -2
  23. package/template_scaffold/{src → tests/src}/contract/golden/golden-fixtures.test.ts +16 -16
  24. package/template_scaffold/{src → tests/src}/contract/validate-funnel.cli.test.ts +2 -2
  25. package/template_scaffold/{src → tests/src}/runtime/checkout-runtime-config.test.ts +3 -3
  26. package/template_scaffold/{src → tests/src}/runtime/funnel-runtime.test.ts +1 -1
  27. package/template_scaffold/{src → tests/src}/runtime/step-content-context.test.ts +1 -1
  28. package/template_scaffold/{src → tests/src}/runtime/use-funnel-flow-controller.integration.test.ts +4 -4
  29. package/template_scaffold/{src → tests/src}/runtime/use-funnel-flow-controller.test.ts +3 -3
  30. package/template_scaffold/{src → tests/src}/steps/paywall-checkout-options.test.ts +1 -1
  31. package/template_scaffold/{src → tests/src}/steps/shared-header-contract.test.ts +3 -1
  32. package/template_scaffold/{src → tests/src}/steps/step-02.test.ts +3 -3
  33. package/template_scaffold/{src → tests/src}/steps/step-03.test.ts +1 -1
  34. package/template_scaffold/{src → tests/src}/steps/step-04.test.ts +1 -1
  35. package/template_scaffold/{src → tests/src}/steps/step-31-email-capture.test.ts +1 -1
  36. package/template_scaffold/{src → tests/src}/steps/step-32-paywall.test.ts +43 -43
  37. package/template_scaffold/{src → tests/src}/steps/step-33-subscription-started.test.ts +6 -7
  38. package/template_scaffold/{src → tests/src}/steps/step-34-upsell-form.test.ts +3 -3
  39. package/template_scaffold/{src → tests/src}/steps/step-image-migration.test.ts +1 -1
  40. /package/template_scaffold/{src → tests/src}/app/[stepId]/page.test.tsx +0 -0
  41. /package/template_scaffold/{src → tests/src}/components/FunnelStepImage.test.ts +0 -0
  42. /package/template_scaffold/{src → tests/src}/steps/step-01.test.ts +0 -0
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "sourceTreeHash": "31d74efe474f7afcf393de1e73b36e4caa060806e1e632b6ba1e396e863e8f82",
3
+ "sourceTreeHash": "e00d4d9300d169131cf55df1d9ff45ddb43f369da52d96db47b2a8ee00c0705e",
4
4
  "stepContractVersion": 3,
5
- "docsBundleVersion": "2.0.17",
5
+ "docsBundleVersion": "2.0.23",
6
6
  "files": [
7
7
  {
8
8
  "path": ".env.example",
@@ -16,7 +16,7 @@
16
16
  },
17
17
  {
18
18
  "path": ".funnelsgrove-docs.json",
19
- "sha256": "ec2ae4a38af84f481994924e736a3f9e76b9a132973b0107fcd00a7bd11510b1",
19
+ "sha256": "777509183cdfb38967f70038bbf70737da8321fc52cc82ac60954374b10ea18d",
20
20
  "mode": "100644"
21
21
  },
22
22
  {
@@ -101,7 +101,7 @@
101
101
  },
102
102
  {
103
103
  "path": "docs/funnelsgrove/migrations/step-contract-v3.md",
104
- "sha256": "bf7171b1101096ac3b205aa8f251379de1c66e16c20b5ca6054e84fd0ab17862",
104
+ "sha256": "bd7ae81ac8617e8d297268a1091e1bea5fb6b412346f6e891a0f08ab49520686",
105
105
  "mode": "100644"
106
106
  },
107
107
  {
@@ -234,14 +234,9 @@
234
234
  "sha256": "059cab3c5d3244a3695879763e6ca845e862850598b6c23a3c7a62a30b085954",
235
235
  "mode": "100644"
236
236
  },
237
- {
238
- "path": "funnel-agent-docs.test.ts",
239
- "sha256": "ecf210609282fa186eaedbdea39e7ce226fbe5f76fded2b4d77a57b858f6713a",
240
- "mode": "100644"
241
- },
242
237
  {
243
238
  "path": "funnel-docs.config.json",
244
- "sha256": "87d325180a8e9e501cf5c2a00174f99fae58a612b7a93cfe9753bf1f149e46a4",
239
+ "sha256": "5c2a6798dd3e13269526d43af4a3db1e4c85c748f49f768417f8dcb827803603",
245
240
  "mode": "100644"
246
241
  },
247
242
  {
@@ -266,17 +261,12 @@
266
261
  },
267
262
  {
268
263
  "path": "package-lock.json",
269
- "sha256": "e3d6430705410764cb7a012befd1582a78f8e8269848fad9be44c3c66c4b58e7",
264
+ "sha256": "4107cec6df7d25471893b22de2ed514e2e9c381a9f3faa861e6642cd7ed5ceed",
270
265
  "mode": "100644"
271
266
  },
272
267
  {
273
268
  "path": "package.json",
274
- "sha256": "f7fe244b5bc7b6449d27d048761c973f2825b0b4dba3dd931b4aa31bd523df77",
275
- "mode": "100644"
276
- },
277
- {
278
- "path": "package.test.ts",
279
- "sha256": "0631d66d24d25e1486e0c9b9e3fe6bb23c5acf9e04e4888e36525ae12b7711aa",
269
+ "sha256": "2b9dc1e23e4cab876849b7f4c9abb5ae1cd2769129ccb970268cf8791e0886d9",
280
270
  "mode": "100644"
281
271
  },
282
272
  {
@@ -356,7 +346,7 @@
356
346
  },
357
347
  {
358
348
  "path": "public/paywall/money-back-badge.png",
359
- "sha256": "79c7ad7c5c0b7725a3665d3afafa4261804fe77fb82fd56c2aea0b704f5c414f",
349
+ "sha256": "319d812579282d6dd291437b6aa322463cef398f5c74e94cc16329180a64fed1",
360
350
  "mode": "100644"
361
351
  },
362
352
  {
@@ -454,11 +444,6 @@
454
444
  "sha256": "fcff5d9b5fed1058de82e81d7cef0501cd94744827317ffb8f183c7b11e6c511",
455
445
  "mode": "100644"
456
446
  },
457
- {
458
- "path": "src/app/[stepId]/page.test.tsx",
459
- "sha256": "918e1ac9c08355ae7c0f439a453473b498fae4c06784e8f73329cd852c38b17f",
460
- "mode": "100644"
461
- },
462
447
  {
463
448
  "path": "src/app/[stepId]/page.tsx",
464
449
  "sha256": "292b9f12317d03061a72823b13ded89872c6f163b33502450ab418e6a397433e",
@@ -469,11 +454,6 @@
469
454
  "sha256": "91ff423c95f785d22bbecb82e81ee93a88b57f794ef391a7ac9cb4cc70267032",
470
455
  "mode": "100644"
471
456
  },
472
- {
473
- "path": "src/app/layout.test.ts",
474
- "sha256": "039a68c7af445bc3f37df2ffa3697edf6e554a6da293c8daa64da9150674a93a",
475
- "mode": "100644"
476
- },
477
457
  {
478
458
  "path": "src/app/layout.tsx",
479
459
  "sha256": "739926b65738b1e7e9e52394b8a360ec4ad1e3fb2c03e6f9218f85ba72ba7b12",
@@ -549,21 +529,11 @@
549
529
  "sha256": "36dc049600c2dd220c86d4e5ec684e4a3e2527121565efdf0bcf900b61636aa3",
550
530
  "mode": "100644"
551
531
  },
552
- {
553
- "path": "src/components/FunnelFlow.test.tsx",
554
- "sha256": "7970d20d0105dca78812d7f220c8568320adf5fb3577753207dfe5ff64d9177a",
555
- "mode": "100644"
556
- },
557
532
  {
558
533
  "path": "src/components/FunnelFlow.tsx",
559
534
  "sha256": "c3446a33f3c3763b7269ed8eb9281e7a20d82954193d5a7a877e10a3179bb3ac",
560
535
  "mode": "100644"
561
536
  },
562
- {
563
- "path": "src/components/FunnelStepImage.test.ts",
564
- "sha256": "bcd6ae93cc75554734bc3ade665c05571f6da8bfbfc580e991a4db21398fc9bb",
565
- "mode": "100644"
566
- },
567
537
  {
568
538
  "path": "src/components/FunnelStepImage.tsx",
569
539
  "sha256": "fc018e49106f9e7105467fccc21e0b164fc654b0d5f3c92f36315a1296be8a54",
@@ -574,11 +544,6 @@
574
544
  "sha256": "214dc27da4de9554bbdc0d59a351bcfc34f94cbad08e748d90adf98326639795",
575
545
  "mode": "100644"
576
546
  },
577
- {
578
- "path": "src/config/billing.plans.test.ts",
579
- "sha256": "6375cfad4c8ab34783b62132f8382e8f79455dcca39941ecfb6f79a5a46e577c",
580
- "mode": "100644"
581
- },
582
547
  {
583
548
  "path": "src/config/billing.plans.ts",
584
549
  "sha256": "95f76f07a47dfe70d13cd21369aa5f1a389326b6d3e71b2246967865f1d13fa5",
@@ -594,11 +559,6 @@
594
559
  "sha256": "f25744dcebf4932ce25f378c76f2bd270c997f7792093b07ed0abdd7c74a1049",
595
560
  "mode": "100644"
596
561
  },
597
- {
598
- "path": "src/config/experiments.test.ts",
599
- "sha256": "049ff313dc5151a13102b2cd77654d3c0c695f8e066500fde9a288dd66a28d3a",
600
- "mode": "100644"
601
- },
602
562
  {
603
563
  "path": "src/config/experiments.ts",
604
564
  "sha256": "f008ff0c04a267f03204e34e9d13bc0d897d14053e78287f700801484fc3f937",
@@ -609,11 +569,6 @@
609
569
  "sha256": "6826189cdc984b448b9049d80f94fbe78a96cc6101b868a93554004011a3c424",
610
570
  "mode": "100644"
611
571
  },
612
- {
613
- "path": "src/config/funnel.manifest.test.ts",
614
- "sha256": "466cadbac9ae1ad832412779a6f534ce683271c5829fe27f15223347c9210764",
615
- "mode": "100644"
616
- },
617
572
  {
618
573
  "path": "src/config/funnel.manifest.ts",
619
574
  "sha256": "9bdb5e41da57edb5d16afde77c5d108010658160168aeee2ad65f79fd9b82604",
@@ -624,11 +579,6 @@
624
579
  "sha256": "732be9f47bb07165c967967196442e2e8c28fece3b651ef4d9907d7c5410bdea",
625
580
  "mode": "100644"
626
581
  },
627
- {
628
- "path": "src/contract/funnel-project.validation.test.ts",
629
- "sha256": "87797b5e8de6ebc8e23b3c20e6ab4f5b93d411d39c334a0af15101b11c7b6d54",
630
- "mode": "100644"
631
- },
632
582
  {
633
583
  "path": "src/contract/funnel-project.validation.ts",
634
584
  "sha256": "b0ec02eac1bd56812eef773be71628ae4e94f80fcd88837bbc5c8bf04e73a62c",
@@ -654,11 +604,6 @@
654
604
  "sha256": "46852bbbd36244a0fe513385bd59d585f92feb17049d4621a6ad829752f80e95",
655
605
  "mode": "100644"
656
606
  },
657
- {
658
- "path": "src/contract/golden/golden-fixtures.test.ts",
659
- "sha256": "b0caad74c84bc0e3a2de09a88e0a6f685818c0138fab71f7fcbfd032b9a750b4",
660
- "mode": "100644"
661
- },
662
607
  {
663
608
  "path": "src/contract/golden/intro_hero.fixture.ts",
664
609
  "sha256": "f9ff4676f115085b537e388e1ffd04cc5a09a9c58d8ff871aff92dfceabfd095",
@@ -724,41 +669,21 @@
724
669
  "sha256": "44a8edb337628083d516298b9acc6da67151ada9a13fbb6543b52223155ccda7",
725
670
  "mode": "100644"
726
671
  },
727
- {
728
- "path": "src/contract/validate-funnel.cli.test.ts",
729
- "sha256": "ff231bc1c118a3fc7181927476e2a43e5a40752f3824fc057324d762d32052f4",
730
- "mode": "100644"
731
- },
732
672
  {
733
673
  "path": "src/contract/validate-funnel.cli.ts",
734
674
  "sha256": "1b268b194865d633c760b704a0d4552adc2eb4526801da138ab2a4036f643d58",
735
675
  "mode": "100644"
736
676
  },
737
- {
738
- "path": "src/runtime/checkout-runtime-config.test.ts",
739
- "sha256": "0e0171cf3c60a3d85ccd626231b38995e7dc26df9c0e95f24622480de11c49dc",
740
- "mode": "100644"
741
- },
742
677
  {
743
678
  "path": "src/runtime/checkout-runtime-config.ts",
744
679
  "sha256": "aeb2f527d4850e507f9f16de3067f55ef4e3dc3374abf76c041a7a76661ea1da",
745
680
  "mode": "100644"
746
681
  },
747
- {
748
- "path": "src/runtime/funnel-runtime.test.ts",
749
- "sha256": "1767fdd4d61f6f6d6642c7510386018a181715b0c2e4978fb417ece0331c9b0f",
750
- "mode": "100644"
751
- },
752
682
  {
753
683
  "path": "src/runtime/funnel-runtime.ts",
754
684
  "sha256": "a657b8864df422ac16759351a6a1a221ca70f50d56d3e2b066fd5ab23eae79b9",
755
685
  "mode": "100644"
756
686
  },
757
- {
758
- "path": "src/runtime/step-content-context.test.ts",
759
- "sha256": "c2a22459bc64cbfa1c2fd7d23e1f2863a0998273a6efed7131029c74414fbc7a",
760
- "mode": "100644"
761
- },
762
687
  {
763
688
  "path": "src/runtime/step-content-context.ts",
764
689
  "sha256": "a354f949756e673faf2c9f940a5485abce8e618920ff6ae7766dba9d67250bde",
@@ -774,16 +699,6 @@
774
699
  "sha256": "a6021318a562accf6c6872dfa1947a51ff1bb302837b60477a35d0b595544e5c",
775
700
  "mode": "100644"
776
701
  },
777
- {
778
- "path": "src/runtime/use-funnel-flow-controller.integration.test.ts",
779
- "sha256": "d5900401cd2865ad1c0755339861e0a1a84b139dc3a88207927c061ab9a7ef01",
780
- "mode": "100644"
781
- },
782
- {
783
- "path": "src/runtime/use-funnel-flow-controller.test.ts",
784
- "sha256": "68ee4fc973c32a44a1b51ab383a80929242c4f53542c0b508b184a05c697fded",
785
- "mode": "100644"
786
- },
787
702
  {
788
703
  "path": "src/runtime/use-funnel-flow-controller.ts",
789
704
  "sha256": "9f12ab00b0c0685c3b520b9cc9bad22b7b04323164358b169356dc85338e0f50",
@@ -884,11 +799,6 @@
884
799
  "sha256": "21f146040b8c2e47923ee77cbff8ef6dc23481c3647f08de0659d34e0f46d0b8",
885
800
  "mode": "100644"
886
801
  },
887
- {
888
- "path": "src/steps/paywall-checkout-options.test.ts",
889
- "sha256": "da32caee8dc694a220feef628cfc5b1d10d964ca1c514040568cc3a5f7c2fd32",
890
- "mode": "100644"
891
- },
892
802
  {
893
803
  "path": "src/steps/paywall-checkout-options.ts",
894
804
  "sha256": "6c4a21ae44255f31d6dbdfa10312402ef4cf4538a2c73ef3272209923dd09a7b",
@@ -914,69 +824,34 @@
914
824
  "sha256": "38ae9ee7f6930ab295b4b389c42c6cea552514788ee67bdc845fd7d8f66b700f",
915
825
  "mode": "100644"
916
826
  },
917
- {
918
- "path": "src/steps/shared-header-contract.test.ts",
919
- "sha256": "d2827459278da1d60f19f430629cb86f313ab8117fd8ad0f6d48c5d2683635db",
920
- "mode": "100644"
921
- },
922
- {
923
- "path": "src/steps/step-01.test.ts",
924
- "sha256": "08c132d7027760196254cdfb6c49881e3bfefffaec518d647a4ce98e58b7328d",
925
- "mode": "100644"
926
- },
927
827
  {
928
828
  "path": "src/steps/step-01.tsx",
929
829
  "sha256": "4a6fe1686abf2dfa3d711d540afedba976b09bdf463eeca7833b0f2431936a03",
930
830
  "mode": "100644"
931
831
  },
932
- {
933
- "path": "src/steps/step-02.test.ts",
934
- "sha256": "b264710e40abe8efc041603a8b18b022a36bee593ebfb1eb18931508257173ef",
935
- "mode": "100644"
936
- },
937
832
  {
938
833
  "path": "src/steps/step-02.tsx",
939
834
  "sha256": "e59949c12b1508d4ec1aa6fcd6af1ae8e5f3e2e1fb662af0442552db3da89630",
940
835
  "mode": "100644"
941
836
  },
942
- {
943
- "path": "src/steps/step-03.test.ts",
944
- "sha256": "2aab2c01a3bdac1f7f731efa38b2b3411da83651cca21536b3f6e78ae3c2565f",
945
- "mode": "100644"
946
- },
947
837
  {
948
838
  "path": "src/steps/step-03.tsx",
949
839
  "sha256": "6978118c821d94efede6585ef36a5f7c09f8ba9a9f1a87ef1f0f89ab7df79af2",
950
840
  "mode": "100644"
951
841
  },
952
- {
953
- "path": "src/steps/step-04.test.ts",
954
- "sha256": "fba9a5c78f5a5b70f7a8f6e811f8dd211c3a02aa3e1cab7542f5a670041de858",
955
- "mode": "100644"
956
- },
957
842
  {
958
843
  "path": "src/steps/step-04.tsx",
959
844
  "sha256": "d8a529fdef01ddc7f702ccee95ea9a586042b755c57c4e24ab1944c7f292a7f1",
960
845
  "mode": "100644"
961
846
  },
962
- {
963
- "path": "src/steps/step-31-email-capture.test.ts",
964
- "sha256": "d76a7fb5571c3bce956d96886987b5d8793516a529b3624f46233800a8895e6a",
965
- "mode": "100644"
966
- },
967
847
  {
968
848
  "path": "src/steps/step-31-email-capture.tsx",
969
849
  "sha256": "371398ca371b7a595e5c6f3ae19a5bc35a778ea0bad8195cee36bebda514506c",
970
850
  "mode": "100644"
971
851
  },
972
- {
973
- "path": "src/steps/step-32-paywall.test.ts",
974
- "sha256": "954a6de5c65c7078ae36d1b7a5537366b6252452660b706b4e7df18c3060578d",
975
- "mode": "100644"
976
- },
977
852
  {
978
853
  "path": "src/steps/step-32-paywall.tsx",
979
- "sha256": "efd87ae0e0f08f87596814754e8d1059f16d7b46931c3168c18b7993ab2cc3bb",
854
+ "sha256": "f64fb4dd724be41e8068f473883d9bdb4188272ef289aadd08f27a2c01ebf044",
980
855
  "mode": "100644"
981
856
  },
982
857
  {
@@ -984,19 +859,9 @@
984
859
  "sha256": "712383d2ec113a6289d25e2368bdc31f1c02ccd43d4bd997b872f4d50d63a733",
985
860
  "mode": "100644"
986
861
  },
987
- {
988
- "path": "src/steps/step-33-subscription-started.test.ts",
989
- "sha256": "32ce3f81dfc14fceb9857040bb8aeab2db4b0fe66c423610b13e4d5a5fb11620",
990
- "mode": "100644"
991
- },
992
862
  {
993
863
  "path": "src/steps/step-33-subscription-started.tsx",
994
- "sha256": "9544f3ac97ac276244633dbede033c880905177b9f29f779c5b14528307e9000",
995
- "mode": "100644"
996
- },
997
- {
998
- "path": "src/steps/step-34-upsell-form.test.ts",
999
- "sha256": "7fc73e9a9f585889aefbe5fda05ea7a71847b443db8557b33082119a4f73978b",
864
+ "sha256": "a9c9a58b9a2cb03ea5e7b1110557819ddeb83ceada956448215b759b68c167a2",
1000
865
  "mode": "100644"
1001
866
  },
1002
867
  {
@@ -1009,11 +874,6 @@
1009
874
  "sha256": "7e5182231e17d9436aa1761e0d0a0028978336f384823210f8f93da2d5644d2a",
1010
875
  "mode": "100644"
1011
876
  },
1012
- {
1013
- "path": "src/steps/step-image-migration.test.ts",
1014
- "sha256": "337be95754f771e9429a22db9ef9578993ee0eed0eaf326e302fdc7b29f031e1",
1015
- "mode": "100644"
1016
- },
1017
877
  {
1018
878
  "path": "src/steps/styles/index.css",
1019
879
  "sha256": "3adf8dce39f0645fd27d3df97eb02baa908f6904b1844bcd276613295cccc8cd",
@@ -1064,6 +924,146 @@
1064
924
  "sha256": "9d776dca7729383f4b98156f82f9cd0a35be4e8efd903c14a7ffe10267cb1427",
1065
925
  "mode": "100644"
1066
926
  },
927
+ {
928
+ "path": "tests/funnel-agent-docs.test.ts",
929
+ "sha256": "6005c77980962cdf41beff3ba7554e389684e19d218a4c88441d28769b75f60e",
930
+ "mode": "100644"
931
+ },
932
+ {
933
+ "path": "tests/package.test.ts",
934
+ "sha256": "d49df405d41d3183066d2ac9398bf39f9daf56c4d15e871c276a3a6a48117b48",
935
+ "mode": "100644"
936
+ },
937
+ {
938
+ "path": "tests/src/app/[stepId]/page.test.tsx",
939
+ "sha256": "918e1ac9c08355ae7c0f439a453473b498fae4c06784e8f73329cd852c38b17f",
940
+ "mode": "100644"
941
+ },
942
+ {
943
+ "path": "tests/src/app/layout.test.ts",
944
+ "sha256": "eb029712ff42ca281795631e90642d17afc12a341ce335398f52e2b3b3628a70",
945
+ "mode": "100644"
946
+ },
947
+ {
948
+ "path": "tests/src/components/FunnelFlow.test.tsx",
949
+ "sha256": "4103e9c0f12a744f37edd0aa3d86b3222a13d9fdc9894dfa4f1cb14e8f87ea33",
950
+ "mode": "100644"
951
+ },
952
+ {
953
+ "path": "tests/src/components/FunnelStepImage.test.ts",
954
+ "sha256": "bcd6ae93cc75554734bc3ade665c05571f6da8bfbfc580e991a4db21398fc9bb",
955
+ "mode": "100644"
956
+ },
957
+ {
958
+ "path": "tests/src/config/billing.plans.test.ts",
959
+ "sha256": "f91727fc8cbfe09c7aeb48231d0a8f816e87b464d9df4cdca32ac03d95d72c4d",
960
+ "mode": "100644"
961
+ },
962
+ {
963
+ "path": "tests/src/config/experiments.test.ts",
964
+ "sha256": "b50890b91b7bcafd38d61794be56346e882884262140006545b6779038163ef1",
965
+ "mode": "100644"
966
+ },
967
+ {
968
+ "path": "tests/src/config/funnel.manifest.test.ts",
969
+ "sha256": "3fac92396bb0af26be2a9fc2253fd0aad14c89eb94e9a4f08ba720d8411479b6",
970
+ "mode": "100644"
971
+ },
972
+ {
973
+ "path": "tests/src/contract/funnel-project.validation.test.ts",
974
+ "sha256": "9fdbce6320c8f47e5fc1318a61a7272bcfa1a0258e4daff5c47954cba3576176",
975
+ "mode": "100644"
976
+ },
977
+ {
978
+ "path": "tests/src/contract/golden/golden-fixtures.test.ts",
979
+ "sha256": "bd047674fd622ce9ae98cafa71500c36470ff824dec4b5e41000fd89991dc003",
980
+ "mode": "100644"
981
+ },
982
+ {
983
+ "path": "tests/src/contract/validate-funnel.cli.test.ts",
984
+ "sha256": "062c9f41ecfcb9987393b808a82ca79bba64cd60fa37f2b688b5920ee811d12b",
985
+ "mode": "100644"
986
+ },
987
+ {
988
+ "path": "tests/src/runtime/checkout-runtime-config.test.ts",
989
+ "sha256": "32813bd1ba1140c7b43032987285ca021122a87f1f41ac3eb0930d5082020fc8",
990
+ "mode": "100644"
991
+ },
992
+ {
993
+ "path": "tests/src/runtime/funnel-runtime.test.ts",
994
+ "sha256": "04b9ed90eb7cbfeec61255f170e46267670e82d33a82e55a24c6b48ddb477552",
995
+ "mode": "100644"
996
+ },
997
+ {
998
+ "path": "tests/src/runtime/step-content-context.test.ts",
999
+ "sha256": "009ef412a765e623c4f6ea9961c5f226737ffcf698584f44ea6d5a445976fa89",
1000
+ "mode": "100644"
1001
+ },
1002
+ {
1003
+ "path": "tests/src/runtime/use-funnel-flow-controller.integration.test.ts",
1004
+ "sha256": "e55ac3f0c3ab17fb937655c7a7d8716c083960559ae136059659cdb502342214",
1005
+ "mode": "100644"
1006
+ },
1007
+ {
1008
+ "path": "tests/src/runtime/use-funnel-flow-controller.test.ts",
1009
+ "sha256": "45d3405c0306c08889feff8708ae52ec3c65a8a2d2cf88be9baabf999d2bd754",
1010
+ "mode": "100644"
1011
+ },
1012
+ {
1013
+ "path": "tests/src/steps/paywall-checkout-options.test.ts",
1014
+ "sha256": "506d615b3603494668c84aac648bea645f99a049bda4ab2ea8484a24d570d08f",
1015
+ "mode": "100644"
1016
+ },
1017
+ {
1018
+ "path": "tests/src/steps/shared-header-contract.test.ts",
1019
+ "sha256": "085853a4dcc4d223112cd9985683f0652834101a5b89b86a316d6d824761f368",
1020
+ "mode": "100644"
1021
+ },
1022
+ {
1023
+ "path": "tests/src/steps/step-01.test.ts",
1024
+ "sha256": "08c132d7027760196254cdfb6c49881e3bfefffaec518d647a4ce98e58b7328d",
1025
+ "mode": "100644"
1026
+ },
1027
+ {
1028
+ "path": "tests/src/steps/step-02.test.ts",
1029
+ "sha256": "1ce11d76ff8e63002bd2ad1217df0edbdca71f0827768b378ab741fbf00813c4",
1030
+ "mode": "100644"
1031
+ },
1032
+ {
1033
+ "path": "tests/src/steps/step-03.test.ts",
1034
+ "sha256": "a968a15cef20baa311692d31b157331966a8081b0d76039c8423500c6ac81e9e",
1035
+ "mode": "100644"
1036
+ },
1037
+ {
1038
+ "path": "tests/src/steps/step-04.test.ts",
1039
+ "sha256": "bb5e5d52c8383800cce684f9571c3b6d45b4bf55aef6a1c76d3a211fe8e5880f",
1040
+ "mode": "100644"
1041
+ },
1042
+ {
1043
+ "path": "tests/src/steps/step-31-email-capture.test.ts",
1044
+ "sha256": "1dfff79c354b803205fc25546a1713b1a410a814ab96cc5d33f4b5120448b01f",
1045
+ "mode": "100644"
1046
+ },
1047
+ {
1048
+ "path": "tests/src/steps/step-32-paywall.test.ts",
1049
+ "sha256": "fbef52dcd2af543631e2c9dbe328a5421411fd14d72864726ecd3a7fdd0bae3d",
1050
+ "mode": "100644"
1051
+ },
1052
+ {
1053
+ "path": "tests/src/steps/step-33-subscription-started.test.ts",
1054
+ "sha256": "64795d72a03b0ede1a6d42f9fcf575eadb88eb170266f1aa418ce966d0dc57b7",
1055
+ "mode": "100644"
1056
+ },
1057
+ {
1058
+ "path": "tests/src/steps/step-34-upsell-form.test.ts",
1059
+ "sha256": "2e8049ae61d9927af6270e0107c67573a21108775a188b397525d1d9c7250890",
1060
+ "mode": "100644"
1061
+ },
1062
+ {
1063
+ "path": "tests/src/steps/step-image-migration.test.ts",
1064
+ "sha256": "177f1e8ef5724fbd9fc58688ee440aed7bd75b472424a95054f87cc95ffa3856",
1065
+ "mode": "100644"
1066
+ },
1067
1067
  {
1068
1068
  "path": "tsconfig.json",
1069
1069
  "sha256": "d8886cd69d1895576e821ca1c1c8fc2d6e75b9741390b3a3a57b123f18695be3",
@@ -17,7 +17,7 @@ Supported read versions: `1`, `2`, `3`. Authoring and publish target version `3`
17
17
 
18
18
  ### Package release order
19
19
 
20
- Release `@funnelsgrove/runtime` `0.1.60` first, then `@funnelsgrove/analytics` `0.1.37`, then `@funnelsgrove/payments` `0.1.55`. Deploy the API and funnel template, then confirm production `/health` reports the new docs identity. Only then publish `@funnelsgrove/cli` `0.1.29`. Publishing packages and deploying production remain separately approved operational actions.
20
+ Release `@funnelsgrove/runtime` `0.1.62` first, then `@funnelsgrove/analytics` `0.1.39`, then `@funnelsgrove/payments` `0.1.56`. Deploy the API and funnel template, then confirm production `/health` reports the new docs identity. Only then publish `@funnelsgrove/cli` `0.1.35`. Publishing packages and deploying production remain separately approved operational actions.
21
21
  <!-- funnelsgrove:generated:end contract-v3/migration/step-contract-v3 -->
22
22
 
23
23
  ## Version-last policy
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "bundleVersion": "2.0.17",
3
+ "bundleVersion": "2.0.23",
4
4
  "contractSource": "funnelsgrove-repository://apps/funnel-runtime/contracts/step-contract-v2.json",
5
5
  "fullyGenerated": [
6
6
  ".funnelsgrove-docs.json",
@@ -8,9 +8,9 @@
8
8
  "name": "funnel-template",
9
9
  "version": "0.1.0",
10
10
  "dependencies": {
11
- "@funnelsgrove/analytics": "^0.1.37",
12
- "@funnelsgrove/payments": "^0.1.55",
13
- "@funnelsgrove/runtime": "^0.1.60",
11
+ "@funnelsgrove/analytics": "^0.1.39",
12
+ "@funnelsgrove/payments": "^0.1.56",
13
+ "@funnelsgrove/runtime": "^0.1.62",
14
14
  "@stripe/react-stripe-js": "^5.6.0",
15
15
  "@stripe/stripe-js": "^8.7.0",
16
16
  "lucide-react": "^0.553.0",
@@ -891,17 +891,17 @@
891
891
  }
892
892
  },
893
893
  "node_modules/@funnelsgrove/analytics": {
894
- "version": "0.1.37",
895
- "resolved": "https://registry.npmjs.org/@funnelsgrove/analytics/-/analytics-0.1.37.tgz",
896
- "integrity": "sha512-MlXNdsGmNZNpDl5k1J4jKMsB8PYXVTZ2QZjhvSL3Ii0QKoCD9Gru/PprS/TlJ6jQ0Hscy/0vqGB3FZ6sa2Fwag==",
894
+ "version": "0.1.39",
895
+ "resolved": "https://registry.npmjs.org/@funnelsgrove/analytics/-/analytics-0.1.39.tgz",
896
+ "integrity": "sha512-c7cBRHrq7FYOJLPJWCRH778ccWLAIK+4ArgD9xrjwSOcHBHeBpt87DMMtvL6vnD/kPSJIu4oLucD3eF3CZ900g==",
897
897
  "dependencies": {
898
- "@funnelsgrove/runtime": "0.1.60"
898
+ "@funnelsgrove/runtime": "0.1.62"
899
899
  }
900
900
  },
901
901
  "node_modules/@funnelsgrove/payments": {
902
- "version": "0.1.55",
903
- "resolved": "https://registry.npmjs.org/@funnelsgrove/payments/-/payments-0.1.55.tgz",
904
- "integrity": "sha512-zrlnyPwUsqSYkaDYASBkB3bzNVSzS0+4glKC2+ai/+fIi4SZqEOAEo51WxR3jt0s5dAX2nFdX08r/YlvY7XqyA==",
902
+ "version": "0.1.56",
903
+ "resolved": "https://registry.npmjs.org/@funnelsgrove/payments/-/payments-0.1.56.tgz",
904
+ "integrity": "sha512-3I+LlKKPOJOc/cL2NeqENyFrXiQSjtHbtqXbMRAYoxFK1Zrt3z8kkCq5JPDzOfD/In5xOaDUnxorVuuMXMvXog==",
905
905
  "dependencies": {
906
906
  "@funnelsgrove/analytics": "^0.1.28",
907
907
  "@funnelsgrove/runtime": "^0.1.54",
@@ -913,9 +913,9 @@
913
913
  }
914
914
  },
915
915
  "node_modules/@funnelsgrove/runtime": {
916
- "version": "0.1.60",
917
- "resolved": "https://registry.npmjs.org/@funnelsgrove/runtime/-/runtime-0.1.60.tgz",
918
- "integrity": "sha512-ftjWXqcXmzPKlESo57B4o6VHc0NFiyxJrKB0CYMqVcxgBo9O5d7h/lZhs/1Wi3pQNRsBSGOfs//MUC/hJQ/NOw==",
916
+ "version": "0.1.62",
917
+ "resolved": "https://registry.npmjs.org/@funnelsgrove/runtime/-/runtime-0.1.62.tgz",
918
+ "integrity": "sha512-S27kA3f7Y30CsqNxajcGwfkdyz19UOlWtjlqYLiM8Mn0HzJoyxGpU4xpMopROqrpArhmy/S9dzvF250pSpgeBw==",
919
919
  "dependencies": {
920
920
  "posthog-js": "^1.369.2",
921
921
  "react": "19.2.3",
@@ -12,9 +12,9 @@
12
12
  "validate:funnel": "vite-node --config src/contract/funnel-validator.vite.config.ts src/contract/validate-funnel.cli.ts"
13
13
  },
14
14
  "dependencies": {
15
- "@funnelsgrove/analytics": "^0.1.37",
16
- "@funnelsgrove/payments": "^0.1.55",
17
- "@funnelsgrove/runtime": "^0.1.60",
15
+ "@funnelsgrove/analytics": "^0.1.39",
16
+ "@funnelsgrove/payments": "^0.1.56",
17
+ "@funnelsgrove/runtime": "^0.1.62",
18
18
  "@stripe/react-stripe-js": "^5.6.0",
19
19
  "@stripe/stripe-js": "^8.7.0",
20
20
  "lucide-react": "^0.553.0",
@@ -463,7 +463,7 @@ export function StepPaywall({
463
463
  return;
464
464
  }
465
465
 
466
- const readyClientSecret = await checkoutSession.prepareCardCheckout();
466
+ const readyClientSecret = await checkoutSession.prepareCardCheckout({ checkoutStartSource: 'checkout_render' });
467
467
  if (readyClientSecret) {
468
468
  setCheckoutDialogOpen(true);
469
469
  }
@@ -510,7 +510,7 @@ export function StepPaywall({
510
510
  }
511
511
 
512
512
  const readyClientSecret =
513
- checkoutSession.activeClientSecret ?? await checkoutSession.prepareCardCheckout();
513
+ checkoutSession.activeClientSecret ?? await checkoutSession.prepareCardCheckout({ checkoutStartSource: 'checkout_render' });
514
514
  if (readyClientSecret) {
515
515
  setCheckoutDialogOpen(true);
516
516
  }
@@ -1,8 +1,6 @@
1
1
  // PLAN_STEP_PLACEHOLDER_ID:subscription-started
2
2
  'use client';
3
3
 
4
- import { useEffect } from 'react';
5
- import { publicAnalyticsSdk } from '@funnelsgrove/analytics';
6
4
  import {
7
5
  SubscriptionHandoffScreen,
8
6
  usePreviewStepLocalizedContent,
@@ -11,7 +9,6 @@ import {
11
9
  } from '@funnelsgrove/runtime';
12
10
  import { getStepContentLocale } from '@/runtime/step-content-context';
13
11
  import { subscriptionStartedContent } from '@/steps/content/subscription-started.content';
14
- import { funnelManifest } from '@/config/funnel.manifest';
15
12
 
16
13
  export const stepSubscriptionStartedId = 'subscription-started';
17
14
 
@@ -29,52 +26,13 @@ export const stepSubscriptionStarted: FunnelStepMeta = {
29
26
  };
30
27
 
31
28
  export function StepSubscriptionStarted() {
32
- const { user, attributes } = useFunnel();
29
+ const { attributes } = useFunnel();
33
30
  const content = usePreviewStepLocalizedContent(
34
31
  stepSubscriptionStartedId,
35
32
  subscriptionStartedContent,
36
33
  getStepContentLocale(attributes),
37
34
  );
38
35
 
39
- useEffect(() => {
40
- if (typeof window === 'undefined') {
41
- return;
42
- }
43
-
44
- const searchParams = new URLSearchParams(window.location.search);
45
- const paymentIntent = searchParams.get('payment_intent');
46
- const redirectStatus = searchParams.get('redirect_status');
47
- if (!paymentIntent || !redirectStatus) {
48
- return;
49
- }
50
-
51
- const dedupeKey = `app-deals:payment-intent:${paymentIntent}`;
52
- if (window.sessionStorage.getItem(dedupeKey) === '1') {
53
- return;
54
- }
55
- window.sessionStorage.setItem(dedupeKey, '1');
56
-
57
- const eventInput = {
58
- stepId: stepSubscriptionStartedId,
59
- stepName: stepSubscriptionStarted.name || stepSubscriptionStarted.title,
60
- stepType: stepSubscriptionStarted.type,
61
- stepContractVersion: funnelManifest.stepContractVersion,
62
- metadata: {
63
- source: searchParams.get('source') || null,
64
- paymentIntent,
65
- redirectStatus,
66
- user_id: searchParams.get('user_id') || null,
67
- funnelUserId: user.id || null,
68
- },
69
- };
70
-
71
- if (redirectStatus === 'succeeded') {
72
- publicAnalyticsSdk.trackPaymentCheckoutSucceeded(eventInput);
73
- } else {
74
- publicAnalyticsSdk.trackPaymentCheckoutReturned(eventInput);
75
- }
76
- }, [user.id]);
77
-
78
36
  return (
79
37
  <SubscriptionHandoffScreen
80
38
  stepId={stepSubscriptionStartedId}